Index: /libvorbis-1.2.0/AUTHORS
===================================================================
--- /libvorbis-1.2.0/AUTHORS	(revision 16)
+++ /libvorbis-1.2.0/AUTHORS	(revision 16)
@@ -0,0 +1,3 @@
+Monty <monty@xiph.org>
+
+and the rest of the Xiph.org Foundation.
Index: /libvorbis-1.2.0/CHANGES
===================================================================
--- /libvorbis-1.2.0/CHANGES	(revision 16)
+++ /libvorbis-1.2.0/CHANGES	(revision 16)
@@ -0,0 +1,48 @@
+libvorbis 1.2.0 (2007-07-25) -- "Xiph.Org libVorbis I 20070622"
+
+ * new ov_fopen() convenience call that avoids the common
+   stdio conflicts with ov_open() and MSVC runtimes.
+ * libvorbisfile now handles multiplexed streams
+ * improve robustness to corrupt input streams
+ * fix a minor encoder bug
+ * updated RTP draft
+ * build system updates
+ * minor corrections to the specification
+
+libvorbis 1.1.2 (2005-11-27) -- "Xiph.Org libVorbis I 20050304"
+
+ * fix a serious encoder bug with gcc 4 optimized builds
+ * documentation and spec fixes
+ * updated VS2003 and XCode builds
+ * new draft RTP encapsulation spec
+
+libvorbis 1.1.1 (2005-06-27) -- "Xiph.Org libVorbis I 20050304"
+
+ * bug fix to the bitrate management encoder interface
+ * bug fix to properly set packetno field in the encoder
+ * new draft RTP encapsulation spec
+ * library API documentation improvements
+
+libvorbis 1.1.0 (2004-09-22) -- "Xiph.Org libVorbis I 20040629"
+
+ * merges tuning improvements from Aoyumi's aoTuV with fixups
+ * new managed bitrate (CBR) mode support
+ * new vorbis_encoder_ctl() interface
+ * extensive documentation updates
+ * application/ogg mimetype is now official
+ * autotools cleanup from Thomas Vander Stichele
+ * SymbianOS build support from Colin Ward at CSIRO
+ * various bugfixes
+ * various packaging improvements
+
+libvorbis 1.0.1 (2003-11-17) -- "Xiph.Org libVorbis I 20030909"
+
+ * numerous bug fixes
+ * specification corrections
+ * new crosslap and halfrate APIs for game use
+ * packaging and build updates
+
+libvorbis 1.0.0 (2002-07-19) -- "Xiph.Org libVorbis I 20020717"
+
+ * first stable release
+
Index: /libvorbis-1.2.0/COPYING
===================================================================
--- /libvorbis-1.2.0/COPYING	(revision 16)
+++ /libvorbis-1.2.0/COPYING	(revision 16)
@@ -0,0 +1,28 @@
+Copyright (c) 2002-2004 Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- 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.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+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.
Index: /libvorbis-1.2.0/Makefile.am
===================================================================
--- /libvorbis-1.2.0/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/Makefile.am	(revision 16)
@@ -0,0 +1,41 @@
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = 1.6 foreign dist-zip dist-bzip2
+
+SUBDIRS = lib include doc examples vq
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = vorbis.m4
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = vorbis.pc vorbisenc.pc vorbisfile.pc
+
+EXTRA_DIST = \
+	CHANGES COPYING \
+	todo.txt autogen.sh \
+	libvorbis.spec libvorbis.spec.in \
+	vorbis.m4 \
+	vorbis.pc.in vorbisenc.pc.in vorbisfile.pc.in \
+	vorbis-uninstalled.pc.in \
+	vorbisenc-uninstalled.pc.in \
+	vorbisfile-uninstalled.pc.in \
+	doc examples symbian vq \
+	macos macosx win32
+
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-docs
+
+dist-hook:
+	for item in $(EXTRA_DIST); do \
+	  if test -d $$item; then \
+	    echo -n "cleaning $$item dir for distribution..."; \
+	    rm -rf `find $(distdir)/$$item -name .svn`; \
+	    echo "OK"; \
+	  fi; \
+	done
+
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
Index: /libvorbis-1.2.0/Makefile.in
===================================================================
--- /libvorbis-1.2.0/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/Makefile.in	(revision 16)
@@ -0,0 +1,759 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(srcdir)/libvorbis.spec.in $(srcdir)/vorbis-uninstalled.pc.in \
+	$(srcdir)/vorbis.pc.in $(srcdir)/vorbisenc-uninstalled.pc.in \
+	$(srcdir)/vorbisenc.pc.in \
+	$(srcdir)/vorbisfile-uninstalled.pc.in \
+	$(srcdir)/vorbisfile.pc.in $(top_srcdir)/configure AUTHORS \
+	COPYING config.guess config.sub depcomp install-sh ltmain.sh \
+	missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.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 = config.h
+CONFIG_CLEAN_FILES = libvorbis.spec vorbis.pc vorbisenc.pc \
+	vorbisfile.pc vorbis-uninstalled.pc vorbisenc-uninstalled.pc \
+	vorbisfile-uninstalled.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)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"
+m4dataDATA_INSTALL = $(INSTALL_DATA)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(m4data_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 $(distdir).tar.bz2 $(distdir).zip
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.6 foreign dist-zip dist-bzip2
+SUBDIRS = lib include doc examples vq
+m4datadir = $(datadir)/aclocal
+m4data_DATA = vorbis.m4
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = vorbis.pc vorbisenc.pc vorbisfile.pc
+EXTRA_DIST = \
+	CHANGES COPYING \
+	todo.txt autogen.sh \
+	libvorbis.spec libvorbis.spec.in \
+	vorbis.m4 \
+	vorbis.pc.in vorbisenc.pc.in vorbisfile.pc.in \
+	vorbis-uninstalled.pc.in \
+	vorbisenc-uninstalled.pc.in \
+	vorbisfile-uninstalled.pc.in \
+	doc examples symbian vq \
+	macos macosx win32
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-docs
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
+	      cd $(srcdir) && $(AUTOMAKE) --foreign  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+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 config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+libvorbis.spec: $(top_builddir)/config.status $(srcdir)/libvorbis.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vorbis.pc: $(top_builddir)/config.status $(srcdir)/vorbis.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vorbisenc.pc: $(top_builddir)/config.status $(srcdir)/vorbisenc.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vorbisfile.pc: $(top_builddir)/config.status $(srcdir)/vorbisfile.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vorbis-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/vorbis-uninstalled.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vorbisenc-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/vorbisenc-uninstalled.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vorbisfile-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/vorbisfile-uninstalled.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+install-m4dataDATA: $(m4data_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)"
+	@list='$(m4data_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(m4dataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4datadir)/$$f'"; \
+	  $(m4dataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4datadir)/$$f"; \
+	done
+
+uninstall-m4dataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(m4data_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(m4datadir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(m4datadir)/$$f"; \
+	done
+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; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	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
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+	-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-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
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 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) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(m4datadir)" "$(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:
+
+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-hdr \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-m4dataDATA 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-m4dataDATA 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-hook dist-shar dist-tarZ dist-zip distcheck \
+	distclean distclean-generic distclean-hdr distclean-libtool \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-m4dataDATA 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-m4dataDATA \
+	uninstall-pkgconfigDATA
+
+
+dist-hook:
+	for item in $(EXTRA_DIST); do \
+	  if test -d $$item; then \
+	    echo -n "cleaning $$item dir for distribution..."; \
+	    rm -rf `find $(distdir)/$$item -name .svn`; \
+	    echo "OK"; \
+	  fi; \
+	done
+
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/README
===================================================================
--- /libvorbis-1.2.0/README	(revision 16)
+++ /libvorbis-1.2.0/README	(revision 16)
@@ -0,0 +1,132 @@
+********************************************************************
+*                                                                  *
+* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+*                                                                  *
+* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+* by the Xiph.org Foundation, http://www.xiph.org/                 *
+*                                                                  *
+********************************************************************
+
+Vorbis is a general purpose audio and music encoding format
+contemporary to MPEG-4's AAC and TwinVQ, the next generation beyond
+MPEG audio layer 3. Unlike the MPEG sponsored formats (and other
+proprietary formats such as RealAudio G2 and Windows' flavor of the
+month), the Vorbis CODEC specification belongs to the public domain.
+All the technical details are published and documented, and any
+software entity may make full use of the format without license 
+fee, royalty or patent concerns.
+
+This package contains:
+
+* libvorbis, a BSD-style license software implementation of
+  the Vorbis specification by the Xiph.Org Foundation 
+  (http://www.xiph.org/) 
+
+* libvorbisfile, a BSD-style license convenience library
+  built on Vorbis designed to simplify common uses
+
+* libvorbisenc, a BSD-style license library that provides a simple,
+  programmatic encoding setup interface 
+
+* example code making use of libogg, libvorbis, libvorbisfile and
+  libvorbisenc
+
+WHAT'S HERE:
+
+This source distribution includes libvorbis and an example
+encoder/player to demonstrate use of libvorbis as well as
+documentation on the Ogg Vorbis audio coding format.
+
+You'll need libogg (distributed separately) to compile this library.
+A more comprehensive set of utilities is available in the vorbis-tools
+package.
+
+Directory:
+
+./lib  		The source for the libraries, a BSD-license implementation
+		of the public domain Ogg Vorbis audio encoding format.
+
+./include       Library API headers
+
+./debian        Rules/spec files for building Debian .deb packages
+
+./doc           Vorbis documentation
+
+./examples	Example code illustrating programmatic use of libvorbis, 
+		libvorbisfile and libvorbisenc
+
+./mac 		Codewarrior project files and build tweaks for MacOS.
+
+./macosx 	Project files for MacOS X.
+
+./win32		Win32 projects files and build automation
+
+./vq 		Internal utilities for training/building new LSP/residue 
+		and auxiliary codebooks.
+
+CONTACT:
+
+The Ogg homepage is located at 'http://www.xiph.org/ogg/'.
+Vorbis's homepage is located at 'http://www.xiph.org/vorbis/'.
+Up to date technical documents, contact information, source code and
+pre-built utilities may be found there.
+
+The user website for Ogg Vorbis software and audio is http://vorbis.com/
+
+BUILDING FROM TRUNK:
+
+Development source is under subversion revision control at 
+http://svn.xiph.org/trunk/vorbis/. You will also need the 
+newest versions of autoconf, automake, and libtool in order
+to compile vorbis from development source. A configure script
+is provided for you in the source tarball distributions.
+
+  [update or checkout latest source]
+  ./autogen.sh
+  make 
+
+and as root if desired:
+
+  make install
+
+This will install the vorbis libraries (static and shared) into
+/usr/local/lib, includes into /usr/local/include and API manpages
+(once we write some) into /usr/local/man.
+
+BUILDING FROM TARBALL DISTRIBUTIONS:
+
+  ./configure
+  make
+
+and optionally (as root):
+  make install
+
+BUILDING RPMS:
+
+after normal configuring:
+
+  make dist
+  rpm -ta libvorbis-<version>.tar.gz
+
+BUILDING ON MACOS 9:
+
+Vorbis on MacOS 9 is built using Metroworks CodeWarrior.  To build it, 
+first verify that the Ogg libraries are already built following the
+instructions in the Ogg module README.  Open vorbis/mac/libvorbis.mcp,
+switch to the "Targets" pane, select everything, and make the project.
+Do the same thing to build libvorbisenc.mcp, and libvorbisfile.mcp (in
+that order).  In vorbis/mac/Output you will now have both debug and final
+versions of Vorbis shared libraries to link your projects against.
+
+To build a project using Ogg Vorbis, add access paths to your
+CodeWarrior project for the ogg/include, ogg/mac/Output,
+vorbis/include, and vorbis/mac/Output folders.  Be sure that
+"interpret DOS and Unix paths" is turned on in your project; it can
+be found in the "access paths" pane in your project settings.  Now
+simply add the shared libraries you need to your project (OggLib and
+VorbisLib at least) and #include "ogg/ogg.h" and "vorbis/codec.h"
+wherever you need to access Ogg and Vorbis functionality.
+
Index: /libvorbis-1.2.0/acinclude.m4
===================================================================
--- /libvorbis-1.2.0/acinclude.m4	(revision 16)
+++ /libvorbis-1.2.0/acinclude.m4	(revision 16)
@@ -0,0 +1,161 @@
+# acinclude.m4
+# all .m4 files needed that might not be installed go here
+
+# Configure paths for libogg
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl XIPH_PATH_OGG([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libogg, and define OGG_CFLAGS and OGG_LIBS
+dnl
+AC_DEFUN([XIPH_PATH_OGG],
+[dnl 
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(ogg,[  --with-ogg=PFX   Prefix where libogg is installed (optional)], ogg_prefix="$withval", ogg_prefix="")
+AC_ARG_WITH(ogg-libraries,[  --with-ogg-libraries=DIR   Directory where libogg library is installed (optional)], ogg_libraries="$withval", ogg_libraries="")
+AC_ARG_WITH(ogg-includes,[  --with-ogg-includes=DIR   Directory where libogg header files are installed (optional)], ogg_includes="$withval", ogg_includes="")
+AC_ARG_ENABLE(oggtest, [  --disable-oggtest       Do not try to compile and run a test Ogg program],, enable_oggtest=yes)
+
+  if test "x$ogg_libraries" != "x" ; then
+    OGG_LIBS="-L$ogg_libraries"
+  elif test "x$ogg_prefix" != "x" ; then
+    OGG_LIBS="-L$ogg_prefix/lib"
+  elif test "x$prefix" != "xNONE" ; then
+    OGG_LIBS="-L$prefix/lib"
+  fi
+
+  OGG_LIBS="$OGG_LIBS -logg"
+
+  if test "x$ogg_includes" != "x" ; then
+    OGG_CFLAGS="-I$ogg_includes"
+  elif test "x$ogg_prefix" != "x" ; then
+    OGG_CFLAGS="-I$ogg_prefix/include"
+  elif test "x$prefix" != "xNONE"; then
+    OGG_CFLAGS="-I$prefix/include"
+  fi
+
+  AC_MSG_CHECKING(for Ogg)
+  no_ogg=""
+
+
+  if test "x$enable_oggtest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $OGG_CFLAGS"
+    LIBS="$LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Ogg is sufficiently new.
+dnl
+      rm -f conf.oggtest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ogg/ogg.h>
+
+int main ()
+{
+  system("touch conf.oggtest");
+  return 0;
+}
+
+],, no_ogg=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_ogg" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])     
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.oggtest ; then
+       :
+     else
+       echo "*** Could not run Ogg test program, checking why..."
+       CFLAGS="$CFLAGS $OGG_CFLAGS"
+       LIBS="$LIBS $OGG_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <ogg/ogg.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding Ogg or finding the wrong"
+       echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
+       echo "*** or that you have moved Ogg since it was installed. In the latter case, you"
+       echo "*** may want to edit the ogg-config script: $OGG_CONFIG" ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     OGG_CFLAGS=""
+     OGG_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(OGG_CFLAGS)
+  AC_SUBST(OGG_LIBS)
+  rm -f conf.oggtest
+])
+
+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
+dnl also defines GSTUFF_PKG_ERRORS on error
+AC_DEFUN([PKG_CHECK_MODULES], [
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        AC_MSG_CHECKING(for $2)
+
+        if $PKG_CONFIG --exists "$2" ; then
+            AC_MSG_RESULT(yes)
+            succeeded=yes
+
+            AC_MSG_CHECKING($1_CFLAGS)
+            $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
+            AC_MSG_RESULT($$1_CFLAGS)
+
+            AC_MSG_CHECKING($1_LIBS)
+            $1_LIBS=`$PKG_CONFIG --libs "$2"`
+            AC_MSG_RESULT($$1_LIBS)
+        else
+            $1_CFLAGS=""
+            $1_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but 
+            ## do set a variable so people can do so.
+            $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+            ifelse([$4], ,echo $$1_PKG_ERRORS,)
+        fi
+
+        AC_SUBST($1_CFLAGS)
+        AC_SUBST($1_LIBS)
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     ifelse([$3], , :, [$3])
+  else
+     ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
+  fi
+])
Index: /libvorbis-1.2.0/aclocal.m4
===================================================================
--- /libvorbis-1.2.0/aclocal.m4	(revision 16)
+++ /libvorbis-1.2.0/aclocal.m4	(revision 16)
@@ -0,0 +1,7273 @@
+# generated automatically by aclocal 1.10 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 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.
+
+# 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_if(m4_PACKAGE_VERSION, [2.61],,
+[m4_fatal([this file was generated for autoconf 2.61.
+You have another version of autoconf.  If you want to use that,
+you should regenerate the build system entirely.], [63])])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+	         [m4_ifdef([AC_PROVIDE_$1],
+		           [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+	[AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+	     [define([LT_AC_PROG_GCJ],
+		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_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.
+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']
+
+# 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 avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+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_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_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=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])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_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+AC_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_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$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.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$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 conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_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.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_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.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${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 <<EOF
+[$]*
+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 "$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 &&
+       echo_test_string=`eval $cmd` &&
+       (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.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|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-*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-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          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_TRY_LINK([],[],[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" ;;
+      *)    LD="${LD-ld} -64" ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   printf "$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
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   printf "$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 conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# 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*)
+    # 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
+    ;;
+  *)
+    # 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.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    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`
+    ;;
+  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
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_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 <<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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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 ());
+
+    exit (status);
+}]
+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_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_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*)
+    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="-dld"],
+	[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="-dld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  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_AC_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_AC_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
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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_AC_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 ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_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
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_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
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_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_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; 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
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[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"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+    ;;
+  freebsd*) # from 4.6 on
+    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'
+  ;;
+
+interix3*)
+  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
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=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
+  ;;
+
+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"
+  ;;
+
+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
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      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
+  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'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    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'
+  ;;
+
+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
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      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_LIBTOOL_LANG_CXX_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+	  AC_LIBTOOL_LANG_F77_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+	  AC_LIBTOOL_LANG_GCJ_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+	AC_LIBTOOL_LANG_RC_CONFIG
+	;;
+
+      *)
+	AC_MSG_ERROR([Unsupported tag name: $tagname])
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]AC_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=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]AC_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=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_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=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_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="ifelse([$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 <<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
+
+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
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_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
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_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])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])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])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+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
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[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
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise 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
+aix4* | aix5*)
+  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'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  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
+  ;;
+
+interix3*)
+  # 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* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+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
+  ;;
+
+solaris*)
+  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
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  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
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible 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
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[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_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# it is assumed to be `libltdl'.  LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!).  If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([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
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[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_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# 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
+  ;;
+
+aix4* | aix5*)
+  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])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_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_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  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
+      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]].*|aix5*)
+	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_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    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
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	else
+	  # We have old collect2
+	  _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_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
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_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 "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	_LT_AC_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_AC_SYS_LIBPATH_AIX
+	_LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	# Exported symbols can be pulled into shared objects from archives
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	# This is similar to how AIX traditionally builds its shared libraries.
+	_LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case $host_os in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          _LT_AC_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'
+        fi
+        _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  freebsd[[12]]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd* | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC*)
+      _LT_AC_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) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+      case $host_cpu in
+      hppa*64*|ia64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+        ;;
+      *)
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case $host_cpu in
+    hppa*64*|ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      aCC*)
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_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 $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case $host_cpu in
+	    hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  interix3*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    _LT_AC_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_AC_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_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+	;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  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_AC_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_AC_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 $list'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+	_LT_AC_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_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# 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_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  _LT_AC_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_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	_LT_AC_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'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_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 $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_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::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  openbsd*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    _LT_AC_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_AC_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_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	_LT_AC_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 $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	  _LT_AC_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 ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_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 $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	 _LT_AC_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` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+        _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	case $host_os in
+	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	_LT_AC_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_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	_LT_AC_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_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_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.
+    # 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.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+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
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([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.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+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...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+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
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+  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_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_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_AC_TAGVAR(postdeps, $1)"; then
+	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_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_AC_TAGVAR(predep_objects, $1)"; then
+	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_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
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+  # 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_AC_TAGVAR(predep_objects,$1)=
+  _LT_AC_TAGVAR(postdep_objects,$1)=
+  _LT_AC_TAGVAR(postdeps,$1)=
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # 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.
+    _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_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_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_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"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+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
+  ;;
+aix4* | aix5*)
+  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_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_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"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# 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_AC_SYS_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"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then 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
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+# 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//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $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.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# 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=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\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
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# 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]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \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\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux* | k*bsd*-gnu)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDGIRSTW]]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  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
+
+# 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, 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.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+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 <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+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_AC_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 -f 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
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_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_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # 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_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    interix3*)
+      # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # 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*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_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
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_AC_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_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_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_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_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_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # 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_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    interix3*)
+      # 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_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_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_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_AC_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_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # 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_AC_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_AC_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_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_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'
+  ;;
+  linux* | k*bsd*-gnu)
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_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_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  # 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.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  _LT_CC_BASENAME([$compiler])
+  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
+
+  _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` 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
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<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.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=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 can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_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_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    interix3*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_AC_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_AC_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_AC_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'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  _LT_AC_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_AC_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' ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  _LT_AC_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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=no
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<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.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_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_AC_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_AC_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
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_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_AC_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_AC_TAGVAR(hardcode_direct, $1)=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
+	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_AC_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_AC_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]].*|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
+
+	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_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      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
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  else
+  	  # We have old collect2
+  	  _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  	  _LT_AC_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
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	_LT_AC_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 "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_AC_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_AC_SYS_LIBPATH_AIX
+	 _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_AC_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*)
+      _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi[[45]]*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    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.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_AC_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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	_LT_AC_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_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	   ;;
+	 *)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_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_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_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~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_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}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_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'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_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*
+      printf "$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_AC_TAGVAR(lt_prog_compiler_wl, $1)
+	pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# 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.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_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
+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_MSG_RESULT([$SED])
+])
+
+# Copyright (C) 2002, 2003, 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_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], [],
+      [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 AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10])dnl
+_AM_AUTOCONF_VERSION(m4_PACKAGE_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
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # 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 10q "$mf" | grep '^#.*generated by automake' > /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"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.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_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(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])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode is disabled by default
+  AC_ARG_ENABLE(maintainer-mode,
+[  --enable-maintainer-mode  enable make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer],
+      USE_MAINTAINER_MODE=$enableval,
+      USE_MAINTAINER_MODE=no)
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# 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  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(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 outputing 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([acinclude.m4])
Index: /libvorbis-1.2.0/autogen.sh
===================================================================
--- /libvorbis-1.2.0/autogen.sh	(revision 16)
+++ /libvorbis-1.2.0/autogen.sh	(revision 16)
@@ -0,0 +1,127 @@
+#!/bin/sh
+# Run this to set up the build system: configure, makefiles, etc.
+# (based on the version in enlightenment's cvs)
+
+package="vorbis"
+
+olddir=`pwd`
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+cd "$srcdir"
+DIE=0
+
+echo "checking for autoconf... "
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+        echo
+        echo "You must have autoconf installed to compile $package."
+        echo "Download the appropriate package for your distribution,"
+        echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+        DIE=1
+}
+
+VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/"
+VERSIONMKMAJ="sed -e s/\([0-9][0-9]*\)[^0-9].*/\\1/"
+VERSIONMKMIN="sed -e s/.*[0-9][0-9]*\.//"
+
+# do we need automake?
+if test -r Makefile.am; then
+  AM_OPTIONS=`fgrep AUTOMAKE_OPTIONS Makefile.am`
+  AM_NEEDED=`echo $AM_OPTIONS | $VERSIONGREP`
+  if test x"$AM_NEEDED" = "x$AM_OPTIONS"; then
+    AM_NEEDED=""
+  fi
+  if test -z $AM_NEEDED; then
+    echo -n "checking for automake... "
+    AUTOMAKE=automake
+    ACLOCAL=aclocal
+    if ($AUTOMAKE --version < /dev/null > /dev/null 2>&1); then
+      echo "yes"
+    else
+      echo "no"
+      AUTOMAKE=
+    fi
+  else
+    echo -n "checking for automake $AM_NEEDED or later... "
+    majneeded=`echo $AM_NEEDED | $VERSIONMKMAJ`
+    minneeded=`echo $AM_NEEDED | $VERSIONMKMIN`
+    for am in automake-$AM_NEEDED automake$AM_NEEDED \
+	automake automake-1.7 automake-1.8 automake-1.9 automake-1.10; do
+      ($am --version < /dev/null > /dev/null 2>&1) || continue
+      ver=`$am --version < /dev/null | head -n 1 | $VERSIONGREP`
+      maj=`echo $ver | $VERSIONMKMAJ`
+      min=`echo $ver | $VERSIONMKMIN`
+      if test $maj -eq $majneeded -a $min -ge $minneeded; then
+        AUTOMAKE=$am
+        echo $AUTOMAKE
+        break
+      fi
+    done
+    test -z $AUTOMAKE &&  echo "no"
+    echo -n "checking for aclocal $AM_NEEDED or later... "
+    for ac in aclocal-$AM_NEEDED aclocal$AM_NEEDED \
+	aclocal aclocal-1.7 aclocal-1.8 aclocal-1.9 aclocal-1.10; do
+      ($ac --version < /dev/null > /dev/null 2>&1) || continue
+      ver=`$ac --version < /dev/null | head -n 1 | $VERSIONGREP`
+      maj=`echo $ver | $VERSIONMKMAJ`
+      min=`echo $ver | $VERSIONMKMIN`
+      if test $maj -eq $majneeded -a $min -ge $minneeded; then
+        ACLOCAL=$ac
+        echo $ACLOCAL
+        break
+      fi
+    done
+    test -z $ACLOCAL && echo "no"
+  fi
+  test -z $AUTOMAKE || test -z $ACLOCAL && {
+        echo
+        echo "You must have automake installed to compile $package."
+        echo "Download the appropriate package for your distribution,"
+        echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+        exit 1
+  }
+fi
+
+echo -n "checking for libtool... "
+for LIBTOOLIZE in libtoolize glibtoolize nope; do
+  ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 && break
+done
+if test x$LIBTOOLIZE = xnope; then
+  echo "nope."
+  LIBTOOLIZE=libtoolize
+else
+  echo $LIBTOOLIZE
+fi
+($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
+	echo
+	echo "You must have libtool installed to compile $package."
+	echo "Download the appropriate package for your system,"
+	echo "or get the source from one of the GNU ftp sites"
+	echo "listed in http://www.gnu.org/order/ftp.html"
+	DIE=1
+}
+
+if test "$DIE" -eq 1; then
+        exit 1
+fi
+
+if test -z "$*"; then
+        echo "I am going to run ./configure with no arguments - if you wish "
+        echo "to pass any to it, please specify them on the $0 command line."
+fi
+
+echo "Generating configuration files for $package, please wait...."
+
+echo "  $ACLOCAL $ACLOCAL_FLAGS"
+$ACLOCAL $ACLOCAL_FLAGS || exit 1
+echo "  $LIBTOOLIZE --automake"
+$LIBTOOLIZE --automake || exit 1
+echo "  autoheader"
+autoheader || exit 1
+echo "  $AUTOMAKE --add-missing $AUTOMAKE_FLAGS"
+$AUTOMAKE --add-missing $AUTOMAKE_FLAGS || exit 1
+echo "  autoconf"
+autoconf || exit 1
+
+cd $olddir
+$srcdir/configure --enable-maintainer-mode "$@" && echo
Index: /libvorbis-1.2.0/config.guess
===================================================================
--- /libvorbis-1.2.0/config.guess	(revision 16)
+++ /libvorbis-1.2.0/config.guess	(revision 16)
@@ -0,0 +1,1500 @@
+#! /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 Free Software Foundation,
+#   Inc.
+
+timestamp='2006-07-02'
+
+# 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
+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 ;;
+	    *) 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.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *: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 ;;
+    i*: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 ;;
+    x86:Interix*:[3456]*)
+	echo i586-pc-interix${UNAME_RELEASE}
+	exit ;;
+    EM64T:Interix*:[3456]*)
+	echo x86_64-unknown-interix${UNAME_RELEASE}
+	exit ;;
+    [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:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    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 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		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 ;;
+    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 ;;
+    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://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /libvorbis-1.2.0/config.h.in
===================================================================
--- /libvorbis-1.2.0/config.h.in	(revision 16)
+++ /libvorbis-1.2.0/config.h.in	(revision 16)
@@ -0,0 +1,78 @@
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <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
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
Index: /libvorbis-1.2.0/config.sub
===================================================================
--- /libvorbis-1.2.0/config.sub	(revision 16)
+++ /libvorbis-1.2.0/config.sub	(revision 16)
@@ -0,0 +1,1616 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+#   Inc.
+
+timestamp='2006-09-20'
+
+# 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
+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 \
+	| 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 \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | 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-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| 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-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	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
+		;;
+	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
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers*)
+	# 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
+		;;
+	-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
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /libvorbis-1.2.0/configure
===================================================================
--- /libvorbis-1.2.0/configure	(revision 16)
+++ /libvorbis-1.2.0/configure	(revision 16)
@@ -0,0 +1,22114 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 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=:
+  # 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
+
+
+
+
+# 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
+
+# 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
+
+# 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.)
+as_nl='
+'
+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
+  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.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# 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 ||
+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=:
+  # 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
+
+
+:
+_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=:
+  # 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
+
+
+:
+(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 autoconf@gnu.org about your system,
+  echo including any error possibly output before this
+  echo message
+}
+
+
+
+  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" ||
+    { 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
+fi
+echo >conf$$.file
+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
+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$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${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 <<EOF
+$*
+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 "$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 &&
+       echo_test_string=`eval $cmd` &&
+       (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.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+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=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="lib/mdct.c"
+# 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='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+build
+build_cpu
+build_vendor
+build_os
+host
+host_cpu
+host_vendor
+host_os
+target
+target_cpu
+target_vendor
+target_os
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+am__isrc
+CYGPATH_W
+PACKAGE
+VERSION
+ACLOCAL
+AUTOCONF
+AUTOMAKE
+AUTOHEADER
+MAKEINFO
+install_sh
+STRIP
+INSTALL_STRIP_PROGRAM
+mkdir_p
+AWK
+SET_MAKE
+am__leading_dot
+AMTAR
+am__tar
+am__untar
+MAINTAINER_MODE_TRUE
+MAINTAINER_MODE_FALSE
+MAINT
+V_LIB_CURRENT
+V_LIB_REVISION
+V_LIB_AGE
+VF_LIB_CURRENT
+VF_LIB_REVISION
+VF_LIB_AGE
+VE_LIB_CURRENT
+VE_LIB_REVISION
+VE_LIB_AGE
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+EXEEXT
+OBJEXT
+DEPDIR
+am__include
+am__quote
+AMDEP_TRUE
+AMDEP_FALSE
+AMDEPBACKSLASH
+CCDEPMODE
+am__fastdepCC_TRUE
+am__fastdepCC_FALSE
+CPP
+GREP
+EGREP
+LN_S
+ECHO
+AR
+RANLIB
+CXX
+CXXFLAGS
+ac_ct_CXX
+CXXDEPMODE
+am__fastdepCXX_TRUE
+am__fastdepCXX_FALSE
+CXXCPP
+F77
+FFLAGS
+ac_ct_F77
+LIBTOOL
+XSLTPROC
+PDFXMLTEX
+BUILD_DOCS_TRUE
+BUILD_DOCS_FALSE
+HAVE_PKG_CONFIG
+PKG_CONFIG
+OGG_CFLAGS
+OGG_LIBS
+ALLOCA
+LIBOBJS
+VORBIS_LIBS
+DEBUG
+PROFILE
+pthread_lib
+LTLIBOBJS'
+ac_subst_files=''
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+CXX
+CXXFLAGS
+CCC
+CXXCPP
+F77
+FFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (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}'
+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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=no ;;
+
+  -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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+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
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { 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
+    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 .` ||
+  { echo "$as_me: error: Working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { 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 -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { 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" || { 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 this package 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/PACKAGE]
+  --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]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode  enable make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-docs           build the documentation
+  --disable-oggtest       Do not try to compile and run a test Ogg program
+
+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-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]      include additional configurations [automatic]
+  --with-ogg=PFX   Prefix where libogg is installed (optional)
+  --with-ogg-libraries=DIR   Directory where libogg library is installed (optional)
+  --with-ogg-includes=DIR   Directory where libogg header files are installed (optional)
+
+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>
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" || continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`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
+      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
+configure
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 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 $as_me, which was
+generated by GNU Autoconf 2.61.  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=.
+  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=`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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $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=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      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=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	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 &&
+      echo "$as_me: caught signal $ac_signal"
+    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 explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+  set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+  set x "$ac_default_prefix/share/config.site" \
+	"$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $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,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# 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.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+{ echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_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 &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+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
+
+
+{ echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  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` ||
+    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+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
+
+
+{ echo "$as_me:$LINENO: checking target system type" >&5
+echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
+if test "${ac_cv_target+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
+echo "${ECHO_T}$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
+echo "$as_me: error: invalid value of canonical target" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+am__api_version='1.10'
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { 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
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+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
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm -f conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+echo "${ECHO_T}$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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+set x ${MAKE-make}; ac_make=`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
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+  SET_MAKE=
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+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
+    { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+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=libvorbis
+ VERSION=1.2.0
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    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 -'
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+
+V_LIB_CURRENT=4
+V_LIB_REVISION=0
+V_LIB_AGE=4
+VF_LIB_CURRENT=5
+VF_LIB_REVISION=0
+VF_LIB_AGE=2
+VE_LIB_CURRENT=2
+VE_LIB_REVISION=3
+VE_LIB_AGE=0
+
+
+
+
+
+
+
+
+
+
+
+cflags_save="$CFLAGS"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort.  b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions.  Remove them first so a
+# subsequent execution test works.
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  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 | *.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
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6; }
+
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  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 ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  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
+  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
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  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 "echo \"\$as_me:$LINENO: $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
+  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
+  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 "echo \"\$as_me:$LINENO: $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
+  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
+  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 "echo \"\$as_me:$LINENO: $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
+  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
+  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
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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
+  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)
+    { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+  xno)
+    { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$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
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+{ echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking 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
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/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
+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <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 "echo \"\$as_me:$LINENO: $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
+  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
+  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 "echo \"\$as_me:$LINENO: $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
+  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
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <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 "echo \"\$as_me:$LINENO: $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
+  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
+  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 "echo \"\$as_me:$LINENO: $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
+  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
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CFLAGS="$cflags_save"
+
+# 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 --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
+
+
+{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # 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
+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
+
+fi
+
+SED=$lt_cv_path_SED
+{ echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6; }
+
+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Extract the first word of "grep ggrep" to use in msg output
+if test -z "$GREP"; then
+set dummy grep ggrep; ac_prog_name=$2
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  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
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    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
+
+
+fi
+
+GREP="$ac_cv_path_GREP"
+if test -z "$GREP"; then
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     # Extract the first word of "egrep" to use in msg output
+if test -z "$EGREP"; then
+set dummy egrep; ac_prog_name=$2
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  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
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    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
+
+
+fi
+
+EGREP="$ac_cv_path_EGREP"
+if test -z "$EGREP"; then
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name 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
+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+
+# 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.
+  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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
+  { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6; }
+NM="$lt_cv_path_NM"
+
+{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6; }
+fi
+
+{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+aix4* | aix5*)
+  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'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  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
+  ;;
+
+interix3*)
+  # 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* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+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
+  ;;
+
+solaris*)
+  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
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$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 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 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=$?
+  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 4649 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|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=$?
+  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-*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-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          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"
+  { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	lt_cv_cc_needs_belf=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$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=$?
+  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" ;;
+      *)    LD="${LD-ld} -64" ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#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 "echo \"\$as_me:$LINENO: $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
+  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
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$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 "echo \"\$as_me:$LINENO: $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
+  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
+  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 echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$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 "echo \"\$as_me:$LINENO: $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
+  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
+  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
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#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 "echo \"\$as_me:$LINENO: $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
+  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
+  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
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CXXFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/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_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether 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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether 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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_prog_f77_g=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+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
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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*)
+    # 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
+    ;;
+  *)
+    # 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.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    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`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6; }
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \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\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux* | k*bsd*-gnu)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDGIRSTW]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  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
+
+# 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, 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.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # 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=$?
+  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 <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+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=$?
+  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 -f 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
+  { echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6; }
+else
+  { echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6; }
+fi
+
+{ echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+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.
+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'
+
+# 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 avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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"
+    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
+  { echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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"
+    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
+  { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { 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"
+    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
+  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+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
+
+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
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 <<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
+
+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
+  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 <<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
+
+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
+  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# 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
+
+
+# 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
+
+# Use C for the default configuration in the libtool script
+tagname=
+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;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$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:7145: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:7149: \$? = $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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$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=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&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*)
+      # 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'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # 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'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    interix3*)
+      # 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
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # 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='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      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
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic='-qnocommon'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # 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'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	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'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      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
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$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:7413: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:7417: \$? = $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_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_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
+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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$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_prog_compiler_static_works=yes
+       fi
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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:7517: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:7521: \$? = $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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$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
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # 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_"
+  # 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.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  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-%%"`
+
+  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
+    # 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>/dev/null` 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
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<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.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      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
+
+      # 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 can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    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*)
+      # _LT_AC_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
+      ;;
+
+    interix3*)
+      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'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	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' ;;
+	esac
+	archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; 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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+	link_all_deplibs=no
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      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 <<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.
+
+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
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$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
+      ;;
+
+    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
+	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].*|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
+
+	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_libdir_separator=':'
+      link_all_deplibs=yes
+
+      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
+  	  hardcode_direct=yes
+	  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
+
+      # 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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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 "${wl}${allow_undefined_flag}"; 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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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*)
+      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
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    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=' '
+      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 "$deplibs" | $SED -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*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc=no
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec=''
+      link_all_deplibs=yes
+    if test "$GCC" = 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'
+      module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs=no
+          ;;
+      esac
+    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_separator=:
+
+	hardcode_direct=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 ${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_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=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 ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      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
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      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
+      ;;
+
+    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 ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      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 ${wl}-set_version ${wl}$verstring` ${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='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -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; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${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}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	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'
+      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 linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      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*)
+      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='`test -z "$SCOABSPATH" && echo ${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,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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
+  fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+#
+# 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.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 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=$?
+  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*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+    ;;
+  freebsd*) # from 4.6 on
+    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'
+  ;;
+
+interix3*)
+  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
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=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
+  ;;
+
+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"
+  ;;
+
+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
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      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
+  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'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    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'
+  ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var" || \
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existant 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_AC_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
+{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink; 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
+
+striplib=
+old_striplib=
+{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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"
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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"
+         { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+       else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+       ;;
+   *)
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+    ;;
+  esac
+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*)
+    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
+    { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = 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
+
+   ;;
+
+  *)
+    { echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* 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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_shl_load=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_shl_load=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  { echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* 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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_svld_dlopen=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_dld_link=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+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"
+
+    { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 <<EOF
+#line 9814 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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 ());
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && 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
+{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$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\"
+      { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 <<EOF
+#line 9914 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#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 ());
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && 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
+{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$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
+
+
+# Report which library types will actually be built
+{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&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
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6; }
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+# 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//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# 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
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# 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
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# 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 and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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 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
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$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
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_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
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\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
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags was given.
+if test "${with_tags+set}" = set; then
+  withval=$with_tags; tagnames="$withval"
+fi
+
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      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_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# 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
+compiler_CXX=$CC
+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-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# 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.
+  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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
+  { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_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
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${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
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    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.
+    archive_cmds_CXX='$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
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  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
+      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].*|aix5*)
+	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.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    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
+	  hardcode_direct_CXX=yes
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=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_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	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
+
+    # 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_CXX=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_CXX='-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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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_CXX='${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_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX='$convenience'
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds its shared libraries.
+	archive_expsym_cmds_CXX="\$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
+      allow_undefined_flag_CXX=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+    ;;
+
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$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...
+      archive_expsym_cmds_CXX='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
+      ld_shlibs_CXX=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      archive_cmds_need_lc_CXX=no
+      hardcode_direct_CXX=no
+      hardcode_automatic_CXX=yes
+      hardcode_shlibpath_var_CXX=unsupported
+      whole_archive_flag_spec_CXX=''
+      link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          archive_cmds_CXX='$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'
+        fi
+        module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_CXX=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=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
+      ld_shlibs_CXX=no
+      ;;
+    aCC*)
+      archive_cmds_CXX='$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) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$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
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_CXX=:
+
+      case $host_cpu in
+      hppa*64*|ia64*)
+	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+        ;;
+      *)
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case $host_cpu in
+    hppa*64*|ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=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
+	ld_shlibs_CXX=no
+	;;
+      aCC*)
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$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 $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case $host_cpu in
+	    hppa*64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$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
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  interix3*)
+    hardcode_direct_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    export_dynamic_flag_spec_CXX='${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_CXX='$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_CXX='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++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  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.
+	archive_cmds_CXX='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'
+	archive_expsym_cmds_CXX='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 $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# 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."*)
+  	  archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  archive_expsym_cmds_CXX='$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
+  	  archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	archive_cmds_need_lc_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	archive_expsym_cmds_CXX='$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'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${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++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$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
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# 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 $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=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::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    ld_shlibs_CXX=no
+    ;;
+  openbsd*)
+    hardcode_direct_CXX=yes
+    hardcode_shlibpath_var_CXX=no
+    archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      export_dynamic_flag_spec_CXX='${wl}-E'
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    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.
+	archive_cmds_CXX='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'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# 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 $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # 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
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  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.
+	archive_cmds_CXX='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'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# 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 $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$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` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # 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
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+        archive_cmds_need_lc_CXX=yes
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$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'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=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.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$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.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$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.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$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
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+    no_undefined_flag_CXX='${wl}-z,text'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$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.
+    # 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.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    no_undefined_flag_CXX='${wl}-z,text'
+    allow_undefined_flag_CXX='${wl}-z,nodefs'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+    export_dynamic_flag_spec_CXX='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # 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
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+  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 "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${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 "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${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 "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # 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.
+    postdeps_CXX='-lCstd -lCrun'
+    ;;
+  esac
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-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_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # 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_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # 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_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    interix3*)
+      # 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_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # 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*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--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
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           lt_prog_compiler_pic_CXX='-qnocommon'
+           lt_prog_compiler_wl_CXX='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -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:12250: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:12254: \$? = $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_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$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_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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_CXX=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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # 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_CXX='$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_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$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'
+  ;;
+  linux* | k*bsd*-gnu)
+    link_all_deplibs_CXX=no
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX 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.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+	pic_flag=$lt_prog_compiler_pic_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+    ;;
+  freebsd*) # from 4.6 on
+    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'
+  ;;
+
+interix3*)
+  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
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=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
+  ;;
+
+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"
+  ;;
+
+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
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      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
+  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'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    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'
+  ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var_CXX" || \
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != 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_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink; 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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# 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_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+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
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+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-%%"`
+
+
+{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&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
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6; }
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-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_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # 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_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # 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_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    interix3*)
+      # 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_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # 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_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # 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_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-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_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-fpic'
+	lt_prog_compiler_static_F77='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # 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:13915: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:13919: \$? = $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_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_F77=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$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_prog_compiler_static_works_F77=yes
+       fi
+     else
+       lt_prog_compiler_static_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+    :
+else
+    lt_prog_compiler_static_F77=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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:14019: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:14023: \$? = $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_F77=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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # 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_F77="_GLOBAL_OFFSET_TABLE_"
+  # 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.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  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-%%"`
+
+  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_F77=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_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${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_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` 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
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<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.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$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_F77='-L$libdir'
+      hardcode_minus_L_F77=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 can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$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_F77='$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_F77='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_F77=no
+      fi
+      ;;
+
+    interix3*)
+      hardcode_direct_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_F77='${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_F77='$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_F77='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'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_F77='${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_F77='${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' ;;
+	esac
+	archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+	link_all_deplibs_F77=no
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$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_F77=no
+	cat <<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.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_F77=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
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_F77=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$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_F77=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_F77=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
+	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_F77='$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_F77='$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].*|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
+
+	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_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      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
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=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_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  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
+
+      # 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_F77=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_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$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
+      program main
+
+      end
+_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 "echo \"\$as_me:$LINENO: $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
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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_F77='${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_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77='$convenience'
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_F77="\$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*)
+      archive_cmds_F77='$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_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    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_F77=' '
+      allow_undefined_flag_F77=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_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=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_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$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_F77='$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_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$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_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	hardcode_direct_F77=yes
+	export_dynamic_flag_spec_F77='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_F77=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$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_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$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_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	*)
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$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_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$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'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_F77=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_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z,text'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$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_F77='${wl}-z,text'
+      allow_undefined_flag_F77='${wl}-z,nodefs'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6; }
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 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.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+	pic_flag=$lt_prog_compiler_pic_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+    ;;
+  freebsd*) # from 4.6 on
+    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'
+  ;;
+
+interix3*)
+  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
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=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
+  ;;
+
+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"
+  ;;
+
+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
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      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
+  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'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    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'
+  ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var_F77" || \
+   test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != 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_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6; }
+
+if test "$hardcode_action_F77" = relink; 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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_F77
+
+# 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_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# 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_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+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-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$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:16206: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16210: \$? = $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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-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_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # 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_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # 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_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    interix3*)
+      # 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_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # 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_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_GCJ='-qnocommon'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # 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_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-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_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-fpic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # 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:16474: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16478: \$? = $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_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_GCJ=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$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_prog_compiler_static_works_GCJ=yes
+       fi
+     else
+       lt_prog_compiler_static_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+    :
+else
+    lt_prog_compiler_static_GCJ=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$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:16578: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:16582: \$? = $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_GCJ=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 ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # 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_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # 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.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  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-%%"`
+
+  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_GCJ=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_GCJ='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${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_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` 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
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<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.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$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_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=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 can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$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_GCJ='$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_GCJ='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_GCJ=no
+      fi
+      ;;
+
+    interix3*)
+      hardcode_direct_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_GCJ='${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_GCJ='$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_GCJ='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'
+      ;;
+
+    linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_GCJ='${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_GCJ='${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' ;;
+	esac
+	archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+	link_all_deplibs_GCJ=no
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$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_GCJ=no
+	cat <<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.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_GCJ=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
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_GCJ=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$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_GCJ=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_GCJ=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
+	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_GCJ='$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_GCJ='$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].*|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
+
+	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_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      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
+  	  hardcode_direct_GCJ=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=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_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  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
+
+      # 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_GCJ=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_GCJ='-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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# 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 '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+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_GCJ='${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_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ='$convenience'
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_GCJ="\$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*)
+      archive_cmds_GCJ='$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_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    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_GCJ=' '
+      allow_undefined_flag_GCJ=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_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_GCJ=no
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ=''
+      link_all_deplibs_GCJ=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_GCJ=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=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_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$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_GCJ='$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_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$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_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	hardcode_direct_GCJ=yes
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_GCJ=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$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_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$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_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	*)
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$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_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$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'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_GCJ=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_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z,text'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$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_GCJ='${wl}-z,text'
+      allow_undefined_flag_GCJ='${wl}-z,nodefs'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ 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.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+	pic_flag=$lt_prog_compiler_pic_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+  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 ';' >/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.
+    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
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+  ;;
+
+aix4* | aix5*)
+  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*)
+  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'
+  ;;
+
+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*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    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'
+    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*)
+      # 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}${versuffix}$shared_ext ${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`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  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
+    ;;
+  freebsd*) # from 4.6 on
+    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'
+  ;;
+
+interix3*)
+  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
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=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
+  ;;
+
+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"
+  ;;
+
+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
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      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
+  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'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    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'
+  ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != 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_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
+
+if test "$hardcode_action_GCJ" = relink; 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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_GCJ
+
+# 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_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# 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_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# 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.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+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-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # 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
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_RC
+
+# 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_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# 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_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-docs was given.
+if test "${enable_docs+set}" = set; then
+  enableval=$enable_docs; case "${enableval}" in
+    yes) build_docs=true;;
+    no)  build_docs=false;;
+    *)   { { echo "$as_me:$LINENO: error: unknown value ${enableval} for --enable-docs" >&5
+echo "$as_me: error: unknown value ${enableval} for --enable-docs" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+else
+  build_docs=false
+fi
+
+
+if test x$build_docs = xtrue; then
+  for ac_prog in xsltproc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_XSLTPROC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$XSLTPROC"; then
+  ac_cv_prog_XSLTPROC="$XSLTPROC" # 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_XSLTPROC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+XSLTPROC=$ac_cv_prog_XSLTPROC
+if test -n "$XSLTPROC"; then
+  { echo "$as_me:$LINENO: result: $XSLTPROC" >&5
+echo "${ECHO_T}$XSLTPROC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$XSLTPROC" && break
+done
+test -n "$XSLTPROC" || XSLTPROC="/bin/false"
+
+  for ac_prog in pdfxmltex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PDFXMLTEX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$PDFXMLTEX"; then
+  ac_cv_prog_PDFXMLTEX="$PDFXMLTEX" # 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_PDFXMLTEX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PDFXMLTEX=$ac_cv_prog_PDFXMLTEX
+if test -n "$PDFXMLTEX"; then
+  { echo "$as_me:$LINENO: result: $PDFXMLTEX" >&5
+echo "${ECHO_T}$PDFXMLTEX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$PDFXMLTEX" && break
+done
+test -n "$PDFXMLTEX" || PDFXMLTEX="/bin/false"
+
+  if test "x$XSLTPROC" = "x/bin/false" || test "x$PDFXMLTEX" = "x/bin/false"; then
+    build_docs=false
+    { echo "$as_me:$LINENO: WARNING: Documentation will not be built!" >&5
+echo "$as_me: WARNING: Documentation will not be built!" >&2;}
+  fi
+fi
+
+ if test x$build_docs = xtrue; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
+
+
+
+cflags_save="$CFLAGS"
+if test -z "$GCC"; then
+	case $host in
+	*-*-irix*)
+						if test -z "$CC"; then
+			CC=cc
+		fi
+		DEBUG="-g -signed"
+		CFLAGS="-O2 -w -signed"
+		PROFILE="-p -g3 -O2 -signed" ;;
+	sparc-sun-solaris*)
+		DEBUG="-v -g"
+		CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
+		PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc" ;;
+	*)
+		DEBUG="-g"
+		CFLAGS="-O"
+		PROFILE="-g -p" ;;
+        esac
+else
+
+	{ echo "$as_me:$LINENO: checking GCC version" >&5
+echo $ECHO_N "checking GCC version... $ECHO_C" >&6; }
+	GCC_VERSION=`$CC -dumpversion`
+	{ echo "$as_me:$LINENO: result: $GCC_VERSION" >&5
+echo "${ECHO_T}$GCC_VERSION" >&6; }
+	case $host in
+	*86-*-linux*)
+		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
+		CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
+#              	PROFILE="-Wall -W -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
+		PROFILE="-Wall -W -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"
+
+		# glibc < 2.1.3 has a serious FP bug in the math inline header
+		# that will cripple Vorbis.  Look to see if the magic FP stack
+		# clobber is missing in the mathinline header, thus indicating
+		# the buggy version
+
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+				#define __LIBC_INTERNAL_MATH_INLINES 1
+			     	#define __OPTIMIZE__
+				#include <math.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "log10.*fldlg2.*fxch" >/dev/null 2>&1; then
+  bad=maybe
+else
+  bad=no
+fi
+rm -f conftest*
+
+		if test ${bad} = "maybe" ;then
+		      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+					#define __LIBC_INTERNAL_MATH_INLINES 1
+				     	#define __OPTIMIZE__
+					#include <math.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "log10.*fldlg2.*fxch.*st\([0123456789]*\)" >/dev/null 2>&1; then
+  bad=no
+else
+  bad=yes
+fi
+rm -f conftest*
+
+		fi
+ 		if test ${bad} = "yes" ;then
+ { echo "$as_me:$LINENO: WARNING:                                                         " >&5
+echo "$as_me: WARNING:                                                         " >&2;}
+ { echo "$as_me:$LINENO: WARNING: ********************************************************" >&5
+echo "$as_me: WARNING: ********************************************************" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * The glibc headers on this machine have a serious bug *" >&5
+echo "$as_me: WARNING: * The glibc headers on this machine have a serious bug *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * in /usr/include/bits/mathinline.h  This bug affects  *" >&5
+echo "$as_me: WARNING: * in /usr/include/bits/mathinline.h  This bug affects  *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * all floating point code, not just Ogg, built on this *" >&5
+echo "$as_me: WARNING: * all floating point code, not just Ogg, built on this *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * machine.  Upgrading to glibc 2.1.3 is strongly urged *" >&5
+echo "$as_me: WARNING: * machine.  Upgrading to glibc 2.1.3 is strongly urged *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * to correct the problem.  Note that upgrading glibc   *" >&5
+echo "$as_me: WARNING: * to correct the problem.  Note that upgrading glibc   *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * will not fix any previously built programs; this is  *" >&5
+echo "$as_me: WARNING: * will not fix any previously built programs; this is  *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * a compile-time time bug.                             *" >&5
+echo "$as_me: WARNING: * a compile-time time bug.                             *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * To work around the problem for this build of Ogg,    *" >&5
+echo "$as_me: WARNING: * To work around the problem for this build of Ogg,    *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * autoconf is disabling all math inlining.  This will  *" >&5
+echo "$as_me: WARNING: * autoconf is disabling all math inlining.  This will  *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * hurt Ogg performace but is necessary for an Ogg that *" >&5
+echo "$as_me: WARNING: * hurt Ogg performace but is necessary for an Ogg that *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * will actually work.  Once glibc is upgraded, rerun   *" >&5
+echo "$as_me: WARNING: * will actually work.  Once glibc is upgraded, rerun   *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: * configure and make to build with inlining.           *" >&5
+echo "$as_me: WARNING: * configure and make to build with inlining.           *" >&2;}
+ { echo "$as_me:$LINENO: WARNING: ********************************************************" >&5
+echo "$as_me: WARNING: ********************************************************" >&2;}
+ { echo "$as_me:$LINENO: WARNING:                                                         " >&5
+echo "$as_me: WARNING:                                                         " >&2;}
+
+  		CFLAGS=${OPT}" -D__NO_MATH_INLINES"
+  		PROFILE=${PROFILE}" -D__NO_MATH_INLINES"
+  		fi;;
+	powerpc-*-linux*)
+		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES"
+		CFLAGS="-O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT"
+		PROFILE="-pg -g -O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT";;
+	*-*-linux*)
+		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
+		CFLAGS="-O20 -ffast-math -D_REENTRANT -fsigned-char"
+		PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";;
+	sparc-sun-*)
+		DEBUG="-g -Wall -W -D__NO_MATH_INLINES -fsigned-char -mv8"
+		CFLAGS="-O20 -ffast-math -D__NO_MATH_INLINES -fsigned-char -mv8"
+		PROFILE="-pg -g -O20 -D__NO_MATH_INLINES -fsigned-char -mv8" ;;
+	*-*-darwin*)
+		DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char"
+		CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O4 -ffast-math -fsigned-char"
+		PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O4 -ffast-math -fsigned-char";;
+	*)
+		DEBUG="-g -Wall -W -D__NO_MATH_INLINES -fsigned-char"
+		CFLAGS="-O20 -D__NO_MATH_INLINES -fsigned-char"
+		PROFILE="-O20 -g -pg -D__NO_MATH_INLINES -fsigned-char" ;;
+        esac
+fi
+CFLAGS="$CFLAGS $cflags_save"
+
+
+if test "${ac_cv_header_memory_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for memory.h" >&5
+echo $ECHO_N "checking for memory.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_memory_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_memory_h" >&5
+echo "${ECHO_T}$ac_cv_header_memory_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking memory.h usability" >&5
+echo $ECHO_N "checking memory.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <memory.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 "echo \"\$as_me:$LINENO: $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
+  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
+  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
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking memory.h presence" >&5
+echo $ECHO_N "checking memory.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <memory.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 "echo \"\$as_me:$LINENO: $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
+  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
+  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
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: memory.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: memory.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: memory.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: memory.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: memory.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: memory.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: memory.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: memory.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: memory.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: memory.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: memory.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: memory.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: memory.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: memory.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: memory.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: memory.h: in the future, the compiler will take precedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for memory.h" >&5
+echo $ECHO_N "checking for memory.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_memory_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_memory_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_memory_h" >&5
+echo "${ECHO_T}$ac_cv_header_memory_h" >&6; }
+
+fi
+if test $ac_cv_header_memory_h = yes; then
+  CFLAGS="$CFLAGS -DUSE_MEMORY_H"
+else
+  :
+fi
+
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6; }
+if test "${ac_cv_lib_m_cos+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 cos ();
+int
+main ()
+{
+return cos ();
+  ;
+  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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_m_cos=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_m_cos=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6; }
+if test $ac_cv_lib_m_cos = yes; then
+  VORBIS_LIBS="-lm"
+else
+  VORBIS_LIBS=""
+fi
+
+{ echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
+echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; }
+if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_pthread_pthread_create=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pthread_pthread_create=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
+echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; }
+if test $ac_cv_lib_pthread_pthread_create = yes; then
+  pthread_lib="-lpthread"
+else
+  :
+fi
+
+
+HAVE_OGG=no
+# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_HAVE_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$HAVE_PKG_CONFIG"; then
+  ac_cv_prog_HAVE_PKG_CONFIG="$HAVE_PKG_CONFIG" # 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_PKG_CONFIG="yes"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+HAVE_PKG_CONFIG=$ac_cv_prog_HAVE_PKG_CONFIG
+if test -n "$HAVE_PKG_CONFIG"; then
+  { echo "$as_me:$LINENO: result: $HAVE_PKG_CONFIG" >&5
+echo "${ECHO_T}$HAVE_PKG_CONFIG" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+if test "x$HAVE_PKG_CONFIG" = "xyes"
+then
+
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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"
+    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_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        { echo "$as_me:$LINENO: checking for ogg >= 1.0" >&5
+echo $ECHO_N "checking for ogg >= 1.0... $ECHO_C" >&6; }
+
+        if $PKG_CONFIG --exists "ogg >= 1.0" ; then
+            { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+            succeeded=yes
+
+            { echo "$as_me:$LINENO: checking OGG_CFLAGS" >&5
+echo $ECHO_N "checking OGG_CFLAGS... $ECHO_C" >&6; }
+            OGG_CFLAGS=`$PKG_CONFIG --cflags "ogg >= 1.0"`
+            { echo "$as_me:$LINENO: result: $OGG_CFLAGS" >&5
+echo "${ECHO_T}$OGG_CFLAGS" >&6; }
+
+            { echo "$as_me:$LINENO: checking OGG_LIBS" >&5
+echo $ECHO_N "checking OGG_LIBS... $ECHO_C" >&6; }
+            OGG_LIBS=`$PKG_CONFIG --libs "ogg >= 1.0"`
+            { echo "$as_me:$LINENO: result: $OGG_LIBS" >&5
+echo "${ECHO_T}$OGG_LIBS" >&6; }
+        else
+            OGG_CFLAGS=""
+            OGG_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but
+            ## do set a variable so people can do so.
+            OGG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ogg >= 1.0"`
+
+        fi
+
+
+
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     HAVE_OGG=yes
+  else
+     HAVE_OGG=no
+  fi
+
+fi
+if test "x$HAVE_OGG" = "xno"
+then
+
+# Check whether --with-ogg was given.
+if test "${with_ogg+set}" = set; then
+  withval=$with_ogg; ogg_prefix="$withval"
+else
+  ogg_prefix=""
+fi
+
+
+# Check whether --with-ogg-libraries was given.
+if test "${with_ogg_libraries+set}" = set; then
+  withval=$with_ogg_libraries; ogg_libraries="$withval"
+else
+  ogg_libraries=""
+fi
+
+
+# Check whether --with-ogg-includes was given.
+if test "${with_ogg_includes+set}" = set; then
+  withval=$with_ogg_includes; ogg_includes="$withval"
+else
+  ogg_includes=""
+fi
+
+# Check whether --enable-oggtest was given.
+if test "${enable_oggtest+set}" = set; then
+  enableval=$enable_oggtest;
+else
+  enable_oggtest=yes
+fi
+
+
+  if test "x$ogg_libraries" != "x" ; then
+    OGG_LIBS="-L$ogg_libraries"
+  elif test "x$ogg_prefix" != "x" ; then
+    OGG_LIBS="-L$ogg_prefix/lib"
+  elif test "x$prefix" != "xNONE" ; then
+    OGG_LIBS="-L$prefix/lib"
+  fi
+
+  OGG_LIBS="$OGG_LIBS -logg"
+
+  if test "x$ogg_includes" != "x" ; then
+    OGG_CFLAGS="-I$ogg_includes"
+  elif test "x$ogg_prefix" != "x" ; then
+    OGG_CFLAGS="-I$ogg_prefix/include"
+  elif test "x$prefix" != "xNONE"; then
+    OGG_CFLAGS="-I$prefix/include"
+  fi
+
+  { echo "$as_me:$LINENO: checking for Ogg" >&5
+echo $ECHO_N "checking for Ogg... $ECHO_C" >&6; }
+  no_ogg=""
+
+
+  if test "x$enable_oggtest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $OGG_CFLAGS"
+    LIBS="$LIBS $OGG_LIBS"
+      rm -f conf.oggtest
+      if test "$cross_compiling" = yes; then
+  echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ogg/ogg.h>
+
+int main ()
+{
+  system("touch conf.oggtest");
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+no_ogg=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_ogg" = "x" ; then
+     { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+     :
+  else
+     { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+     if test -f conf.oggtest ; then
+       :
+     else
+       echo "*** Could not run Ogg test program, checking why..."
+       CFLAGS="$CFLAGS $OGG_CFLAGS"
+       LIBS="$LIBS $OGG_LIBS"
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#include <ogg/ogg.h>
+
+int
+main ()
+{
+ return 0;
+  ;
+  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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+   echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding Ogg or finding the wrong"
+       echo "*** version of Ogg. If it is not finding Ogg, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	 echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means Ogg was incorrectly installed"
+       echo "*** or that you have moved Ogg since it was installed. In the latter case, you"
+       echo "*** may want to edit the ogg-config script: $OGG_CONFIG"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     OGG_CFLAGS=""
+     OGG_LIBS=""
+     { { echo "$as_me:$LINENO: error: must have Ogg installed!" >&5
+echo "$as_me: error: must have Ogg installed!" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+
+  rm -f conf.oggtest
+
+  libs_save=$LIBS
+  LIBS="$OGG_LIBS $VORBIS_LIBS"
+  { echo "$as_me:$LINENO: checking for oggpack_writealign" >&5
+echo $ECHO_N "checking for oggpack_writealign... $ECHO_C" >&6; }
+if test "${ac_cv_func_oggpack_writealign+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define oggpack_writealign to an innocuous variant, in case <limits.h> declares oggpack_writealign.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define oggpack_writealign innocuous_oggpack_writealign
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char oggpack_writealign (); 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 oggpack_writealign
+
+/* 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 oggpack_writealign ();
+/* 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_oggpack_writealign || defined __stub___oggpack_writealign
+choke me
+#endif
+
+int
+main ()
+{
+return oggpack_writealign ();
+  ;
+  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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_oggpack_writealign=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_oggpack_writealign=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_oggpack_writealign" >&5
+echo "${ECHO_T}$ac_cv_func_oggpack_writealign" >&6; }
+if test $ac_cv_func_oggpack_writealign = yes; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: Ogg >= 1.0 required !" >&5
+echo "$as_me: error: Ogg >= 1.0 required !" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+  LIBS=$libs_save
+fi
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
+  ;
+  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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_working_alloca_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_working_alloca_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for alloca" >&5
+echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+				    if (p) return 0;
+  ;
+  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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_alloca_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_alloca_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* 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 "echo \"\$as_me:$LINENO: $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
+  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 &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_stack_direction=0
+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
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  return find_stack_direction () < 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_stack_direction=1
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+{ echo "$as_me:$LINENO: checking for working memcmp" >&5
+echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; }
+if test "${ac_cv_func_memcmp_working+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_memcmp_working=no
+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 ()
+{
+
+  /* Some versions of memcmp are not 8-bit clean.  */
+  char c0 = '\100', c1 = '\200', c2 = '\201';
+  if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
+    return 1;
+
+  /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
+     or more and with at least one buffer not starting on a 4-byte boundary.
+     William Lewis provided this test program.   */
+  {
+    char foo[21];
+    char bar[21];
+    int i;
+    for (i = 0; i < 4; i++)
+      {
+	char *a = foo + i;
+	char *b = bar + i;
+	strcpy (a, "--------01111111");
+	strcpy (b, "--------10000000");
+	if (memcmp (a, b, 16) >= 0)
+	  return 1;
+      }
+    return 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_memcmp_working=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_memcmp_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
+echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; }
+test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
+  *" memcmp.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile lib/Makefile lib/modes/Makefile lib/books/Makefile lib/books/coupled/Makefile lib/books/uncoupled/Makefile lib/books/floor/Makefile doc/Makefile doc/vorbisfile/Makefile doc/vorbisenc/Makefile include/Makefile include/vorbis/Makefile examples/Makefile vq/Makefile libvorbis.spec vorbis.pc vorbisenc.pc vorbisfile.pc vorbis-uninstalled.pc vorbisenc-uninstalled.pc vorbisfile-uninstalled.pc"
+
+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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $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" &&
+      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+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=`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 "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be 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=:
+  # 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
+
+
+
+
+# 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
+
+# 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
+
+# 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.)
+as_nl='
+'
+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
+  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.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# 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 ||
+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" ||
+    { 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
+fi
+echo >conf$$.file
+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
+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 $as_me, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# 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_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --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_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.61,
+  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 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'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  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 )
+    echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { 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
+if \$ac_cs_recheck; then
+  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  CONFIG_SHELL=$SHELL
+  export CONFIG_SHELL
+  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+    "lib/modes/Makefile") CONFIG_FILES="$CONFIG_FILES lib/modes/Makefile" ;;
+    "lib/books/Makefile") CONFIG_FILES="$CONFIG_FILES lib/books/Makefile" ;;
+    "lib/books/coupled/Makefile") CONFIG_FILES="$CONFIG_FILES lib/books/coupled/Makefile" ;;
+    "lib/books/uncoupled/Makefile") CONFIG_FILES="$CONFIG_FILES lib/books/uncoupled/Makefile" ;;
+    "lib/books/floor/Makefile") CONFIG_FILES="$CONFIG_FILES lib/books/floor/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "doc/vorbisfile/Makefile") CONFIG_FILES="$CONFIG_FILES doc/vorbisfile/Makefile" ;;
+    "doc/vorbisenc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/vorbisenc/Makefile" ;;
+    "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+    "include/vorbis/Makefile") CONFIG_FILES="$CONFIG_FILES include/vorbis/Makefile" ;;
+    "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "vq/Makefile") CONFIG_FILES="$CONFIG_FILES vq/Makefile" ;;
+    "libvorbis.spec") CONFIG_FILES="$CONFIG_FILES libvorbis.spec" ;;
+    "vorbis.pc") CONFIG_FILES="$CONFIG_FILES vorbis.pc" ;;
+    "vorbisenc.pc") CONFIG_FILES="$CONFIG_FILES vorbisenc.pc" ;;
+    "vorbisfile.pc") CONFIG_FILES="$CONFIG_FILES vorbisfile.pc" ;;
+    "vorbis-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES vorbis-uninstalled.pc" ;;
+    "vorbisenc-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES vorbisenc-uninstalled.pc" ;;
+    "vorbisfile-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES vorbisfile-uninstalled.pc" ;;
+
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason 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")
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+_ACEOF
+
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+build!$build$ac_delim
+build_cpu!$build_cpu$ac_delim
+build_vendor!$build_vendor$ac_delim
+build_os!$build_os$ac_delim
+host!$host$ac_delim
+host_cpu!$host_cpu$ac_delim
+host_vendor!$host_vendor$ac_delim
+host_os!$host_os$ac_delim
+target!$target$ac_delim
+target_cpu!$target_cpu$ac_delim
+target_vendor!$target_vendor$ac_delim
+target_os!$target_os$ac_delim
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+INSTALL_DATA!$INSTALL_DATA$ac_delim
+am__isrc!$am__isrc$ac_delim
+CYGPATH_W!$CYGPATH_W$ac_delim
+PACKAGE!$PACKAGE$ac_delim
+VERSION!$VERSION$ac_delim
+ACLOCAL!$ACLOCAL$ac_delim
+AUTOCONF!$AUTOCONF$ac_delim
+AUTOMAKE!$AUTOMAKE$ac_delim
+AUTOHEADER!$AUTOHEADER$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
+install_sh!$install_sh$ac_delim
+STRIP!$STRIP$ac_delim
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+mkdir_p!$mkdir_p$ac_delim
+AWK!$AWK$ac_delim
+SET_MAKE!$SET_MAKE$ac_delim
+am__leading_dot!$am__leading_dot$ac_delim
+AMTAR!$AMTAR$ac_delim
+am__tar!$am__tar$ac_delim
+am__untar!$am__untar$ac_delim
+MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
+MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
+MAINT!$MAINT$ac_delim
+V_LIB_CURRENT!$V_LIB_CURRENT$ac_delim
+V_LIB_REVISION!$V_LIB_REVISION$ac_delim
+V_LIB_AGE!$V_LIB_AGE$ac_delim
+VF_LIB_CURRENT!$VF_LIB_CURRENT$ac_delim
+VF_LIB_REVISION!$VF_LIB_REVISION$ac_delim
+VF_LIB_AGE!$VF_LIB_AGE$ac_delim
+VE_LIB_CURRENT!$VE_LIB_CURRENT$ac_delim
+VE_LIB_REVISION!$VE_LIB_REVISION$ac_delim
+VE_LIB_AGE!$VE_LIB_AGE$ac_delim
+CC!$CC$ac_delim
+CFLAGS!$CFLAGS$ac_delim
+LDFLAGS!$LDFLAGS$ac_delim
+CPPFLAGS!$CPPFLAGS$ac_delim
+ac_ct_CC!$ac_ct_CC$ac_delim
+EXEEXT!$EXEEXT$ac_delim
+OBJEXT!$OBJEXT$ac_delim
+DEPDIR!$DEPDIR$ac_delim
+am__include!$am__include$ac_delim
+am__quote!$am__quote$ac_delim
+AMDEP_TRUE!$AMDEP_TRUE$ac_delim
+AMDEP_FALSE!$AMDEP_FALSE$ac_delim
+AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
+CCDEPMODE!$CCDEPMODE$ac_delim
+_ACEOF
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+    break
+  elif $ac_last_try; then
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+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
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+  ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF$ac_eof
+_ACEOF
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  cat >conf$$subs.sed <<_ACEOF
+am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
+am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+CPP!$CPP$ac_delim
+GREP!$GREP$ac_delim
+EGREP!$EGREP$ac_delim
+LN_S!$LN_S$ac_delim
+ECHO!$ECHO$ac_delim
+AR!$AR$ac_delim
+RANLIB!$RANLIB$ac_delim
+CXX!$CXX$ac_delim
+CXXFLAGS!$CXXFLAGS$ac_delim
+ac_ct_CXX!$ac_ct_CXX$ac_delim
+CXXDEPMODE!$CXXDEPMODE$ac_delim
+am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
+am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+CXXCPP!$CXXCPP$ac_delim
+F77!$F77$ac_delim
+FFLAGS!$FFLAGS$ac_delim
+ac_ct_F77!$ac_ct_F77$ac_delim
+LIBTOOL!$LIBTOOL$ac_delim
+XSLTPROC!$XSLTPROC$ac_delim
+PDFXMLTEX!$PDFXMLTEX$ac_delim
+BUILD_DOCS_TRUE!$BUILD_DOCS_TRUE$ac_delim
+BUILD_DOCS_FALSE!$BUILD_DOCS_FALSE$ac_delim
+HAVE_PKG_CONFIG!$HAVE_PKG_CONFIG$ac_delim
+PKG_CONFIG!$PKG_CONFIG$ac_delim
+OGG_CFLAGS!$OGG_CFLAGS$ac_delim
+OGG_LIBS!$OGG_LIBS$ac_delim
+ALLOCA!$ALLOCA$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+VORBIS_LIBS!$VORBIS_LIBS$ac_delim
+DEBUG!$DEBUG$ac_delim
+PROFILE!$PROFILE$ac_delim
+pthread_lib!$pthread_lib$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+_ACEOF
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 35; then
+    break
+  elif $ac_last_try; then
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+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
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+  ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
+_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
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+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 ||
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      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 "`IFS=:
+	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    fi
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin";;
+    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 ||
+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=`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 ||
+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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+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=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`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
+# 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=
+
+case `sed -n '/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  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
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;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
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+
+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"; } &&
+  { 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
+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
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+_ACEOF
+
+# Transform confdefs.h into a sed script `conftest.defines', that
+# substitutes the proper values into config.h.in to produce config.h.
+rm -f conftest.defines conftest.tail
+# First, append a space to every undef/define line, to ease matching.
+echo 's/$/ /' >conftest.defines
+# Then, protect against being on the right side of a sed subst, or in
+# an unquoted here document, in config.status.  If some macros were
+# called several times there might be several #defines for the same
+# symbol, which is useless.  But do not sort them, since the last
+# AC_DEFINE must be honored.
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+# NAME is the cpp macro being defined, VALUE is the value it is being given.
+# PARAMS is the parameter list in the macro definition--in most cases, it's
+# just an empty string.
+ac_dA='s,^\\([	 #]*\\)[^	 ]*\\([	 ]*'
+ac_dB='\\)[	 (].*,\\1define\\2'
+ac_dC=' '
+ac_dD=' ,'
+
+uniq confdefs.h |
+  sed -n '
+	t rset
+	:rset
+	s/^[	 ]*#[	 ]*define[	 ][	 ]*//
+	t ok
+	d
+	:ok
+	s/[\\&,]/\\&/g
+	s/^\('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+	s/^\('"$ac_word_re"'\)[	 ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+  ' >>conftest.defines
+
+# Remove the space that was appended to ease matching.
+# Then 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.
+# (The regexp can be short, since the line contains either #define or #undef.)
+echo 's/ $//
+s,^[	 #]*u.*,/* & */,' >>conftest.defines
+
+# Break up conftest.defines:
+ac_max_sed_lines=50
+
+# First sed command is:	 sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+# Second one is:	 sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+# Third one will be:	 sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+# et cetera.
+ac_in='$ac_file_inputs'
+ac_out='"$tmp/out1"'
+ac_nxt='"$tmp/out2"'
+
+while :
+do
+  # Write a here document:
+    cat >>$CONFIG_STATUS <<_ACEOF
+    # First, check the format of the line:
+    cat >"\$tmp/defines.sed" <<\\CEOF
+/^[	 ]*#[	 ]*undef[	 ][	 ]*$ac_word_re[	 ]*\$/b def
+/^[	 ]*#[	 ]*define[	 ][	 ]*$ac_word_re[(	 ]/b def
+b
+:def
+_ACEOF
+  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+  grep . conftest.tail >/dev/null || break
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines conftest.tail
+
+echo "ac_result=$ac_in" >>$CONFIG_STATUS
+cat >>$CONFIG_STATUS <<\_ACEOF
+  if test x"$ac_file" != x-; then
+    echo "/* $configure_input  */" >"$tmp/config.h"
+    cat "$ac_result" >>"$tmp/config.h"
+    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f $ac_file
+      mv "$tmp/config.h" $ac_file
+    fi
+  else
+    echo "/* $configure_input  */"
+    cat "$ac_result"
+  fi
+  rm -f "$tmp/out12"
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`$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 ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # 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 10q "$mf" | grep '^#.*generated by automake' > /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 ||
+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 ||
+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=`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 ||
+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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
Index: /libvorbis-1.2.0/configure.in
===================================================================
--- /libvorbis-1.2.0/configure.in	(revision 16)
+++ /libvorbis-1.2.0/configure.in	(revision 16)
@@ -0,0 +1,246 @@
+dnl Process this file with autoconf to produce a configure script
+
+dnl ------------------------------------------------
+dnl Initialization and Versioning
+dnl ------------------------------------------------
+
+AC_INIT(lib/mdct.c)
+
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
+AM_CONFIG_HEADER([config.h])
+
+AM_INIT_AUTOMAKE(libvorbis,1.2.0)
+AM_MAINTAINER_MODE
+
+dnl Library versioning
+
+V_LIB_CURRENT=4
+V_LIB_REVISION=0
+V_LIB_AGE=4
+VF_LIB_CURRENT=5
+VF_LIB_REVISION=0
+VF_LIB_AGE=2
+VE_LIB_CURRENT=2
+VE_LIB_REVISION=3
+VE_LIB_AGE=0
+AC_SUBST(V_LIB_CURRENT)
+AC_SUBST(V_LIB_REVISION)
+AC_SUBST(V_LIB_AGE)
+AC_SUBST(VF_LIB_CURRENT)
+AC_SUBST(VF_LIB_REVISION)
+AC_SUBST(VF_LIB_AGE)
+AC_SUBST(VE_LIB_CURRENT)
+AC_SUBST(VE_LIB_REVISION)
+AC_SUBST(VE_LIB_AGE)
+
+dnl --------------------------------------------------  
+dnl Check for programs
+dnl --------------------------------------------------  
+
+dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2"
+dnl if $CFLAGS is blank
+cflags_save="$CFLAGS"
+AC_PROG_CC
+AC_PROG_CPP
+CFLAGS="$cflags_save"
+
+AM_PROG_LIBTOOL
+
+dnl docbook xml transform and processing tools
+AC_ARG_ENABLE(docs,
+  [  --enable-docs           build the documentation],
+  [case "${enableval}" in
+    yes) build_docs=true;;
+    no)  build_docs=false;;
+    *)   AC_MSG_ERROR(unknown value ${enableval} for --enable-docs);;
+  esac],[build_docs=false])
+
+dnl ideally we'd look for other tools and support them
+if test x$build_docs = xtrue; then
+  AC_CHECK_PROGS([XSLTPROC], xsltproc, [/bin/false])
+  AC_CHECK_PROGS([PDFXMLTEX], pdfxmltex, [/bin/false])
+  if test "x$XSLTPROC" = "x/bin/false" || test "x$PDFXMLTEX" = "x/bin/false"; then
+    build_docs=false
+    AC_MSG_WARN([Documentation will not be built!])
+  fi
+fi
+
+AM_CONDITIONAL(BUILD_DOCS, [test x$build_docs = xtrue])
+
+dnl --------------------------------------------------
+dnl Set build flags based on environment
+dnl --------------------------------------------------
+
+dnl Set some target options
+
+cflags_save="$CFLAGS"
+if test -z "$GCC"; then
+	case $host in 
+	*-*-irix*)
+		dnl If we're on IRIX, we wanna use cc even if gcc 
+		dnl is there (unless the user has overriden us)...
+		if test -z "$CC"; then
+			CC=cc
+		fi
+		DEBUG="-g -signed" 
+		CFLAGS="-O2 -w -signed"
+		PROFILE="-p -g3 -O2 -signed" ;;
+	sparc-sun-solaris*)
+		DEBUG="-v -g"
+		CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
+		PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc" ;;
+	*)
+		DEBUG="-g"
+		CFLAGS="-O"
+		PROFILE="-g -p" ;;
+        esac
+else
+
+	AC_MSG_CHECKING([GCC version])
+	GCC_VERSION=`$CC -dumpversion`
+	AC_MSG_RESULT([$GCC_VERSION])
+	case $host in 
+	*86-*-linux*)
+		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
+		CFLAGS="-O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char"
+#              	PROFILE="-Wall -W -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char -fno-inline -static"
+		PROFILE="-Wall -W -pg -g -O20 -ffast-math -mno-ieee-fp -D_REENTRANT -fsigned-char -fno-inline"
+
+		# glibc < 2.1.3 has a serious FP bug in the math inline header
+		# that will cripple Vorbis.  Look to see if the magic FP stack
+		# clobber is missing in the mathinline header, thus indicating
+		# the buggy version
+
+		AC_EGREP_CPP(log10.*fldlg2.*fxch,[
+				#define __LIBC_INTERNAL_MATH_INLINES 1
+			     	#define __OPTIMIZE__
+				#include <math.h>
+				],bad=maybe,bad=no)
+		if test ${bad} = "maybe" ;then
+		      AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\),
+					[
+					#define __LIBC_INTERNAL_MATH_INLINES 1
+				     	#define __OPTIMIZE__
+					#include <math.h>
+					],bad=no,bad=yes)
+		fi
+ 		if test ${bad} = "yes" ;then
+ AC_MSG_WARN([                                                        ])
+ AC_MSG_WARN([********************************************************])
+ AC_MSG_WARN([* The glibc headers on this machine have a serious bug *])
+ AC_MSG_WARN([* in /usr/include/bits/mathinline.h  This bug affects  *])
+ AC_MSG_WARN([* all floating point code, not just Ogg, built on this *])
+ AC_MSG_WARN([* machine.  Upgrading to glibc 2.1.3 is strongly urged *])
+ AC_MSG_WARN([* to correct the problem.  Note that upgrading glibc   *])
+ AC_MSG_WARN([* will not fix any previously built programs; this is  *])
+ AC_MSG_WARN([* a compile-time time bug.                             *])
+ AC_MSG_WARN([* To work around the problem for this build of Ogg,    *])
+ AC_MSG_WARN([* autoconf is disabling all math inlining.  This will  *])
+ AC_MSG_WARN([* hurt Ogg performace but is necessary for an Ogg that *])
+ AC_MSG_WARN([* will actually work.  Once glibc is upgraded, rerun   *])
+ AC_MSG_WARN([* configure and make to build with inlining.           *])
+ AC_MSG_WARN([********************************************************])
+ AC_MSG_WARN([                                                        ])
+
+  		CFLAGS=${OPT}" -D__NO_MATH_INLINES"
+  		PROFILE=${PROFILE}" -D__NO_MATH_INLINES"
+  		fi;;
+	powerpc-*-linux*)
+		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES"
+		CFLAGS="-O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT"
+		PROFILE="-pg -g -O3 -ffast-math -mfused-madd -mcpu=750 -D_REENTRANT";;
+	*-*-linux*)
+		DEBUG="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
+		CFLAGS="-O20 -ffast-math -D_REENTRANT -fsigned-char"
+		PROFILE="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char";;
+	sparc-sun-*)
+		DEBUG="-g -Wall -W -D__NO_MATH_INLINES -fsigned-char -mv8"
+		CFLAGS="-O20 -ffast-math -D__NO_MATH_INLINES -fsigned-char -mv8"
+		PROFILE="-pg -g -O20 -D__NO_MATH_INLINES -fsigned-char -mv8" ;;
+	*-*-darwin*)
+		DEBUG="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O0 -fsigned-char"
+		CFLAGS="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -O4 -ffast-math -fsigned-char"
+		PROFILE="-DDARWIN -fno-common -force_cpusubtype_ALL -Wall -g -pg -O4 -ffast-math -fsigned-char";;
+	*)
+		DEBUG="-g -Wall -W -D__NO_MATH_INLINES -fsigned-char"
+		CFLAGS="-O20 -D__NO_MATH_INLINES -fsigned-char"
+		PROFILE="-O20 -g -pg -D__NO_MATH_INLINES -fsigned-char" ;;
+        esac
+fi
+CFLAGS="$CFLAGS $cflags_save"
+
+dnl --------------------------------------------------
+dnl Check for headers
+dnl --------------------------------------------------
+
+AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:)
+
+dnl --------------------------------------------------
+dnl Check for typedefs, structures, etc
+dnl --------------------------------------------------
+
+dnl none
+
+dnl --------------------------------------------------
+dnl Check for libraries
+dnl --------------------------------------------------
+
+AC_CHECK_LIB(m, cos, VORBIS_LIBS="-lm", VORBIS_LIBS="")
+AC_CHECK_LIB(pthread, pthread_create, pthread_lib="-lpthread", :)
+
+HAVE_OGG=no
+dnl first check through pkg-config
+dnl check for pkg-config itself so we don't try the m4 macro without pkg-config
+AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
+if test "x$HAVE_PKG_CONFIG" = "xyes"
+then
+  PKG_CHECK_MODULES(OGG, ogg >= 1.0, HAVE_OGG=yes, HAVE_OGG=no)
+fi
+if test "x$HAVE_OGG" = "xno"
+then
+  dnl fall back to the old school test
+  XIPH_PATH_OGG(, AC_MSG_ERROR(must have Ogg installed!))
+  libs_save=$LIBS
+  LIBS="$OGG_LIBS $VORBIS_LIBS"
+  AC_CHECK_FUNC(oggpack_writealign, , AC_MSG_ERROR(Ogg >= 1.0 required !))
+  LIBS=$libs_save
+fi
+
+dnl --------------------------------------------------
+dnl Check for library functions
+dnl --------------------------------------------------
+
+AC_FUNC_ALLOCA
+AC_FUNC_MEMCMP
+
+dnl --------------------------------------------------
+dnl Do substitutions
+dnl --------------------------------------------------
+
+AC_SUBST(VORBIS_LIBS)
+AC_SUBST(DEBUG)
+AC_SUBST(PROFILE)
+AC_SUBST(pthread_lib)
+
+AC_OUTPUT([
+Makefile
+lib/Makefile
+lib/modes/Makefile
+lib/books/Makefile
+lib/books/coupled/Makefile
+lib/books/uncoupled/Makefile
+lib/books/floor/Makefile
+doc/Makefile doc/vorbisfile/Makefile doc/vorbisenc/Makefile
+include/Makefile include/vorbis/Makefile
+examples/Makefile
+vq/Makefile
+libvorbis.spec
+vorbis.pc
+vorbisenc.pc
+vorbisfile.pc
+vorbis-uninstalled.pc
+vorbisenc-uninstalled.pc
+vorbisfile-uninstalled.pc
+])
Index: /libvorbis-1.2.0/depcomp
===================================================================
--- /libvorbis-1.2.0/depcomp	(revision 16)
+++ /libvorbis-1.2.0/depcomp	(revision 16)
@@ -0,0 +1,584 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2006-10-15.18
+
+# Copyright (C) 1999, 2000, 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 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.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+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:
Index: /libvorbis-1.2.0/doc/Makefile
===================================================================
--- /libvorbis-1.2.0/doc/Makefile	(revision 16)
+++ /libvorbis-1.2.0/doc/Makefile	(revision 16)
@@ -0,0 +1,667 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# doc/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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.
+
+
+
+
+pkgdatadir = $(datadir)/libvorbis
+pkglibdir = $(libdir)/libvorbis
+pkgincludedir = $(includedir)/libvorbis
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(docdir)"
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_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)
+ACLOCAL = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run aclocal-1.10
+ALLOCA = 
+AMTAR = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run automake-1.10
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O20 -ffast-math -D_REENTRANT -fsigned-char  -DUSE_MEMORY_H
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEBUG = -g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GREP = /bin/grep
+HAVE_PKG_CONFIG = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = 
+MAKEINFO = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+OGG_CFLAGS =  
+OGG_LIBS = -logg  
+PACKAGE = libvorbis
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PDFXMLTEX = 
+PKG_CONFIG = /usr/bin/pkg-config
+PROFILE = -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 1.2.0
+VE_LIB_AGE = 0
+VE_LIB_CURRENT = 2
+VE_LIB_REVISION = 3
+VF_LIB_AGE = 2
+VF_LIB_CURRENT = 5
+VF_LIB_REVISION = 0
+VORBIS_LIBS = -lm
+V_LIB_AGE = 4
+V_LIB_CURRENT = 4
+V_LIB_REVISION = 0
+XSLTPROC = 
+abs_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0/doc
+abs_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0/doc
+abs_top_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+abs_top_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/giles/projects/ghostscript/libvorbis-1.2.0/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pthread_lib = -lpthread
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target = x86_64-unknown-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = unknown
+top_builddir = ..
+top_srcdir = ..
+SUBDIRS = vorbisfile vorbisenc
+
+### all of the static docs, commited to SVN and included as is
+static_docs = \
+	draft-ietf-avt-rtp-vorbis-06.xml \
+	draft-ietf-avt-rtp-vorbis-06.txt \
+	eightphase.png \
+	evenlsp.png \
+	floor1_inverse_dB_table.html \
+	floorval.png \
+	fourphase.png \
+	framing.html \
+	helper.html \
+	index.html \
+	lspmap.png \
+	oddlsp.png \
+	oggstream.html \
+	programming.html \
+	squarepolar.png \
+	stereo.html \
+	stream.png \
+	v-comment.html \
+	vorbis-clip.txt \
+	vorbis-errors.txt \
+	vorbis-fidelity.html \
+	vorbis.html \
+	vorbisword2.png \
+	wait.png \
+	white-ogg.png \
+	white-xifish.png
+
+
+### FIXME: bits needed by the spec which lives in xml
+SPEC_PNG = \
+	components.png \
+	floor1-1.png \
+	floor1-2.png \
+	floor1-3.png \
+	floor1-4.png \
+	hufftree.png \
+	hufftree-under.png \
+	residue-pack.png \
+	residue2.png \
+	white-xifish.png \
+	window1.png \
+	window2.png
+
+SPEC_PDF = xifish.pdf
+
+# FIXME: also needed here
+#	white-xifish.png 
+built_docs = Vorbis_I_spec.html Vorbis_I_spec.pdf
+doc_DATA = $(static_docs) $(SPEC_PNG)
+
+# conditionally make the generated documentation
+#doc_DATA = $(static_docs) $(SPEC_PNG) $(built_docs)
+EXTRA_DIST = $(static_docs) $(doc_sources) \
+	$(SPEC_PNG) $(SPEC_PDF) $(built_docs)
+
+doc_sources = xml/Vorbis_I_spec.xml \
+	xml/01-introduction.xml \
+	xml/02-bitpacking.xml \
+	xml/03-codebook.xml \
+	xml/04-codec.xml \
+	xml/05-comment.xml \
+	xml/06-floor0.xml \
+	xml/07-floor1.xml \
+	xml/08-residue.xml \
+	xml/09-helper.xml \
+	xml/10-tables.xml \
+	xml/a1-encapsulation_ogg.xml \
+	xml/a2-encapsulation_rtp.xml \
+	xml/footer.xml \
+	xml/spec-common.xsl \
+	xml/spec-fo.xsl \
+	xml/spec-html.xsl
+
+
+# these are expensive; only remove if we have to
+DISTCLEANFILES = $(built_docs)
+CLEANFILES = Vorbis_I_spec.fo spec.aux spec.log spec.out
+
+# rules for temporary build dir for spec
+BUILDDIR = build
+# how to copy images to build dir
+SPEC_PNG_BUILD = $(foreach file, $(SPEC_PNG), $(BUILDDIR)/$(file))
+SPEC_PDF_BUILD = $(foreach file, $(SPEC_PDF), $(BUILDDIR)/$(file))
+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 \
+		&& exit 0; \
+	      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
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-docDATA: $(doc_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+	done
+
+uninstall-docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(docdir)/$$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; } \
+	       END { 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; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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 $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(docdir)"; 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)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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 clean-local 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-docDATA
+
+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-docDATA
+
+.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 \
+	clean-local 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-docDATA 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 uninstall-docDATA
+
+$(BUILDDIR)/%: $(srcdir)/%
+	@echo "Copying $< to $@"
+	@mkdir -p $(BUILDDIR)
+	@cp $< $@
+
+# how to copy the xml to build dir; cheat by only targeting the main one
+$(BUILDDIR)/Vorbis_I_spec.xml: $(doc_sources)
+	@mkdir -p $(BUILDDIR)
+	@for file in $(doc_sources); do cp $(srcdir)/$$file $(BUILDDIR); done
+# translate the draft rtp.txt to .xml in the BUILDDIR
+$(BUILDDIR)/draft-rtp.xml: draft-ietf-avt-rtp-vorbis-05.txt
+	cat $< | sed 's/
+//g' > $@
+# cat $< | sed 's/
+//g' | sed 's/</\&lt;/g' | sed 's/>/\&gt;/g' > $@
+
+# explicit rules for generating docs
+#Vorbis_I_spec.html: $(SPEC_PNG_BUILD) $(BUILDDIR)/Vorbis_I_spec.xml
+#	cd build; xsltproc --xinclude --output Vorbis_I_spec.html spec-html.xsl Vorbis_I_spec.xml && mv $@ ..
+
+#Vorbis_I_spec.fo: $(BUILDDIR)/Vorbis_I_spec.xml
+#	cd build; xsltproc --xinclude --output $@ spec-fo.xsl Vorbis_I_spec.xml && mv $@ ..
+
+# we add the two newlines to pdfxmltex because this entire XML
+# toolchain is built from wishful thinking and bonghits and the
+# default supplied passivetex config files are buggy.
+#Vorbis_I_spec.pdf: Vorbis_I_spec.fo $(SPEC_PNG_BUILD) $(SPEC_PDF_BUILD)
+#	cp $< build/spec.fo # work around a passivetex bug
+#	-cd build; echo -e -n "\n\n" | pdfxmltex spec.fo
+#	-cd build; echo -e -n "\n\n" | pdfxmltex spec.fo
+#	rm build/spec.fo
+#	mv build/spec.pdf $@
+Vorbis_I_spec.html: NO_DOCS_ERROR
+Vorbis_I_spec.pdf: NO_DOCS_ERROR
+NO_DOCS_ERROR:
+	@echo
+	@echo "*** Documentation has not been built! ***"
+	@echo "Try re-running after passing --enable-docs to configure."
+	@echo
+
+# clean up build dir
+clean-local:
+	-$(RM) -r $(BUILDDIR)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/doc/Makefile.am
===================================================================
--- /libvorbis-1.2.0/doc/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/doc/Makefile.am	(revision 16)
@@ -0,0 +1,139 @@
+## Process this with automake to create Makefile.in
+
+SUBDIRS = vorbisfile vorbisenc
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+
+### all of the static docs, commited to SVN and included as is
+static_docs = \
+	draft-ietf-avt-rtp-vorbis-06.xml \
+	draft-ietf-avt-rtp-vorbis-06.txt \
+	eightphase.png \
+	evenlsp.png \
+	floor1_inverse_dB_table.html \
+	floorval.png \
+	fourphase.png \
+	framing.html \
+	helper.html \
+	index.html \
+	lspmap.png \
+	oddlsp.png \
+	oggstream.html \
+	programming.html \
+	squarepolar.png \
+	stereo.html \
+	stream.png \
+	v-comment.html \
+	vorbis-clip.txt \
+	vorbis-errors.txt \
+	vorbis-fidelity.html \
+	vorbis.html \
+	vorbisword2.png \
+	wait.png \
+	white-ogg.png \
+	white-xifish.png
+
+### FIXME: bits needed by the spec which lives in xml
+SPEC_PNG = \
+	components.png \
+	floor1-1.png \
+	floor1-2.png \
+	floor1-3.png \
+	floor1-4.png \
+	hufftree.png \
+	hufftree-under.png \
+	residue-pack.png \
+	residue2.png \
+	white-xifish.png \
+	window1.png \
+	window2.png
+SPEC_PDF = xifish.pdf
+
+# FIXME: also needed here
+#	white-xifish.png 
+
+built_docs = Vorbis_I_spec.html Vorbis_I_spec.pdf
+
+# conditionally make the generated documentation
+if BUILD_DOCS
+doc_DATA = $(static_docs) $(SPEC_PNG) $(built_docs)
+else
+doc_DATA = $(static_docs) $(SPEC_PNG)
+endif
+
+EXTRA_DIST = $(static_docs) $(doc_sources) \
+	$(SPEC_PNG) $(SPEC_PDF) $(built_docs)
+
+doc_sources = xml/Vorbis_I_spec.xml \
+	xml/01-introduction.xml \
+	xml/02-bitpacking.xml \
+	xml/03-codebook.xml \
+	xml/04-codec.xml \
+	xml/05-comment.xml \
+	xml/06-floor0.xml \
+	xml/07-floor1.xml \
+	xml/08-residue.xml \
+	xml/09-helper.xml \
+	xml/10-tables.xml \
+	xml/a1-encapsulation_ogg.xml \
+	xml/a2-encapsulation_rtp.xml \
+	xml/footer.xml \
+	xml/spec-common.xsl \
+	xml/spec-fo.xsl \
+	xml/spec-html.xsl
+
+# these are expensive; only remove if we have to
+DISTCLEANFILES = $(built_docs)
+CLEANFILES = Vorbis_I_spec.fo spec.aux spec.log spec.out
+
+# rules for temporary build dir for spec
+BUILDDIR = build
+# how to copy images to build dir
+SPEC_PNG_BUILD = $(foreach file, $(SPEC_PNG), $(BUILDDIR)/$(file))
+SPEC_PDF_BUILD = $(foreach file, $(SPEC_PDF), $(BUILDDIR)/$(file))
+$(BUILDDIR)/%: $(srcdir)/%
+	@echo "Copying $< to $@"
+	@mkdir -p $(BUILDDIR)
+	@cp $< $@
+
+# how to copy the xml to build dir; cheat by only targeting the main one
+$(BUILDDIR)/Vorbis_I_spec.xml: $(doc_sources)
+	@mkdir -p $(BUILDDIR)
+	@for file in $(doc_sources); do cp $(srcdir)/$$file $(BUILDDIR); done
+# translate the draft rtp.txt to .xml in the BUILDDIR
+$(BUILDDIR)/draft-rtp.xml: draft-ietf-avt-rtp-vorbis-05.txt
+	cat $< | sed 's/
+//g' > $@
+# cat $< | sed 's/
+//g' | sed 's/</\&lt;/g' | sed 's/>/\&gt;/g' > $@
+
+# explicit rules for generating docs
+if BUILD_DOCS
+Vorbis_I_spec.html: $(SPEC_PNG_BUILD) $(BUILDDIR)/Vorbis_I_spec.xml
+	cd build; xsltproc --xinclude --output Vorbis_I_spec.html spec-html.xsl Vorbis_I_spec.xml && mv $@ ..
+
+Vorbis_I_spec.fo: $(BUILDDIR)/Vorbis_I_spec.xml
+	cd build; xsltproc --xinclude --output $@ spec-fo.xsl Vorbis_I_spec.xml && mv $@ ..
+
+# we add the two newlines to pdfxmltex because this entire XML
+# toolchain is built from wishful thinking and bonghits and the
+# default supplied passivetex config files are buggy.
+Vorbis_I_spec.pdf: Vorbis_I_spec.fo $(SPEC_PNG_BUILD) $(SPEC_PDF_BUILD)
+	cp $< build/spec.fo # work around a passivetex bug
+	-cd build; echo -e -n "\n\n" | pdfxmltex spec.fo
+	-cd build; echo -e -n "\n\n" | pdfxmltex spec.fo
+	rm build/spec.fo
+	mv build/spec.pdf $@
+else
+Vorbis_I_spec.html: NO_DOCS_ERROR
+Vorbis_I_spec.pdf: NO_DOCS_ERROR
+NO_DOCS_ERROR:
+	@echo
+	@echo "*** Documentation has not been built! ***"
+	@echo "Try re-running after passing --enable-docs to configure."
+	@echo
+endif
+
+# clean up build dir
+clean-local:
+	-$(RM) -r $(BUILDDIR)
Index: /libvorbis-1.2.0/doc/Makefile.in
===================================================================
--- /libvorbis-1.2.0/doc/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/doc/Makefile.in	(revision 16)
@@ -0,0 +1,667 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(docdir)"
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_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)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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 = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = vorbisfile vorbisenc
+
+### all of the static docs, commited to SVN and included as is
+static_docs = \
+	draft-ietf-avt-rtp-vorbis-06.xml \
+	draft-ietf-avt-rtp-vorbis-06.txt \
+	eightphase.png \
+	evenlsp.png \
+	floor1_inverse_dB_table.html \
+	floorval.png \
+	fourphase.png \
+	framing.html \
+	helper.html \
+	index.html \
+	lspmap.png \
+	oddlsp.png \
+	oggstream.html \
+	programming.html \
+	squarepolar.png \
+	stereo.html \
+	stream.png \
+	v-comment.html \
+	vorbis-clip.txt \
+	vorbis-errors.txt \
+	vorbis-fidelity.html \
+	vorbis.html \
+	vorbisword2.png \
+	wait.png \
+	white-ogg.png \
+	white-xifish.png
+
+
+### FIXME: bits needed by the spec which lives in xml
+SPEC_PNG = \
+	components.png \
+	floor1-1.png \
+	floor1-2.png \
+	floor1-3.png \
+	floor1-4.png \
+	hufftree.png \
+	hufftree-under.png \
+	residue-pack.png \
+	residue2.png \
+	white-xifish.png \
+	window1.png \
+	window2.png
+
+SPEC_PDF = xifish.pdf
+
+# FIXME: also needed here
+#	white-xifish.png 
+built_docs = Vorbis_I_spec.html Vorbis_I_spec.pdf
+@BUILD_DOCS_FALSE@doc_DATA = $(static_docs) $(SPEC_PNG)
+
+# conditionally make the generated documentation
+@BUILD_DOCS_TRUE@doc_DATA = $(static_docs) $(SPEC_PNG) $(built_docs)
+EXTRA_DIST = $(static_docs) $(doc_sources) \
+	$(SPEC_PNG) $(SPEC_PDF) $(built_docs)
+
+doc_sources = xml/Vorbis_I_spec.xml \
+	xml/01-introduction.xml \
+	xml/02-bitpacking.xml \
+	xml/03-codebook.xml \
+	xml/04-codec.xml \
+	xml/05-comment.xml \
+	xml/06-floor0.xml \
+	xml/07-floor1.xml \
+	xml/08-residue.xml \
+	xml/09-helper.xml \
+	xml/10-tables.xml \
+	xml/a1-encapsulation_ogg.xml \
+	xml/a2-encapsulation_rtp.xml \
+	xml/footer.xml \
+	xml/spec-common.xsl \
+	xml/spec-fo.xsl \
+	xml/spec-html.xsl
+
+
+# these are expensive; only remove if we have to
+DISTCLEANFILES = $(built_docs)
+CLEANFILES = Vorbis_I_spec.fo spec.aux spec.log spec.out
+
+# rules for temporary build dir for spec
+BUILDDIR = build
+# how to copy images to build dir
+SPEC_PNG_BUILD = $(foreach file, $(SPEC_PNG), $(BUILDDIR)/$(file))
+SPEC_PDF_BUILD = $(foreach file, $(SPEC_PDF), $(BUILDDIR)/$(file))
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-docDATA: $(doc_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+	done
+
+uninstall-docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(docdir)/$$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; } \
+	       END { 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; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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 $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(docdir)"; 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)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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 clean-local 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-docDATA
+
+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-docDATA
+
+.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 \
+	clean-local 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-docDATA 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 uninstall-docDATA
+
+$(BUILDDIR)/%: $(srcdir)/%
+	@echo "Copying $< to $@"
+	@mkdir -p $(BUILDDIR)
+	@cp $< $@
+
+# how to copy the xml to build dir; cheat by only targeting the main one
+$(BUILDDIR)/Vorbis_I_spec.xml: $(doc_sources)
+	@mkdir -p $(BUILDDIR)
+	@for file in $(doc_sources); do cp $(srcdir)/$$file $(BUILDDIR); done
+# translate the draft rtp.txt to .xml in the BUILDDIR
+$(BUILDDIR)/draft-rtp.xml: draft-ietf-avt-rtp-vorbis-05.txt
+	cat $< | sed 's/
+//g' > $@
+# cat $< | sed 's/
+//g' | sed 's/</\&lt;/g' | sed 's/>/\&gt;/g' > $@
+
+# explicit rules for generating docs
+@BUILD_DOCS_TRUE@Vorbis_I_spec.html: $(SPEC_PNG_BUILD) $(BUILDDIR)/Vorbis_I_spec.xml
+@BUILD_DOCS_TRUE@	cd build; xsltproc --xinclude --output Vorbis_I_spec.html spec-html.xsl Vorbis_I_spec.xml && mv $@ ..
+
+@BUILD_DOCS_TRUE@Vorbis_I_spec.fo: $(BUILDDIR)/Vorbis_I_spec.xml
+@BUILD_DOCS_TRUE@	cd build; xsltproc --xinclude --output $@ spec-fo.xsl Vorbis_I_spec.xml && mv $@ ..
+
+# we add the two newlines to pdfxmltex because this entire XML
+# toolchain is built from wishful thinking and bonghits and the
+# default supplied passivetex config files are buggy.
+@BUILD_DOCS_TRUE@Vorbis_I_spec.pdf: Vorbis_I_spec.fo $(SPEC_PNG_BUILD) $(SPEC_PDF_BUILD)
+@BUILD_DOCS_TRUE@	cp $< build/spec.fo # work around a passivetex bug
+@BUILD_DOCS_TRUE@	-cd build; echo -e -n "\n\n" | pdfxmltex spec.fo
+@BUILD_DOCS_TRUE@	-cd build; echo -e -n "\n\n" | pdfxmltex spec.fo
+@BUILD_DOCS_TRUE@	rm build/spec.fo
+@BUILD_DOCS_TRUE@	mv build/spec.pdf $@
+@BUILD_DOCS_FALSE@Vorbis_I_spec.html: NO_DOCS_ERROR
+@BUILD_DOCS_FALSE@Vorbis_I_spec.pdf: NO_DOCS_ERROR
+@BUILD_DOCS_FALSE@NO_DOCS_ERROR:
+@BUILD_DOCS_FALSE@	@echo
+@BUILD_DOCS_FALSE@	@echo "*** Documentation has not been built! ***"
+@BUILD_DOCS_FALSE@	@echo "Try re-running after passing --enable-docs to configure."
+@BUILD_DOCS_FALSE@	@echo
+
+# clean up build dir
+clean-local:
+	-$(RM) -r $(BUILDDIR)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/doc/Vorbis_I_spec.html
===================================================================
--- /libvorbis-1.2.0/doc/Vorbis_I_spec.html	(revision 16)
+++ /libvorbis-1.2.0/doc/Vorbis_I_spec.html	(revision 16)
@@ -0,0 +1,2292 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Vorbis I specification</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.0"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id291327"></a>Vorbis I specification</h1></div><div><h3 class="corpauthor">Xiph.org Foundation</h3></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#vorbis-spec-intro">1. Introduction and Description</a></span></dt><dd><dl><dt><span class="section"><a href="#id311592">1.1. Overview</a></span></dt><dt><span class="section"><a href="#id258770">1.2. Decoder Configuration</a></span></dt><dt><span class="section"><a href="#id258461">1.3. High-level Decode Process</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-bitpacking">2. Bitpacking Convention</a></span></dt><dd><dl><dt><span class="section"><a href="#id304831">2.1. Overview</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-codebook">3. Probability Model and Codebooks</a></span></dt><dd><dl><dt><span class="section"><a href="#id310158">3.1. Overview</a></span></dt><dt><span class="section"><a href="#id310216">3.2. Packed codebook format</a></span></dt><dt><span class="section"><a href="#id316518">3.3. Use of the codebook abstraction</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-codec">4. Codec Setup and Packet Decode</a></span></dt><dd><dl><dt><span class="section"><a href="#id336024">4.1. Overview</a></span></dt><dt><span class="section"><a href="#id326710">4.2. Header decode and decode setup</a></span></dt><dt><span class="section"><a href="#id342709">4.3. Audio packet decode and synthesis</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-comment">5. comment field and header specification</a></span></dt><dd><dl><dt><span class="section"><a href="#id314030">5.1. Overview</a></span></dt><dt><span class="section"><a href="#id314058">5.2. Comment encoding</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-floor0">6. Floor type 0 setup and decode</a></span></dt><dd><dl><dt><span class="section"><a href="#id336814">6.1. Overview</a></span></dt><dt><span class="section"><a href="#id321046">6.2. Floor 0 format</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-floor1">7. Floor type 1 setup and decode</a></span></dt><dd><dl><dt><span class="section"><a href="#id336243">7.1. Overview</a></span></dt><dt><span class="section"><a href="#id334800">7.2. Floor 1 format</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-residue">8. Residue setup and decode</a></span></dt><dd><dl><dt><span class="section"><a href="#id320982">8.1. Overview</a></span></dt><dt><span class="section"><a href="#id307154">8.2. Residue format</a></span></dt><dt><span class="section"><a href="#id326310">8.3. residue 0</a></span></dt><dt><span class="section"><a href="#id326344">8.4. residue 1</a></span></dt><dt><span class="section"><a href="#id334893">8.5. residue 2</a></span></dt><dt><span class="section"><a href="#id334939">8.6. Residue decode</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-helper">9. Helper equations</a></span></dt><dd><dl><dt><span class="section"><a href="#id316603">9.1. Overview</a></span></dt><dt><span class="section"><a href="#id317505">9.2. Functions</a></span></dt></dl></dd><dt><span class="section"><a href="#vorbis-spec-tables">10. Tables</a></span></dt><dd><dl><dt><span class="section"><a href="#vorbis-spec-floor1_inverse_dB_table">10.1. floor1_inverse_dB_table</a></span></dt></dl></dd><dt><span class="appendix"><a href="#vorbis-over-ogg">1. Embedding Vorbis into an Ogg stream</a></span></dt><dd><dl><dt><span class="section"><a href="#id319760">1.1. Overview</a></span></dt><dd><dl><dt><span class="section"><a href="#id336562">1.1.1. Restrictions</a></span></dt><dt><span class="section"><a href="#id330723">1.1.2. MIME type</a></span></dt></dl></dd><dt><span class="section"><a href="#id328095">1.2. Encapsulation</a></span></dt></dl></dd><dt><span class="appendix"><a href="#vorbis-over-rtp">2. Vorbis encapsulation in RTP</a></span></dt><dt><span class="appendix"><a href="#footer">3. Colophon</a></span></dt></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-intro"></a>1. Introduction and Description</h2></div><div><p class="releaseinfo">
+ $Id: 01-introduction.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id311592"></a>1.1. Overview</h3></div></div></div><p>
+This document provides a high level description of the Vorbis codec's
+construction.  A bit-by-bit specification appears beginning in 
+<a href="#vorbis-spec-codec" title="4. Codec Setup and Packet Decode">Section 4, &#8220;Codec Setup and Packet Decode&#8221;</a>.
+The later sections assume a high-level
+understanding of the Vorbis decode process, which is 
+provided here.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id317198"></a>1.1.1. Application</h4></div></div></div><p>
+Vorbis is a general purpose perceptual audio CODEC intended to allow
+maximum encoder flexibility, thus allowing it to scale competitively
+over an exceptionally wide range of bitrates.  At the high
+quality/bitrate end of the scale (CD or DAT rate stereo, 16/24 bits)
+it is in the same league as MPEG-2 and MPC.  Similarly, the 1.0
+encoder can encode high-quality CD and DAT rate stereo at below 48kbps
+without resampling to a lower rate.  Vorbis is also intended for
+lower and higher sample rates (from 8kHz telephony to 192kHz digital
+masters) and a range of channel representations (monaural,
+polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255
+discrete channels).
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id315630"></a>1.1.2. Classification</h4></div></div></div><p>
+Vorbis I is a forward-adaptive monolithic transform CODEC based on the
+Modified Discrete Cosine Transform.  The codec is structured to allow
+addition of a hybrid wavelet filterbank in Vorbis II to offer better
+transient response and reproduction using a transform better suited to
+localized time events.
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id323943"></a>1.1.3. Assumptions</h4></div></div></div><p>
+The Vorbis CODEC design assumes a complex, psychoacoustically-aware
+encoder and simple, low-complexity decoder. Vorbis decode is
+computationally simpler than mp3, although it does require more
+working memory as Vorbis has no static probability model; the vector
+codebooks used in the first stage of decoding from the bitstream are
+packed in their entirety into the Vorbis bitstream headers. In
+packed form, these codebooks occupy only a few kilobytes; the extent
+to which they are pre-decoded into a cache is the dominant factor in
+decoder memory usage.
+</p><p>
+Vorbis provides none of its own framing, synchronization or protection
+against errors; it is solely a method of accepting input audio,
+dividing it into individual frames and compressing these frames into
+raw, unformatted 'packets'. The decoder then accepts these raw
+packets in sequence, decodes them, synthesizes audio frames from
+them, and reassembles the frames into a facsimile of the original
+audio stream. Vorbis is a free-form variable bit rate (VBR) codec and packets have no
+minimum size, maximum size, or fixed/expected size.  Packets
+are designed that they may be truncated (or padded) and remain
+decodable; this is not to be considered an error condition and is used
+extensively in bitrate management in peeling.  Both the transport
+mechanism and decoder must allow that a packet may be any size, or
+end before or after packet decode expects.</p><p>
+Vorbis packets are thus intended to be used with a transport mechanism
+that provides free-form framing, sync, positioning and error correction
+in accordance with these design assumptions, such as Ogg (for file
+transport) or RTP (for network multicast).  For purposes of a few
+examples in this document, we will assume that Vorbis is to be
+embedded in an Ogg stream specifically, although this is by no means a
+requirement or fundamental assumption in the Vorbis design.</p><p>
+The specification for embedding Vorbis into
+an Ogg transport stream is in <a href="#vorbis-over-ogg" title="1. Embedding Vorbis into an Ogg stream">Appendix 1, <i>Embedding Vorbis into an Ogg stream</i></a>.
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id324282"></a>1.1.4. Codec Setup and Probability Model</h4></div></div></div><p>
+Vorbis' heritage is as a research CODEC and its current design
+reflects a desire to allow multiple decades of continuous encoder
+improvement before running out of room within the codec specification.
+For these reasons, configurable aspects of codec setup intentionally
+lean toward the extreme of forward adaptive.</p><p>
+The single most controversial design decision in Vorbis (and the most
+unusual for a Vorbis developer to keep in mind) is that the entire
+probability model of the codec, the Huffman and VQ codebooks, is
+packed into the bitstream header along with extensive CODEC setup
+parameters (often several hundred fields).  This makes it impossible,
+as it would be with MPEG audio layers, to embed a simple frame type
+flag in each audio packet, or begin decode at any frame in the stream
+without having previously fetched the codec setup header.
+</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+Vorbis <span class="emphasis"><em>can</em></span> initiate decode at any arbitrary packet within a
+bitstream so long as the codec has been initialized/setup with the
+setup headers.</p></div><p>
+Thus, Vorbis headers are both required for decode to begin and
+relatively large as bitstream headers go.  The header size is
+unbounded, although for streaming a rule-of-thumb of 4kB or less is
+recommended (and Xiph.Org's Vorbis encoder follows this suggestion).</p><p>
+Our own design work indicates the primary liability of the
+required header is in mindshare; it is an unusual design and thus
+causes some amount of complaint among engineers as this runs against
+current design trends (and also points out limitations in some
+existing software/interface designs, such as Windows' ACM codec
+framework).  However, we find that it does not fundamentally limit
+Vorbis' suitable application space.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258744"></a>1.1.5. Format Specification</h4></div></div></div><p>
+The Vorbis format is well-defined by its decode specification; any
+encoder that produces packets that are correctly decoded by the
+reference Vorbis decoder described below may be considered a proper
+Vorbis encoder.  A decoder must faithfully and completely implement
+the specification defined below (except where noted) to be considered
+a proper Vorbis decoder.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258756"></a>1.1.6. Hardware Profile</h4></div></div></div><p>
+Although Vorbis decode is computationally simple, it may still run
+into specific limitations of an embedded design.  For this reason,
+embedded designs are allowed to deviate in limited ways from the
+'full' decode specification yet still be certified compliant.  These
+optional omissions are labelled in the spec where relevant.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id258770"></a>1.2. Decoder Configuration</h3></div></div></div><p>
+Decoder setup consists of configuration of multiple, self-contained
+component abstractions that perform specific functions in the decode
+pipeline.  Each different component instance of a specific type is
+semantically interchangeable; decoder configuration consists both of
+internal component configuration, as well as arrangement of specific
+instances into a decode pipeline.  Componentry arrangement is roughly
+as follows:</p><div class="mediaobject"><img src="components.png" alt="decoder pipeline configuration"></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258803"></a>1.2.1. Global Config</h4></div></div></div><p>
+Global codec configuration consists of a few audio related fields
+(sample rate, channels), Vorbis version (always '0' in Vorbis I),
+bitrate hints, and the lists of component instances.  All other
+configuration is in the context of specific components.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258815"></a>1.2.2. Mode</h4></div></div></div><p>
+Each Vorbis frame is coded according to a master 'mode'.  A bitstream
+may use one or many modes.</p><p>
+The mode mechanism is used to encode a frame according to one of
+multiple possible methods with the intention of choosing a method best
+suited to that frame.  Different modes are, e.g. how frame size
+is changed from frame to frame. The mode number of a frame serves as a
+top level configuration switch for all other specific aspects of frame
+decode.</p><p>
+A 'mode' configuration consists of a frame size setting, window type
+(always 0, the Vorbis window, in Vorbis I), transform type (always
+type 0, the MDCT, in Vorbis I) and a mapping number.  The mapping
+number specifies which mapping configuration instance to use for
+low-level packet decode and synthesis.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258359"></a>1.2.3. Mapping</h4></div></div></div><p>
+A mapping contains a channel coupling description and a list of
+'submaps' that bundle sets of channel vectors together for grouped
+encoding and decoding. These submaps are not references to external
+components; the submap list is internal and specific to a mapping.</p><p>
+A 'submap' is a configuration/grouping that applies to a subset of
+floor and residue vectors within a mapping.  The submap functions as a
+last layer of indirection such that specific special floor or residue
+settings can be applied not only to all the vectors in a given mode,
+but also specific vectors in a specific mode.  Each submap specifies
+the proper floor and residue instance number to use for decoding that
+submap's spectral floor and spectral residue vectors.</p><p>
+As an example:</p><p>
+Assume a Vorbis stream that contains six channels in the standard 5.1
+format.  The sixth channel, as is normal in 5.1, is bass only.
+Therefore it would be wasteful to encode a full-spectrum version of it
+as with the other channels.  The submapping mechanism can be used to
+apply a full range floor and residue encoding to channels 0 through 4,
+and a bass-only representation to the bass channel, thus saving space.
+In this example, channels 0-4 belong to submap 0 (which indicates use
+of a full-range floor) and channel 5 belongs to submap 1, which uses a
+bass-only representation.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258391"></a>1.2.4. Floor</h4></div></div></div><p>
+Vorbis encodes a spectral 'floor' vector for each PCM channel.  This
+vector is a low-resolution representation of the audio spectrum for
+the given channel in the current frame, generally used akin to a
+whitening filter.  It is named a 'floor' because the Xiph.Org
+reference encoder has historically used it as a unit-baseline for
+spectral resolution.</p><p>
+A floor encoding may be of two types.  Floor 0 uses a packed LSP
+representation on a dB amplitude scale and Bark frequency scale.
+Floor 1 represents the curve as a piecewise linear interpolated
+representation on a dB amplitude scale and linear frequency scale.
+The two floors are semantically interchangeable in
+encoding/decoding. However, floor type 1 provides more stable
+inter-frame behavior, and so is the preferred choice in all
+coupled-stereo and high bitrate modes.  Floor 1 is also considerably
+less expensive to decode than floor 0.</p><p>
+Floor 0 is not to be considered deprecated, but it is of limited
+modern use.  No known Vorbis encoder past Xiph.org's own beta 4 makes
+use of floor 0.</p><p>
+The values coded/decoded by a floor are both compactly formatted and
+make use of entropy coding to save space.  For this reason, a floor
+configuration generally refers to multiple codebooks in the codebook
+component list.  Entropy coding is thus provided as an abstraction,
+and each floor instance may choose from any and all available
+codebooks when coding/decoding.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258423"></a>1.2.5. Residue</h4></div></div></div><p>
+The spectral residue is the fine structure of the audio spectrum
+once the floor curve has been subtracted out.  In simplest terms, it
+is coded in the bitstream using cascaded (multi-pass) vector
+quantization according to one of three specific packing/coding
+algorithms numbered 0 through 2.  The packing algorithm details are
+configured by residue instance.  As with the floor components, the
+final VQ/entropy encoding is provided by external codebook instances
+and each residue instance may choose from any and all available
+codebooks.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258437"></a>1.2.6. Codebooks</h4></div></div></div><p>
+Codebooks are a self-contained abstraction that perform entropy
+decoding and, optionally, use the entropy-decoded integer value as an
+offset into an index of output value vectors, returning the indicated
+vector of values.</p><p>
+The entropy coding in a Vorbis I codebook is provided by a standard
+Huffman binary tree representation.  This tree is tightly packed using
+one of several methods, depending on whether codeword lengths are
+ordered or unordered, or the tree is sparse.</p><p>
+The codebook vector index is similarly packed according to index
+characteristic.  Most commonly, the vector index is encoded as a
+single list of values of possible values that are then permuted into
+a list of n-dimensional rows (lattice VQ).</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id258461"></a>1.3. High-level Decode Process</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258467"></a>1.3.1. Decode Setup</h4></div></div></div><p>
+Before decoding can begin, a decoder must initialize using the
+bitstream headers matching the stream to be decoded.  Vorbis uses
+three header packets; all are required, in-order, by this
+specification. Once set up, decode may begin at any audio packet
+belonging to the Vorbis stream. In Vorbis I, all packets after the
+three initial headers are audio packets. </p><p>
+The header packets are, in order, the identification
+header, the comments header, and the setup header.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id314074"></a>1.3.1.1. Identification Header</h5></div></div></div><p>
+The identification header identifies the bitstream as Vorbis, Vorbis
+version, and the simple audio characteristics of the stream such as
+sample rate and number of channels.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id314086"></a>1.3.1.2. Comment Header</h5></div></div></div><p>
+The comment header includes user text comments ("tags") and a vendor
+string for the application/library that produced the bitstream.  The
+encoding and proper use of the comment header is described in 
+<a href="#vorbis-spec-comment" title="5. comment field and header specification">Section 5, &#8220;comment field and header specification&#8221;</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id314101"></a>1.3.1.3. Setup Header</h5></div></div></div><p>
+The setup header includes extensive CODEC setup information as well as
+the complete VQ and Huffman codebooks needed for decode.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id314113"></a>1.3.2. Decode Procedure</h4></div></div></div><div class="highlights"><p>
+The decoding and synthesis procedure for all audio packets is
+fundamentally the same.
+</p><div class="orderedlist"><ol type="1"><li>decode packet type flag</li><li>decode mode number</li><li>decode window shape (long windows only)</li><li>decode floor</li><li>decode residue into residue vectors</li><li>inverse channel coupling of residue vectors</li><li>generate floor curve from decoded floor data</li><li>compute dot product of floor and residue, producing audio spectrum vector</li><li>inverse monolithic transform of audio spectrum vector, always an MDCT in Vorbis I</li><li>overlap/add left-hand output of transform with right-hand output of previous frame</li><li>store right hand-data from transform of current frame for future lapping</li><li>if not first frame, return results of overlap/add as audio result of current frame</li></ol></div><p>
+</p></div><p>
+Note that clever rearrangement of the synthesis arithmetic is
+possible; as an example, one can take advantage of symmetries in the
+MDCT to store the right-hand transform data of a partial MDCT for a
+50% inter-frame buffer space savings, and then complete the transform
+later before overlap/add with the next frame.  This optimization
+produces entirely equivalent output and is naturally perfectly legal.
+The decoder must be <span class="emphasis"><em>entirely mathematically equivalent</em></span> to the
+specification, it need not be a literal semantic implementation.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id314203"></a>1.3.2.1. Packet type decode</h5></div></div></div><p>
+Vorbis I uses four packet types. The first three packet types mark each
+of the three Vorbis headers described above. The fourth packet type
+marks an audio packet. All other packet types are reserved; packets
+marked with a reserved type should be ignored.</p><p>
+Following the three header packets, all packets in a Vorbis I stream
+are audio.  The first step of audio packet decode is to read and
+verify the packet type; <span class="emphasis"><em>a non-audio packet when audio is expected
+indicates stream corruption or a non-compliant stream. The decoder
+must ignore the packet and not attempt decoding it to
+audio</em></span>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id314225"></a>1.3.2.2. Mode decode</h5></div></div></div><p>
+Vorbis allows an encoder to set up multiple, numbered packet 'modes',
+as described earlier, all of which may be used in a given Vorbis
+stream. The mode is encoded as an integer used as a direct offset into
+the mode instance index. </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="vorbis-spec-window"></a>1.3.2.3. Window shape decode (long windows only)</h5></div></div></div><p>
+Vorbis frames may be one of two PCM sample sizes specified during
+codec setup.  In Vorbis I, legal frame sizes are powers of two from 64
+to 8192 samples.  Aside from coupling, Vorbis handles channels as
+independent vectors and these frame sizes are in samples per channel.</p><p>
+Vorbis uses an overlapping transform, namely the MDCT, to blend one
+frame into the next, avoiding most inter-frame block boundary
+artifacts.  The MDCT output of one frame is windowed according to MDCT
+requirements, overlapped 50% with the output of the previous frame and
+added.  The window shape assures seamless reconstruction.  </p><p>
+This is easy to visualize in the case of equal sized-windows:</p><div class="mediaobject"><img src="window1.png" alt="overlap of two equal-sized windows"></div><p>
+And slightly more complex in the case of overlapping unequal sized
+windows:</p><div class="mediaobject"><img src="window2.png" alt="overlap of a long and a short window"></div><p>
+In the unequal-sized window case, the window shape of the long window
+must be modified for seamless lapping as above.  It is possible to
+correctly infer window shape to be applied to the current window from
+knowing the sizes of the current, previous and next window.  It is
+legal for a decoder to use this method. However, in the case of a long
+window (short windows require no modification), Vorbis also codes two
+flag bits to specify pre- and post- window shape.  Although not
+strictly necessary for function, this minor redundancy allows a packet
+to be fully decoded to the point of lapping entirely independently of
+any other packet, allowing easier abstraction of decode layers as well
+as allowing a greater level of easy parallelism in encode and
+decode.</p><p>
+A description of valid window functions for use with an inverse MDCT
+can be found in the paper 
+&#8220;<span class="citetitle">
+<a href="http://www.iocon.com/resource/docs/ps/eusipco_corrected.ps" target="_top">
+The use of multirate filter banks for coding of high quality digital
+audio</a></span>&#8221;, by T. Sporer, K. Brandenburg and B. Edler.  Vorbis windows
+all use the slope function 
+  <span class="inlinemediaobject"><span>$y = \sin(.5*\pi \, \sin^2((x+.5)/n*\pi))$</span></span>.
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339168"></a>1.3.2.4. floor decode</h5></div></div></div><p>
+Each floor is encoded/decoded in channel order, however each floor
+belongs to a 'submap' that specifies which floor configuration to
+use.  All floors are decoded before residue decode begins.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339179"></a>1.3.2.5. residue decode</h5></div></div></div><p>
+Although the number of residue vectors equals the number of channels,
+channel coupling may mean that the raw residue vectors extracted
+during decode do not map directly to specific channels.  When channel
+coupling is in use, some vectors will correspond to coupled magnitude
+or angle.  The coupling relationships are described in the codec setup
+and may differ from frame to frame, due to different mode numbers.</p><p>
+Vorbis codes residue vectors in groups by submap; the coding is done
+in submap order from submap 0 through n-1.  This differs from floors
+which are coded using a configuration provided by submap number, but
+are coded individually in channel order.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339196"></a>1.3.2.6. inverse channel coupling</h5></div></div></div><p>
+A detailed discussion of stereo in the Vorbis codec can be found in
+the document <a href="stereo.html" target="_top"><em class="citetitle">Stereo Channel Coupling in the
+Vorbis CODEC</em></a>.  Vorbis is not limited to only stereo coupling, but
+the stereo document also gives a good overview of the generic coupling
+mechanism.</p><p>
+Vorbis coupling applies to pairs of residue vectors at a time;
+decoupling is done in-place a pair at a time in the order and using
+the vectors specified in the current mapping configuration.  The
+decoupling operation is the same for all pairs, converting square
+polar representation (where one vector is magnitude and the second
+angle) back to Cartesian representation.</p><p>
+After decoupling, in order, each pair of vectors on the coupling list, 
+the resulting residue vectors represent the fine spectral detail
+of each output channel.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339224"></a>1.3.2.7. generate floor curve</h5></div></div></div><p>
+The decoder may choose to generate the floor curve at any appropriate
+time.  It is reasonable to generate the output curve when the floor
+data is decoded from the raw packet, or it can be generated after
+inverse coupling and applied to the spectral residue directly,
+combining generation and the dot product into one step and eliminating
+some working space.</p><p>
+Both floor 0 and floor 1 generate a linear-range, linear-domain output
+vector to be multiplied (dot product) by the linear-range,
+linear-domain spectral residue.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339240"></a>1.3.2.8. compute floor/residue dot product</h5></div></div></div><p>
+This step is straightforward; for each output channel, the decoder
+multiplies the floor curve and residue vectors element by element,
+producing the finished audio spectrum of each channel.</p><p>
+One point is worth mentioning about this dot product; a common mistake
+in a fixed point implementation might be to assume that a 32 bit
+fixed-point representation for floor and residue and direct
+multiplication of the vectors is sufficient for acceptable spectral
+depth in all cases because it happens to mostly work with the current
+Xiph.Org reference encoder.</p><p>
+However, floor vector values can span ~140dB (~24 bits unsigned), and
+the audio spectrum vector should represent a minimum of 120dB (~21
+bits with sign), even when output is to a 16 bit PCM device.  For the
+residue vector to represent full scale if the floor is nailed to
+-140dB, it must be able to span 0 to +140dB.  For the residue vector
+to reach full scale if the floor is nailed at 0dB, it must be able to
+represent -140dB to +0dB.  Thus, in order to handle full range
+dynamics, a residue vector may span -140dB to +140dB entirely within
+spec.  A 280dB range is approximately 48 bits with sign; thus the
+residue vector must be able to represent a 48 bit range and the dot
+product must be able to handle an effective 48 bit times 24 bit
+multiplication.  This range may be achieved using large (64 bit or
+larger) integers, or implementing a movable binary point
+representation.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339268"></a>1.3.2.9. inverse monolithic transform (MDCT)</h5></div></div></div><p>
+The audio spectrum is converted back into time domain PCM audio via an
+inverse Modified Discrete Cosine Transform (MDCT).  A detailed
+description of the MDCT is available in the paper <a href="http://www.iocon.com/resource/docs/ps/eusipco_corrected.ps" target="_top">&#8220;<span class="citetitle">The use of multirate filter banks for coding of high quality digital
+audio</span>&#8221;</a>, by T. Sporer, K. Brandenburg and B. Edler.</p><p>
+Note that the PCM produced directly from the MDCT is not yet finished
+audio; it must be lapped with surrounding frames using an appropriate
+window (such as the Vorbis window) before the MDCT can be considered
+orthogonal.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339292"></a>1.3.2.10. overlap/add data</h5></div></div></div><p>
+Windowed MDCT output is overlapped and added with the right hand data
+of the previous window such that the 3/4 point of the previous window
+is aligned with the 1/4 point of the current window (as illustrated in
+the window overlap diagram). At this point, the audio data between the
+center of the previous frame and the center of the current frame is
+now finished and ready to be returned. </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339304"></a>1.3.2.11. cache right hand data</h5></div></div></div><p>
+The decoder must cache the right hand portion of the current frame to
+be lapped with the left hand portion of the next frame.
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id339314"></a>1.3.2.12. return finished audio data</h5></div></div></div><p>
+The overlapped portion produced from overlapping the previous and
+current frame data is finished data to be returned by the decoder.
+This data spans from the center of the previous window to the center
+of the current window.  In the case of same-sized windows, the amount
+of data to return is one-half block consisting of and only of the
+overlapped portions. When overlapping a short and long window, much of
+the returned range is not actually overlap.  This does not damage
+transform orthogonality.  Pay attention however to returning the
+correct data range; the amount of data to be returned is:
+
+</p><pre class="programlisting">
+window_blocksize(previous_window)/4+window_blocksize(current_window)/4
+</pre><p>
+
+from the center of the previous window to the center of the current
+window.</p><p>
+Data is not returned from the first frame; it must be used to 'prime'
+the decode engine.  The encoder accounts for this priming when
+calculating PCM offsets; after the first frame, the proper PCM output
+offset is '0' (as no data has been returned yet).</p></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-bitpacking"></a>2. Bitpacking Convention</h2></div><div><p class="releaseinfo">
+ $Id: 02-bitpacking.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id304831"></a>2.1. Overview</h3></div></div></div><p>
+The Vorbis codec uses relatively unstructured raw packets containing
+arbitrary-width binary integer fields.  Logically, these packets are a
+bitstream in which bits are coded one-by-one by the encoder and then
+read one-by-one in the same monotonically increasing order by the
+decoder.  Most current binary storage arrangements group bits into a
+native word size of eight bits (octets), sixteen bits, thirty-two bits
+or, less commonly other fixed word sizes.  The Vorbis bitpacking
+convention specifies the correct mapping of the logical packet
+bitstream into an actual representation in fixed-width words.
+</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id304890"></a>2.1.1. octets, bytes and words</h4></div></div></div><p>
+In most contemporary architectures, a 'byte' is synonymous with an
+'octet', that is, eight bits.  This has not always been the case;
+seven, ten, eleven and sixteen bit 'bytes' have been used.  For
+purposes of the bitpacking convention, a byte implies the native,
+smallest integer storage representation offered by a platform.  On
+modern platforms, this is generally assumed to be eight bits (not
+necessarily because of the processor but because of the
+filesystem/memory architecture.  Modern filesystems invariably offer
+bytes as the fundamental atom of storage).  A 'word' is an integer
+size that is a grouped multiple of this smallest size.</p><p>
+The most ubiquitous architectures today consider a 'byte' to be an
+octet (eight bits) and a word to be a group of two, four or eight
+bytes (16, 32 or 64 bits).  Note however that the Vorbis bitpacking
+convention is still well defined for any native byte size; Vorbis uses
+the native bit-width of a given storage system. This document assumes
+that a byte is one octet for purposes of example.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id304832"></a>2.1.2. bit order</h4></div></div></div><p>
+A byte has a well-defined 'least significant' bit (LSb), which is the
+only bit set when the byte is storing the two's complement integer
+value +1.  A byte's 'most significant' bit (MSb) is at the opposite
+end of the byte. Bits in a byte are numbered from zero at the LSb to
+<span class="emphasis"><em>n</em></span> (<span class="emphasis"><em>n</em></span>=7 in an octet) for the
+MSb.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id327953"></a>2.1.3. byte order</h4></div></div></div><p>
+Words are native groupings of multiple bytes.  Several byte orderings
+are possible in a word; the common ones are 3-2-1-0 ('big endian' or
+'most significant byte first' in which the highest-valued byte comes
+first), 0-1-2-3 ('little endian' or 'least significant byte first' in
+which the lowest value byte comes first) and less commonly 3-1-2-0 and
+0-2-1-3 ('mixed endian').</p><p>
+The Vorbis bitpacking convention specifies storage and bitstream
+manipulation at the byte, not word, level, thus host word ordering is
+of a concern only during optimization when writing high performance
+code that operates on a word of storage at a time rather than by byte.
+Logically, bytes are always coded and decoded in order from byte zero
+through byte <span class="emphasis"><em>n</em></span>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id336382"></a>2.1.4. coding bits into byte sequences</h4></div></div></div><p>
+The Vorbis codec has need to code arbitrary bit-width integers, from
+zero to 32 bits wide, into packets.  These integer fields are not
+aligned to the boundaries of the byte representation; the next field
+is written at the bit position at which the previous field ends.</p><p>
+The encoder logically packs integers by writing the LSb of a binary
+integer to the logical bitstream first, followed by next least
+significant bit, etc, until the requested number of bits have been
+coded.  When packing the bits into bytes, the encoder begins by
+placing the LSb of the integer to be written into the least
+significant unused bit position of the destination byte, followed by
+the next-least significant bit of the source integer and so on up to
+the requested number of bits.  When all bits of the destination byte
+have been filled, encoding continues by zeroing all bits of the next
+byte and writing the next bit into the bit position 0 of that byte.
+Decoding follows the same process as encoding, but by reading bits
+from the byte stream and reassembling them into integers.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id310906"></a>2.1.5. signedness</h4></div></div></div><p>
+The signedness of a specific number resulting from decode is to be
+interpreted by the decoder given decode context.  That is, the three
+bit binary pattern 'b111' can be taken to represent either 'seven' as
+an unsigned integer, or '-1' as a signed, two's complement integer.
+The encoder and decoder are responsible for knowing if fields are to
+be treated as signed or unsigned.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258112"></a>2.1.6. coding example</h4></div></div></div><p>
+Code the 4 bit integer value '12' [b1100] into an empty bytestream.
+Bytestream result:
+
+</p><pre class="screen">  
+              |
+              V
+
+        7 6 5 4 3 2 1 0
+byte 0 [0 0 0 0 1 1 0 0]  &lt;-
+byte 1 [               ]
+byte 2 [               ]
+byte 3 [               ]
+             ...
+byte n [               ]  bytestream length == 1 byte
+
+</pre><p>
+</p><p>
+Continue by coding the 3 bit integer value '-1' [b111]:
+
+</p><pre class="screen">
+        |
+        V
+
+        7 6 5 4 3 2 1 0
+byte 0 [0 1 1 1 1 1 0 0]  &lt;-
+byte 1 [               ]
+byte 2 [               ]
+byte 3 [               ]
+             ... 
+byte n [               ]  bytestream length == 1 byte
+</pre><p>
+</p><p>
+Continue by coding the 7 bit integer value '17' [b0010001]:
+
+</p><pre class="screen">
+          |
+          V    
+
+        7 6 5 4 3 2 1 0
+byte 0 [1 1 1 1 1 1 0 0]
+byte 1 [0 0 0 0 1 0 0 0]  &lt;-
+byte 2 [               ]
+byte 3 [               ]
+             ...
+byte n [               ]  bytestream length == 2 bytes
+                          bit cursor == 6
+</pre><p>
+</p><p>
+Continue by coding the 13 bit integer value '6969' [b110 11001110 01]:
+
+</p><pre class="screen">
+                |
+                V
+
+        7 6 5 4 3 2 1 0
+byte 0 [1 1 1 1 1 1 0 0]
+byte 1 [0 1 0 0 1 0 0 0]
+byte 2 [1 1 0 0 1 1 1 0]
+byte 3 [0 0 0 0 0 1 1 0]  &lt;-
+             ...
+byte n [               ]  bytestream length == 4 bytes
+
+</pre><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id258160"></a>2.1.7. decoding example</h4></div></div></div><p>
+Reading from the beginning of the bytestream encoded in the above example:
+
+</p><pre class="screen">
+                      |
+                      V
+                      
+        7 6 5 4 3 2 1 0
+byte 0 [1 1 1 1 1 1 0 0]  &lt;-
+byte 1 [0 1 0 0 1 0 0 0]
+byte 2 [1 1 0 0 1 1 1 0]
+byte 3 [0 0 0 0 0 1 1 0]  bytestream length == 4 bytes
+
+</pre><p>
+</p><p>
+We read two, two-bit integer fields, resulting in the returned numbers
+'b00' and 'b11'.  Two things are worth noting here:
+
+</p><div class="itemizedlist"><ul type="disc"><li><p>Although these four bits were originally written as a single
+four-bit integer, reading some other combination of bit-widths from the
+bitstream is well defined.  There are no artificial alignment
+boundaries maintained in the bitstream.</p></li><li><p>The second value is the
+two-bit-wide integer 'b11'.  This value may be interpreted either as
+the unsigned value '3', or the signed value '-1'.  Signedness is
+dependent on decode context.</p></li></ul></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id259912"></a>2.1.8. end-of-packet alignment</h4></div></div></div><p>
+The typical use of bitpacking is to produce many independent
+byte-aligned packets which are embedded into a larger byte-aligned
+container structure, such as an Ogg transport bitstream.  Externally,
+each bytestream (encoded bitstream) must begin and end on a byte
+boundary.  Often, the encoded bitstream is not an integer number of
+bytes, and so there is unused (uncoded) space in the last byte of a
+packet.</p><p>
+Unused space in the last byte of a bytestream is always zeroed during
+the coding process.  Thus, should this unused space be read, it will
+return binary zeroes.</p><p>
+Attempting to read past the end of an encoded packet results in an
+'end-of-packet' condition.  End-of-packet is not to be considered an
+error; it is merely a state indicating that there is insufficient
+remaining data to fulfill the desired read size.  Vorbis uses truncated
+packets as a normal mode of operation, and as such, decoders must
+handle reading past the end of a packet as a typical mode of
+operation. Any further read operations after an 'end-of-packet'
+condition shall also return 'end-of-packet'.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id259938"></a>2.1.9.  reading zero bits</h4></div></div></div><p>
+Reading a zero-bit-wide integer returns the value '0' and does not
+increment the stream cursor.  Reading to the end of the packet (but
+not past, such that an 'end-of-packet' condition has not triggered)
+and then reading a zero bit integer shall succeed, returning 0, and
+not trigger an end-of-packet condition.  Reading a zero-bit-wide
+integer after a previous read sets 'end-of-packet' shall also fail
+with 'end-of-packet'.</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-codebook"></a>3. Probability Model and Codebooks</h2></div><div><p class="releaseinfo">
+ $Id: 03-codebook.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id310158"></a>3.1. Overview</h3></div></div></div><p>
+Unlike practically every other mainstream audio codec, Vorbis has no
+statically configured probability model, instead packing all entropy
+decoding configuration, VQ and Huffman, into the bitstream itself in
+the third header, the codec setup header.  This packed configuration
+consists of multiple 'codebooks', each containing a specific
+Huffman-equivalent representation for decoding compressed codewords as
+well as an optional lookup table of output vector values to which a
+decoded Huffman value is applied as an offset, generating the final
+decoded output corresponding to a given compressed codeword.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id335318"></a>3.1.1. Bitwise operation</h4></div></div></div><p>
+The codebook mechanism is built on top of the vorbis bitpacker. Both
+the codebooks themselves and the codewords they decode are unrolled 
+from a packet as a series of arbitrary-width values read from the 
+stream according to <a href="#vorbis-spec-bitpacking" title="2. Bitpacking Convention">Section 2, &#8220;Bitpacking Convention&#8221;</a>.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id310216"></a>3.2. Packed codebook format</h3></div></div></div><p>
+For purposes of the examples below, we assume that the storage
+system's native byte width is eight bits.  This is not universally
+true; see <a href="#vorbis-spec-bitpacking" title="2. Bitpacking Convention">Section 2, &#8220;Bitpacking Convention&#8221;</a> for discussion 
+relating to non-eight-bit bytes.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id324957"></a>3.2.1. codebook decode</h4></div></div></div><p>
+A codebook begins with a 24 bit sync pattern, 0x564342:
+
+</p><pre class="screen">
+byte 0: [ 0 1 0 0 0 0 1 0 ] (0x42)
+byte 1: [ 0 1 0 0 0 0 1 1 ] (0x43)
+byte 2: [ 0 1 0 1 0 1 1 0 ] (0x56)
+</pre><p>
+16 bit <code class="varname">[codebook_dimensions]</code> and 24 bit <code class="varname">[codebook_entries]</code> fields:
+
+</p><pre class="screen">
+
+byte 3: [ X X X X X X X X ] 
+byte 4: [ X X X X X X X X ] [codebook_dimensions] (16 bit unsigned)
+
+byte 5: [ X X X X X X X X ] 
+byte 6: [ X X X X X X X X ] 
+byte 7: [ X X X X X X X X ] [codebook_entries] (24 bit unsigned)
+
+</pre><p>
+Next is the <code class="varname">[ordered]</code> bit flag:
+
+</p><pre class="screen">
+
+byte 8: [               X ] [ordered] (1 bit)
+
+</pre><p>
+Each entry, numbering a
+total of <code class="varname">[codebook_entries]</code>, is assigned a codeword length.
+We now read the list of codeword lengths and store these lengths in
+the array <code class="varname">[codebook_codeword_lengths]</code>. Decode of lengths is
+according to whether the <code class="varname">[ordered]</code> flag is set or unset.
+
+</p><div class="itemizedlist"><ul type="disc"><li><p>If the <code class="varname">[ordered]</code> flag is unset, the codeword list is not
+  length ordered and the decoder needs to read each codeword length
+  one-by-one.</p><p>The decoder first reads one additional bit flag, the
+  <code class="varname">[sparse]</code> flag.  This flag determines whether or not the
+  codebook contains unused entries that are not to be included in the
+  codeword decode tree:
+
+</p><pre class="screen">
+byte 8: [             X 1 ] [sparse] flag (1 bit)
+</pre><p>
+  The decoder now performs for each of the <code class="varname">[codebook_entries]</code>
+  codebook entries:
+
+</p><pre class="screen">
+  
+  1) if([sparse] is set){
+
+         2) [flag] = read one bit;
+         3) if([flag] is set){
+
+              4) [length] = read a five bit unsigned integer;
+              5) codeword length for this entry is [length]+1;
+
+            } else {
+
+              6) this entry is unused.  mark it as such.
+
+            }
+
+     } else the sparse flag is not set {
+
+        7) [length] = read a five bit unsigned integer;
+        8) the codeword length for this entry is [length]+1;
+        
+     }
+
+</pre></li><li><p>If the <code class="varname">[ordered]</code> flag is set, the codeword list for this
+  codebook is encoded in ascending length order.  Rather than reading
+  a length for every codeword, the encoder reads the number of
+  codewords per length.  That is, beginning at entry zero:
+
+</p><pre class="screen">
+  1) [current_entry] = 0;
+  2) [current_length] = read a five bit unsigned integer and add 1;
+  3) [number] = read <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>([codebook_entries] - [current_entry]) bits as an unsigned integer
+  4) set the entries [current_entry] through [current_entry]+[number]-1, inclusive, 
+    of the [codebook_codeword_lengths] array to [current_length]
+  5) set [current_entry] to [number] + [current_entry]
+  6) increment [current_length] by 1
+  7) if [current_entry] is greater than [codebook_entries] ERROR CONDITION; 
+    the decoder will not be able to read this stream.
+  8) if [current_entry] is less than [codebook_entries], repeat process starting at 3)
+  9) done.
+</pre></li></ul></div><p>
+
+After all codeword lengths have been decoded, the decoder reads the
+vector lookup table.  Vorbis I supports three lookup types:
+</p><div class="orderedlist"><ol type="1"><li>No lookup</li><li>Implicitly populated value mapping (lattice VQ)</li><li>Explicitly populated value mapping (tessellated or 'foam'
+VQ)</li></ol></div><p>
+</p><p>
+The lookup table type is read as a four bit unsigned integer:
+</p><pre class="screen">
+  1) [codebook_lookup_type] = read four bits as an unsigned integer
+</pre><p>
+Codebook decode precedes according to <code class="varname">[codebook_lookup_type]</code>:
+</p><div class="itemizedlist"><ul type="disc"><li><p>Lookup type zero indicates no lookup to be read.  Proceed past
+lookup decode.</p></li><li><p>Lookup types one and two are similar, differing only in the
+number of lookup values to be read.  Lookup type one reads a list of
+values that are permuted in a set pattern to build a list of vectors,
+each vector of order <code class="varname">[codebook_dimensions]</code> scalars.  Lookup
+type two builds the same vector list, but reads each scalar for each
+vector explicitly, rather than building vectors from a smaller list of
+possible scalar values.  Lookup decode proceeds as follows:
+
+</p><pre class="screen">
+  1) [codebook_minimum_value] = <a href="#vorbis-spec-float32_unpack" title="9.2.2. float32_unpack">float32_unpack</a>( read 32 bits as an unsigned integer) 
+  2) [codebook_delta_value] = <a href="#vorbis-spec-float32_unpack" title="9.2.2. float32_unpack">float32_unpack</a>( read 32 bits as an unsigned integer) 
+  3) [codebook_value_bits] = read 4 bits as an unsigned integer and add 1
+  4) [codebook_sequence_p] = read 1 bit as a boolean flag
+
+  if ( [codebook_lookup_type] is 1 ) {
+   
+     5) [codebook_lookup_values] = <a href="#vorbis-spec-lookup1_values" title="9.2.3. lookup1_values">lookup1_values</a>(<code class="varname">[codebook_entries]</code>, <code class="varname">[codebook_dimensions]</code> )
+
+  } else {
+
+     6) [codebook_lookup_values] = <code class="varname">[codebook_entries]</code> * <code class="varname">[codebook_dimensions]</code>
+
+  }
+
+  7) read a total of [codebook_lookup_values] unsigned integers of [codebook_value_bits] each; 
+     store these in order in the array [codebook_multiplicands]
+</pre></li><li><p>A <code class="varname">[codebook_lookup_type]</code> of greater than two is reserved
+and indicates a stream that is not decodable by the specification in this
+document.</p></li></ul></div><p>
+</p><p>
+An 'end of packet' during any read operation in the above steps is
+considered an error condition rendering the stream undecodable.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id258959"></a>3.2.1.1. Huffman decision tree representation</h5></div></div></div><p>
+The <code class="varname">[codebook_codeword_lengths]</code> array and
+<code class="varname">[codebook_entries]</code> value uniquely define the Huffman decision
+tree used for entropy decoding.</p><p>
+Briefly, each used codebook entry (recall that length-unordered
+codebooks support unused codeword entries) is assigned, in order, the
+lowest valued unused binary Huffman codeword possible.  Assume the
+following codeword length list:
+
+</p><pre class="screen">
+entry 0: length 2
+entry 1: length 4
+entry 2: length 4
+entry 3: length 4
+entry 4: length 4
+entry 5: length 2
+entry 6: length 3
+entry 7: length 3
+</pre><p>
+Assigning codewords in order (lowest possible value of the appropriate
+length to highest) results in the following codeword list:
+
+</p><pre class="screen">
+entry 0: length 2 codeword 00
+entry 1: length 4 codeword 0100
+entry 2: length 4 codeword 0101
+entry 3: length 4 codeword 0110
+entry 4: length 4 codeword 0111
+entry 5: length 2 codeword 10
+entry 6: length 3 codeword 110
+entry 7: length 3 codeword 111
+</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+Unlike most binary numerical values in this document, we
+intend the above codewords to be read and used bit by bit from left to
+right, thus the codeword '001' is the bit string 'zero, zero, one'.
+When determining 'lowest possible value' in the assignment definition
+above, the leftmost bit is the MSb.</p></div><p>
+It is clear that the codeword length list represents a Huffman
+decision tree with the entry numbers equivalent to the leaves numbered
+left-to-right:
+
+</p><div class="mediaobject"><img src="hufftree.png" alt="[huffman tree illustration]"></div><p>
+</p><p>
+As we assign codewords in order, we see that each choice constructs a
+new leaf in the leftmost possible position.</p><p>
+Note that it's possible to underspecify or overspecify a Huffman tree
+via the length list.  In the above example, if codeword seven were
+eliminated, it's clear that the tree is unfinished:
+
+</p><div class="mediaobject"><img src="hufftree-under.png" alt="[underspecified huffman tree illustration]"></div><p>
+</p><p>
+Similarly, in the original codebook, it's clear that the tree is fully
+populated and a ninth codeword is impossible.  Both underspecified and
+overspecified trees are an error condition rendering the stream
+undecodable.</p><p>
+Codebook entries marked 'unused' are simply skipped in the assigning
+process.  They have no codeword and do not appear in the decision
+tree, thus it's impossible for any bit pattern read from the stream to
+decode to that entry number.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id316419"></a>3.2.1.2. VQ lookup table vector representation</h5></div></div></div><p>
+Unpacking the VQ lookup table vectors relies on the following values:
+</p><pre class="programlisting">
+the [codebook_multiplicands] array
+[codebook_minimum_value]
+[codebook_delta_value]
+[codebook_sequence_p]
+[codebook_lookup_type]
+[codebook_entries]
+[codebook_dimensions]
+[codebook_lookup_values]
+</pre><p>
+</p><p>
+Decoding (unpacking) a specific vector in the vector lookup table
+proceeds according to <code class="varname">[codebook_lookup_type]</code>.  The unpacked
+vector values are what a codebook would return during audio packet
+decode in a VQ context.</p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="id316444"></a>3.2.1.2.1. Vector value decode: Lookup type 1</h6></div></div></div><p>
+Lookup type one specifies a lattice VQ lookup table built
+algorithmically from a list of scalar values.  Calculate (unpack) the
+final values of a codebook entry vector from the entries in
+<code class="varname">[codebook_multiplicands]</code> as follows (<code class="varname">[value_vector]</code>
+is the output vector representing the vector of values for entry number
+<code class="varname">[lookup_offset]</code> in this codebook):
+
+</p><pre class="screen">
+  1) [last] = 0;
+  2) [index_divisor] = 1;
+  3) iterate [i] over the range 0 ... [codebook_dimensions]-1 (once for each scalar value in the value vector) {
+       
+       4) [multiplicand_offset] = ( [lookup_offset] divided by [index_divisor] using integer 
+          division ) integer modulo [codebook_lookup_values]
+
+       5) vector [value_vector] element [i] = 
+            ( [codebook_multiplicands] array element number [multiplicand_offset] ) *
+            [codebook_delta_value] + [codebook_minimum_value] + [last];
+
+       6) if ( [codebook_sequence_p] is set ) then set [last] = vector [value_vector] element [i]
+
+       7) [index_divisor] = [index_divisor] * [codebook_lookup_values]
+
+     }
+ 
+  8) vector calculation completed.
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="id316478"></a>3.2.1.2.2. Vector value decode: Lookup type 2</h6></div></div></div><p>
+Lookup type two specifies a VQ lookup table in which each scalar in
+each vector is explicitly set by the <code class="varname">[codebook_multiplicands]</code>
+array in a one-to-one mapping.  Calculate [unpack] the
+final values of a codebook entry vector from the entries in
+<code class="varname">[codebook_multiplicands]</code> as follows (<code class="varname">[value_vector]</code>
+is the output vector representing the vector of values for entry number
+<code class="varname">[lookup_offset]</code> in this codebook):
+
+</p><pre class="screen">
+  1) [last] = 0;
+  2) [multiplicand_offset] = [lookup_offset] * [codebook_dimensions]
+  3) iterate [i] over the range 0 ... [codebook_dimensions]-1 (once for each scalar value in the value vector) {
+
+       4) vector [value_vector] element [i] = 
+            ( [codebook_multiplicands] array element number [multiplicand_offset] ) *
+            [codebook_delta_value] + [codebook_minimum_value] + [last];
+
+       5) if ( [codebook_sequence_p] is set ) then set [last] = vector [value_vector] element [i] 
+
+       6) increment [multiplicand_offset]
+
+     }
+ 
+  7) vector calculation completed.
+</pre></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id316518"></a>3.3. Use of the codebook abstraction</h3></div></div></div><p>
+The decoder uses the codebook abstraction much as it does the
+bit-unpacking convention; a specific codebook reads a
+codeword from the bitstream, decoding it into an entry number, and then
+returns that entry number to the decoder (when used in a scalar
+entropy coding context), or uses that entry number as an offset into
+the VQ lookup table, returning a vector of values (when used in a context
+desiring a VQ value). Scalar or VQ context is always explicit; any call
+to the codebook mechanism requests either a scalar entry number or a
+lookup vector.</p><p>
+Note that VQ lookup type zero indicates that there is no lookup table;
+requesting decode using a codebook of lookup type 0 in any context
+expecting a vector return value (even in a case where a vector of
+dimension one) is forbidden.  If decoder setup or decode requests such
+an action, that is an error condition rendering the packet
+undecodable.</p><p>
+Using a codebook to read from the packet bitstream consists first of
+reading and decoding the next codeword in the bitstream. The decoder
+reads bits until the accumulated bits match a codeword in the
+codebook.  This process can be though of as logically walking the
+Huffman decode tree by reading one bit at a time from the bitstream,
+and using the bit as a decision boolean to take the 0 branch (left in
+the above examples) or the 1 branch (right in the above examples).
+Walking the tree finishes when the decode process hits a leaf in the
+decision tree; the result is the entry number corresponding to that
+leaf.  Reading past the end of a packet propagates the 'end-of-stream'
+condition to the decoder.</p><p>
+When used in a scalar context, the resulting codeword entry is the
+desired return value.</p><p>
+When used in a VQ context, the codeword entry number is used as an
+offset into the VQ lookup table.  The value returned to the decoder is
+the vector of scalars corresponding to this offset.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-codec"></a>4. Codec Setup and Packet Decode</h2></div><div><p class="releaseinfo">
+ $Id: 04-codec.xml 10466 2005-11-28 00:34:44Z giles $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id336024"></a>4.1. Overview</h3></div></div></div><p>
+This document serves as the top-level reference document for the
+bit-by-bit decode specification of Vorbis I.  This document assumes a
+high-level understanding of the Vorbis decode process, which is
+provided in <a href="#vorbis-spec-intro" title="1. Introduction and Description">Section 1, &#8220;Introduction and Description&#8221;</a>.  <a href="#vorbis-spec-bitpacking" title="2. Bitpacking Convention">Section 2, &#8220;Bitpacking Convention&#8221;</a> covers reading and writing bit fields from
+and to bitstream packets.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id326710"></a>4.2. Header decode and decode setup</h3></div></div></div><p>
+A Vorbis bitstream begins with three header packets. The header
+packets are, in order, the identification header, the comments header,
+and the setup header. All are required for decode compliance.  An
+end-of-packet condition during decoding the first or third header
+packet renders the stream undecodable.  End-of-packet decoding the
+comment header is a non-fatal error condition.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id337747"></a>4.2.1. Common header decode</h4></div></div></div><p>
+Each header packet begins with the same header fields.
+</p><pre class="screen">
+  1) [packet_type] : 8 bit value
+  2) 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73: the characters 'v','o','r','b','i','s' as six octets
+</pre><p>
+Decode continues according to packet type; the identification header
+is type 1, the comment header type 3 and the setup header type 5
+(these types are all odd as a packet with a leading single bit of '0'
+is an audio packet).  The packets must occur in the order of
+identification, comment, setup.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id317806"></a>4.2.2. Identification header</h4></div></div></div><p>
+The identification header is a short header of only a few fields used
+to declare the stream definitively as Vorbis, and provide a few externally
+relevant pieces of information about the audio stream. The
+identification header is coded as follows:</p><pre class="screen">
+ 1) [vorbis_version] = read 32 bits as unsigned integer
+ 2) [audio_channels] = read 8 bit integer as unsigned
+ 3) [audio_sample_rate] = read 32 bits as unsigned integer
+ 4) [bitrate_maximum] = read 32 bits as signed integer
+ 5) [bitrate_nominal] = read 32 bits as signed integer
+ 6) [bitrate_minimum] = read 32 bits as signed integer
+ 7) [blocksize_0] = 2 exponent (read 4 bits as unsigned integer)
+ 8) [blocksize_1] = 2 exponent (read 4 bits as unsigned integer)
+ 9) [framing_flag] = read one bit
+</pre><p>
+<code class="varname">[vorbis_version]</code> is to read '0' in order to be compatible
+with this document.  Both <code class="varname">[audio_channels]</code> and
+<code class="varname">[audio_sample_rate]</code> must read greater than zero.  Allowed final
+blocksize values are 64, 128, 256, 512, 1024, 2048, 4096 and 8192 in
+Vorbis I.  <code class="varname">[blocksize_0]</code> must be less than or equal to
+<code class="varname">[blocksize_1]</code>.  The framing bit must be nonzero.  Failure to
+meet any of these conditions renders a stream undecodable.</p><p>
+The bitrate fields above are used only as hints. The nominal bitrate
+field especially may be considerably off in purely VBR streams.  The
+fields are meaningful only when greater than zero.</p><p>
+</p><div class="itemizedlist"><ul type="disc"><li>All three fields set to the same value implies a fixed rate, or tightly bounded, nearly fixed-rate bitstream</li><li>Only nominal set implies a VBR or ABR stream that averages the nominal bitrate</li><li>Maximum and or minimum set implies a VBR bitstream that obeys the bitrate limits</li><li>None set indicates the encoder does not care to speculate.</li></ul></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id320370"></a>4.2.3. Comment header</h4></div></div></div><p>
+Comment header decode and data specification is covered in
+<a href="#vorbis-spec-comment" title="5. comment field and header specification">Section 5, &#8220;comment field and header specification&#8221;</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id320384"></a>4.2.4. Setup header</h4></div></div></div><p>
+Vorbis codec setup is configurable to an extreme degree:
+
+</p><div class="mediaobject"><img src="components.png" alt="[decoder pipeline configuration]"></div><p>
+</p><p>
+The setup header contains the bulk of the codec setup information
+needed for decode.  The setup header contains, in order, the lists of
+codebook configurations, time-domain transform configurations
+(placeholders in Vorbis I), floor configurations, residue
+configurations, channel mapping configurations and mode
+configurations. It finishes with a framing bit of '1'.  Header decode
+proceeds in the following order:</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id305504"></a>4.2.4.1. Codebooks</h5></div></div></div><div class="orderedlist"><ol type="1"><li><code class="varname">[vorbis_codebook_count]</code> = read eight bits as unsigned integer and add one</li><li>Decode <code class="varname">[vorbis_codebook_count]</code> codebooks in order as defined
+in <a href="#vorbis-spec-codebook" title="3. Probability Model and Codebooks">Section 3, &#8220;Probability Model and Codebooks&#8221;</a>.  Save each configuration, in
+order, in an array of
+codebook configurations <code class="varname">[vorbis_codebook_configurations]</code>.</li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id305539"></a>4.2.4.2. Time domain transforms</h5></div></div></div><p>
+These hooks are placeholders in Vorbis I.  Nevertheless, the
+configuration placeholder values must be read to maintain bitstream
+sync.</p><div class="orderedlist"><ol type="1"><li><code class="varname">[vorbis_time_count]</code> = read 6 bits as unsigned integer and add one</li><li>read <code class="varname">[vorbis_time_count]</code> 16 bit values; each value should be zero.  If any value is nonzero, this is an error condition and the stream is undecodable.</li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id328542"></a>4.2.4.3. Floors</h5></div></div></div><p>
+Vorbis uses two floor types; header decode is handed to the decode
+abstraction of the appropriate type.</p><div class="orderedlist"><ol type="1"><li><code class="varname">[vorbis_floor_count]</code> = read 6 bits as unsigned integer and add one</li><li><p>For each <code class="varname">[i]</code> of <code class="varname">[vorbis_floor_count]</code> floor numbers:
+  </p><div class="orderedlist"><ol type="a"><li>read the floor type: vector <code class="varname">[vorbis_floor_types]</code> element <code class="varname">[i]</code> =
+read 16 bits as unsigned integer</li><li>If the floor type is zero, decode the floor
+configuration as defined in <a href="#vorbis-spec-floor0" title="6. Floor type 0 setup and decode">Section 6, &#8220;Floor type 0 setup and decode&#8221;</a>; save
+this
+configuration in slot <code class="varname">[i]</code> of the floor configuration array <code class="varname">[vorbis_floor_configurations]</code>.</li><li>If the floor type is one,
+decode the floor configuration as defined in <a href="#vorbis-spec-floor1" title="7. Floor type 1 setup and decode">Section 7, &#8220;Floor type 1 setup and decode&#8221;</a>; save this configuration in slot <code class="varname">[i]</code> of the floor configuration array <code class="varname">[vorbis_floor_configurations]</code>.</li><li>If the the floor type is greater than one, this stream is undecodable; ERROR CONDITION</li></ol></div><p>
+ </p></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id328635"></a>4.2.4.4. Residues</h5></div></div></div><p>
+Vorbis uses three residue types; header decode of each type is identical.
+</p><div class="orderedlist"><ol type="1"><li><code class="varname">[vorbis_residue_count]</code> = read 6 bits as unsigned integer and add one
+</li><li><p>For each of <code class="varname">[vorbis_residue_count]</code> residue numbers:
+ </p><div class="orderedlist"><ol type="a"><li>read the residue type; vector <code class="varname">[vorbis_residue_types]</code> element <code class="varname">[i]</code> = read 16 bits as unsigned integer</li><li>If the residue type is zero,
+one or two, decode the residue configuration as defined in <a href="#vorbis-spec-residue" title="8. Residue setup and decode">Section 8, &#8220;Residue setup and decode&#8221;</a>; save this configuration in slot <code class="varname">[i]</code> of the residue configuration array <code class="varname">[vorbis_residue_configurations]</code>.</li><li>If the the residue type is greater than two, this stream is undecodable; ERROR CONDITION</li></ol></div><p>
+</p></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id275059"></a>4.2.4.5. Mappings</h5></div></div></div><p>
+Mappings are used to set up specific pipelines for encoding
+multichannel audio with varying channel mapping applications. Vorbis I
+uses a single mapping type (0), with implicit PCM channel mappings.</p><div class="orderedlist"><ol type="1"><li><code class="varname">[vorbis_mapping_count]</code> = read 6 bits as unsigned integer and add one</li><li><p>For each <code class="varname">[i]</code> of <code class="varname">[vorbis_mapping_count]</code> mapping numbers:
+  </p><div class="orderedlist"><ol type="a"><li>read the mapping type: 16 bits as unsigned integer.  There's no reason to save the mapping type in Vorbis I.</li><li>If the mapping type is nonzero, the stream is undecodable</li><li><p>If the mapping type is zero:
+    </p><div class="orderedlist"><ol type="i"><li><p>read 1 bit as a boolean flag
+      </p><div class="orderedlist"><ol type="A"><li>if set, <code class="varname">[vorbis_mapping_submaps]</code> = read 4 bits as unsigned integer and add one</li><li>if unset, <code class="varname">[vorbis_mapping_submaps]</code> = 1</li></ol></div><p>
+      </p></li><li><p>read 1 bit as a boolean flag
+       </p><div class="orderedlist"><ol type="A"><li><p>if set, square polar channel mapping is in use:
+           </p><div class="orderedlist"><ol type="I"><li><code class="varname">[vorbis_mapping_coupling_steps]</code> = read 8 bits as unsigned integer and add one</li><li><p>for <code class="varname">[j]</code> each of <code class="varname">[vorbis_mapping_coupling_steps]</code> steps:
+               </p><div class="orderedlist"><ol type="1"><li>vector <code class="varname">[vorbis_mapping_magnitude]</code> element <code class="varname">[j]</code>= read <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>(<code class="varname">[audio_channels]</code> - 1) bits as unsigned integer</li><li>vector <code class="varname">[vorbis_mapping_angle]</code> element <code class="varname">[j]</code>= read <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>(<code class="varname">[audio_channels]</code> - 1) bits as unsigned integer</li><li>the numbers read in the above two steps are channel numbers representing the channel to treat as magnitude and the channel to treat as angle, respectively.  If for any coupling step the angle channel number equals the magnitude channel number, the magnitude channel number is greater than <code class="varname">[audio_channels]</code>-1, or the angle channel is greater than <code class="varname">[audio_channels]</code>-1, the stream is undecodable.</li></ol></div><p>
+               </p></li></ol></div><p>
+           </p></li><li>if unset, <code class="varname">[vorbis_mapping_coupling_steps]</code> = 0</li></ol></div><p>
+       </p></li><li>read 2 bits (reserved field); if the value is nonzero, the stream is undecodable</li><li><p>if <code class="varname">[vorbis_mapping_submaps]</code> is greater than one, we read channel multiplex settings. For each <code class="varname">[j]</code> of <code class="varname">[audio_channels]</code> channels:</p><div class="orderedlist"><ol type="A"><li>vector <code class="varname">[vorbis_mapping_mux]</code> element <code class="varname">[j]</code> = read 4 bits as unsigned integer</li><li>if the value is greater than the highest numbered submap (<code class="varname">[vorbis_mapping_submaps]</code> - 1), this in an error condition rendering the stream undecodable</li></ol></div></li><li><p>for each submap <code class="varname">[j]</code> of <code class="varname">[vorbis_mapping_submaps]</code> submaps, read the floor and residue numbers for use in decoding that submap:</p><div class="orderedlist"><ol type="A"><li>read and discard 8 bits (the unused time configuration placeholder)</li><li>read 8 bits as unsigned integer for the floor number; save in vector <code class="varname">[vorbis_mapping_submap_floor]</code> element <code class="varname">[j]</code></li><li>verify the floor number is not greater than the highest number floor configured for the bitstream. If it is, the bitstream is undecodable</li><li>read 8 bits as unsigned integer for the residue number; save in vector <code class="varname">[vorbis_mapping_submap_residue]</code> element <code class="varname">[j]</code></li><li>verify the residue number is not greater than the highest number residue configured for the bitstream.  If it is, the bitstream is undecodable</li></ol></div></li><li>save this mapping configuration in slot <code class="varname">[i]</code> of the mapping configuration array <code class="varname">[vorbis_mapping_configurations]</code>.</li></ol></div></li></ol></div><p>
+ </p></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id342611"></a>4.2.4.6. Modes</h5></div></div></div><div class="orderedlist"><ol type="1"><li><code class="varname">[vorbis_mode_count]</code> = read 6 bits as unsigned integer and add one</li><li><p>For each of <code class="varname">[vorbis_mode_count]</code> mode numbers:</p><div class="orderedlist"><ol type="a"><li><code class="varname">[vorbis_mode_blockflag]</code> = read 1 bit</li><li><code class="varname">[vorbis_mode_windowtype]</code> = read 16 bits as unsigned integer</li><li><code class="varname">[vorbis_mode_transformtype]</code> = read 16 bits as unsigned integer</li><li><code class="varname">[vorbis_mode_mapping]</code> = read 8 bits as unsigned integer</li><li>verify ranges; zero is the only legal value in Vorbis I for
+<code class="varname">[vorbis_mode_windowtype]</code>
+and <code class="varname">[vorbis_mode_transformtype]</code>.  <code class="varname">[vorbis_mode_mapping]</code> must not be greater than the highest number mapping in use.  Any illegal values render the stream undecodable.</li><li>save this mode configuration in slot <code class="varname">[i]</code> of the mode configuration array
+<code class="varname">[vorbis_mode_configurations]</code>.</li></ol></div></li><li>read 1 bit as a framing flag.  If unset, a framing error occurred and the stream is not
+decodable.</li></ol></div><p>
+After reading mode descriptions, setup header decode is complete.
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id342709"></a>4.3. Audio packet decode and synthesis</h3></div></div></div><p>
+Following the three header packets, all packets in a Vorbis I stream
+are audio.  The first step of audio packet decode is to read and
+verify the packet type. <span class="emphasis"><em>A non-audio packet when audio is expected
+indicates stream corruption or a non-compliant stream. The decoder
+must ignore the packet and not attempt decoding it to audio</em></span>.
+</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id342724"></a>4.3.1. packet type, mode and window decode</h4></div></div></div><div class="orderedlist"><ol type="1"><li>read 1 bit <code class="varname">[packet_type]</code>; check that packet type is 0 (audio)</li><li>read <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>([vorbis_mode_count]-1) bits
+<code class="varname">[mode_number]</code></li><li>decode blocksize <code class="varname">[n]</code> is equal to <code class="varname">[blocksize_0]</code> if 
+<code class="varname">[vorbis_mode_blockflag]</code> is 0, else <code class="varname">[n]</code> is equal to <code class="varname">[blocksize_1]</code>.</li><li><p>perform window selection and setup; this window is used later by the inverse MDCT:</p><div class="orderedlist"><ol type="a"><li><p>if this is a long window (the <code class="varname">[vorbis_mode_blockflag]</code> flag of this mode is
+set):</p><div class="orderedlist"><ol type="i"><li>read 1 bit for <code class="varname">[previous_window_flag]</code></li><li>read 1 bit for <code class="varname">[next_window_flag]</code></li><li>if <code class="varname">[previous_window_flag]</code> is not set, the left half
+         of the window will be a hybrid window for lapping with a
+         short block.  See <a href="#vorbis-spec-window" title="1.3.2.3. Window shape decode (long windows only)">Section 1.3.2.3, &#8220;Window shape decode (long windows only)&#8221;</a> for an illustration of overlapping
+dissimilar
+         windows. Else, the left half window will have normal long
+         shape.</li><li>if <code class="varname">[next_window_flag]</code> is not set, the right half of
+         the window will be a hybrid window for lapping with a short
+         block.  See <a href="#vorbis-spec-window" title="1.3.2.3. Window shape decode (long windows only)">Section 1.3.2.3, &#8220;Window shape decode (long windows only)&#8221;</a> for an
+illustration of overlapping dissimilar
+         windows. Else, the left right window will have normal long
+         shape.</li></ol></div></li><li> if this is a short window, the window is always the same 
+       short-window shape.</li></ol></div></li></ol></div><p>
+Vorbis windows all use the slope function y=sin(0.5 * &#960; * sin^2((x+.5)/n * &#960;)),
+where n is window size and x ranges 0...n-1, but dissimilar
+lapping requirements can affect overall shape.  Window generation
+proceeds as follows:</p><div class="orderedlist"><ol type="1"><li> <code class="varname">[window_center]</code> = <code class="varname">[n]</code> / 2</li><li><p> if (<code class="varname">[vorbis_mode_blockflag]</code> is set and <code class="varname">[previous_window_flag]</code> is
+not set) then
+  </p><div class="orderedlist"><ol type="a"><li><code class="varname">[left_window_start]</code> = <code class="varname">[n]</code>/4 -
+<code class="varname">[blocksize_0]</code>/4</li><li><code class="varname">[left_window_end]</code> = <code class="varname">[n]</code>/4 + <code class="varname">[blocksize_0]</code>/4</li><li><code class="varname">[left_n]</code> = <code class="varname">[blocksize_0]</code>/2</li></ol></div><p>
+ else
+  </p><div class="orderedlist"><ol type="a"><li><code class="varname">[left_window_start]</code> = 0</li><li><code class="varname">[left_window_end]</code> = <code class="varname">[window_center]</code></li><li><code class="varname">[left_n]</code> = <code class="varname">[n]</code>/2</li></ol></div></li><li><p> if (<code class="varname">[vorbis_mode_blockflag]</code> is set and <code class="varname">[next_window_flag]</code> is not
+set) then 
+  </p><div class="orderedlist"><ol type="a"><li><code class="varname">[right_window_start]</code> = <code class="varname">[n]*3</code>/4 -
+<code class="varname">[blocksize_0]</code>/4</li><li><code class="varname">[right_window_end]</code> = <code class="varname">[n]*3</code>/4 +
+<code class="varname">[blocksize_0]</code>/4</li><li><code class="varname">[right_n]</code> = <code class="varname">[blocksize_0]</code>/2</li></ol></div><p>
+ else
+  </p><div class="orderedlist"><ol type="a"><li><code class="varname">[right_window_start]</code> = <code class="varname">[window_center]</code></li><li><code class="varname">[right_window_end]</code> = <code class="varname">[n]</code></li><li><code class="varname">[right_n]</code> = <code class="varname">[n]</code>/2</li></ol></div></li><li> window from range 0 ... <code class="varname">[left_window_start]</code>-1 inclusive is zero</li><li> for <code class="varname">[i]</code> in range <code class="varname">[left_window_start]</code> ...
+<code class="varname">[left_window_end]</code>-1, window(<code class="varname">[i]</code>) = sin(.5 * &#960; * sin^2( (<code class="varname">[i]</code>-<code class="varname">[left_window_start]</code>+.5) / <code class="varname">[left_n]</code> * .5 * &#960;) )</li><li> window from range <code class="varname">[left_window_end]</code> ... <code class="varname">[right_window_start]</code>-1
+inclusive is one</li><li> for <code class="varname">[i]</code> in range <code class="varname">[right_window_start]</code> ... <code class="varname">[right_window_end]</code>-1, window(<code class="varname">[i]</code>) = sin(.5 * &#960; * sin^2( (<code class="varname">[i]</code>-<code class="varname">[right_window_start]</code>+.5) / <code class="varname">[right_n]</code> * .5 * &#960; + .5 * &#960;) )</li><li> window from range <code class="varname">[right_window_start]</code> ... <code class="varname">[n]</code>-1 is
+zero</li></ol></div><p>
+An end-of-packet condition up to this point should be considered an
+error that discards this packet from the stream.  An end of packet
+condition past this point is to be considered a possible nominal
+occurrence.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343132"></a>4.3.2. floor curve decode</h4></div></div></div><p>
+From this point on, we assume out decode context is using mode number
+<code class="varname">[mode_number]</code> from configuration array
+<code class="varname">[vorbis_mode_configurations]</code> and the map number
+<code class="varname">[vorbis_mode_mapping]</code> (specified by the current mode) taken
+from the mapping configuration array
+<code class="varname">[vorbis_mapping_configurations]</code>.</p><p>
+Floor curves are decoded one-by-one in channel order.</p><p>
+For each floor <code class="varname">[i]</code> of <code class="varname">[audio_channels]</code>
+ </p><div class="orderedlist"><ol type="1"><li><code class="varname">[submap_number]</code> = element <code class="varname">[i]</code> of vector [vorbis_mapping_mux]</li><li><code class="varname">[floor_number]</code> = element <code class="varname">[submap_number]</code> of vector
+[vorbis_submap_floor]</li><li>if the floor type of this
+floor (vector <code class="varname">[vorbis_floor_types]</code> element
+<code class="varname">[floor_number]</code>) is zero then decode the floor for
+channel <code class="varname">[i]</code> according to the
+<a href="#vorbis-spec-floor0-decode" title="6.2.2. packet decode">Section 6.2.2, &#8220;packet decode&#8221;</a></li><li>if the type of this floor
+is one then decode the floor for channel <code class="varname">[i]</code> according
+to the <a href="#vorbis-spec-floor1-decode" title="7.2.2.1. packet decode">Section 7.2.2.1, &#8220;packet decode&#8221;</a></li><li>save the needed decoded floor information for channel for later synthesis</li><li>if the decoded floor returned 'unused', set vector <code class="varname">[no_residue]</code> element
+<code class="varname">[i]</code> to true, else set vector <code class="varname">[no_residue]</code> element <code class="varname">[i]</code> to
+false</li></ol></div><p>
+</p><p>
+An end-of-packet condition during floor decode shall result in packet
+decode zeroing all channel output vectors and skipping to the
+add/overlap output stage.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343249"></a>4.3.3. nonzero vector propagate</h4></div></div></div><p>
+A possible result of floor decode is that a specific vector is marked
+'unused' which indicates that that final output vector is all-zero
+values (and the floor is zero).  The residue for that vector is not
+coded in the stream, save for one complication.  If some vectors are
+used and some are not, channel coupling could result in mixing a
+zeroed and nonzeroed vector to produce two nonzeroed vectors.</p><p>
+for each <code class="varname">[i]</code> from 0 ... <code class="varname">[vorbis_mapping_coupling_steps]</code>-1
+
+</p><div class="orderedlist"><ol type="1"><li>if either <code class="varname">[no_residue]</code> entry for channel
+(<code class="varname">[vorbis_mapping_magnitude]</code> element <code class="varname">[i]</code>)
+or channel
+(<code class="varname">[vorbis_mapping_angle]</code> element <code class="varname">[i]</code>)
+are set to false, then both must be set to false.  Note that an 'unused' 
+floor has no decoded floor information; it is important that this is 
+remembered at floor curve synthesis time.</li></ol></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343299"></a>4.3.4. residue decode</h4></div></div></div><p>
+Unlike floors, which are decoded in channel order, the residue vectors
+are decoded in submap order.</p><p>
+for each submap <code class="varname">[i]</code> in order from 0 ... <code class="varname">[vorbis_mapping_submaps]</code>-1</p><div class="orderedlist"><ol type="1"><li><code class="varname">[ch]</code> = 0</li><li><p>for each channel <code class="varname">[j]</code> in order from 0 ... <code class="varname">[audio_channels]</code> - 1</p><div class="orderedlist"><ol type="a"><li><p>if channel <code class="varname">[j]</code> in submap <code class="varname">[i]</code> (vector <code class="varname">[vorbis_mapping_mux]</code> element <code class="varname">[j]</code> is equal to <code class="varname">[i]</code>)</p><div class="orderedlist"><ol type="i"><li><p>if vector <code class="varname">[no_residue]</code> element <code class="varname">[j]</code> is true
+      </p><div class="orderedlist"><ol type="A"><li>vector <code class="varname">[do_not_decode_flag]</code> element <code class="varname">[ch]</code> is set</li></ol></div><p>
+     else
+      </p><div class="orderedlist"><ol type="A"><li>vector <code class="varname">[do_not_decode_flag]</code> element <code class="varname">[ch]</code> is unset</li></ol></div></li><li>increment <code class="varname">[ch]</code></li></ol></div></li></ol></div></li><li><code class="varname">[residue_number]</code> = vector <code class="varname">[vorbis_mapping_submap_residue]</code> element <code class="varname">[i]</code></li><li><code class="varname">[residue_type]</code> = vector <code class="varname">[vorbis_residue_types]</code> element <code class="varname">[residue_number]</code></li><li>decode <code class="varname">[ch]</code> vectors using residue <code class="varname">[residue_number]</code>, according to type <code class="varname">[residue_type]</code>, also passing vector <code class="varname">[do_not_decode_flag]</code> to indicate which vectors in the bundle should not be decoded. Correct per-vector decode length is <code class="varname">[n]</code>/2.</li><li><code class="varname">[ch]</code> = 0</li><li><p>for each channel <code class="varname">[j]</code> in order from 0 ... <code class="varname">[audio_channels]</code></p><div class="orderedlist"><ol type="a"><li><p>if channel <code class="varname">[j]</code> is in submap <code class="varname">[i]</code> (vector <code class="varname">[vorbis_mapping_mux]</code> element <code class="varname">[j]</code> is equal to <code class="varname">[i]</code>)</p><div class="orderedlist"><ol type="i"><li>residue vector for channel <code class="varname">[j]</code> is set to decoded residue vector <code class="varname">[ch]</code></li><li>increment <code class="varname">[ch]</code></li></ol></div></li></ol></div></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343545"></a>4.3.5. inverse coupling</h4></div></div></div><p>
+for each <code class="varname">[i]</code> from <code class="varname">[vorbis_mapping_coupling_steps]</code>-1 descending to 0
+
+</p><div class="orderedlist"><ol type="1"><li><code class="varname">[magnitude_vector]</code> = the residue vector for channel
+(vector <code class="varname">[vorbis_mapping_magnitude]</code> element <code class="varname">[i]</code>)</li><li><code class="varname">[angle_vector]</code> = the residue vector for channel (vector
+<code class="varname">[vorbis_mapping_angle]</code> element <code class="varname">[i]</code>)</li><li><p>for each scalar value <code class="varname">[M]</code> in vector <code class="varname">[magnitude_vector]</code> and the corresponding scalar value <code class="varname">[A]</code> in vector <code class="varname">[angle_vector]</code>:</p><div class="orderedlist"><ol type="a"><li><p>if (<code class="varname">[M]</code> is greater than zero)
+    </p><div class="orderedlist"><ol type="i"><li><p>if (<code class="varname">[A]</code> is greater than zero)
+      </p><div class="orderedlist"><ol type="A"><li><code class="varname">[new_M]</code> = <code class="varname">[M]</code></li><li><code class="varname">[new_A]</code> = <code class="varname">[M]</code>-<code class="varname">[A]</code></li></ol></div><p>
+     else
+      </p><div class="orderedlist"><ol type="A"><li><code class="varname">[new_A]</code> = <code class="varname">[M]</code></li><li><code class="varname">[new_M]</code> = <code class="varname">[M]</code>+<code class="varname">[A]</code></li></ol></div><p>
+     </p></li></ol></div><p>
+   else
+    </p><div class="orderedlist"><ol type="i"><li><p>if (<code class="varname">[A]</code> is greater than zero)
+      </p><div class="orderedlist"><ol type="A"><li><code class="varname">[new_M]</code> = <code class="varname">[M]</code></li><li><code class="varname">[new_A]</code> = <code class="varname">[M]</code>+<code class="varname">[A]</code></li></ol></div><p>
+     else
+      </p><div class="orderedlist"><ol type="A"><li><code class="varname">[new_A]</code> = <code class="varname">[M]</code></li><li><code class="varname">[new_M]</code> = <code class="varname">[M]</code>-<code class="varname">[A]</code></li></ol></div><p>
+     </p></li></ol></div><p>
+   </p></li><li>set scalar value <code class="varname">[M]</code> in vector <code class="varname">[magnitude_vector]</code> to <code class="varname">[new_M]</code></li><li>set scalar value <code class="varname">[A]</code> in vector <code class="varname">[angle_vector]</code> to <code class="varname">[new_A]</code></li></ol></div></li></ol></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343790"></a>4.3.6. dot product</h4></div></div></div><p>
+For each channel, synthesize the floor curve from the decoded floor
+information, according to packet type. Note that the vector synthesis
+length for floor computation is <code class="varname">[n]</code>/2.</p><p>
+For each channel, multiply each element of the floor curve by each
+element of that channel's residue vector.  The result is the dot
+product of the floor and residue vectors for each channel; the produced
+vectors are the length <code class="varname">[n]</code>/2 audio spectrum for each
+channel.</p><p>
+One point is worth mentioning about this dot product; a common mistake
+in a fixed point implementation might be to assume that a 32 bit
+fixed-point representation for floor and residue and direct
+multiplication of the vectors is sufficient for acceptable spectral
+depth in all cases because it happens to mostly work with the current
+Xiph.Org reference encoder. </p><p>
+However, floor vector values can span ~140dB (~24 bits unsigned), and
+the audio spectrum vector should represent a minimum of 120dB (~21
+bits with sign), even when output is to a 16 bit PCM device.  For the
+residue vector to represent full scale if the floor is nailed to
+-140dB, it must be able to span 0 to +140dB.  For the residue vector
+to reach full scale if the floor is nailed at 0dB, it must be able to
+represent -140dB to +0dB.  Thus, in order to handle full range
+dynamics, a residue vector may span -140dB to +140dB entirely within
+spec.  A 280dB range is approximately 48 bits with sign; thus the
+residue vector must be able to represent a 48 bit range and the dot
+product must be able to handle an effective 48 bit times 24 bit
+multiplication.  This range may be achieved using large (64 bit or
+larger) integers, or implementing a movable binary point
+representation.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343829"></a>4.3.7. inverse MDCT</h4></div></div></div><p>
+Convert the audio spectrum vector of each channel back into time
+domain PCM audio via an inverse Modified Discrete Cosine Transform
+(MDCT).  A detailed description of the MDCT is available in the paper
+<a href="http://www.iocon.com/resource/docs/ps/eusipco_corrected.ps" target="_top">&#8220;<span class="citetitle">The
+use of multirate filter banks for coding of high quality digital
+audio</span>&#8221;</a>, by T. Sporer, K. Brandenburg and B. Edler.  The window
+function used for the MDCT is the function described earlier.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343850"></a>4.3.8. overlap_add</h4></div></div></div><p>
+Windowed MDCT output is overlapped and added with the right hand data
+of the previous window such that the 3/4 point of the previous window
+is aligned with the 1/4 point of the current window (as illustrated in
+<a href="#vorbis-spec-window" title="1.3.2.3. Window shape decode (long windows only)">Section 1.3.2.3, &#8220;Window shape decode (long windows only)&#8221;</a>).  The overlapped portion
+produced from overlapping the previous and current frame data is
+finished data to be returned by the decoder.  This data spans from the
+center of the previous window to the center of the current window.  In
+the case of same-sized windows, the amount of data to return is
+one-half block consisting of and only of the overlapped portions. When
+overlapping a short and long window, much of the returned range does not
+actually overlap.  This does not damage transform orthogonality.  Pay
+attention however to returning the correct data range; the amount of
+data to be returned is:
+
+</p><pre class="programlisting">
+window_blocksize(previous_window)/4+window_blocksize(current_window)/4
+</pre><p>
+
+from the center (element windowsize/2) of the previous window to the
+center (element windowsize/2-1, inclusive) of the current window.</p><p>
+Data is not returned from the first frame; it must be used to 'prime'
+the decode engine.  The encoder accounts for this priming when
+calculating PCM offsets; after the first frame, the proper PCM output
+offset is '0' (as no data has been returned yet).</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id343883"></a>4.3.9. output channel order</h4></div></div></div><p>
+Vorbis I specifies only a channel mapping type 0.  In mapping type 0,
+channel mapping is implicitly defined as follows for standard audio
+applications:</p><div class="variablelist"><dl><dt><span class="term">one channel</span></dt><dd>the stream is monophonic</dd><dt><span class="term">two channels</span></dt><dd>the stream is stereo.  channel order: left, right</dd><dt><span class="term">three channels</span></dt><dd>the stream is a 1d-surround encoding.  channel order: left,
+center, right</dd><dt><span class="term">four channels</span></dt><dd>the stream is quadraphonic surround.  channel order: front left,
+front right, rear left, rear right</dd><dt><span class="term">five channels</span></dt><dd>the stream is five-channel surround.  channel order: front left,
+front center, front right, rear left, rear right</dd><dt><span class="term">six channels</span></dt><dd>the stream is 5.1 surround.  channel order: front left, front
+center, front right, rear left, rear right, LFE</dd><dt><span class="term">greater than six channels</span></dt><dd>channel use and order is defined by the application</dd></dl></div><p>
+Applications using Vorbis for dedicated purposes may define channel
+mapping as seen fit.  Future channel mappings (such as three and four
+channel <a href="http://www.ambisonic.net/" target="_top">Ambisonics</a>) will
+make use of channel mappings other than mapping 0.</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-comment"></a>5. comment field and header specification</h2></div><div><p class="releaseinfo">
+ $Id: 05-comment.xml 11703 2006-07-17 16:33:17Z giles $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id314030"></a>5.1. Overview</h3></div></div></div><p>The Vorbis text comment header is the second (of three) header
+packets that begin a Vorbis bitstream. It is meant for short text
+comments, not arbitrary metadata; arbitrary metadata belongs in a
+separate logical bitstream (usually an XML stream type) that provides
+greater structure and machine parseability.</p><p>The comment field is meant to be used much like someone jotting a
+quick note on the bottom of a CDR. It should be a little information to
+remember the disc by and explain it to others; a short, to-the-point
+text note that need not only be a couple words, but isn't going to be
+more than a short paragraph.  The essentials, in other words, whatever
+they turn out to be, eg:
+
+</p><div class="blockquote"><blockquote class="blockquote"><p>Honest Bob and the Factory-to-Dealer-Incentives, <em class="citetitle">I'm Still
+Around</em>, opening for Moxy Früvous, 1997.</p></blockquote></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id314058"></a>5.2. Comment encoding</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id322574"></a>5.2.1. Structure</h4></div></div></div><p>
+The comment header is logically a list of eight-bit-clean vectors; the
+number of vectors is bounded to 2^32-1 and the length of each vector
+is limited to 2^32-1 bytes. The vector length is encoded; the vector
+contents themselves are not null terminated. In addition to the vector
+list, there is a single vector for vendor name (also 8 bit clean,
+length encoded in 32 bits). For example, the 1.0 release of libvorbis 
+set the vendor string to "Xiph.Org libVorbis I 20020717".</p><p>The comment header is decoded as follows:
+
+</p><pre class="programlisting">
+  1) [vendor_length] = read an unsigned integer of 32 bits
+  2) [vendor_string] = read a UTF-8 vector as [vendor_length] octets
+  3) [user_comment_list_length] = read an unsigned integer of 32 bits
+  4) iterate [user_comment_list_length] times {
+       5) [length] = read an unsigned integer of 32 bits
+       6) this iteration's user comment = read a UTF-8 vector as [length] octets
+     }
+  7) [framing_bit] = read a single bit as boolean
+  8) if ( [framing_bit] unset or end-of-packet ) then ERROR
+  9) done.
+</pre><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id326883"></a>5.2.2. Content vector format</h4></div></div></div><p>
+The comment vectors are structured similarly to a UNIX environment variable.
+That is, comment fields consist of a field name and a corresponding value and
+look like:</p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting">
+comment[0]="ARTIST=me"; 
+comment[1]="TITLE=the sound of Vorbis"; 
+</pre></blockquote></div><p>
+The field name is case-insensitive and may consist of ASCII 0x20
+through 0x7D, 0x3D ('=') excluded. ASCII 0x41 through 0x5A inclusive
+(characters A-Z) is to be considered equivalent to ASCII 0x61 through 
+0x7A inclusive (characters a-z).
+</p><p>
+The field name is immediately followed by ASCII 0x3D ('=');
+this equals sign is used to terminate the field name.
+</p><p>
+0x3D is followed by 8 bit clean UTF-8 encoded value of the
+field contents to the end of the field.
+</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id322620"></a>5.2.2.1. Field names</h5></div></div></div><p>Below is a proposed, minimal list of standard field names with a
+description of intended use.  No single or group of field names is
+mandatory; a comment header may contain one, all or none of the names
+in this list.</p><div class="variablelist"><dl><dt><span class="term">TITLE</span></dt><dd>Track/Work name</dd><dt><span class="term">VERSION</span></dt><dd>The version field may be used to
+differentiate multiple
+versions of the same track title in a single collection. (e.g. remix
+info)
+</dd><dt><span class="term">ALBUM</span></dt><dd>The collection name to which this track belongs
+</dd><dt><span class="term">TRACKNUMBER</span></dt><dd>The track number of this piece if part of a specific larger collection or album
+</dd><dt><span class="term">ARTIST</span></dt><dd>The artist generally considered responsible for the work. In popular music this is usually the performing band or singer. For classical music it would be the composer. For an audio book it would be the author of the original text.
+</dd><dt><span class="term">PERFORMER</span></dt><dd>The artist(s) who performed the work. In classical music this would be the conductor, orchestra, soloists. In an audio book it would be the actor who did the reading. In popular music this is typically the same as the ARTIST and is omitted.
+</dd><dt><span class="term">COPYRIGHT</span></dt><dd>Copyright attribution, e.g., '2001 Nobody's Band' or '1999 Jack Moffitt'
+</dd><dt><span class="term">LICENSE</span></dt><dd>License information, eg, 'All Rights Reserved', 'Any
+Use Permitted', a URL to a license such as a Creative Commons license
+("www.creativecommons.org/blahblah/license.html") or the EFF Open
+Audio License ('distributed under the terms of the Open Audio
+License. see http://www.eff.org/IP/Open_licenses/eff_oal.html for
+details'), etc.
+</dd><dt><span class="term">ORGANIZATION</span></dt><dd>Name of the organization producing the track (i.e.
+the 'record label')
+</dd><dt><span class="term">DESCRIPTION</span></dt><dd>A short text description of the contents
+</dd><dt><span class="term">GENRE</span></dt><dd>A short text indication of music genre
+</dd><dt><span class="term">DATE</span></dt><dd>Date the track was recorded
+</dd><dt><span class="term">LOCATION</span></dt><dd>Location where track was recorded
+</dd><dt><span class="term">CONTACT</span></dt><dd>Contact information for the creators or distributors of the track. This could be a URL, an email address, the physical address of the producing label.
+</dd><dt><span class="term">ISRC</span></dt><dd>International Standard Recording Code for the
+track; see <a href="http://www.ifpi.org/isrc/" target="_top">the ISRC
+intro page</a> for more information on ISRC numbers.
+</dd></dl></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="id306349"></a>5.2.2.2. Implications</h5></div></div></div><p>Field names should not be 'internationalized'; this is a
+concession to simplicity not an attempt to exclude the majority of
+the world that doesn't speak English. Field <span class="emphasis"><em>contents</em></span>,
+however, use the UTF-8 character encoding to allow easy representation 
+of any language.</p><p>We have the length of the entirety of the field and restrictions on
+the field name so that the field name is bounded in a known way. Thus
+we also have the length of the field contents.</p><p>Individual 'vendors' may use non-standard field names within
+reason. The proper use of comment fields should be clear through
+context at this point.  Abuse will be discouraged.</p><p>There is no vendor-specific prefix to 'nonstandard' field names.
+Vendors should make some effort to avoid arbitrarily polluting the
+common namespace. We will generally collect the more useful tags
+here to help with standardization.</p><p>Field names are not required to be unique (occur once) within a
+comment header.  As an example, assume a track was recorded by three
+well know artists; the following is permissible, and encouraged:
+
+</p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting">
+ARTIST=Dizzy Gillespie 
+ARTIST=Sonny Rollins 
+ARTIST=Sonny Stitt 
+</pre></blockquote></div><p>
+
+</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id306394"></a>5.2.3. Encoding</h4></div></div></div><p>
+The comment header comprises the entirety of the second bitstream
+header packet.  Unlike the first bitstream header packet, it is not
+generally the only packet on the second page and may not be restricted
+to within the second bitstream page.  The length of the comment header
+packet is (practically) unbounded.  The comment header packet is not
+optional; it must be present in the bitstream even if it is
+effectively empty.</p><p>
+The comment header is encoded as follows (as per Ogg's standard
+bitstream mapping which renders least-significant-bit of the word to be
+coded into the least significant available bit of the current
+bitstream octet first):
+
+</p><div class="orderedlist"><ol type="1"><li>
+  Vendor string length (32 bit unsigned quantity specifying number of octets)
+ </li><li>
+  Vendor string ([vendor string length] octets coded from beginning of string to end of string, not null terminated)
+ </li><li>
+  Number of comment fields (32 bit unsigned quantity specifying number of fields)
+ </li><li>
+  Comment field 0 length (if [Number of comment fields]&gt;0; 32 bit unsigned quantity specifying number of octets)
+ </li><li>
+  Comment field 0 ([Comment field 0 length] octets coded from beginning of string to end of string, not null terminated)
+ </li><li>
+  Comment field 1 length (if [Number of comment fields]&gt;1...)...
+ </li></ol></div><p>
+</p><p>
+This is actually somewhat easier to describe in code; implementation of the above can be found in <code class="filename">vorbis/lib/info.c</code>, <code class="function">_vorbis_pack_comment()</code> and <code class="function">_vorbis_unpack_comment()</code>.
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-floor0"></a>6. Floor type 0 setup and decode</h2></div><div><p class="releaseinfo">
+  $Id: 06-floor0.xml 10424 2005-11-23 08:44:18Z xiphmont $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id336814"></a>6.1. Overview</h3></div></div></div><p>
+Vorbis floor type zero uses Line Spectral Pair (LSP, also alternately
+known as Line Spectral Frequency or LSF) representation to encode a
+smooth spectral envelope curve as the frequency response of the LSP
+filter.  This representation is equivalent to a traditional all-pole
+infinite impulse response filter as would be used in linear predictive
+coding; LSP representation may be converted to LPC representation and
+vice-versa.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id321046"></a>6.2. Floor 0 format</h3></div></div></div><p>
+Floor zero configuration consists of six integer fields and a list of
+VQ codebooks for use in coding/decoding the LSP filter coefficient
+values used by each frame. </p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id313179"></a>6.2.1. header decode</h4></div></div></div><p>
+Configuration information for instances of floor zero decodes from the
+codec setup header (third packet).  configuration decode proceeds as
+follows:</p><pre class="screen">
+  1) [floor0_order] = read an unsigned integer of 8 bits
+  2) [floor0_rate] = read an unsigned integer of 16 bits
+  3) [floor0_bark_map_size] = read an unsigned integer of 16 bits
+  4) [floor0_amplitude_bits] = read an unsigned integer of six bits
+  5) [floor0_amplitude_offset] = read an unsigned integer of eight bits
+  6) [floor0_number_of_books] = read an unsigned integer of four bits and add 1
+  7) if any of [floor0_order], [floor0_rate], [floor0_bark_map_size], [floor0_amplitude_bits],
+     [floor0_amplitude_offset] or [floor0_number_of_books] are less than zero, the stream is not decodable
+  8) array [floor0_book_list] = read a list of [floor0_number_of_books] unsigned integers of eight bits each;
+</pre><p>
+An end-of-packet condition during any of these bitstream reads renders
+this stream undecodable.  In addition, any element of the array
+<code class="varname">[floor0_book_list]</code> that is greater than the maximum codebook
+number for this bitstream is an error condition that also renders the
+stream undecodable.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="vorbis-spec-floor0-decode"></a>6.2.2. packet decode</h4></div></div></div><p>
+Extracting a floor0 curve from an audio packet consists of first
+decoding the curve amplitude and <code class="varname">[floor0_order]</code> LSP
+coefficient values from the bitstream, and then computing the floor
+curve, which is defined as the frequency response of the decoded LSP
+filter.</p><p>
+Packet decode proceeds as follows:</p><pre class="screen">
+  1) [amplitude] = read an unsigned integer of [floor0_amplitude_bits] bits
+  2) if ( [amplitude] is greater than zero ) {
+       3) [coefficients] is an empty, zero length vector
+       4) [booknumber] = read an unsigned integer of <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>( [floor0_number_of_books] ) bits
+       5) if ( [booknumber] is greater than the highest number decode codebook ) then packet is undecodable
+       6) [last] = zero;
+       7) vector [temp_vector] = read vector from bitstream using codebook number [floor0_book_list] element [booknumber] in VQ context.
+       8) add the scalar value [last] to each scalar in vector [temp_vector]
+       9) [last] = the value of the last scalar in vector [temp_vector]
+      10) concatenate [temp_vector] onto the end of the [coefficients] vector
+      11) if (length of vector [coefficients] is less than [floor0_order], continue at step 6
+
+     }
+
+ 12) done.
+ 
+</pre><p>
+Take note of the following properties of decode:
+</p><div class="itemizedlist"><ul type="disc"><li>An <code class="varname">[amplitude]</code> value of zero must result in a return code that indicates this channel is unused in this frame (the output of the channel will be all-zeroes in synthesis).  Several later stages of decode don't occur for an unused channel.</li><li>An end-of-packet condition during decode should be considered a
+nominal occruence; if end-of-packet is reached during any read
+operation above, floor decode is to return 'unused' status as if the
+<code class="varname">[amplitude]</code> value had read zero at the beginning of decode.</li><li>The book number used for decode
+can, in fact, be stored in the bitstream in <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>( <code class="varname">[floor0_number_of_books]</code> -
+1 ) bits.  Nevertheless, the above specification is correct and values
+greater than the maximum possible book value are reserved.</li><li>The number of scalars read into the vector <code class="varname">[coefficients]</code>
+may be greater than <code class="varname">[floor0_order]</code>, the number actually
+required for curve computation.  For example, if the VQ codebook used
+for the floor currently being decoded has a
+<code class="varname">[codebook_dimensions]</code> value of three and
+<code class="varname">[floor0_order]</code> is ten, the only way to fill all the needed
+scalars in <code class="varname">[coefficients]</code> is to to read a total of twelve
+scalars as four vectors of three scalars each.  This is not an error
+condition, and care must be taken not to allow a buffer overflow in
+decode. The extra values are not used and may be ignored or discarded.</li></ul></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="vorbis-spec-floor0-synth"></a>6.2.3. curve computation</h4></div></div></div><p>
+Given an <code class="varname">[amplitude]</code> integer and <code class="varname">[coefficients]</code>
+vector from packet decode as well as the [floor0_order],
+[floor0_rate], [floor0_bark_map_size], [floor0_amplitude_bits] and
+[floor0_amplitude_offset] values from floor setup, and an output
+vector size <code class="varname">[n]</code> specified by the decode process, we compute a
+floor output vector.</p><p>
+If the value <code class="varname">[amplitude]</code> is zero, the return value is a
+length <code class="varname">[n]</code> vector with all-zero scalars.  Otherwise, begin by
+assuming the following definitions for the given vector to be
+synthesized:</p><div class="informalequation"><div class="mediaobject"><img src="lspmap.png" alt="[lsp map equation]"></div></div><p>
+The above is used to synthesize the LSP curve on a Bark-scale frequency
+axis, then map the result to a linear-scale frequency axis.
+Similarly, the below calculation synthesizes the output LSP curve <code class="varname">[output]</code> on a log
+(dB) amplitude scale, mapping it to linear amplitude in the last step:</p><div class="orderedlist"><ol type="1"><li> <code class="varname">[i]</code> = 0 </li><li><p>if ( <code class="varname">[floor0_order]</code> is odd ) {
+  </p><div class="orderedlist"><ol type="a"><li><p>calculate <code class="varname">[p]</code> and <code class="varname">[q]</code> according to:
+        </p><div class="informalequation"><div class="mediaobject"><img src="oddlsp.png" alt="[equation for odd lsp]"></div></div><p>
+   </p></li></ol></div><p>
+  } else <code class="varname">[floor0_order]</code> is even {
+  </p><div class="orderedlist"><ol type="a"><li><p>calculate <code class="varname">[p]</code> and <code class="varname">[q]</code> according to:
+        </p><div class="informalequation"><div class="mediaobject"><img src="evenlsp.png" alt="[equation for even lsp]"></div></div><p>
+   </p></li></ol></div><p> 
+  }
+ </p></li><li><p>calculate <code class="varname">[linear_floor_value]</code> according to:
+     </p><div class="informalequation"><div class="mediaobject"><img src="floorval.png" alt="[expression for floorval]"></div></div><p>
+ </p></li><li><code class="varname">[iteration_condition]</code> = map element <code class="varname">[i]</code></li><li><code class="varname">[output]</code> element <code class="varname">[i]</code> = <code class="varname">[linear_floor_value]</code></li><li>increment <code class="varname">[i]</code></li><li>if ( map element <code class="varname">[i]</code> is equal to <code class="varname">[iteration_condition]</code> ) continue at step 5</li><li>if ( <code class="varname">[i]</code> is less than <code class="varname">[n]</code> ) continue at step 2</li><li>done</li></ol></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-floor1"></a>7. Floor type 1 setup and decode</h2></div><div><p class="releaseinfo">
+ $Id: 07-floor1.xml 10466 2005-11-28 00:34:44Z giles $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id336243"></a>7.1. Overview</h3></div></div></div><p>
+Vorbis floor type one uses a piecewise straight-line representation to
+encode a spectral envelope curve. The representation plots this curve
+mechanically on a linear frequency axis and a logarithmic (dB)
+amplitude axis. The integer plotting algorithm used is similar to
+Bresenham's algorithm.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id334800"></a>7.2. Floor 1 format</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id316161"></a>7.2.1. model</h4></div></div></div><p>
+Floor type one represents a spectral curve as a series of
+line segments.  Synthesis constructs a floor curve using iterative
+prediction in a process roughly equivalent to the following simplified
+description:</p><p>
+</p><div class="itemizedlist"><ul type="disc"><li> the first line segment (base case) is a logical line spanning
+from x_0,y_0 to x_1,y_1 where in the base case x_0=0 and x_1=[n], the
+full range of the spectral floor to be computed.</li><li>the induction step chooses a point x_new within an existing
+logical line segment and produces a y_new value at that point computed
+from the existing line's y value at x_new (as plotted by the line) and
+a difference value decoded from the bitstream packet.</li><li>floor computation produces two new line segments, one running from
+x_0,y_0 to x_new,y_new and from x_new,y_new to x_1,y_1. This step is
+performed logically even if y_new represents no change to the
+amplitude value at x_new so that later refinement is additionally
+bounded at x_new.</li><li>the induction step repeats, using a list of x values specified in
+the codec setup header at floor 1 initialization time.  Computation
+is completed at the end of the x value list.</li></ul></div><p>
+</p><p>
+Consider the following example, with values chosen for ease of
+understanding rather than representing typical configuration:</p><p>
+For the below example, we assume a floor setup with an [n] of 128.
+The list of selected X values in increasing order is
+0,16,32,48,64,80,96,112 and 128.  In list order, the values interleave
+as 0, 128, 64, 32, 96, 16, 48, 80 and 112.  The corresponding
+list-order Y values as decoded from an example packet are 110, 20, -5,
+-45, 0, -25, -10, 30 and -10.  We compute the floor in the following
+way, beginning with the first line:</p><div class="mediaobject"><img src="floor1-1.png" alt="[graph of example floor]"></div><p>
+We now draw new logical lines to reflect the correction to new_Y, and
+iterate for X positions 32 and 96:</p><div class="mediaobject"><img src="floor1-2.png" alt="[graph of example floor]"></div><p>
+Although the new Y value at X position 96 is unchanged, it is still
+used later as an endpoint for further refinement.  From here on, the
+pattern should be clear; we complete the floor computation as follows:</p><div class="mediaobject"><img src="floor1-3.png" alt="[graph of example floor]"></div><div class="mediaobject"><img src="floor1-4.png" alt="[graph of example floor]"></div><p>
+A more efficient algorithm with carefully defined integer rounding
+behavior is used for actual decode, as described later.  The actual
+algorithm splits Y value computation and line plotting into two steps
+with modifications to the above algorithm to eliminate noise
+accumulation through integer roundoff/truncation. </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id317351"></a>7.2.2. header decode</h4></div></div></div><p>
+A list of floor X values is stored in the packet header in interleaved
+format (used in list order during packet decode and synthesis).  This
+list is split into partitions, and each partition is assigned to a
+partition class.  X positions 0 and [n] are implicit and do not belong
+to an explicit partition or partition class.</p><p>
+A partition class consists of a representation vector width (the
+number of Y values which the partition class encodes at once), a
+'subclass' value representing the number of alternate entropy books
+the partition class may use in representing Y values, the list of
+[subclass] books and a master book used to encode which alternate
+books were chosen for representation in a given packet.  The
+master/subclass mechanism is meant to be used as a flexible
+representation cascade while still using codebooks only in a scalar
+context.</p><pre class="screen">
+
+  1) [floor1_partitions] = read 5 bits as unsigned integer
+  2) [maximum_class] = -1
+  3) iterate [i] over the range 0 ... [floor1_partitions]-1 {
+       
+        4) vector [floor1_partition_class_list] element [i] = read 4 bits as unsigned integer
+
+     }
+
+  5) [maximum_class] = largest integer scalar value in vector [floor1_partition_class_list]
+  6) iterate [i] over the range 0 ... [maximum_class] {
+
+        7) vector [floor1_class_dimensions] element [i] = read 3 bits as unsigned integer and add 1
+	8) vector [floor1_class_subclasses] element [i] = read 2 bits as unsigned integer
+        9) if ( vector [floor1_class_subclasses] element [i] is nonzero ) {
+            
+             10) vector [floor1_class_masterbooks] element [i] = read 8 bits as unsigned integer
+           
+           }
+
+       11) iterate [j] over the range 0 ... (2 exponent [floor1_class_subclasses] element [i]) - 1  {
+
+             12) array [floor1_subclass_books] element [i],[j] = 
+                 read 8 bits as unsigned integer and subtract one
+           }
+      }
+
+ 13) [floor1_multiplier] = read 2 bits as unsigned integer and add one
+ 14) [rangebits] = read 4 bits as unsigned integer
+ 15) vector [floor1_X_list] element [0] = 0
+ 16) vector [floor1_X_list] element [1] = 2 exponent [rangebits];
+ 17) [floor1_values] = 2
+ 18) iterate [i] over the range 0 ... [floor1_partitions]-1 {
+
+       19) [current_class_number] = vector [floor1_partition_class_list] element [i]
+       20) iterate [j] over the range 0 ... ([floor1_class_dimensions] element [current_class_number])-1 {
+             21) vector [floor1_X_list] element ([floor1_values]) = 
+                 read [rangebits] bits as unsigned integer
+             22) increment [floor1_values] by one
+           }
+     }
+ 
+ 23) done
+</pre><p>
+An end-of-packet condition while reading any aspect of a floor 1
+configuration during setup renders a stream undecodable.  In
+addition, a <code class="varname">[floor1_class_masterbooks]</code> or
+<code class="varname">[floor1_subclass_books]</code> scalar element greater than the
+highest numbered codebook configured in this stream is an error
+condition that renders the stream undecodable.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="vorbis-spec-floor1-decode"></a>7.2.2.1. packet decode</h5></div></div></div><p>
+Packet decode begins by checking the <code class="varname">[nonzero]</code> flag:</p><pre class="screen">
+  1) [nonzero] = read 1 bit as boolean
+</pre><p>
+If <code class="varname">[nonzero]</code> is unset, that indicates this channel contained
+no audio energy in this frame.  Decode immediately returns a status
+indicating this floor curve (and thus this channel) is unused this
+frame.  (A return status of 'unused' is different from decoding a
+floor that has all points set to minimum representation amplitude,
+which happens to be approximately -140dB).
+</p><p>
+Assuming <code class="varname">[nonzero]</code> is set, decode proceeds as follows:</p><pre class="screen">
+  1) [range] = vector { 256, 128, 86, 64 } element ([floor1_multiplier]-1)
+  2) vector [floor1_Y] element [0] = read <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>([range]-1) bits as unsigned integer
+  3) vector [floor1_Y] element [1] = read <a href="#vorbis-spec-ilog" title="9.2.1. ilog">ilog</a>([range]-1) bits as unsigned integer
+  4) [offset] = 2;
+  5) iterate [i] over the range 0 ... [floor1_partitions]-1 {
+
+       6) [class] = vector [floor1_partition_class]  element [i]
+       7) [cdim]  = vector [floor1_class_dimensions] element [class]
+       8) [cbits] = vector [floor1_class_subclasses] element [class]
+       9) [csub]  = (2 exponent [cbits])-1
+      10) [cval]  = 0
+      11) if ( [cbits] is greater than zero ) {
+ 
+             12) [cval] = read from packet using codebook number
+                 (vector [floor1_class_masterbooks] element [class]) in scalar context
+          }
+      
+      13) iterate [j] over the range 0 ... [cdim]-1 {
+       
+             14) [book] = array [floor1_subclass_books] element [class],([cval] bitwise AND [csub])
+             15) [cval] = [cval] right shifted [cbits] bits
+	     16) if ( [book] is not less than zero ) {
+	     
+	           17) vector [floor1_Y] element ([j]+[offset]) = read from packet using codebook 
+                       [book] in scalar context
+
+                 } else [book] is less than zero {
+
+	           18) vector [floor1_Y] element ([j]+[offset]) = 0
+
+                 }
+          }
+             
+      19) [offset] = [offset] + [cdim]
+         
+     }
+  
+ 20) done
+</pre><p>
+An end-of-packet condition during curve decode should be considered a
+nominal occurrence; if end-of-packet is reached during any read
+operation above, floor decode is to return 'unused' status as if the
+<code class="varname">[nonzero]</code> flag had been unset at the beginning of decode.
+</p><p>
+Vector <code class="varname">[floor1_Y]</code> contains the values from packet decode
+needed for floor 1 synthesis.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="vorbis-spec-floor1-synth"></a>7.2.2.2. curve computation</h5></div></div></div><p>
+Curve computation is split into two logical steps; the first step
+derives final Y amplitude values from the encoded, wrapped difference
+values taken from the bitstream.  The second step plots the curve
+lines.  Also, although zero-difference values are used in the
+iterative prediction to find final Y values, these points are
+conditionally skipped during final line computation in step two.
+Skipping zero-difference values allows a smoother line fit.  </p><p>
+Although some aspects of the below algorithm look like inconsequential
+optimizations, implementors are warned to follow the details closely.
+Deviation from implementing a strictly equivalent algorithm can result
+in serious decoding errors.</p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="id326536"></a>7.2.2.2.1. step 1: amplitude value synthesis</h6></div></div></div><p>
+Unwrap the always-positive-or-zero values read from the packet into
++/- difference values, then apply to line prediction.</p><pre class="screen">
+  1) [range] = vector { 256, 128, 86, 64 } element ([floor1_multiplier]-1)
+  2) vector [floor1_step2_flag] element [0] = set
+  3) vector [floor1_step2_flag] element [1] = set
+  4) vector [floor1_final_Y] element [0] = vector [floor1_Y] element [0]
+  5) vector [floor1_final_Y] element [1] = vector [floor1_Y] element [1]
+  6) iterate [i] over the range 2 ... [floor1_values]-1 {
+    
+       7) [low_neighbor_offset] = <a href="#vorbis-spec-low_neighbor" title="9.2.4. low_neighbor">low_neighbor</a>([floor1_X_list],[i])
+       8) [high_neighbor_offset] = <a href="#vorbis-spec-high_neighbor" title="9.2.4.1. high_neighbor">high_neighbor</a>([floor1_X_list],[i])
+
+       9) [predicted] = <a href="#vorbis-spec-render_point" title="9.2.4.2. render_point">render_point</a>( vector [floor1_X_list] element [low_neighbor_offset],
+				      vector [floor1_final_Y] element [low_neighbor_offset],
+                                      vector [floor1_X_list] element [high_neighbor_offset],
+				      vector [floor1_final_Y] element [high_neighbor_offset],
+                                      vector [floor1_X_list] element [i] )
+
+      10) [val] = vector [floor1_Y] element [i]
+      11) [highroom] = [range] - [predicted]
+      12) [lowroom]  = [predicted]
+      13) if ( [highroom] is less than [lowroom] ) {
+
+            14) [room] = [highroom] * 2
+         
+          } else [highroom] is not less than [lowroom] {
+		      
+            15) [room] = [lowroom] * 2
+        
+          }
+
+      16) if ( [val] is nonzero ) {
+
+            17) vector [floor1_step2_flag] element [low_neighbor_offset] = set
+            18) vector [floor1_step2_flag] element [high_neighbor_offset] = set
+            19) vector [floor1_step2_flag] element [i] = set
+            20) if ( [val] is greater than or equal to [room] ) {
+ 
+                  21) if ( [highroom] is greater than [lowroom] ) {
+
+                        22) vector [floor1_final_Y] element [i] = [val] - [lowroom] + [predicted]
+		     
+		      } else [highroom] is not greater than [lowroom] {
+              
+                        23) vector [floor1_final_Y] element [i] = [predicted] - [val] + [highroom] - 1
+                   
+                      }
+               
+                } else [val] is less than [room] {
+		 
+		  24) if ([val] is odd) {
+                 
+                        25) vector [floor1_final_Y] element [i] = 
+                            [predicted] - (([val] + 1) divided by  2 using integer division)
+
+                      } else [val] is even {
+
+                        26) vector [floor1_final_Y] element [i] = 
+                            [predicted] + ([val] / 2 using integer division)
+                          
+                      }
+
+                }      
+
+          } else [val] is zero {
+
+            27) vector [floor1_step2_flag] element [i] = unset
+            28) vector [floor1_final_Y] element [i] = [predicted]
+
+          }
+
+     }
+
+ 29) done
+
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="id326571"></a>7.2.2.2.2. step 2: curve synthesis</h6></div></div></div><p>
+Curve synthesis generates a return vector <code class="varname">[floor]</code> of length
+<code class="varname">[n]</code> (where <code class="varname">[n]</code> is provided by the decode process
+calling to floor decode).  Floor 1 curve synthesis makes use of the
+<code class="varname">[floor1_X_list]</code>, <code class="varname">[floor1_final_Y]</code> and
+<code class="varname">[floor1_step2_flag]</code> vectors, as well as [floor1_multiplier]
+and [floor1_values] values.</p><p>
+Decode begins by sorting the scalars from vectors
+<code class="varname">[floor1_X_list]</code>, <code class="varname">[floor1_final_Y]</code> and
+<code class="varname">[floor1_step2_flag]</code> together into new vectors
+<code class="varname">[floor1_X_list]'</code>, <code class="varname">[floor1_final_Y]'</code> and
+<code class="varname">[floor1_step2_flag]'</code> according to ascending sort order of the
+values in <code class="varname">[floor1_X_list]</code>.  That is, sort the values of
+<code class="varname">[floor1_X_list]</code> and then apply the same permutation to
+elements of the other two vectors so that the X, Y and step2_flag
+values still match.</p><p>
+Then compute the final curve in one pass:</p><pre class="screen">
+  1) [hx] = 0
+  2) [lx] = 0
+  3) [ly] = vector [floor1_final_Y]' element [0] * [floor1_multiplier]
+  4) iterate [i] over the range 1 ... [floor1_values]-1 {
+
+       5) if ( [floor1_step2_flag]' element [i] is set ) {
+
+             6) [hy] = [floor1_final_Y]' element [i] * [floor1_multiplier]
+ 	     7) [hx] = [floor1_X_list]' element [i]
+             8) <a href="#vorbis-spec-render_line" title="9.2.4.3. render_line">render_line</a>( [lx], [ly], [hx], [hy], [floor] )
+             9) [lx] = [hx]
+	    10) [ly] = [hy]
+          }
+     }
+ 
+ 11) if ( [hx] is less than [n] ) {
+
+        12) <a href="#vorbis-spec-render_line" title="9.2.4.3. render_line">render_line</a>( [hx], [hy], [n], [hy], [floor] )
+
+     }
+
+ 13) if ( [hx] is greater than [n] ) {
+
+            14) truncate vector [floor] to [n] elements
+
+     }
+ 
+ 15) for each scalar in vector [floor], perform a lookup substitution using 
+     the scalar value from [floor] as an offset into the vector <a href="#vorbis-spec-floor1_inverse_dB_table" title="10.1. floor1_inverse_dB_table">[floor1_inverse_dB_static_table]</a>
+
+ 16) done
+
+</pre></div></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-residue"></a>8. Residue setup and decode</h2></div><div><p class="releaseinfo">
+  $Id: 08-residue.xml 13159 2007-06-21 05:22:35Z xiphmont $
+ </p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id320982"></a>8.1. Overview</h3></div></div></div><p>
+A residue vector represents the fine detail of the audio spectrum of
+one channel in an audio frame after the encoder subtracts the floor
+curve and performs any channel coupling.  A residue vector may
+represent spectral lines, spectral magnitude, spectral phase or
+hybrids as mixed by channel coupling.  The exact semantic content of
+the vector does not matter to the residue abstraction.</p><p>
+Whatever the exact qualities, the Vorbis residue abstraction codes the
+residue vectors into the bitstream packet, and then reconstructs the
+vectors during decode.  Vorbis makes use of three different encoding
+variants (numbered 0, 1 and 2) of the same basic vector encoding
+abstraction.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id307154"></a>8.2. Residue format</h3></div></div></div><p>
+Residue format partitions each vector in the vector bundle into chunks,
+classifies each chunk, encodes the chunk classifications and finally
+encodes the chunks themselves using the the specific VQ arrangement
+defined for each selected classification.
+The exact interleaving and partitioning vary by residue encoding number,
+however the high-level process used to classify and encode the residue 
+vector is the same in all three variants.</p><p>
+A set of coded residue vectors are all of the same length.  High level
+coding structure, ignoring for the moment exactly how a partition is
+encoded and simply trusting that it is, is as follows:</p><p>
+</p><div class="itemizedlist"><ul type="disc"><li><p>Each vector is partitioned into multiple equal sized chunks
+according to configuration specified.  If we have a vector size of
+<span class="emphasis"><em>n</em></span>, a partition size <span class="emphasis"><em>residue_partition_size</em></span>, and a total
+of <span class="emphasis"><em>ch</em></span> residue vectors, the total number of partitioned chunks
+coded is <span class="emphasis"><em>n</em></span>/<span class="emphasis"><em>residue_partition_size</em></span>*<span class="emphasis"><em>ch</em></span>.  It is
+important to note that the integer division truncates.  In the below
+example, we assume an example <span class="emphasis"><em>residue_partition_size</em></span> of 8.</p></li><li><p>Each partition in each vector has a classification number that
+specifies which of multiple configured VQ codebook setups are used to
+decode that partition.  The classification numbers of each partition
+can be thought of as forming a vector in their own right, as in the
+illustration below.  Just as the residue vectors are coded in grouped
+partitions to increase encoding efficiency, the classification vector
+is also partitioned into chunks.  The integer elements of each scalar
+in a classification chunk are built into a single scalar that
+represents the classification numbers in that chunk.  In the below
+example, the classification codeword encodes two classification
+numbers.</p></li><li><p>The values in a residue vector may be encoded monolithically in a
+single pass through the residue vector, but more often efficient
+codebook design dictates that each vector is encoded as the additive
+sum of several passes through the residue vector using more than one
+VQ codebook.  Thus, each residue value potentially accumulates values
+from multiple decode passes.  The classification value associated with
+a partition is the same in each pass, thus the classification codeword
+is coded only in the first pass.</p></li></ul></div><p>
+</p><div class="mediaobject"><img src="residue-pack.png" alt="[illustration of residue vector format]"></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id326310"></a>8.3. residue 0</h3></div></div></div><p>
+Residue 0 and 1 differ only in the way the values within a residue
+partition are interleaved during partition encoding (visually treated
+as a black box--or cyan box or brown box--in the above figure).</p><p>
+Residue encoding 0 interleaves VQ encoding according to the
+dimension of the codebook used to encode a partition in a specific
+pass.  The dimension of the codebook need not be the same in multiple
+passes, however the partition size must be an even multiple of the
+codebook dimension.</p><p>
+As an example, assume a partition vector of size eight, to be encoded
+by residue 0 using codebook sizes of 8, 4, 2 and 1:</p><pre class="programlisting">
+
+            original residue vector: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 8  encoded as: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 4  encoded as: [ 0 2 4 6 ], [ 1 3 5 7 ]
+
+codebook dimensions = 2  encoded as: [ 0 4 ], [ 1 5 ], [ 2 6 ], [ 3 7 ]
+
+codebook dimensions = 1  encoded as: [ 0 ], [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ]
+
+</pre><p>
+It is worth mentioning at this point that no configurable value in the
+residue coding setup is restricted to a power of two.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id326344"></a>8.4. residue 1</h3></div></div></div><p>
+Residue 1 does not interleave VQ encoding.  It represents partition
+vector scalars in order.  As with residue 0, however, partition length
+must be an integer multiple of the codebook dimension, although
+dimension may vary from pass to pass.</p><p>
+As an example, assume a partition vector of size eight, to be encoded
+by residue 0 using codebook sizes of 8, 4, 2 and 1:</p><pre class="programlisting">
+
+            original residue vector: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 8  encoded as: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 4  encoded as: [ 0 1 2 3 ], [ 4 5 6 7 ]
+
+codebook dimensions = 2  encoded as: [ 0 1 ], [ 2 3 ], [ 4 5 ], [ 6 7 ]
+
+codebook dimensions = 1  encoded as: [ 0 ], [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ]
+
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id334893"></a>8.5. residue 2</h3></div></div></div><p>
+Residue type two can be thought of as a variant of residue type 1.
+Rather than encoding multiple passed-in vectors as in residue type 1,
+the <span class="emphasis"><em>ch</em></span> passed in vectors of length <span class="emphasis"><em>n</em></span> are first
+interleaved and flattened into a single vector of length
+<span class="emphasis"><em>ch</em></span>*<span class="emphasis"><em>n</em></span>.  Encoding then proceeds as in type 1. Decoding is
+as in type 1 with decode interleave reversed. If operating on a single
+vector to begin with, residue type 1 and type 2 are equivalent.</p><div class="mediaobject"><img src="residue2.png" alt="[illustration of residue type 2]"></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id334939"></a>8.6. Residue decode</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id334945"></a>8.6.1. header decode</h4></div></div></div><p>
+Header decode for all three residue types is identical.</p><pre class="programlisting">
+  1) [residue_begin] = read 24 bits as unsigned integer
+  2) [residue_end] = read 24 bits as unsigned integer
+  3) [residue_partition_size] = read 24 bits as unsigned integer and add one
+  4) [residue_classifications] = read 6 bits as unsigned integer and add one
+  5) [residue_classbook] = read 8 bits as unsigned integer
+</pre><p>
+<code class="varname">[residue_begin]</code> and <code class="varname">[residue_end]</code> select the specific
+sub-portion of each vector that is actually coded; it implements akin
+to a bandpass where, for coding purposes, the vector effectively
+begins at element <code class="varname">[residue_begin]</code> and ends at
+<code class="varname">[residue_end]</code>.  Preceding and following values in the unpacked
+vectors are zeroed.  Note that for residue type 2, these values as
+well as <code class="varname">[residue_partition_size]</code>apply to the interleaved
+vector, not the individual vectors before interleave.
+<code class="varname">[residue_partition_size]</code> is as explained above,
+<code class="varname">[residue_classifications]</code> is the number of possible
+classification to which a partition can belong and
+<code class="varname">[residue_classbook]</code> is the codebook number used to code
+classification codewords.  The number of dimensions in book
+<code class="varname">[residue_classbook]</code> determines how many classification values
+are grouped into a single classification codeword.</p><p>
+Next we read a bitmap pattern that specifies which partition classes
+code values in which passes.</p><pre class="programlisting">
+  1) iterate [i] over the range 0 ... [residue_classifications]-1 {
+  
+       2) [high_bits] = 0
+       3) [low_bits] = read 3 bits as unsigned integer
+       4) [bitflag] = read one bit as boolean
+       5) if ( [bitflag] is set ) then [high_bits] = read five bits as unsigned integer
+       6) vector [residue_cascade] element [i] = [high_bits] * 8 + [low_bits]
+     }
+  7) done
+</pre><p>
+Finally, we read in a list of book numbers, each corresponding to
+specific bit set in the cascade bitmap.  We loop over the possible
+codebook classifications and the maximum possible number of encoding
+stages (8 in Vorbis I, as constrained by the elements of the cascade
+bitmap being eight bits):</p><pre class="programlisting">
+  1) iterate [i] over the range 0 ... [residue_classifications]-1 {
+  
+       2) iterate [j] over the range 0 ... 7 {
+  
+            3) if ( vector [residue_cascade] element [i] bit [j] is set ) {
+
+                 4) array [residue_books] element [i][j] = read 8 bits as unsigned integer
+
+               } else {
+
+                 5) array [residue_books] element [i][j] = unused
+
+               }
+          }
+      }
+
+  6) done
+</pre><p>
+An end-of-packet condition at any point in header decode renders the
+stream undecodable.  In addition, any codebook number greater than the
+maximum numbered codebook set up in this stream also renders the
+stream undecodable.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id325037"></a>8.6.2. packet decode</h4></div></div></div><p>
+Format 0 and 1 packet decode is identical except for specific
+partition interleave.  Format 2 packet decode can be built out of the
+format 1 decode process.  Thus we describe first the decode
+infrastructure identical to all three formats.</p><p>
+In addition to configuration information, the residue decode process
+is passed the number of vectors in the submap bundle and a vector of
+flags indicating if any of the vectors are not to be decoded.  If the
+passed in number of vectors is 3 and vector number 1 is marked 'do not
+decode', decode skips vector 1 during the decode loop.  However, even
+'do not decode' vectors are allocated and zeroed.</p><p>
+Depending on the values of <code class="varname">[residue_begin]</code> and
+<code class="varname">[residue_end]</code>, it is obvious that the encoded
+portion of a residue vector may be the entire possible residue vector
+or some other strict subset of the actual residue vector size with
+zero padding at either uncoded end.  However, it is also possible to
+set <code class="varname">[residue_begin]</code> and
+<code class="varname">[residue_end]</code> to specify a range partially or
+wholly beyond the maximum vector size.  Before beginning residue
+decode, limit <code class="varname">[residue_begin]</code> and
+<code class="varname">[residue_end]</code> to the maximum possible vector size
+as follows.  We assume that the number of vectors being encoded,
+<code class="varname">[ch]</code> is provided by the higher level decoding
+process.</p><pre class="programlisting">
+  1) [actual_size] = current blocksize/2;
+  2) if residue encoding is format 2
+       3) [actual_size] = [actual_size] * [ch];
+  4) [limit_residue_begin] = maximum of ([residue_begin],[actual_size]);
+  5) [limit_residue_end] = maximum of ([residue_end],[actual_size]);
+</pre><p>
+The following convenience values are conceptually useful to clarifying
+the decode process:</p><pre class="programlisting">
+  1) [classwords_per_codeword] = [codebook_dimensions] value of codebook [residue_classbook]
+  2) [n_to_read] = [limit_residue_end] - [limit_residue_begin]
+  3) [partitions_to_read] = [n_to_read] / [residue_partition_size]
+</pre><p>
+Packet decode proceeds as follows, matching the description offered earlier in the document. </p><pre class="programlisting">
+  1) allocate and zero all vectors that will be returned.
+  2) if ([n_to_read] is zero), stop; there is no residue to decode.
+  3) iterate [pass] over the range 0 ... 7 {
+
+       4) [partition_count] = 0
+
+       5) while [partition_count] is less than [partitions_to_read]
+
+            6) if ([pass] is zero) {
+     
+                 7) iterate [j] over the range 0 .. [ch]-1 {
+
+                      8) if vector [j] is not marked 'do not decode' {
+
+                           9) [temp] = read from packet using codebook [residue_classbook] in scalar context
+                          10) iterate [i] descending over the range [classwords_per_codeword]-1 ... 0 {
+
+                               11) array [classifications] element [j],([i]+[partition_count]) =
+                                   [temp] integer modulo [residue_classifications]
+                               12) [temp] = [temp] / [residue_classifications] using integer division
+
+                              }
+      
+                         }
+            
+                    }
+          
+               }
+
+           13) iterate [i] over the range 0 .. ([classwords_per_codeword] - 1) while [partition_count] 
+               is also less than [partitions_to_read] {
+
+                 14) iterate [j] over the range 0 .. [ch]-1 {
+   
+                      15) if vector [j] is not marked 'do not decode' {
+   
+                           16) [vqclass] = array [classifications] element [j],[partition_count]
+                           17) [vqbook] = array [residue_books] element [vqclass],[pass]
+                           18) if ([vqbook] is not 'unused') {
+   
+                                19) decode partition into output vector number [j], starting at scalar 
+                                    offset [limit_residue_begin]+[partition_count]*[residue_partition_size] using 
+                                    codebook number [vqbook] in VQ context
+                          }
+                     }
+   
+                 20) increment [partition_count] by one
+
+               }
+          }
+     }
+ 
+ 21) done
+
+</pre><p>
+An end-of-packet condition during packet decode is to be considered a
+nominal occurrence.  Decode returns the result of vector decode up to
+that point.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id341700"></a>8.6.3. format 0 specifics</h4></div></div></div><p>
+Format zero decodes partitions exactly as described earlier in the
+'Residue Format: residue 0' section.  The following pseudocode
+presents the same algorithm. Assume:</p><p>
+</p><div class="itemizedlist"><ul type="disc"><li> <code class="varname">[n]</code> is the value in <code class="varname">[residue_partition_size]</code></li><li><code class="varname">[v]</code> is the residue vector</li><li><code class="varname">[offset]</code> is the beginning read offset in [v]</li></ul></div><p>
+</p><pre class="programlisting">
+ 1) [step] = [n] / [codebook_dimensions]
+ 2) iterate [i] over the range 0 ... [step]-1 {
+
+      3) vector [entry_temp] = read vector from packet using current codebook in VQ context
+      4) iterate [j] over the range 0 ... [codebook_dimensions]-1 {
+
+           5) vector [v] element ([offset]+[i]+[j]*[step]) =
+	        vector [v] element ([offset]+[i]+[j]*[step]) +
+                vector [entry_temp] element [j]
+
+         }
+
+    }
+
+  6) done
+
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id341754"></a>8.6.4. format 1 specifics</h4></div></div></div><p>
+Format 1 decodes partitions exactly as described earlier in the
+'Residue Format: residue 1' section.  The following pseudocode
+presents the same algorithm. Assume:</p><p>
+</p><div class="itemizedlist"><ul type="disc"><li> <code class="varname">[n]</code> is the value in
+<code class="varname">[residue_partition_size]</code></li><li><code class="varname">[v]</code> is the residue vector</li><li><code class="varname">[offset]</code> is the beginning read offset in [v]</li></ul></div><p>
+</p><pre class="programlisting">
+ 1) [i] = 0
+ 2) vector [entry_temp] = read vector from packet using current codebook in VQ context
+ 3) iterate [j] over the range 0 ... [codebook_dimensions]-1 {
+
+      4) vector [v] element ([offset]+[i]) =
+	  vector [v] element ([offset]+[i]) +
+          vector [entry_temp] element [j]
+      5) increment [i]
+
+    }
+ 
+  6) if ( [i] is less than [n] ) continue at step 2
+  7) done
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id341807"></a>8.6.5. format 2 specifics</h4></div></div></div><p>
+Format 2 is reducible to format 1.  It may be implemented as an additional step prior to and an additional post-decode step after a normal format 1 decode.
+</p><p>
+Format 2 handles 'do not decode' vectors differently than residue 0 or
+1; if all vectors are marked 'do not decode', no decode occurrs.
+However, if at least one vector is to be decoded, all the vectors are
+decoded.  We then request normal format 1 to decode a single vector
+representing all output channels, rather than a vector for each
+channel.  After decode, deinterleave the vector into independent vectors, one for each output channel.  That is:</p><div class="orderedlist"><ol type="1"><li>If all vectors 0 through <span class="emphasis"><em>ch</em></span>-1 are marked 'do not decode', allocate and clear a single vector <code class="varname">[v]</code>of length <span class="emphasis"><em>ch*n</em></span> and skip step 2 below; proceed directly to the post-decode step.</li><li>Rather than performing format 1 decode to produce <span class="emphasis"><em>ch</em></span> vectors of length <span class="emphasis"><em>n</em></span> each, call format 1 decode to produce a single vector <code class="varname">[v]</code> of length <span class="emphasis"><em>ch*n</em></span>. </li><li><p>Post decode: Deinterleave the single vector <code class="varname">[v]</code> returned by format 1 decode as described above into <span class="emphasis"><em>ch</em></span> independent vectors, one for each outputchannel, according to:
+  </p><pre class="programlisting">
+  1) iterate [i] over the range 0 ... [n]-1 {
+
+       2) iterate [j] over the range 0 ... [ch]-1 {
+
+            3) output vector number [j] element [i] = vector [v] element ([i] * [ch] + [j])
+
+          }
+     }
+
+  4) done
+  </pre><p>
+ </p></li></ol></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-helper"></a>9. Helper equations</h2></div><div><p class="releaseinfo">
+ $Id: 09-helper.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id316603"></a>9.1. Overview</h3></div></div></div><p>
+The equations below are used in multiple places by the Vorbis codec
+specification.  Rather than cluttering up the main specification
+documents, they are defined here and referenced where appropriate.
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id317505"></a>9.2. Functions</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="vorbis-spec-ilog"></a>9.2.1. ilog</h4></div></div></div><p>
+The "ilog(x)" function returns the position number (1 through n) of the highest set bit in the two's complement integer value
+<code class="varname">[x]</code>.  Values of <code class="varname">[x]</code> less than zero are defined to return zero.</p><pre class="programlisting">
+  1) [return_value] = 0;
+  2) if ( [x] is greater than zero ){
+      
+       3) increment [return_value];
+       4) logical shift [x] one bit to the right, padding the MSb with zero
+       5) repeat at step 2)
+
+     }
+
+   6) done
+</pre><p>
+Examples:
+
+</p><div class="itemizedlist"><ul type="disc"><li>ilog(0) = 0;</li><li>ilog(1) = 1;</li><li>ilog(2) = 2;</li><li>ilog(3) = 2;</li><li>ilog(4) = 3;</li><li>ilog(7) = 3;</li><li>ilog(negative number) = 0;</li></ul></div><p>
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="vorbis-spec-float32_unpack"></a>9.2.2. float32_unpack</h4></div></div></div><p>
+"float32_unpack(x)" is intended to translate the packed binary
+representation of a Vorbis codebook float value into the
+representation used by the decoder for floating point numbers.  For
+purposes of this example, we will unpack a Vorbis float32 into a
+host-native floating point number.</p><pre class="programlisting">
+  1) [mantissa] = [x] bitwise AND 0x1fffff (unsigned result)
+  2) [sign] = [x] bitwise AND 0x80000000 (unsigned result)
+  3) [exponent] = ( [x] bitwise AND 0x7fe00000) shifted right 21 bits (unsigned result)
+  4) if ( [sign] is nonzero ) then negate [mantissa]
+  5) return [mantissa] * ( 2 ^ ( [exponent] - 788 ) )
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="vorbis-spec-lookup1_values"></a>9.2.3. lookup1_values</h4></div></div></div><p>
+"lookup1_values(codebook_entries,codebook_dimensions)" is used to
+compute the correct length of the value index for a codebook VQ lookup
+table of lookup type 1.  The values on this list are permuted to
+construct the VQ vector lookup table of size
+<code class="varname">[codebook_entries]</code>.</p><p>
+The return value for this function is defined to be 'the greatest
+integer value for which <code class="varname">[return_value] to the power of
+[codebook_dimensions] is less than or equal to
+[codebook_entries]</code>'.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="vorbis-spec-low_neighbor"></a>9.2.4. low_neighbor</h4></div></div></div><p>
+"low_neighbor(v,x)" finds the position <code class="varname">n</code> in vector <code class="varname">[v]</code> of
+the greatest value scalar element for which <code class="varname">n</code> is less than
+<code class="varname">[x]</code> and vector <code class="varname">[v]</code> element <code class="varname">n</code> is less
+than vector <code class="varname">[v]</code> element <code class="varname">[x]</code>.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="vorbis-spec-high_neighbor"></a>9.2.4.1. high_neighbor</h5></div></div></div><p>
+"high_neighbor(v,x)" finds the position <code class="varname">n</code> in vector [v] of
+the lowest value scalar element for which <code class="varname">n</code> is less than
+<code class="varname">[x]</code> and vector <code class="varname">[v]</code> element <code class="varname">n</code> is greater
+than vector <code class="varname">[v]</code> element <code class="varname">[x]</code>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="vorbis-spec-render_point"></a>9.2.4.2. render_point</h5></div></div></div><p>
+"render_point(x0,y0,x1,y1,X)" is used to find the Y value at point X
+along the line specified by x0, x1, y0 and y1.  This function uses an
+integer algorithm to solve for the point directly without calculating
+intervening values along the line.</p><pre class="programlisting">
+  1)  [dy] = [y1] - [y0]
+  2) [adx] = [x1] - [x0]
+  3) [ady] = absolute value of [dy]
+  4) [err] = [ady] * ([X] - [x0])
+  5) [off] = [err] / [adx] using integer division
+  6) if ( [dy] is less than zero ) {
+
+       7) [Y] = [y0] - [off]
+
+     } else {
+
+       8) [Y] = [y0] + [off]
+  
+     }
+
+  9) done
+</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="vorbis-spec-render_line"></a>9.2.4.3. render_line</h5></div></div></div><p>
+Floor decode type one uses the integer line drawing algorithm of
+"render_line(x0, y0, x1, y1, v)" to construct an integer floor
+curve for contiguous piecewise line segments. Note that it has not
+been relevant elsewhere, but here we must define integer division as
+rounding division of both positive and negative numbers toward zero.
+</p><pre class="programlisting">
+  1)   [dy] = [y1] - [y0]
+  2)  [adx] = [x1] - [x0]
+  3)  [ady] = absolute value of [dy]
+  4) [base] = [dy] / [adx] using integer division
+  5)    [x] = [x0]
+  6)    [y] = [y0]
+  7)  [err] = 0
+
+  8) if ( [dy] is less than 0 ) {
+
+        9) [sy] = [base] - 1
+
+     } else {
+
+       10) [sy] = [base] + 1
+
+     }
+
+ 11) [ady] = [ady] - (absolute value of [base]) * [adx]
+ 12) vector [v] element [x] = [y]
+
+ 13) iterate [x] over the range [x0]+1 ... [x1]-1 {
+
+       14) [err] = [err] + [ady];
+       15) if ( [err] &gt;= [adx] ) {
+
+             16) [err] = [err] - [adx]
+             17)   [y] = [y] + [sy]
+
+           } else {
+
+             18) [y] = [y] + [base]
+   
+           }
+
+       19) vector [v] element [x] = [y]
+
+     }
+</pre></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="vorbis-spec-tables"></a>10. Tables</h2></div><div><p class="releaseinfo">
+  $Id: 10-tables.xml 7186 2004-07-20 07:19:25Z xiphmont $
+ </p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="vorbis-spec-floor1_inverse_dB_table"></a>10.1. floor1_inverse_dB_table</h3></div></div></div><p>
+The vector <code class="varname">[floor1_inverse_dB_table]</code> is a 256 element static
+lookup table consiting of the following values (read left to right
+then top to bottom):</p><pre class="screen">
+  1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07, 
+  1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07, 
+  1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.1287530e-07, 
+  2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07, 
+  2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07, 
+  3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07, 
+  4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07, 
+  6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07, 
+  7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07, 
+  1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06, 
+  1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06, 
+  1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06, 
+  2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06, 
+  2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06, 
+  3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06, 
+  4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06, 
+  5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06, 
+  7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06, 
+  9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05, 
+  1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05, 
+  1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05, 
+  2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05, 
+  2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05, 
+  3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05, 
+  4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05, 
+  5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05, 
+  7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05, 
+  9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824, 
+  0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085, 
+  0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536, 
+  0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449, 
+  0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787, 
+  0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456, 
+  0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927, 
+  0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058, 
+  0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457, 
+  0.00092223983, 0.00098217216, 0.0010459992,  0.0011139742, 
+  0.0011863665,  0.0012634633,  0.0013455702,  0.0014330129, 
+  0.0015261382,  0.0016253153,  0.0017309374,  0.0018434235, 
+  0.0019632195,  0.0020908006,  0.0022266726,  0.0023713743, 
+  0.0025254795,  0.0026895994,  0.0028643847,  0.0030505286, 
+  0.0032487691,  0.0034598925,  0.0036847358,  0.0039241906, 
+  0.0041792066,  0.0044507950,  0.0047400328,  0.0050480668, 
+  0.0053761186,  0.0057254891,  0.0060975636,  0.0064938176, 
+  0.0069158225,  0.0073652516,  0.0078438871,  0.0083536271, 
+  0.0088964928,  0.009474637,   0.010090352,   0.010746080, 
+  0.011444421,   0.012188144,   0.012980198,   0.013823725, 
+  0.014722068,   0.015678791,   0.016697687,   0.017782797, 
+  0.018938423,   0.020169149,   0.021479854,   0.022875735, 
+  0.024362330,   0.025945531,   0.027631618,   0.029427276, 
+  0.031339626,   0.033376252,   0.035545228,   0.037855157, 
+  0.040315199,   0.042935108,   0.045725273,   0.048696758, 
+  0.051861348,   0.055231591,   0.058820850,   0.062643361, 
+  0.066714279,   0.071049749,   0.075666962,   0.080584227, 
+  0.085821044,   0.091398179,   0.097337747,   0.10366330, 
+  0.11039993,    0.11757434,    0.12521498,    0.13335215, 
+  0.14201813,    0.15124727,    0.16107617,    0.17154380, 
+  0.18269168,    0.19456402,    0.20720788,    0.22067342, 
+  0.23501402,    0.25028656,    0.26655159,    0.28387361, 
+  0.30232132,    0.32196786,    0.34289114,    0.36517414, 
+  0.38890521,    0.41417847,    0.44109412,    0.46975890, 
+  0.50028648,    0.53279791,    0.56742212,    0.60429640, 
+  0.64356699,    0.68538959,    0.72993007,    0.77736504, 
+  0.82788260,    0.88168307,    0.9389798,     1.
+</pre></div></div><div class="appendix" lang="en"><h2 class="title" style="clear: both"><a name="vorbis-over-ogg"></a>1. Embedding Vorbis into an Ogg stream</h2><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id319760"></a>1.1. Overview</h3></div></div></div><p>
+This document describes using Ogg logical and physical transport
+streams to encapsulate Vorbis compressed audio packet data into file
+form.</p><p>
+The <a href="#vorbis-spec-intro" title="1. Introduction and Description">Section 1, &#8220;Introduction and Description&#8221;</a> provides an overview of the construction
+of Vorbis audio packets.</p><p>
+The <a href="oggstream.html" target="_top">Ogg
+bitstream overview</a> and <a href="framing.html" target="_top">Ogg logical
+bitstream and framing spec</a> provide detailed descriptions of Ogg
+transport streams. This specification document assumes a working
+knowledge of the concepts covered in these named backround
+documents.  Please read them first.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id336562"></a>1.1.1. Restrictions</h4></div></div></div><p>
+The Ogg/Vorbis I specification currently dictates that Ogg/Vorbis
+streams use Ogg transport streams in degenerate, unmultiplexed
+form only. That is:
+
+</p><div class="itemizedlist"><ul type="disc"><li>
+  A meta-headerless Ogg file encapsulates the Vorbis I packets
+ </li><li>
+  The Ogg stream may be chained, i.e. contain multiple, contigous logical streams (links).
+ </li><li>
+  The Ogg stream must be unmultiplexed (only one stream, a Vorbis audio stream, per link)
+ </li></ul></div><p>
+</p><p>
+This is not to say that it is not currently possible to multiplex
+Vorbis with other media types into a multi-stream Ogg file.  At the
+time this document was written, Ogg was becoming a popular container
+for low-bitrate movies consisting of DiVX video and Vorbis audio.
+However, a 'Vorbis I audio file' is taken to imply Vorbis audio
+existing alone within a degenerate Ogg stream.  A compliant 'Vorbis
+audio player' is not required to implement Ogg support beyond the
+specific support of Vorbis within a degenrate ogg stream (naturally,
+application authors are encouraged to support full multiplexed Ogg
+handling).
+</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id330723"></a>1.1.2. MIME type</h4></div></div></div><p>
+The correct MIME type of any Ogg file is <code class="literal">application/ogg</code>.
+However, if a file is a Vorbis I audio file (which implies a
+degenerate Ogg stream including only unmultiplexed Vorbis audio), the
+mime type <code class="literal">audio/x-vorbis</code> is also allowed.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id328095"></a>1.2. Encapsulation</h3></div></div></div><p>
+Ogg encapsulation of a Vorbis packet stream is straightforward.</p><div class="itemizedlist"><ul type="disc"><li>
+  The first Vorbis packet (the identification header), which
+  uniquely identifies a stream as Vorbis audio, is placed alone in the
+  first page of the logical Ogg stream.  This results in a first Ogg
+  page of exactly 58 bytes at the very beginning of the logical stream.
+</li><li>
+  This first page is marked 'beginning of stream' in the page flags.
+</li><li>
+  The second and third vorbis packets (comment and setup
+  headers) may span one or more pages beginning on the second page of
+  the logical stream.  However many pages they span, the third header
+  packet finishes the page on which it ends.  The next (first audio) packet
+  must begin on a fresh page.
+</li><li>
+  The granule position of these first pages containing only headers is zero.
+</li><li>
+  The first audio packet of the logical stream begins a fresh Ogg page.
+</li><li>
+  Packets are placed into ogg pages in order until the end of stream.
+</li><li>
+  The last page is marked 'end of stream' in the page flags.
+</li><li>
+  Vorbis packets may span page boundaries.
+</li><li>
+  The granule position of pages containing Vorbis audio is in units
+  of PCM audio samples (per channel; a stereo stream's granule position
+  does not increment at twice the speed of a mono stream).
+</li><li>
+  The granule position of a page represents the end PCM sample
+  position of the last packet <span class="emphasis"><em>completed</em></span> on that page.
+  A page that is entirely spanned by a single packet (that completes on a
+  subsequent page) has no granule position, and the granule position is
+  set to '-1'.
+</li><li><p>
+    The granule (PCM) position of the first page need not indicate
+    that the stream started at position zero.  Although the granule
+    position belongs to the last completed packet on the page and a 
+    valid granule position must be positive, by
+    inference it may indicate that the PCM position of the beginning
+    of audio is positive or negative.
+  </p><div class="itemizedlist"><ul type="circle"><li>
+        A positive starting value simply indicates that this stream begins at
+        some positive time offset, potentially within a larger
+        program. This is a common case when connecting to the middle
+        of broadcast stream.
+    </li><li>
+        A negative value indicates that
+        output samples preceeding time zero should be discarded during
+        decoding; this technique is used to allow sample-granularity
+        editing of the stream start time of already-encoded Vorbis
+        streams.  The number of samples to be discarded must not exceed 
+        the overlap-add span of the first two audio packets.
+    </li></ul></div><p>
+    In both of these cases in which the initial audio PCM starting
+    offset is nonzero, the second finished audio packet must flush the
+    page on which it appears and the third packet begin a fresh page.
+    This allows the decoder to always be able to perform PCM position
+    adjustments before needing to return any PCM data from synthesis, 
+    resulting in correct positioning information without any aditional
+    seeking logic.
+  </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+    Failure to do so should, at worst, cause a
+    decoder implementation to return incorrect positioning information
+    for seeking operations at the very beginning of the stream.
+  </p></div></li><li>
+  A granule position on the final page in a stream that indicates
+  less audio data than the final packet would normally return is used to
+  end the stream on other than even frame boundaries.  The difference
+  between the actual available data returned and the declared amount
+  indicates how many trailing samples to discard from the decoding
+  process.
+ </li></ul></div></div></div><div class="appendix" lang="en"><h2 class="title" style="clear: both"><a name="vorbis-over-rtp"></a>2. Vorbis encapsulation in RTP</h2><pre class="literallayout">
+
+
+
+    <p>Please consult the internet draft <em class="citetitle">RTP Payload Format for Vorbis Encoded
+    Audio</em> for description of how to embed Vorbis audio in an RTP stream.</p>
+  
+</pre></div><div class="appendix" lang="en"><h2 class="title" style="clear: both"><a name="footer"></a>3. Colophon</h2><div class="mediaobject"><img src="white-xifish.png" alt="[Xiph.org logo]"></div><p>
+Ogg is a <a href="http://www.xiph.org/" target="_top">Xiph.org Foundation</a> effort
+to protect essential tenets of Internet multimedia from corporate
+hostage-taking; Open Source is the net's greatest tool to keep
+everyone honest. See <a href="http://www.xiph.org/about.html" target="_top">About
+the Xiph.org Foundation</a> for details.
+</p><p>
+Ogg Vorbis is the first Ogg audio CODEC.  Anyone may freely use and
+distribute the Ogg and Vorbis specification, whether in a private,
+public or corporate capacity.  However, the Xiph.org Foundation and
+the Ogg project (xiph.org) reserve the right to set the Ogg Vorbis
+specification and certify specification compliance.</p><p>
+Xiph.org's Vorbis software CODEC implementation is distributed under a
+BSD-like license.  This does not restrict third parties from
+distributing independent implementations of Vorbis software under
+other licenses.</p><p>
+Ogg, Vorbis, Xiph.org Foundation and their logos are trademarks (tm)
+of the <a href="http://www.xiph.org/" target="_top">Xiph.org Foundation</a>.  These
+pages are copyright (C) 1994-2007 Xiph.org Foundation. All rights
+reserved.</p><p>
+This document is set in DocBook XML.
+</p></div></div></body></html>
Index: /libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.txt
===================================================================
--- /libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.txt	(revision 16)
+++ /libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.txt	(revision 16)
@@ -0,0 +1,1426 @@
+
+
+
+AVT Working Group                                             L. Barbato
+Internet-Draft                                                  Xiph.Org
+Expires: December 27, 2007                                  Jun 25, 2007
+
+
+                      draft-ietf-avt-rtp-vorbis-06
+              RTP Payload Format for Vorbis Encoded Audio
+
+Status of this Memo
+
+   By submitting this Internet-Draft, each author represents that any
+   applicable patent or other IPR claims of which he or she is aware
+   have been or will be disclosed, and any of which he or she becomes
+   aware will be disclosed, in accordance with Section 6 of BCP 79.
+
+   Internet-Drafts are working documents of the Internet Engineering
+   Task Force (IETF), its areas, and its working groups.  Note that
+   other groups may also distribute working documents as Internet-
+   Drafts.
+
+   Internet-Drafts are draft documents valid for a maximum of six months
+   and may be updated, replaced, or obsoleted by other documents at any
+   time.  It is inappropriate to use Internet-Drafts as reference
+   material or to cite them other than as "work in progress."
+
+   The list of current Internet-Drafts can be accessed at
+   http://www.ietf.org/ietf/1id-abstracts.txt.
+
+   The list of Internet-Draft Shadow Directories can be accessed at
+   http://www.ietf.org/shadow.html.
+
+   This Internet-Draft will expire on December 27, 2007.
+
+Copyright Notice
+
+   Copyright (C) The IETF Trust (2007).
+
+Abstract
+
+   This document describes an RTP payload format for transporting Vorbis
+   encoded audio.  It details the RTP encapsulation mechanism for raw
+   Vorbis data and details the delivery mechanisms for the decoder
+   probability model, referred to as a codebook and other setup
+   information.
+
+   Also included within this memo are media type registrations, and the
+   details necessary for the use of Vorbis with the Session Description
+   Protocol (SDP).
+
+
+
+Barbato                 Expires December 27, 2007               [Page 1]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+Editors Note
+
+   All references to RFC XXXX are to be replaced by references to the
+   RFC number of this memo, when published.
+
+
+Table of Contents
+
+   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
+     1.1.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  3
+   2.  Payload Format . . . . . . . . . . . . . . . . . . . . . . . .  3
+     2.1.  RTP Header . . . . . . . . . . . . . . . . . . . . . . . .  3
+     2.2.  Payload Header . . . . . . . . . . . . . . . . . . . . . .  5
+     2.3.  Payload Data . . . . . . . . . . . . . . . . . . . . . . .  6
+     2.4.  Example RTP Packet . . . . . . . . . . . . . . . . . . . .  7
+   3.  Configuration Headers  . . . . . . . . . . . . . . . . . . . .  8
+     3.1.  In-band Header Transmission  . . . . . . . . . . . . . . .  9
+       3.1.1.  Packed Configuration . . . . . . . . . . . . . . . . .  9
+     3.2.  Out of Band Transmission . . . . . . . . . . . . . . . . . 11
+       3.2.1.  Packed Headers . . . . . . . . . . . . . . . . . . . . 11
+     3.3.  Loss of Configuration Headers  . . . . . . . . . . . . . . 12
+   4.  Comment Headers  . . . . . . . . . . . . . . . . . . . . . . . 12
+   5.  Frame Packetization  . . . . . . . . . . . . . . . . . . . . . 13
+     5.1.  Example Fragmented Vorbis Packet . . . . . . . . . . . . . 14
+     5.2.  Packet Loss  . . . . . . . . . . . . . . . . . . . . . . . 16
+   6.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 17
+     6.1.  Packed Headers IANA Considerations . . . . . . . . . . . . 19
+   7.  SDP related considerations . . . . . . . . . . . . . . . . . . 20
+     7.1.  Mapping Media Type Parameters into SDP . . . . . . . . . . 20
+       7.1.1.  SDP Example  . . . . . . . . . . . . . . . . . . . . . 21
+     7.2.  Usage with the SDP Offer/Answer Model  . . . . . . . . . . 21
+   8.  Congestion Control . . . . . . . . . . . . . . . . . . . . . . 22
+   9.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
+     9.1.  Stream Radio . . . . . . . . . . . . . . . . . . . . . . . 22
+   10. Security Considerations  . . . . . . . . . . . . . . . . . . . 23
+   11. Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 23
+   12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23
+     12.1. Normative References . . . . . . . . . . . . . . . . . . . 23
+     12.2. Informative References . . . . . . . . . . . . . . . . . . 24
+   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24
+   Intellectual Property and Copyright Statements . . . . . . . . . . 25
+
+
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007               [Page 2]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+1.  Introduction
+
+   Vorbis is a general purpose perceptual audio codec intended to allow
+   maximum encoder flexibility, thus allowing it to scale competitively
+   over an exceptionally wide range of bitrates.  At the high quality/
+   bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it is
+   in the same league as AAC.  Vorbis is also intended for lower and
+   higher sample rates (from 8kHz telephony to 192kHz digital masters)
+   and a range of channel representations (monaural, polyphonic, stereo,
+   quadraphonic, 5.1, ambisonic, or up to 255 discrete channels).
+
+   Vorbis encoded audio is generally encapsulated within an Ogg format
+   bitstream [11], which provides framing and synchronization.  For the
+   purposes of RTP transport, this layer is unnecessary, and so raw
+   Vorbis packets are used in the payload.
+
+1.1.  Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in RFC 2119 [1].
+
+
+2.  Payload Format
+
+   For RTP based transport of Vorbis encoded audio the standard RTP
+   header is followed by a 4 octets payload header, then the payload
+   data.  The payload headers are used to associate the Vorbis data with
+   its associated decoding codebooks as well as indicating if the
+   following packet contains fragmented Vorbis data and/or the number of
+   whole Vorbis data frames.  The payload data contains the raw Vorbis
+   bitstream information.  There are 3 types of Vorbis payload data, an
+   RTP packet MUST contain just one of them at a time.
+
+2.1.  RTP Header
+
+   The format of the RTP header is specified in [2] and shown in Figure
+   Figure 1.  This payload format uses the fields of the header in a
+   manner consistent with that specification.
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007               [Page 3]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |V=2|P|X|  CC   |M|     PT      |       sequence number         |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                           timestamp                           |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronization source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                           Figure 1: RTP Header
+
+   The RTP header begins with an octet of fields (V, P, X, and CC) to
+   support specialized RTP uses (see [2] and [3] for details).  For
+   Vorbis RTP, the following values are used.
+
+   Version (V): 2 bits
+
+   This field identifies the version of RTP.  The version used by this
+   specification is two (2).
+
+   Padding (P): 1 bit
+
+   Padding MAY be used with this payload format according to section 5.1
+   of [2].
+
+   Extension (X): 1 bit
+
+   The Extension bit is used in accordance with [2].
+
+   CSRC count (CC): 4 bits
+
+   The CSRC count is used in accordance with [2].
+
+   Marker (M): 1 bit
+
+   Set to zero.  Audio silence suppression not used.  This conforms to
+   section 4.1 of [13].
+
+   Payload Type (PT): 7 bits
+
+   An RTP profile for a class of applications is expected to assign a
+   payload type for this format, or a dynamically allocated payload type
+   SHOULD be chosen which designates the payload as Vorbis.
+
+
+
+
+Barbato                 Expires December 27, 2007               [Page 4]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   Sequence number: 16 bits
+
+   The sequence number increments by one for each RTP data packet sent,
+   and may be used by the receiver to detect packet loss and to restore
+   packet sequence.  This field is detailed further in [2].
+
+   Timestamp: 32 bits
+
+   A timestamp representing the sampling time of the first sample of the
+   first Vorbis packet in the RTP packet.  The clock frequency MUST be
+   set to the sample rate of the encoded audio data and is conveyed out-
+   of-band (e.g. as a SDP parameter).
+
+   SSRC/CSRC identifiers:
+
+   These two fields, 32 bits each with one SSRC field and a maximum of
+   16 CSRC fields, are as defined in [2].
+
+2.2.  Payload Header
+
+   The 4 octets following the RTP Header section are the Payload Header.
+   This header is split into a number of bitfields detailing the format
+   of the following payload data packets.
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                     Ident                     | F |VDT|# pkts.|
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                         Figure 2: Payload Header
+
+   Ident: 24 bits
+
+   This 24 bit field is used to associate the Vorbis data to a decoding
+   Configuration.  It is stored as network byte order integer.
+
+   Fragment type (F): 2 bits
+
+   This field is set according to the following list
+
+      0 = Not Fragmented
+      1 = Start Fragment
+      2 = Continuation Fragment
+      3 = End Fragment
+
+   Vorbis Data Type (VDT): 2 bits
+
+
+
+
+Barbato                 Expires December 27, 2007               [Page 5]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   This field specifies the kind of Vorbis data stored in this RTP
+   packet.  There are currently three different types of Vorbis
+   payloads.  Each packet MUST contain only a single type of Vorbis
+   payload (e.g. you MUST not aggregate configuration and comment
+   payload in the same packet)
+
+      0 = Raw Vorbis payload
+      1 = Vorbis Packed Configuration payload
+      2 = Legacy Vorbis Comment payload
+      3 = Reserved
+
+   The packets with a VDT of value 3 MUST be ignored
+
+   The last 4 bits represent the number of complete packets in this
+   payload.  This provides for a maximum number of 15 Vorbis packets in
+   the payload.  If the packet contains fragmented data the number of
+   packets MUST be set to 0.
+
+2.3.  Payload Data
+
+   Raw Vorbis packets are currently unbounded in length, application
+   profiles will likely define a practical limit.  Typical Vorbis packet
+   sizes range from very small (2-3 bytes) to quite large (8-12
+   kilobytes).  The reference implementation [12] typically produces
+   packets less than ~800 bytes, except for the setup header packets
+   which are ~4-12 kilobytes.  Within an RTP context, to avoid
+   fragmentation, the Vorbis data packet size SHOULD be kept
+   sufficiently small so that after adding the RTP and payload headers,
+   the complete RTP packet is smaller than the path MTU.
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |            length             |       vorbis packet data     ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                       Figure 3: Payload Data Header
+
+   Each Vorbis payload packet starts with a two octet length header,
+   which is used to represent the size in bytes of the following data
+   payload, followed by the raw Vorbis data padded to the nearest byte
+   boundary, as explained by the vorbis specification [13].  The length
+   value is stored as network byte order integer.
+
+   For payloads which consist of multiple Vorbis packets the payload
+   data consists of the packet length followed by the packet data for
+   each of the Vorbis packets in the payload.
+
+
+
+
+Barbato                 Expires December 27, 2007               [Page 6]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   The Vorbis packet length header is the length of the Vorbis data
+   block only and does not count the length field.
+
+   The payload packing of the Vorbis data packets MUST follow the
+   guidelines set-out in [3] where the oldest packet occurs immediately
+   after the RTP packet header.  Subsequent packets, if any, MUST follow
+   in temporal order.
+
+   Channel mapping of the audio is in accordance with the Vorbis I
+   Specification [13].
+
+2.4.  Example RTP Packet
+
+   Here is an example RTP packet containing two Vorbis packets.
+
+   RTP Packet Header:
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      | 2 |0|0|  0    |0|      PT     |       sequence number         |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |               timestamp (in sample rate units)                |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronisation source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                     Ident                     | 0 | 0 | 2 pks |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |            length             |          vorbis data         ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        vorbis data                           |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |            length             |   next vorbis packet data    ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        vorbis data                          ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..               vorbis data                    |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                    Figure 4: Example Raw Vorbis Packet
+
+   The payload data section of the RTP packet begins with the 24 bit
+   Ident field followed by the one octet bitfield header, which has the
+   number of Vorbis frames set to 2.  Each of the Vorbis data frames is
+
+
+
+Barbato                 Expires December 27, 2007               [Page 7]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   prefixed by the two octets length field.  The Packet Type and
+   Fragment Type are set to 0.  The Configuration that will be used to
+   decode the packets is the one indexed by the ident value.
+
+
+3.  Configuration Headers
+
+   Unlike other mainstream audio codecs Vorbis has no statically
+   configured probability model.  Instead, it packs all entropy decoding
+   configuration, Vector Quantization and Huffman models into a data
+   block that must be transmitted to the decoder along with the
+   compressed data.  A decoder also requires information detailing the
+   number of audio channels, bitrates and similar information to
+   configure itself for a particular compressed data stream.  These two
+   blocks of information are often referred to collectively as the
+   "codebooks" for a Vorbis stream, and are nominally included as
+   special "header" packets at the start of the compressed data.  In
+   addition, the Vorbis I specification [13] requires the presence of a
+   comment header packet which gives simple metadata about the stream,
+   but this information is not required for decoding the frame sequence.
+
+   Thus these two codebook header packets must be received by the
+   decoder before any audio data can be interpreted.  These requirements
+   pose problems in RTP, which is often used over unreliable transports.
+
+   Since this information must be transmitted reliably and, as the RTP
+   stream may change certain configuration data mid-session, there are
+   different methods for delivering this configuration data to a client,
+   both in-band and out-of-band which is detailed below.  SDP delivery
+   is typically used to set up an initial state for the client
+   application.  The changes may be due to different codebooks as well
+   as different bitrates of the stream.
+
+   The delivery vectors in use can be specified by an SDP attribute to
+   indicate the method and the optional URI where the Vorbis Packed
+   Configuration (Section 3.1.1) Packets could be fetched.  Different
+   delivery methods MAY be advertised for the same session.  The in-band
+   Configuration delivery SHOULD be considered as baseline, out-of-band
+   delivery methods that don't use RTP will not be described in this
+   document.  For non chained streams, the Configuration recommended
+   delivery method is inline the Packed Configuration (Section 3.1.1) in
+   the SDP as explained in the IANA considerations (Section 7.1).
+
+   The 24 bit Ident field is used to map which Configuration will be
+   used to decode a packet.  When the Ident field changes, it indicates
+   that a change in the stream has taken place.  The client application
+   MUST have in advance the correct configuration and if the client
+   detects a change in the Ident value and does not have this
+
+
+
+Barbato                 Expires December 27, 2007               [Page 8]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   information it MUST NOT decode the raw Vorbis data associated until
+   it fetches the correct Configuration.
+
+3.1.  In-band Header Transmission
+
+   The Packed Configuration (Section 3.1.1) Payload is sent in-band with
+   the packet type bits set to match the Vorbis Data Type.  Clients MUST
+   be capable of dealing with fragmentation and periodic re-transmission
+   of the configuration headers.
+
+3.1.1.  Packed Configuration
+
+   A Vorbis Packed Configuration is indicated with the Vorbis Data Type
+   field set to 1.  Of the three headers defined in the Vorbis I
+   specification [13], the identification and the setup MUST be packed
+   as they are, while the comment header MAY be replaced with a dummy
+   one.  The packed configuration follows a generic way to store xiph
+   codec configurations: The first field stores the number of the
+   following packets minus one (count field), the next ones represent
+   the size of the headers (length fields), the headers immediately
+   follow the list of length fields.  The size of the last header is
+   implicit.  The count and the length fields are encoded using the
+   following logic: the data is in network order, every byte has the
+   most significant bit used as flag and the following 7 used to store
+   the value.  The first N bit are to be taken, where N is number of
+   bits representing the value modulo 7, and stored in the first byte.
+   If there are more bits, the flag bit is set to 1 and the subsequent
+   7bit are stored in the following byte, if there are remaining bits
+   set the flag to 1 and the same procedure is repeated.  The ending
+   byte has the flag bit set to 0.  In order to decode it is enough to
+   iterate over the bytes until the flag bit set to 0, for every byte
+   the data is added to the accumulated value multiplied by 128.  The
+   headers are packed in the same order they are present in ogg:
+   identification, comment, setup.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007               [Page 9]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |V=2|P|X|  CC   |M|     PT      |             xxxx              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                             xxxxx                             |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronization source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                      Ident                    | 1 | 0 |      0|
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           length              | n. of headers |    length1    |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |    length2    |                  Identification              ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        Identification                       ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        Identification                       ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        Identification                       ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..               Identification                 |    Comment   ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                            Comment                          ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                            Comment                          ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                            Comment                          ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..           Comment            |             Setup            ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                            Setup                            ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                            Setup                            ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                   Figure 5: Packed Configuration Figure
+
+   The Ident field is set with the value that will be used by the Raw
+   Payload Packets to address this Configuration.  The Fragment type is
+   set to 0 since the packet bears the full Packed configuration, the
+   number of packet is set to 1.
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 10]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+3.2.  Out of Band Transmission
+
+   This section, as stated above, does not cover all the possible out-
+   of-band delivery methods since they rely on different protocols and
+   are linked to specific applications.  The following packet definition
+   SHOULD be used in out-of-band delivery and MUST be used when
+   Configuration is inlined in the SDP.
+
+3.2.1.  Packed Headers
+
+   As mentioned above the RECOMMENDED delivery vector for Vorbis
+   configuration data is via a retrieval method that can be performed
+   using a reliable transport protocol.  As the RTP headers are not
+   required for this method of delivery the structure of the
+   configuration data is slightly different.  The packed header starts
+   with a 32 bit (network ordered) count field which details the number
+   of packed headers that are contained in the bundle.  Next is the
+   Packed header payload for each chained Vorbis stream.
+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                     Number of packed headers                  |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                          Packed header                        |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                          Packed header                        |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                     Figure 6: Packed Headers Overview
+
+   Since the Configuration Ident and the Identification Header are fixed
+   length there is only a 2 byte length tag to define the length of the
+   packed headers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 11]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                   Ident                       |    length    ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..              | n. of headers |    length1    |    length2   ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..              |             Identification Header            ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      .................................................................
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..              |         Comment Header                       ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      .................................................................
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        Comment Header                        |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                          Setup Header                        ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      .................................................................
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                         Setup Header                         |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                      Figure 7: Packed Headers Detail
+
+   The key difference between the in-band format and this one, is that
+   there is no need for the payload header octet.  In this figure the
+   comment has a size bigger than 127 bytes.
+
+3.3.  Loss of Configuration Headers
+
+   Unlike the loss of raw Vorbis payload data, loss of a configuration
+   header can lead to a situation where it will not be possible to
+   successfully decode the stream.
+
+   Loss of Configuration Packet results in the halting of stream
+   decoding.
+
+
+4.  Comment Headers
+
+   With the Vorbis Data Type flag set to 2, this indicates that the
+   packet contain the comment metadata, such as artist name, track title
+   and so on.  These metadata messages are not intended to be fully
+   descriptive but to offer basic track/song information.  Clients MAY
+   ignore it completely.  The details on the format of the comments can
+   be found in the Vorbis documentation [13].
+
+
+
+Barbato                 Expires December 27, 2007              [Page 12]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |V=2|P|X|  CC   |M|     PT      |             xxxx              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                             xxxxx                             |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronization source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                      Ident                    | 0 | 2 |      1|
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |            length             |            Comment           ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                           Comment                           ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                           Comment                            |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+                         Figure 8: Comment Packet
+
+   The 2 bytes length field is necessary since this packet could be
+   fragmented.
+
+
+5.  Frame Packetization
+
+   Each RTP packet contains either one Vorbis packet fragment, or an
+   integer number of complete Vorbis packets (up to a maximum of 15
+   packets, since the number of packets is defined by a 4 bit value).
+
+   Any Vorbis data packet that is less than path MTU SHOULD be bundled
+   in the RTP packet with as many Vorbis packets as will fit, up to a
+   maximum of 15, except when such bundling would exceed an
+   application's desired transmission latency.  Path MTU is detailed in
+   [6] and [7].
+
+   A fragmented packet has a zero in the last four bits of the payload
+   header.  The first fragment will set the Fragment type to 1.  Each
+   fragment after the first will set the Fragment type to 2 in the
+   payload header.  The RTP packet containing the last fragment of the
+   Vorbis packet will have the Fragment type set to 3.  To maintain the
+   correct sequence for fragmented packet reception the timestamp field
+   of fragmented packets MUST be the same as the first packet sent, with
+   the sequence number incremented as normal for the subsequent RTP
+
+
+
+Barbato                 Expires December 27, 2007              [Page 13]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   packets.  The length field shows the fragment length.
+
+5.1.  Example Fragmented Vorbis Packet
+
+   Here is an example fragmented Vorbis packet split over three RTP
+   packets.  Each packet contains the standard RTP headers as well as
+   the 4 octets Vorbis headers.
+
+      Packet 1:
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |V=2|P|X|  CC   |M|     PT      |           1000                |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                            12345                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronization source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                       Ident                   | 1 | 0 |      0|
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |             length            |            vorbis data       ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        vorbis data                           |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+              Figure 9: Example Fragmented Packet (Packet 1)
+
+   In this packet the initial sequence number is 1000 and the timestamp
+   is 12345.  The Fragment type is set to 1, the number of packets field
+   is set to 0, and as the payload is raw Vorbis data the VDT field is
+   set to 0.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 14]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+      Packet 2:
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |V=2|P|X|  CC   |M|     PT      |           1001                |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                             12345                             |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronization source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                       Ident                   | 2 | 0 |      0|
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |             length            |          vorbis data         ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        vorbis data                           |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+              Figure 10: Example Fragmented Packet (Packet 2)
+
+   The Fragment type field is set to 2 and the number of packets field
+   is set to 0.  For large Vorbis fragments there can be several of
+   these type of payload packets.  The maximum packet size SHOULD be no
+   greater than the path MTU, including all RTP and payload headers.
+   The sequence number has been incremented by one but the timestamp
+   field remains the same as the initial packet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 15]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+      Packet 3:
+
+       0                   1                   2                   3
+       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |V=2|P|X|  CC   |M|     PT      |           1002                |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                             12345                             |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |           synchronization source (SSRC) identifier            |
+      +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+      |            contributing source (CSRC) identifiers             |
+      |                              ...                              |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |                      Ident                    | 3 | 0 |      0|
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      |             length            |          vorbis data         ..
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+      ..                        vorbis data                           |
+      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+              Figure 11: Example Fragmented Packet (Packet 3)
+
+   This is the last Vorbis fragment packet.  The Fragment type is set to
+   3 and the packet count remains set to 0.  As in the previous packets
+   the timestamp remains set to the first packet in the sequence and the
+   sequence number has been incremented.
+
+5.2.  Packet Loss
+
+   As there is no error correction within the Vorbis stream, packet loss
+   will result in a loss of signal.  Packet loss is more of an issue for
+   fragmented Vorbis packets as the client will have to cope with the
+   handling of the Fragment Type.  In case of loss of fragments the
+   client MUST discard all the remaining fragments and decode the
+   incomplete packet.  If we use the fragmented Vorbis packet example
+   above and the first packet is lost the client MUST detect that the
+   next packet has the packet count field set to 0 and the Fragment type
+   2 and MUST drop it.  The next packet, which is the final fragmented
+   packet, MUST be dropped in the same manner.  If the missing packet is
+   the last, the received two fragments will be kept and the incomplete
+   vorbis packet decoded.
+
+   Loss of any of the Configuration fragment will result in the loss of
+   the full Configuration packet with the result detailed in the Loss of
+   Configuration Headers (Section 3.3) section.
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 16]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+6.  IANA Considerations
+
+   Type name:  audio
+
+   Subtype name:  vorbis
+
+   Required parameters:
+
+      rate:  indicates the RTP timestamp clock rate as described in RTP
+         Profile for Audio and Video Conferences with Minimal Control.
+         [3]
+
+      channels:  indicates the number of audio channels as described in
+         RTP Profile for Audio and Video Conferences with Minimal
+         Control. [3]
+
+      delivery-method:  indicates the delivery methods in use, the
+         possible values are: inline, in_band, out_band, MAY be included
+         multiple times
+
+      configuration:  the base64 [9] representation of the Packed
+         Headers (Section 3.2.1).  It MUST follow the associated
+         delivery-method parameter ("inline").
+
+   Optional parameters:
+
+      configuration-uri:  the URI [4] of the configuration headers in
+         case of out of band transmission.  In the form of
+         "protocol://path/to/resource/", depending on the specific
+         method, a single configuration packet could be retrived by its
+         Ident number, or multiple packets could be aggregated in a
+         single stream.  Such aggregates MAY be compressed using either
+         bzip2 [16] or gzip [14].  A sha1 [10] checksum MAY be provided
+         for aggregates.  In this latter case the URI will end with the
+         aggregate name, followed by its compressed extension if
+         applies, a "!" and the base64 [9] representation of the
+         sha1hash of the above mentioned compressed aggregated as in:
+         "protocol://path/to/resource/aggregated.bz2!sha1hash".  The
+         trailing '/' discriminates which of two methods are in use.
+         The configuration-uri MUST follow the associated delivery
+         method parameter ("out_band").  Non hierarchical protocols and
+         protocols using for special purposes the '!' separator MAY
+         point just to a resource aggregate using their specific syntax.
+
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 17]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   Encoding considerations:
+
+      This media type is framed and contains binary data.
+
+   Security considerations:
+
+      See Section 10 of RFC XXXX.
+
+   Interoperability considerations:
+
+      None
+
+   Published specification:
+
+      RFC XXXX [RFC Editor: please replace by the RFC number of this
+      memo, when published]
+
+      Ogg Vorbis I specification: Codec setup and packet decode.
+      Available from the Xiph website, http://www.xiph.org
+
+   Applications which use this media type:
+
+      Audio streaming and conferencing tools
+
+   Additional information:
+
+      None
+
+   Person & email address to contact for further information:
+
+      Luca Barbato: <lu_zero@gentoo.org> IETF Audio/Video Transport
+      Working Group
+
+   Intended usage:
+
+      COMMON
+
+   Restriction on usage:
+
+      This media type depends on RTP framing, and hence is only defined
+      for transfer via RTP [2]
+
+   Author:
+
+      Luca Barbato
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 18]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   Change controller:
+
+      IETF AVT Working Group delegated from the IESG
+
+
+6.1.  Packed Headers IANA Considerations
+
+   The following IANA considerations MUST only be applied to the packed
+   headers.
+
+   Type name:  audio
+
+   Subtype name:  vorbis-config
+
+   Required parameters:
+
+      None
+
+   Optional parameters:
+
+      None
+
+   Encoding considerations:
+
+      This media type contains binary data.
+
+   Security considerations:
+
+      See Section 10 of RFC XXXX.
+
+   Interoperability considerations:
+
+      None
+
+   Published specification:
+
+      RFC XXXX [RFC Editor: please replace by the RFC number of this
+      memo, when published]
+
+   Applications which use this media type:
+
+      Vorbis encoded audio, configuration data.
+
+   Additional information:
+
+      None
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 19]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   Person & email address to contact for further information:
+
+      Luca Barbato: <lu_zero@gentoo.org>
+      IETF Audio/Video Transport Working Group
+
+   Intended usage:  COMMON
+
+   Restriction on usage:
+
+      This media type doesn't depend on the transport.
+
+   Author:
+
+      Luca Barbato
+
+   Change controller:
+
+      IETF AVT Working Group delegated from the IESG
+
+
+7.  SDP related considerations
+
+   The following paragraphs defines the mapping of the parameters
+   described in the IANA considerations section and their usage in the
+   Offer/Answer Model [8].
+
+7.1.  Mapping Media Type Parameters into SDP
+
+   The information carried in the Media Type media type specification
+   has a specific mapping to fields in the Session Description Protocol
+   (SDP) [5], which is commonly used to describe RTP sessions.  When SDP
+   is used to specify sessions the mapping are as follows:
+
+   o  The type name ("audio") goes in SDP "m=" as the media name.
+
+   o  The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding
+      name.
+
+   o  The parameter "rate" also goes in "a=rtpmap" as clock rate.
+
+   o  The parameter "channels" also goes in "a=rtpmap" as channel count.
+
+   o  The mandated parameters "delivery-method" and "configuration" MUST
+      be included in the SDP "a=fmtp" attribute.
+
+   o  The optional parameter "configuration-uri", when present, MUST be
+      included in the SDP "a=fmtp" attribute and MUST follow the
+      delivery-method that applies.
+
+
+
+Barbato                 Expires December 27, 2007              [Page 20]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+   If the stream comprises chained Vorbis files and all of them are
+   known in advance, the Configuration Packet for each file SHOULD be
+   passed to the client using the configuration attribute.
+
+   The URI specified in the configuration-uri attribute MUST point to a
+   location where all of the Configuration Packets needed for the life
+   of the session reside.
+
+   The port value is specified by the server application bound to the
+   address specified in the c= line.  The bitrate value and channels
+   specified in the rtpmap attribute MUST match the Vorbis sample rate
+   value.  An example is found below.
+
+7.1.1.  SDP Example
+
+   The following example shows a basic SDP single stream.  The first
+   configuration packet is inlined in the sdp, other configurations
+   could be fetched at any time from the first provided uri using or all
+   the known configuration could be downloaded using the second uri.
+   The inline base64 [9] configuration string is omitted because of the
+   length.
+      c=IN IP4 192.0.2.1
+      m=audio RTP/AVP 98
+      a=rtpmap:98 vorbis/44100/2
+      a=fmtp:98 delivery-method=inline; configuration=base64string;
+      delivery-method=out_band;
+      configuration-uri=rtsp://path/to/the/resource; delivery-
+      method=out_band; configuration-uri=http://another/path/to/
+      resource/aggregate.bz2!8b6237eb5154a0ea12811a94e8e2697b3312bc6c;
+
+   Note that the payload format (encoding) names are commonly shown in
+   upper case.  Media Type subtypes are commonly shown in lower case.
+   These names are case-insensitive in both places.  Similarly,
+   parameter names are case-insensitive both in Media Type types and in
+   the default mapping to the SDP a=fmtp attribute.  The exception
+   regarding case sensitivity is the configuration-uri URI which MUST be
+   regarded as being case sensitive.  The a=fmtp line is a single line
+   even if it is presented broken because of clarity.
+
+7.2.  Usage with the SDP Offer/Answer Model
+
+   The only paramenter negotiable is the delivery method.  All the
+   others are declarative: the offer, as described in An Offer/Answer
+   Model Session Description Protocol [8], may contain a large number of
+   delivery methods per single fmtp attribute, the answerer MUST remove
+   every delivery-method and configuration-uri not supported.  All the
+   parameters MUST not be altered on answer otherwise.
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 21]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+8.  Congestion Control
+
+   Vorbis clients SHOULD send regular receiver reports detailing
+   congestion.  A mechanism for dynamically downgrading the stream,
+   known as bitrate peeling, will allow for a graceful backing off of
+   the stream bitrate.  This feature is not available at present so an
+   alternative would be to redirect the client to a lower bitrate stream
+   if one is available.
+
+
+9.  Examples
+
+   The following examples are common usage patterns that MAY be applied
+   in such situations, the main scope of this section is to explain
+   better usage of the transmission vectors.
+
+9.1.  Stream Radio
+
+   This is one of the most common situation: one single server streaming
+   content in multicast, the clients may start a session at random time.
+   The content itself could be a mix of live stream, as the wj's voice,
+   and stored streams as the music she plays.
+
+   In this situation we don't know in advance how many codebooks we will
+   use.  The clients can join anytime and users expect to start
+   listening to the content in a short time.
+
+   On join the client will receive the current Configuration necessary
+   to decode the current stream inlined in the SDP so that the decoding
+   will start immediately after.
+
+   When the streamed content changes the new Configuration is sent in-
+   band before the actual stream, and the Configuration that has to be
+   sent inline in the SDP updated.  Since the in-band method is
+   unreliable, an out of band fallback is provided.
+
+   The client could choose to fetch the Configuration from the alternate
+   source as soon as it discovers a Configuration packet got lost in-
+   band or use selective retransmission [15], if the server supports the
+   feature.
+
+   A serverside optimization would be to keep an hash list of the
+   Configurations per session to avoid packing all of them and send the
+   same Configuration with different Ident tags
+
+   A clientside optimization would be to keep a tag list of the
+   Configurations per session and don't process configuration packets
+   already known.
+
+
+
+Barbato                 Expires December 27, 2007              [Page 22]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+10.  Security Considerations
+
+   RTP packets using this payload format are subject to the security
+   considerations discussed in the RTP specification [2].  This implies
+   that the confidentiality of the media stream is achieved by using
+   encryption.  Because the data compression used with this payload
+   format is applied end-to-end, encryption may be performed on the
+   compressed data.  Additional care MAY be needed for delivery methods
+   that point to external resources, using secure protocols to fetch the
+   configuration payloads.  Where the size of a data block is set, care
+   MUST be taken to prevent buffer overflows in the client applications.
+
+
+11.  Acknowledgments
+
+   This document is a continuation of draft-moffitt-vorbis-rtp-00.txt
+   and draft-kerr-avt-vorbis-rtp-04.txt.  The Media Type type section is
+   a continuation of draft-short-avt-rtp-vorbis-mime-00.txt.
+
+   Thanks to the AVT, Ogg Vorbis Communities / Xiph.org including Steve
+   Casner, Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia, Pascal
+   Hennequin, Ralph Giles, Tor-Einar Jarnbjo, Colin Law, John Lazzaro,
+   Jack Moffitt, Christopher Montgomery, Colin Perkins, Barry Short,
+   Mike Smith, Phil Kerr, Michael Sparks, Magnus Westerlund, David
+   Barrett, Silvia Pfeiffer, Stefan Ehmann, Alessandro Salvatori.
+   Politecnico di Torino (LS)^3/IMG Group in particular Federico
+   Ridolfo, Francesco Varano, Giampaolo Mancini, Dario Gallucci, Juan
+   Carlos De Martin.
+
+
+12.  References
+
+12.1.  Normative References
+
+   [1]   Bradner, S., "Key words for use in RFCs to Indicate Requirement
+         Levels", RFC 2119.
+
+   [2]   Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson,
+         "RTP: A Transport Protocol for real-time applications",
+         RFC 3550.
+
+   [3]   Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
+         Conferences with Minimal Control.", RFC 3551.
+
+   [4]   Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
+         Resource Identifier (URI): Generic Syntax", RFC 3986.
+
+   [5]   Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
+
+
+
+Barbato                 Expires December 27, 2007              [Page 23]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+         Description Protocol", RFC 4566, July 2006.
+
+   [6]   Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
+         November 1990.
+
+   [7]   McCann et al., J., "Path MTU Discovery for IP version 6",
+         RFC 1981.
+
+   [8]   Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
+         Session Description Protocol (SDP)", RFC 3264.
+
+   [9]   Josefsson, S., "The Base16, Base32, and Base64 Data Encodings",
+         RFC 3548.
+
+   [10]  National Institute of Standards and Technology, "Secure Hash
+         Standard", May 1993.
+
+12.2.  Informative References
+
+   [11]  Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
+         RFC 3533.
+
+   [12]  "libvorbis: Available from the Xiph website,
+         http://www.xiph.org".
+
+   [13]  "Ogg Vorbis I specification:  Codec setup and packet decode.
+         Available from the Xiph website, http://www.xiph.org".
+
+   [14]  Deutsch, P., "GZIP file format specification version 4.3",
+         RFC 1952.
+
+   [15]  Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol
+         Extended Reports (RTCP XR)", RFC 3611, November 2003.
+
+   [16]  Seward, J., "libbz2 and bzip2".
+
+
+Author's Address
+
+   Luca Barbato
+   Xiph.Org
+
+   Email: lu_zero@gentoo.org
+   URI:   http://www.xiph.org/
+
+
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 24]
+
+
+Internet-Draft        draft-ietf-avt-rtp-vorbis-06              Jun 2007
+
+
+Full Copyright Statement
+
+   Copyright (C) The IETF Trust (2007).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
+   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
+   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
+   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr@ietf.org.
+
+
+Acknowledgment
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+Barbato                 Expires December 27, 2007              [Page 25]
+
+
+
Index: /libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.xml
===================================================================
--- /libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/draft-ietf-avt-rtp-vorbis-06.xml	(revision 16)
@@ -0,0 +1,1388 @@
+<?xml version='1.0'?>
+<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
+<?rfc toc="yes" ?>
+<?rfc compact='yes'?>
+
+<rfc ipr="full3978" docName="RTP Payload Format for Vorbis Encoded Audio">
+
+<front>
+<title>draft-ietf-avt-rtp-vorbis-06</title>
+
+<author initials="L" surname="Barbato" fullname="Luca Barbato">
+<organization>Xiph.Org</organization>
+<address>
+<email>lu_zero@gentoo.org</email>
+<uri>http://www.xiph.org/</uri>
+</address>
+</author>
+
+<date day="25" month="Jun" year="2007" />
+
+<area>General</area>
+<workgroup>AVT Working Group</workgroup>
+<keyword>I-D</keyword>
+
+<keyword>Internet-Draft</keyword>
+<keyword>Vorbis</keyword>
+<keyword>RTP</keyword>
+
+<abstract>
+
+<t>
+This document describes an RTP payload format for transporting Vorbis encoded
+audio. It details the RTP encapsulation mechanism for raw Vorbis data and 
+details the delivery mechanisms for the decoder probability model, referred to
+as a codebook and other setup information.
+</t>
+
+<t>
+Also included within this memo are media type registrations, and the details
+necessary for the use of Vorbis with the Session Description Protocol (SDP).
+</t>
+
+</abstract>
+
+<note title="Editors Note">
+<t>
+All references to RFC XXXX are to be replaced by references to the RFC number
+of this memo, when published.
+</t>
+</note>
+
+</front>
+
+<middle>
+
+<section anchor="Introduction" title="Introduction">
+
+<t>
+Vorbis is a general purpose perceptual audio codec intended to allow 
+maximum encoder flexibility, thus allowing it to scale competitively 
+over an exceptionally wide range of bitrates. At the high 
+quality/bitrate end of the scale (CD or DAT rate stereo, 16/24 bits), it 
+is in the same league as AAC.
+Vorbis is also intended for lower and higher sample rates (from 
+8kHz telephony to 192kHz digital masters) and a range of channel 
+representations (monaural, polyphonic, stereo, quadraphonic, 5.1, 
+ambisonic, or up to 255 discrete channels).
+</t>
+
+<t>
+Vorbis encoded audio is generally encapsulated within an Ogg format bitstream
+<xref target="rfc3533"></xref>, which provides framing and synchronization.
+For the purposes of RTP transport, this layer is unnecessary, and so raw Vorbis
+packets are used in the payload.
+</t>
+
+<section anchor="Terminology" title="Terminology">
+
+<t>
+The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" 
+in this document are to be interpreted as described in RFC 2119 <xref target="rfc2119"></xref>.
+</t>
+
+</section>
+</section>
+
+<section anchor="Payload Format" title="Payload Format">
+
+<t>
+For RTP based transport of Vorbis encoded audio the standard RTP header is
+followed by a 4 octets payload header, then the payload data. The payload
+headers are used to associate the Vorbis data with its associated decoding
+codebooks as well as indicating if the following packet contains fragmented
+Vorbis data and/or the number of whole Vorbis data frames. The payload data
+contains the raw Vorbis bitstream information. There are 3 types of Vorbis
+payload data, an RTP packet MUST contain just one of them at a time.
+</t>
+
+<section anchor="RTP Header" title="RTP Header">
+
+<t>
+The format of the RTP header is specified in <xref target="rfc3550"></xref>
+and shown in Figure <xref target="RTP Header Figure"/>.  This payload format
+uses the fields of the header in a manner consistent with that specification.
+</t>
+
+<t>
+<figure anchor="RTP Header Figure" title="RTP Header">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |       sequence number         |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                           timestamp                           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+</t>
+
+<t>
+The RTP header begins with an octet of fields (V, P, X, and CC) to support
+specialized RTP uses (see <xref target="rfc3550"></xref> and 
+<xref target="rfc3551"></xref> for details). For Vorbis RTP, the following
+values are used.
+</t>
+
+<t>
+Version (V): 2 bits</t>
+<t>
+This field identifies the version of RTP. The version used by this
+specification is two (2).
+</t>
+
+<t>
+Padding (P): 1 bit</t>
+<t>
+Padding MAY be used with this payload format according to section 5.1 of
+<xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Extension (X): 1 bit</t>
+<t>
+The Extension bit is used in accordance with <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+CSRC count (CC): 4 bits</t>
+<t>
+The CSRC count is used in accordance with <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Marker (M): 1 bit</t>
+<t>
+Set to zero.  Audio silence suppression not used.  This conforms to section 4.1
+of <xref target="vorbis-spec-ref"></xref>.
+</t>
+
+<t>
+Payload Type (PT): 7 bits</t>
+<t>
+An RTP profile for a class of applications is expected to assign a payload type
+for this format, or a dynamically allocated payload type SHOULD be chosen which
+designates the payload as Vorbis.
+</t>
+
+<t>
+Sequence number: 16 bits</t>
+<t>
+The sequence number increments by one for each RTP data packet sent, and may be
+used by the receiver to detect packet loss and to restore packet sequence. This
+field is detailed further in <xref target="rfc3550"></xref>.
+</t>
+
+<t>
+Timestamp: 32 bits</t>
+<t>
+A timestamp representing the sampling time of the first sample of the first
+Vorbis packet in the RTP packet. The clock frequency MUST be set to the sample
+rate of the encoded audio data and is conveyed out-of-band (e.g. as a SDP parameter).
+</t>
+
+<t>
+SSRC/CSRC identifiers: </t>
+<t>
+These two fields, 32 bits each with one SSRC field and a maximum of 16 CSRC
+fields, are as defined in <xref target="rfc3550">
+</xref>.  
+</t>
+
+</section>
+
+<section anchor="Payload Header" title="Payload Header">
+
+<t>
+The 4 octets following the RTP Header section are the Payload Header. This
+header is split into a number of bitfields detailing the format of the
+following payload data packets.
+</t>
+
+<figure anchor="Payload Header Figure" title="Payload Header">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                     Ident                     | F |VDT|# pkts.|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+Ident: 24 bits</t>
+<t>
+This 24 bit field is used to associate the Vorbis data to a decoding
+Configuration. It is stored as network byte order integer.
+</t>
+
+<t>
+Fragment type (F): 2 bits</t>
+<t>
+This field is set according to the following list
+</t>
+<vspace blankLines="1" />
+<list style="empty">
+<t>      0 = Not Fragmented</t>
+<t>      1 = Start Fragment</t>
+<t>      2 = Continuation Fragment</t>
+<t>      3 = End Fragment</t>
+</list>
+
+<t>
+Vorbis Data Type (VDT): 2 bits</t>
+<t>
+This field specifies the kind of Vorbis data stored in this RTP packet. There
+are currently three different types of Vorbis payloads. Each packet MUST contain only a single type of Vorbis payload (e.g. you MUST not aggregate configuration and comment payload in the same packet)
+</t>
+
+<vspace blankLines="1" />
+<list style="empty">
+<t>      0 = Raw Vorbis payload</t>
+<t>      1 = Vorbis Packed Configuration payload</t>
+<t>      2 = Legacy Vorbis Comment payload</t>
+<t>      3 = Reserved</t>
+</list>
+
+<t> The packets with a VDT of value 3 MUST be ignored </t>
+
+<t>
+The last 4 bits represent the number of complete packets in this payload. This
+provides for a maximum number of 15 Vorbis packets in the payload. If the
+packet contains fragmented data the number of packets MUST be set to 0.
+</t>
+
+</section>
+
+<section anchor="Payload Data" title="Payload Data">
+
+<t>
+Raw Vorbis packets are currently unbounded in length, application profiles will
+likely define a practical limit. Typical Vorbis packet sizes range from very
+small (2-3 bytes) to quite large (8-12 kilobytes). The reference implementation
+<xref target="libvorbis"></xref> typically produces packets less than ~800
+bytes, except for the setup header packets which are ~4-12 kilobytes. Within an
+RTP context, to avoid fragmentation, the Vorbis data packet size SHOULD be kept
+sufficiently small so that after adding the RTP and payload headers, the
+complete RTP packet is smaller than the path MTU.
+</t>
+
+<figure anchor="Payload Data Figure" title="Payload Data Header">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |            length             |       vorbis packet data     ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+Each Vorbis payload packet starts with a two octet length header, which is used
+to represent the size in bytes of the following data payload, followed by the
+raw Vorbis data padded to the nearest byte boundary, as explained by the <xref target="vorbis-spec-ref">vorbis specification</xref>. The length value is stored
+as network byte order integer.
+</t>
+
+<t>
+For payloads which consist of multiple Vorbis packets the payload data consists
+of the packet length followed by the packet data for each of the Vorbis packets
+in the payload.
+</t>
+
+<t>
+The Vorbis packet length header is the length of the Vorbis data block only and
+does not count the length field.
+</t>
+
+<t>
+The payload packing of the Vorbis data packets MUST follow the guidelines
+set-out in <xref target="rfc3551"></xref> where the oldest packet occurs
+immediately after the RTP packet header. Subsequent packets, if any, MUST
+follow in temporal order.
+</t>
+
+<t>
+Channel mapping of the audio is in accordance with the
+<xref target="vorbis-spec-ref">Vorbis I Specification</xref>.
+</t>
+
+</section>
+
+<section anchor="Example RTP Packet" title="Example RTP Packet">
+
+<t>
+Here is an example RTP packet containing two Vorbis packets.
+</t>
+
+<t>
+RTP Packet Header:
+</t>
+
+<figure anchor="Example Raw Vorbis Packet" title="Example Raw Vorbis Packet">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   | 2 |0|0|  0    |0|      PT     |       sequence number         |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |               timestamp (in sample rate units)                |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronisation source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                     Ident                     | 0 | 0 | 2 pks |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |            length             |          vorbis data         ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        vorbis data                           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |            length             |   next vorbis packet data    ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        vorbis data                          ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..               vorbis data                    |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The payload data section of the RTP packet begins with the 24 bit Ident field
+followed by the one octet bitfield header, which has the number of Vorbis
+frames set to 2.  Each of the Vorbis data frames is prefixed by the two octets
+length field. The Packet Type and Fragment Type are set to 0. The Configuration
+that will be used to decode the packets is the one indexed by the ident value.
+</t>
+
+</section>
+</section>
+
+
+
+<section anchor="Configuration Headers" title="Configuration Headers">
+
+<t>
+Unlike other mainstream audio codecs Vorbis has no statically 
+configured probability model. Instead, it packs all entropy decoding 
+configuration, Vector Quantization and Huffman models into a data block
+that must be transmitted to the decoder along with the compressed data.
+A decoder also requires information detailing the number of audio 
+channels, bitrates and similar information to configure itself for a 
+particular compressed data stream. These two blocks of information are 
+often referred to collectively as the "codebooks" for a Vorbis stream,
+and are nominally included as special "header" packets at the start 
+of the compressed data. In addition,
+the <xref target="vorbis-spec-ref">Vorbis I specification</xref>
+requires the presence of a comment header packet which gives simple
+metadata about the stream, but this information is not required for 
+decoding the frame sequence.
+</t>
+
+<t>
+Thus these two codebook header packets must be received by the decoder before
+any audio data can be interpreted. These requirements pose problems in RTP,
+which is often used over unreliable transports.
+</t>
+
+<t>
+Since this information must be transmitted reliably and, as the RTP 
+stream may change certain configuration data mid-session, there are 
+different methods for delivering this configuration data to a 
+client, both in-band and out-of-band which is detailed below. SDP 
+delivery is typically used to set up an initial state for the client 
+application. The changes may be due to different codebooks as well as 
+different bitrates of the stream.
+</t>
+
+<t>
+The delivery vectors in use can be specified by an SDP attribute to indicate the
+method and the optional URI where the Vorbis
+<xref target="Packed Configuration">Packed Configuration</xref> Packets could
+be fetched. Different delivery methods MAY be advertised for the same session.
+The in-band Configuration delivery SHOULD be considered as baseline,
+out-of-band delivery methods that don't use RTP will not be described in this
+document. For non chained streams, the Configuration recommended delivery
+method is inline the <xref target="Packed Configuration">Packed Configuration</xref> in the SDP as explained in the <xref target="Mapping Media Type Parameters into SDP"> IANA considerations</xref>.
+</t>
+
+<t>
+The 24 bit Ident field is used to map which Configuration will be used to
+decode a packet. When the Ident field changes, it indicates that a change in
+the stream has taken place. The client application MUST have in advance the
+correct configuration and if the client detects a change in the Ident value and
+does not have this information it MUST NOT decode the raw Vorbis data
+associated until it fetches the correct Configuration.
+</t>
+
+<section anchor="In-band Header Transmission" title="In-band Header Transmission">
+
+<t>
+The <xref target="Packed Configuration">Packed Configuration</xref> Payload is
+sent in-band with the packet type bits set to match the Vorbis Data Type.
+Clients MUST be capable of dealing with fragmentation and periodic
+re-transmission of the configuration headers.
+</t>
+
+<section anchor="Packed Configuration" title="Packed Configuration">
+
+<t>
+A Vorbis Packed Configuration is indicated with the Vorbis Data Type field set
+to 1. Of the three headers defined in the
+<xref target="vorbis-spec-ref">Vorbis I specification</xref>, the
+identification and the setup MUST be packed as they are, while the comment header MAY be replaced with a dummy one. The packed configuration follows a generic way to store xiph codec configurations: The first field stores the number of the following packets minus one (count field), the next ones represent the size of the headers (length fields), the headers immediately follow the list of length fields. The size of the last header is implicit.
+The count and the length fields are encoded using the following logic: the data is in network order, every byte has the most significant bit used as flag and the following 7 used to store the value. The first N bit are to be taken, where N is number of bits representing the value modulo 7, and stored in the first byte.
+If there are more bits, the flag bit is set to 1 and the subsequent 7bit are stored in the following byte, if there are remaining bits set the flag to 1 and the same procedure is repeated. The ending byte has the flag bit set to 0. In order to decode it is enough to iterate over the bytes until the flag bit set to 0, for every byte the data is added to the accumulated value multiplied by 128.
+The headers are packed in the same order they are present in ogg: identification, comment, setup.</t>
+
+<figure anchor="Packed Configuration Figure" title="Packed Configuration Figure">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |             xxxx              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                             xxxxx                             |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                      Ident                    | 1 | 0 |      0|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           length              | n. of headers |    length1    |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |    length2    |                  Identification              ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        Identification                       ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        Identification                       ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        Identification                       ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..               Identification                 |    Comment   ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                            Comment                          ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                            Comment                          ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                            Comment                          ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..           Comment            |             Setup            ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                            Setup                            ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                            Setup                            ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>The Ident field is set with the value that will be used by the Raw Payload
+Packets to address this Configuration. The Fragment type is set to 0 since the
+packet bears the full Packed configuration, the number of packet is set to 1.</t>
+</section>
+</section>
+
+<section anchor="Out of Band Transmission" title="Out of Band Transmission">
+
+<t>
+This section, as stated above, does not cover all the possible out-of-band
+delivery methods since they rely on different protocols and are linked to
+specific applications. The following packet definition SHOULD be used in
+out-of-band delivery and MUST be used when Configuration is inlined in the SDP.
+</t>
+
+<section anchor="Packed Headers" title="Packed Headers"> 
+
+<t>
+As mentioned above the RECOMMENDED delivery vector for Vorbis configuration
+data is via a retrieval method that can be performed using a reliable transport
+protocol. As the RTP headers are not required for this method of delivery the
+structure of the configuration data is slightly different. The packed header
+starts with a 32 bit (network ordered) count field which details the number of
+packed headers that are contained in the bundle. Next is the Packed header
+payload for each chained Vorbis stream.
+</t>
+
+<figure anchor="Packed Headers Overview Figure" title="Packed Headers Overview">
+<artwork><![CDATA[
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                     Number of packed headers                  |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                          Packed header                        |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                          Packed header                        |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+Since the Configuration Ident and the Identification Header are fixed length
+there is only a 2 byte length tag to define the length of the packed headers.
+</t>
+
+<figure anchor="Packed Headers Detail Figure" title="Packed Headers Detail">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                   Ident                       |    length    ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..              | n. of headers |    length1    |    length2   ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..              |             Identification Header            ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   .................................................................
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..              |         Comment Header                       ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   .................................................................
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        Comment Header                        |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                          Setup Header                        ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   .................................................................
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                         Setup Header                         |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+<t>
+The key difference between the in-band format and this one, is that there is no
+need for the payload header octet. In this figure the comment has a size bigger
+than 127 bytes.
+</t>
+</section>
+
+</section>
+
+<section anchor="Loss of Configuration Headers" title="Loss of Configuration Headers"> 
+
+<t>
+Unlike the loss of raw Vorbis payload data, loss of a configuration header can
+lead to a situation where it will not be possible to successfully decode the
+stream.
+</t>
+
+<t>
+Loss of Configuration Packet results in the halting of stream decoding.
+</t>
+
+</section>
+
+</section>
+
+<section anchor="Comment Headers" title="Comment Headers">
+
+<t>
+With the Vorbis Data Type flag set to 2, this indicates that the packet contain
+the comment metadata, such as artist name, track title and so on. These
+metadata messages are not intended to be fully descriptive but to offer basic
+track/song information. Clients MAY ignore it completely. The details on the
+format of the comments can be found in the <xref target="vorbis-spec-ref">Vorbis documentation</xref>.
+</t>
+<figure anchor="Comment Packet Figure" title="Comment Packet">
+<artwork><![CDATA[
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |             xxxx              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                             xxxxx                             |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                      Ident                    | 0 | 2 |      1|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |            length             |            Comment           ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                           Comment                           ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                           Comment                            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The 2 bytes length field is necessary since this packet could be fragmented.
+</t>
+
+</section>
+<section anchor="Frame Packetization" title="Frame Packetization">
+
+<t>
+Each RTP packet contains either one Vorbis packet fragment, or an integer
+number of complete Vorbis packets (up to a maximum of 15 packets, since the
+number of packets is defined by a 4 bit value).
+</t>
+
+<t>
+Any Vorbis data packet that is less than path MTU SHOULD be bundled in the RTP
+packet with as many Vorbis packets as will fit, up to a maximum of 15, except
+when such bundling would exceed an application's desired transmission latency.
+Path MTU is detailed in <xref target="rfc1191"></xref> and <xref target="rfc1981"></xref>.
+</t>
+
+<t>
+A fragmented packet has a zero in the last four bits of the payload header.
+The first fragment will set the Fragment type to 1. Each fragment after the
+first will set the Fragment type to 2 in the payload header.  The RTP packet
+containing the last fragment of the Vorbis packet will have the Fragment type
+set to 3.  To maintain the correct sequence for fragmented packet reception
+the timestamp field of fragmented packets MUST be the same as the first packet
+sent, with the sequence number incremented as normal for the subsequent RTP
+packets. The length field shows the fragment length.
+</t>
+
+<section anchor="Example Fragmented Vorbis Packet" title="Example Fragmented Vorbis Packet">
+
+<t>
+Here is an example fragmented Vorbis packet split over three RTP packets.
+Each packet contains the standard RTP headers as well as the 4 octets Vorbis
+headers.
+</t>
+
+<figure anchor="Example Fragmented Packet (Packet 1)" title="Example Fragmented Packet (Packet 1)">
+<artwork><![CDATA[
+   Packet 1:
+
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |           1000                |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                            12345                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                       Ident                   | 1 | 0 |      0|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |             length            |            vorbis data       ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        vorbis data                           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+In this packet the initial sequence number is 1000 and the timestamp is 12345.  The Fragment type is set to 1, the number of packets field is set to 0, and as
+the payload is raw Vorbis data the VDT field is set to 0.
+</t>
+
+<figure anchor="Example Fragmented Packet (Packet 2)" title="Example Fragmented Packet (Packet 2)">
+<artwork><![CDATA[
+   Packet 2:
+
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |           1001                |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                             12345                             |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                       Ident                   | 2 | 0 |      0|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |             length            |          vorbis data         ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        vorbis data                           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+The Fragment type field is set to 2 and the number of packets field is set to 0.
+For large Vorbis fragments there can be several of these type of payload 
+packets. The maximum packet size SHOULD be no greater than the path MTU,
+including all RTP and payload headers. The sequence number has been incremented
+by one but the timestamp field remains the same as the initial packet.
+</t>
+
+<figure anchor="Example Fragmented Packet (Packet 3)" title="Example Fragmented Packet (Packet 3)">
+<artwork><![CDATA[
+   Packet 3:
+
+    0                   1                   2                   3
+    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |V=2|P|X|  CC   |M|     PT      |           1002                |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                             12345                             |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |           synchronization source (SSRC) identifier            |
+   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
+   |            contributing source (CSRC) identifiers             |
+   |                              ...                              |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                      Ident                    | 3 | 0 |      0|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |             length            |          vorbis data         ..
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   ..                        vorbis data                           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+]]></artwork>
+</figure>
+
+<t>
+This is the last Vorbis fragment packet.  The Fragment type is set to 3 and the
+packet count remains set to 0. As in the previous packets the timestamp remains
+set to the first packet in the sequence and the sequence number has been
+incremented.
+</t>
+</section>
+
+<section anchor="Packet Loss" title="Packet Loss">
+
+<t>
+As there is no error correction within the Vorbis stream, packet loss will
+result in a loss of signal. Packet loss is more of an issue for fragmented
+Vorbis packets as the client will have to cope with the handling of the
+Fragment Type. In case of loss of fragments the client MUST discard all the
+remaining fragments and decode the incomplete packet. If we use the fragmented
+Vorbis packet example above and the first packet is lost the client MUST detect
+that the next packet has the packet count field set to 0 and the Fragment type
+2 and MUST drop it. The next packet, which is the final fragmented packet, MUST
+be dropped in the same manner. If the missing packet is the last, the received
+two fragments will be kept and the incomplete vorbis packet decoded.
+</t>
+
+<t>
+Loss of any of the Configuration fragment will result in the loss of the full
+Configuration packet with the result detailed in the <xref target="Loss of Configuration Headers">Loss of Configuration Headers</xref> section.
+</t>
+
+</section>
+</section>
+<section anchor="IANA Considerations" title="IANA Considerations"> 
+
+<vspace blankLines="1" />
+<list style="hanging">
+<t hangText="Type name:"> audio </t>
+<vspace blankLines="1" />
+
+<t hangText="Subtype name:"> vorbis </t>
+<vspace blankLines="1" />
+
+<t hangText="Required parameters:">
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+<t hangText="rate:"> indicates the RTP timestamp clock rate as described in <xref target="rfc3551">RTP Profile for Audio and Video Conferences with Minimal Control.</xref>
+</t>
+<vspace blankLines="1" />
+
+<t hangText="channels:"> indicates the number of audio channels as described in <xref target="rfc3551">RTP Profile for Audio and Video Conferences with Minimal Control.</xref>
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="delivery-method:"> indicates the delivery methods in use, the possible values are: inline, in_band, out_band, MAY be included multiple times
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="configuration:"> the <xref target="rfc3548">base64</xref> representation of the <xref target="Packed Headers">Packed Headers</xref>. It MUST follow the associated delivery-method parameter ("inline").
+</t>
+</list>
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Optional parameters:">
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+<t hangText="configuration-uri:"> the <xref target="rfc3986">URI</xref> of
+the configuration headers in case of out of band transmission.
+In the form of "protocol://path/to/resource/", depending on the specific
+method, a single configuration packet could be retrived by its Ident number, or
+multiple packets could be aggregated in a single stream. 
+Such aggregates MAY be compressed using either
+<xref target="BZ2">bzip2</xref> or <xref target="rfc1952">gzip</xref>.
+A <xref target="FIPS180">sha1</xref> checksum MAY be provided for aggregates.
+In this latter case the URI will end with the aggregate name, followed by its
+compressed extension if applies, a "!" and the <xref target="rfc3548">base64</xref> representation of the sha1hash of the above mentioned compressed aggregated
+as in: "protocol://path/to/resource/aggregated.bz2!sha1hash".
+The trailing '/' discriminates which of two methods are in use.
+The configuration-uri MUST follow the associated delivery method parameter ("out_band").
+Non hierarchical protocols and protocols using for special purposes the '!' separator MAY point just to a resource aggregate using their specific syntax.
+</t>
+</list>
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Encoding considerations:">
+<vspace blankLines="1" />
+This media type is framed and contains binary data.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Security considerations:">
+<vspace blankLines="1" />
+See Section 10 of RFC XXXX.</t>
+
+<vspace blankLines="1" />
+<t hangText="Interoperability considerations:">
+<vspace blankLines="1" />
+None</t>
+
+<vspace blankLines="1" />
+<t hangText="Published specification:">
+
+<vspace blankLines="1" />
+RFC XXXX [RFC Editor: please replace by the RFC number of  this memo, when published]
+<vspace blankLines="1" />
+Ogg Vorbis I specification:  Codec setup and packet decode. Available from the Xiph website, http://www.xiph.org
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Applications which use this media type:">
+<vspace blankLines="1"/>
+Audio streaming and conferencing tools </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Additional information:">
+<vspace blankLines="1" />
+None </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Person &amp; email address to contact for further information:">
+
+<vspace blankLines="1" />
+
+Luca Barbato: &lt;lu_zero@gentoo.org&gt;<br/>
+IETF Audio/Video Transport Working Group
+
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Intended usage:">
+<vspace blankLines="1" />
+COMMON</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Restriction on usage:">
+<vspace blankLines="1" />
+This media type depends on RTP framing, and hence is only defined for transfer via <xref target="rfc3550">RTP</xref></t>
+
+<vspace blankLines="1" />
+
+<t hangText="Author:">
+<vspace blankLines="1"/>Luca Barbato</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Change controller:">
+<vspace blankLines="1"/>IETF AVT Working Group delegated from the IESG</t>
+
+<vspace blankLines="1" />
+</list>
+
+<section anchor="Packed Headers IANA Considerations" title="Packed Headers IANA Considerations"> 
+
+<t>
+The following IANA considerations MUST only be applied to the packed headers.
+</t>
+
+<vspace blankLines="1" />
+
+<list style="hanging">
+<t hangText="Type name:"> audio </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Subtype name:"> vorbis-config </t>
+
+<vspace blankLines="1" />
+
+<t hangText="Required parameters:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Optional parameters:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Encoding considerations:">
+<vspace blankLines="1" />
+This media type contains binary data.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Security considerations:">
+<vspace blankLines="1" />
+See Section 10 of RFC XXXX.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Interoperability considerations:">
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Published specification:">
+<vspace blankLines="1" />
+RFC XXXX [RFC Editor: please replace by the RFC number of  this memo,
+       when published]
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Applications which use this media type:">
+<vspace blankLines="1" />
+Vorbis encoded audio, configuration data.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Additional information:"> 
+<vspace blankLines="1" />
+None
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Person &amp; email address to contact for further information:">
+<vspace blankLines="1" />
+Luca Barbato: &lt;lu_zero@gentoo.org&gt;
+<vspace blankLines="0" />
+IETF Audio/Video Transport Working Group
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Intended usage:">
+COMMON
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Restriction on usage:">
+<vspace blankLines="1" />
+This media type doesn't depend on the transport.
+</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Author:">
+<vspace blankLines="1" />
+Luca Barbato</t>
+
+<vspace blankLines="1" />
+
+<t hangText="Change controller:">
+<vspace blankLines="1" />
+IETF AVT Working Group delegated from the IESG</t>
+</list>
+
+</section>
+
+</section>
+
+<section anchor="SDP related considerations" title="SDP related considerations">
+<t>
+The following paragraphs defines the mapping of the parameters described in the IANA considerations section and their usage in the <xref target="rfc3264">Offer/Answer Model</xref>.
+</t>
+
+<section anchor="Mapping Media Type Parameters into SDP" title="Mapping Media Type Parameters into SDP"> 
+
+<t>
+The information carried in the Media Type media type specification has a
+specific mapping to fields in the <xref target="rfc4566">Session Description
+Protocol (SDP)</xref>, which is commonly used to describe RTP sessions.
+When SDP is used to specify sessions the mapping are as follows:
+</t>
+
+<vspace blankLines="1" />
+<list style="symbols">
+
+<t>The type name ("audio") goes in SDP "m=" as the media name.</t>
+<vspace blankLines="1" />
+
+<t>The subtype name ("vorbis") goes in SDP "a=rtpmap" as the encoding name.</t>
+<vspace blankLines="1" />
+
+<t>The parameter "rate" also goes in "a=rtpmap" as clock rate.</t>
+<vspace blankLines="1" />
+
+<t>The parameter "channels" also goes in "a=rtpmap" as channel count.</t>
+<vspace blankLines="1" />
+
+<t>The mandated parameters "delivery-method" and "configuration" MUST be
+included in the SDP "a=fmtp" attribute.</t>
+<vspace blankLines="1" />
+
+<t>The optional parameter "configuration-uri", when present, MUST be included
+in the SDP "a=fmtp" attribute and MUST follow the delivery-method that applies.</t>
+
+</list>
+
+<t>
+If the stream comprises chained Vorbis files and all of them are known in
+advance, the Configuration Packet for each file SHOULD be passed to the client
+using the configuration attribute.
+</t>
+
+<t>
+The URI specified in the configuration-uri attribute MUST point to a location
+where all of the Configuration Packets needed for the life of the session
+reside.
+</t>
+
+<t>
+The port value is specified by the server application bound to the address
+specified in the c= line. The bitrate value and channels specified in the
+rtpmap attribute MUST match the Vorbis sample rate value.  An example is found
+below.
+</t>
+
+<section anchor="SDP Example" title="SDP Example">
+<t>The following example shows a basic SDP single stream. The first
+configuration packet is inlined in the sdp, other configurations could be
+fetched at any time from the first provided uri using or all the known
+configuration could be downloaded using the second uri. The inline
+<xref target="rfc3548">base64</xref> configuration string is omitted because of
+the length.</t>
+
+<list style="empty">
+<t>c=IN IP4 192.0.2.1</t>
+<t>m=audio  RTP/AVP 98</t>
+<t>a=rtpmap:98 vorbis/44100/2</t>
+<t>a=fmtp:98 delivery-method=inline; configuration=base64string; delivery-method=out_band; configuration-uri=rtsp://path/to/the/resource; delivery-method=out_band; configuration-uri=http://another/path/to/resource/aggregate.bz2!8b6237eb5154a0ea12811a94e8e2697b3312bc6c;</t>
+</list>
+</section>
+
+
+<t>
+Note that the payload format (encoding) names are commonly shown in upper case.
+Media Type subtypes are commonly shown in lower case. These names are
+case-insensitive in both places.  Similarly, parameter names are
+case-insensitive both in Media Type types and in the default mapping to the SDP
+a=fmtp attribute. The exception regarding case sensitivity is the
+configuration-uri URI which MUST be regarded as being case sensitive. The
+a=fmtp line is a single line even if it is presented broken because of clarity.
+</t>
+
+</section>
+
+<section anchor="Usage with the SDP Offer/Answer Mode" title="Usage with the SDP Offer/Answer Model">
+
+<t>
+The only paramenter negotiable is the delivery method. All the others are
+declarative: the offer, as described in <xref target="rfc3264">An Offer/Answer
+Model Session Description Protocol</xref>, may contain a large number of
+delivery methods per single fmtp attribute, the answerer MUST remove every
+delivery-method and configuration-uri not supported. All the parameters MUST
+not be altered on answer otherwise.
+</t>
+
+</section>
+
+</section>
+
+<section anchor="Congestion Control" title="Congestion Control"> 
+
+<t>
+Vorbis clients SHOULD send regular receiver reports detailing congestion. A
+mechanism for dynamically downgrading the stream, known as bitrate peeling,
+will allow for a graceful backing off of the stream bitrate. This feature is
+not available at present so an alternative would be to redirect the client to
+a lower bitrate stream if one is available.
+</t>
+
+</section> 
+
+<section anchor="Examples" title="Examples">
+
+<t>
+The following examples are common usage patterns that MAY be applied in such
+situations, the main scope of this section is to explain better usage of the
+transmission vectors.
+</t>
+
+<section anchor="Stream Radio" title="Stream Radio">
+
+<t>This is one of the most common situation: one single server streaming
+content in multicast, the clients may start a session at random time. The
+content itself could be a mix of live stream, as the wj's voice, and stored
+streams as the music she plays.</t>
+
+<t>In this situation we don't know in advance how many codebooks we will use.
+The clients can join anytime and users expect to start listening to the content
+in a short time.</t>
+
+<t>On join the client will receive the current Configuration necessary to
+decode the current stream inlined in the SDP so that the decoding will start
+immediately after.</t>
+
+<t>When the streamed content changes the new Configuration is sent in-band
+before the actual stream, and the Configuration that has to be sent inline in
+the SDP updated. Since the in-band method is unreliable, an out of band
+fallback is provided.</t>
+
+<t>The client could choose to fetch the Configuration from the alternate source
+as soon as it discovers a Configuration packet got lost in-band or use
+<xref target="RFC3611">selective retransmission</xref>, if the server supports
+the feature.</t>
+
+<t>A serverside optimization would be to keep an hash list of the
+Configurations per session to avoid packing all of them and send the same
+Configuration with different Ident tags</t>
+
+<t>A clientside optimization would be to keep a tag list of the Configurations
+per session and don't process configuration packets already known.</t>
+
+</section>
+</section>
+
+<section anchor="Security Considerations" title="Security Considerations"> 
+<t>
+RTP packets using this payload format are subject to the security
+considerations discussed in the RTP specification 
+<xref target="rfc3550"></xref>.  This implies that the confidentiality of the
+media stream is achieved by using encryption. Because the data compression used
+with this payload format is applied end-to-end, encryption may be performed on
+the compressed data. Additional care MAY be needed for delivery methods that
+point to external resources, using secure protocols to fetch the configuration
+payloads. Where the size of a data block is set, care MUST be taken to prevent
+buffer overflows in the client applications.
+</t>
+
+</section> 
+
+<section anchor="Acknowledgments" title="Acknowledgments"> 
+
+<t>
+This document is a continuation of draft-moffitt-vorbis-rtp-00.txt and
+draft-kerr-avt-vorbis-rtp-04.txt.  The Media Type type section is a
+continuation of draft-short-avt-rtp-vorbis-mime-00.txt.
+</t>
+
+<t>
+Thanks to the AVT, Ogg Vorbis Communities / Xiph.org including Steve Casner,
+Aaron Colwell, Ross Finlayson, Fluendo, Ramon Garcia, Pascal Hennequin, Ralph
+Giles, Tor-Einar Jarnbjo, Colin Law, John Lazzaro, Jack Moffitt, Christopher
+Montgomery,  Colin Perkins, Barry Short, Mike Smith, Phil Kerr, Michael Sparks,
+Magnus Westerlund, David Barrett, Silvia Pfeiffer, Stefan Ehmann, Alessandro
+Salvatori. Politecnico di Torino (LS)³/IMG Group in particular Federico
+Ridolfo, Francesco Varano, Giampaolo Mancini, Dario Gallucci, Juan Carlos De Martin.
+</t>
+
+</section> 
+
+</middle>
+
+<back>
+
+<references title="Normative References">
+
+<reference anchor="rfc2119">
+<front>
+<title>Key words for use in RFCs to Indicate Requirement Levels </title>
+<author initials="S." surname="Bradner" fullname="Scott Bradner"></author>
+</front>
+<seriesInfo name="RFC" value="2119" />
+</reference>   
+
+<reference anchor="rfc3550">
+<front>
+<title>RTP: A Transport Protocol for real-time applications</title>
+<author initials="H." surname="Schulzrinne" fullname=""></author>
+<author initials="S." surname="Casner" fullname=""></author>
+<author initials="R." surname="Frederick" fullname=""></author>
+<author initials="V." surname="Jacobson" fullname=""></author>
+</front>
+<seriesInfo name="RFC" value="3550" />
+</reference> 
+
+<reference anchor="rfc3551">
+<front>
+<title>RTP Profile for Audio and Video Conferences with Minimal Control.</title>
+<author initials="H." surname="Schulzrinne" fullname=""></author>
+<author initials="S." surname="Casner" fullname=""></author>
+</front>
+<date month="July" year="2003" />
+<seriesInfo name="RFC" value="3551" />
+</reference> 
+
+<reference anchor='rfc3986'>
+<front>
+<title abbrev='URI Generic Syntax'>Uniform Resource Identifier (URI): Generic Syntax</title>
+<author initials='T.' surname='Berners-Lee' fullname='Tim Berners-Lee'>
+</author>
+<author initials='R.' surname='Fielding' fullname='Roy T. Fielding'>
+</author>
+<author initials='L.' surname='Masinter' fullname='Larry Masinter'>
+</author>
+</front>
+<date year='2005' month='January' />
+<seriesInfo name='RFC' value='3986' />
+</reference>
+
+<reference anchor='rfc4566'>
+
+<front>
+<title>SDP: Session Description Protocol</title>
+<author initials='M.' surname='Handley' fullname='M. Handley'>
+<organization /></author>
+<author initials='V.' surname='Jacobson' fullname='V. Jacobson'>
+<organization /></author>
+<author initials='C.' surname='Perkins' fullname='C. Perkins'>
+<organization /></author>
+<date year='2006' month='July' />
+</front>
+
+<seriesInfo name='RFC' value='4566' />
+<format type='TXT' octets='108820' target='ftp://ftp.isi.edu/in-notes/rfc4566.txt' />
+</reference>
+
+<reference anchor='rfc1191'>
+
+<front>
+<title>Path MTU discovery</title>
+<author initials='J.' surname='Mogul' fullname='Jeffrey Mogul'>
+<organization>Digital Equipment Corporation (DEC) , Western Research Laboratory</organization>
+<address>
+<email>mogul@decwrl.dec.com</email></address></author>
+<author initials='S.' surname='Deering' fullname='Steve Deering'>
+<organization>Xerox Palo Alto Research Center</organization>
+<address>
+<email>deering@xerox.com</email></address></author>
+<date year='1990' day='1' month='November' />
+</front>
+
+<seriesInfo name='RFC' value='1191' />
+<format type='TXT' octets='47936' target='ftp://ftp.isi.edu/in-notes/rfc1191.txt' />
+</reference>
+
+<reference anchor="rfc1981">
+<front>
+<title>Path MTU Discovery for IP version 6</title>
+<author initials="J." surname="McCann et al." fullname="J. McCann et al."></author>
+</front>
+<seriesInfo name="RFC" value="1981" />
+</reference>   
+
+<reference anchor="rfc3264">
+<front>
+<title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
+<author initials="J." surname="Rosenberg" fullname="Jonathan Rosenberg"></author>
+<author initials="H." surname="Schulzrinne" fullname="Henning Schulzrinne"></author>
+</front>
+<seriesInfo name="RFC" value="3264" />
+</reference>   
+
+<reference anchor="rfc3548">
+<front>
+<title>The Base16, Base32, and Base64 Data Encodings</title>
+<author initials="S." surname="Josefsson" fullname="Simon Josefsson"></author>
+</front>
+<seriesInfo name="RFC" value="3548" />
+</reference>
+<reference anchor="FIPS180">
+<front>
+<title>Secure Hash Standard</title>
+<author>
+<organization>National Institute of Standards and Technology</organization>
+</author>
+<date month="May" year="1993"/>
+</front>
+</reference>
+</references>
+
+<references title="Informative References">
+
+<reference anchor="rfc3533">
+<front>
+<title>The Ogg Encapsulation Format Version 0</title>
+<author initials="S." surname="Pfeiffer" fullname="Silvia Pfeiffer"></author>
+</front>
+<seriesInfo name="RFC" value="3533" />
+</reference>
+
+<reference anchor="libvorbis">
+<front>
+<title>libvorbis: Available from the Xiph website, http://www.xiph.org</title>
+</front>
+</reference>   
+
+<reference anchor="vorbis-spec-ref">
+<front>
+<title>Ogg Vorbis I specification:  Codec setup and packet decode.  Available from the Xiph website, http://www.xiph.org</title>
+</front>
+</reference>   
+
+<reference anchor="rfc1952">
+<front>
+<title>GZIP file format specification version 4.3</title>
+<author initials="P" surname="Deutsch" fullname="L. Peter Deutsch"></author>
+</front>
+<seriesInfo name="RFC" value="1952" />
+</reference>
+
+<reference anchor="RFC3611">
+<front>
+<title>RTP Control Protocol Extended Reports (RTCP XR)</title>
+<author initials="T." surname="Friedman" fullname="T. Friedman" />
+<author initials="R." surname="Caceres" fullname="R. Caceres" />
+<author initials="A." surname="Clark" fullname="A. Clark" />
+<date year="2003" month="November"/>
+</front>
+<seriesInfo name="RFC" value="3611"/>
+</reference>
+<reference anchor="BZ2">
+<front>
+
+<title>libbz2 and bzip2</title>
+<author initials="J" surname="Seward" fullname="Julian Seward" />
+</front>
+</reference>
+</references>
+</back>
+</rfc>
Index: /libvorbis-1.2.0/doc/floor1_inverse_dB_table.html
===================================================================
--- /libvorbis-1.2.0/doc/floor1_inverse_dB_table.html	(revision 16)
+++ /libvorbis-1.2.0/doc/floor1_inverse_dB_table.html	(revision 16)
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis I format specification: floor1_inverse_dB_table</h1>
+
+<p>The vector <tt>[floor1_inverse_dB_table]</tt> is a 256 element static
+lookup table consiting of the following values (read left to right
+then top to bottom):</p>
+
+<pre>
+  1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07, 
+  1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07, 
+  1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.1287530e-07, 
+  2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07, 
+  2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07, 
+  3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07, 
+  4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07, 
+  6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07, 
+  7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07, 
+  1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06, 
+  1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06, 
+  1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06, 
+  2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06, 
+  2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06, 
+  3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06, 
+  4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06, 
+  5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06, 
+  7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06, 
+  9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05, 
+  1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05, 
+  1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05, 
+  2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05, 
+  2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05, 
+  3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05, 
+  4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05, 
+  5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05, 
+  7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05, 
+  9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824, 
+  0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085, 
+  0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536, 
+  0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449, 
+  0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787, 
+  0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456, 
+  0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927, 
+  0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058, 
+  0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457, 
+  0.00092223983, 0.00098217216, 0.0010459992,  0.0011139742, 
+  0.0011863665,  0.0012634633,  0.0013455702,  0.0014330129, 
+  0.0015261382,  0.0016253153,  0.0017309374,  0.0018434235, 
+  0.0019632195,  0.0020908006,  0.0022266726,  0.0023713743, 
+  0.0025254795,  0.0026895994,  0.0028643847,  0.0030505286, 
+  0.0032487691,  0.0034598925,  0.0036847358,  0.0039241906, 
+  0.0041792066,  0.0044507950,  0.0047400328,  0.0050480668, 
+  0.0053761186,  0.0057254891,  0.0060975636,  0.0064938176, 
+  0.0069158225,  0.0073652516,  0.0078438871,  0.0083536271, 
+  0.0088964928,  0.009474637,   0.010090352,   0.010746080, 
+  0.011444421,   0.012188144,   0.012980198,   0.013823725, 
+  0.014722068,   0.015678791,   0.016697687,   0.017782797, 
+  0.018938423,   0.020169149,   0.021479854,   0.022875735, 
+  0.024362330,   0.025945531,   0.027631618,   0.029427276, 
+  0.031339626,   0.033376252,   0.035545228,   0.037855157, 
+  0.040315199,   0.042935108,   0.045725273,   0.048696758, 
+  0.051861348,   0.055231591,   0.058820850,   0.062643361, 
+  0.066714279,   0.071049749,   0.075666962,   0.080584227, 
+  0.085821044,   0.091398179,   0.097337747,   0.10366330, 
+  0.11039993,    0.11757434,    0.12521498,    0.13335215, 
+  0.14201813,    0.15124727,    0.16107617,    0.17154380, 
+  0.18269168,    0.19456402,    0.20720788,    0.22067342, 
+  0.23501402,    0.25028656,    0.26655159,    0.28387361, 
+  0.30232132,    0.32196786,    0.34289114,    0.36517414, 
+  0.38890521,    0.41417847,    0.44109412,    0.46975890, 
+  0.50028648,    0.53279791,    0.56742212,    0.60429640, 
+  0.64356699,    0.68538959,    0.72993007,    0.77736504, 
+  0.82788260,    0.88168307,    0.9389798,     1.
+</pre>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/framing.html
===================================================================
--- /libvorbis-1.2.0/doc/framing.html	(revision 16)
+++ /libvorbis-1.2.0/doc/framing.html	(revision 16)
@@ -0,0 +1,431 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg logical bitstream framing</h1>
+
+<h2>Ogg bitstreams</h2>
+
+<p>The Ogg transport bitstream is designed to provide framing, error
+protection and seeking structure for higher-level codec streams that
+consist of raw, unencapsulated data packets, such as the Vorbis audio
+codec or Theora video codec.</p>
+
+<h2>Application example: Vorbis</h2>
+
+<p>Vorbis encodes short-time blocks of PCM data into raw packets of
+bit-packed data. These raw packets may be used directly by transport
+mechanisms that provide their own framing and packet-separation
+mechanisms (such as UDP datagrams). For stream based storage (such as
+files) and transport (such as TCP streams or pipes), Vorbis uses the
+Ogg bitstream format to provide framing/sync, sync recapture
+after error, landmarks during seeking, and enough information to
+properly separate data back into packets at the original packet
+boundaries without relying on decoding to find packet boundaries.</p>
+
+<h2>Design constraints for Ogg bitstreams</h2>
+
+<ol>
+<li>True streaming; we must not need to seek to build a 100%
+  complete bitstream.</li>
+<li>Use no more than approximately 1-2% of bitstream bandwidth for
+  packet boundary marking, high-level framing, sync and seeking.</li>
+<li>Specification of absolute position within the original sample
+  stream.</li>
+<li>Simple mechanism to ease limited editing, such as a simplified
+  concatenation mechanism.</li>
+<li>Detection of corruption, recapture after error and direct, random
+  access to data at arbitrary positions in the bitstream.</li>
+</ol>
+
+<h2>Logical and Physical Bitstreams</h2>
+
+<p>A <em>logical</em> Ogg bitstream is a contiguous stream of
+sequential pages belonging only to the logical bitstream. A
+<em>physical</em> Ogg bitstream is constructed from one or more
+than one logical Ogg bitstream (the simplest physical bitstream
+is simply a single logical bitstream). We describe below the exact
+formatting of an Ogg logical bitstream. Combining logical
+bitstreams into more complex physical bitstreams is described in the
+<a href="oggstream.html">Ogg bitstream overview</a>. The exact
+mapping of raw Vorbis packets into a valid Ogg Vorbis physical
+bitstream is described in the Vorbis I Specification.</p>
+
+<h2>Bitstream structure</h2>
+
+<p>An Ogg stream is structured by dividing incoming packets into
+segments of up to 255 bytes and then wrapping a group of contiguous
+packet segments into a variable length page preceded by a page
+header. Both the header size and page size are variable; the page
+header contains sizing information and checksum data to determine
+header/page size and data integrity.</p>
+
+<p>The bitstream is captured (or recaptured) by looking for the beginning
+of a page, specifically the capture pattern. Once the capture pattern
+is found, the decoder verifies page sync and integrity by computing
+and comparing the checksum. At that point, the decoder can extract the
+packets themselves.</p>
+
+<h3>Packet segmentation</h3>
+
+<p>Packets are logically divided into multiple segments before encoding
+into a page. Note that the segmentation and fragmentation process is a
+logical one; it's used to compute page header values and the original
+page data need not be disturbed, even when a packet spans page
+boundaries.</p>
+
+<p>The raw packet is logically divided into [n] 255 byte segments and a
+last fractional segment of &lt; 255 bytes. A packet size may well
+consist only of the trailing fractional segment, and a fractional
+segment may be zero length. These values, called "lacing values" are
+then saved and placed into the header segment table.</p>
+
+<p>An example should make the basic concept clear:</p>
+
+<pre>
+<tt>
+raw packet:
+  ___________________________________________
+ |______________packet data__________________| 753 bytes
+
+lacing values for page header segment table: 255,255,243
+</tt>
+</pre>
+
+<p>We simply add the lacing values for the total size; the last lacing
+value for a packet is always the value that is less than 255. Note
+that this encoding both avoids imposing a maximum packet size as well
+as imposing minimum overhead on small packets (as opposed to, eg,
+simply using two bytes at the head of every packet and having a max
+packet size of 32k. Small packets (&lt;255, the typical case) are
+penalized with twice the segmentation overhead). Using the lacing
+values as suggested, small packets see the minimum possible
+byte-aligned overheade (1 byte) and large packets, over 512 bytes or
+so, see a fairly constant ~.5% overhead on encoding space.</p>
+
+<p>Note that a lacing value of 255 implies that a second lacing value
+follows in the packet, and a value of &lt; 255 marks the end of the
+packet after that many additional bytes. A packet of 255 bytes (or a
+multiple of 255 bytes) is terminated by a lacing value of 0:</p>
+
+<pre><tt>
+raw packet:
+  _______________________________
+ |________packet data____________|          255 bytes
+
+lacing values: 255, 0
+</tt></pre>
+
+<p>Note also that a 'nil' (zero length) packet is not an error; it
+consists of nothing more than a lacing value of zero in the header.</p>
+
+<h3>Packets spanning pages</h3>
+
+<p>Packets are not restricted to beginning and ending within a page,
+although individual segments are, by definition, required to do so.
+Packets are not restricted to a maximum size, although excessively
+large packets in the data stream are discouraged; the Ogg
+bitstream specification strongly recommends nominal page size of
+approximately 4-8kB (large packets are foreseen as being useful for
+initialization data at the beginning of a logical bitstream).</p>
+
+<p>After segmenting a packet, the encoder may decide not to place all the
+resulting segments into the current page; to do so, the encoder places
+the lacing values of the segments it wishes to belong to the current
+page into the current segment table, then finishes the page. The next
+page is begun with the first value in the segment table belonging to
+the next packet segment, thus continuing the packet (data in the
+packet body must also correspond properly to the lacing values in the
+spanned pages. The segment data in the first packet corresponding to
+the lacing values of the first page belong in that page; packet
+segments listed in the segment table of the following page must begin
+the page body of the subsequent page).</p>
+
+<p>The last mechanic to spanning a page boundary is to set the header
+flag in the new page to indicate that the first lacing value in the
+segment table continues rather than begins a packet; a header flag of
+0x01 is set to indicate a continued packet. Although mandatory, it
+is not actually algorithmically necessary; one could inspect the
+preceding segment table to determine if the packet is new or
+continued. Adding the information to the packet_header flag allows a
+simpler design (with no overhead) that needs only inspect the current
+page header after frame capture. This also allows faster error
+recovery in the event that the packet originates in a corrupt
+preceding page, implying that the previous page's segment table
+cannot be trusted.</p>
+
+<p>Note that a packet can span an arbitrary number of pages; the above
+spanning process is repeated for each spanned page boundary. Also a
+'zero termination' on a packet size that is an even multiple of 255
+must appear even if the lacing value appears in the next page as a
+zero-length continuation of the current packet. The header flag
+should be set to 0x01 to indicate that the packet spanned, even though
+the span is a nil case as far as data is concerned.</p>
+
+<p>The encoding looks odd, but is properly optimized for speed and the
+expected case of the majority of packets being between 50 and 200
+bytes (note that it is designed such that packets of wildly different
+sizes can be handled within the model; placing packet size
+restrictions on the encoder would have only slightly simplified design
+in page generation and increased overall encoder complexity).</p>
+
+<p>The main point behind tracking individual packets (and packet
+segments) is to allow more flexible encoding tricks that requiring
+explicit knowledge of packet size. An example is simple bandwidth
+limiting, implemented by simply truncating packets in the nominal case
+if the packet is arranged so that the least sensitive portion of the
+data comes last.</p>
+
+<h3>Page header</h3>
+
+<p>The headering mechanism is designed to avoid copying and re-assembly
+of the packet data (ie, making the packet segmentation process a
+logical one); the header can be generated directly from incoming
+packet data. The encoder buffers packet data until it finishes a
+complete page at which point it writes the header followed by the
+buffered packet segments.</p>
+
+<h4>capture_pattern</h4>
+
+<p>A header begins with a capture pattern that simplifies identifying
+pages; once the decoder has found the capture pattern it can do a more
+intensive job of verifying that it has in fact found a page boundary
+(as opposed to an inadvertent coincidence in the byte stream).</p>
+
+<pre><tt>
+ byte value
+
+  0  0x4f 'O'
+  1  0x67 'g'
+  2  0x67 'g'
+  3  0x53 'S'  
+</tt></pre>
+
+<h4>stream_structure_version</h4>
+
+<p>The capture pattern is followed by the stream structure revision:</p>
+
+<pre><tt>
+ byte value
+
+  4  0x00
+</tt></pre>
+ 
+<h4>header_type_flag</h4>
+  
+<p>The header type flag identifies this page's context in the bitstream:</p>
+
+<pre><tt>
+ byte value
+
+  5  bitflags: 0x01: unset = fresh packet
+	               set = continued packet
+	       0x02: unset = not first page of logical bitstream
+                       set = first page of logical bitstream (bos)
+	       0x04: unset = not last page of logical bitstream
+                       set = last page of logical bitstream (eos)
+</tt></pre>
+
+<h4>absolute granule position</h4>
+
+<p>(This is packed in the same way the rest of Ogg data is packed; LSb
+of LSB first. Note that the 'position' data specifies a 'sample'
+number (eg, in a CD quality sample is four octets, 16 bits for left
+and 16 bits for right; in video it would likely be the frame number.
+It is up to the specific codec in use to define the semantic meaning
+of the granule position value). The position specified is the total
+samples encoded after including all packets finished on this page
+(packets begun on this page but continuing on to the next page do not
+count). The rationale here is that the position specified in the
+frame header of the last page tells how long the data coded by the
+bitstream is. A truncated stream will still return the proper number
+of samples that can be decoded fully.</p>
+
+<p>A special value of '-1' (in two's complement) indicates that no packets
+finish on this page.</p>
+
+<pre><tt>
+ byte value
+
+  6  0xXX LSB
+  7  0xXX
+  8  0xXX
+  9  0xXX
+ 10  0xXX
+ 11  0xXX
+ 12  0xXX
+ 13  0xXX MSB
+</tt></pre>
+
+<h4>stream serial number</h4>
+ 
+<p>Ogg allows for separate logical bitstreams to be mixed at page
+granularity in a physical bitstream. The most common case would be
+sequential arrangement, but it is possible to interleave pages for
+two separate bitstreams to be decoded concurrently. The serial
+number is the means by which pages physical pages are associated with
+a particular logical stream. Each logical stream must have a unique
+serial number within a physical stream:</p>
+
+<pre><tt>
+ byte value
+
+ 14  0xXX LSB
+ 15  0xXX
+ 16  0xXX
+ 17  0xXX MSB
+</tt></pre>
+
+<h4>page sequence no</h4>
+
+<p>Page counter; lets us know if a page is lost (useful where packets
+span page boundaries).</p>
+
+<pre><tt>
+ byte value
+
+ 18  0xXX LSB
+ 19  0xXX
+ 20  0xXX
+ 21  0xXX MSB
+</tt></pre>
+
+<h4>page checksum</h4>
+     
+<p>32 bit CRC value (direct algorithm, initial val and final XOR = 0,
+generator polynomial=0x04c11db7). The value is computed over the
+entire header (with the CRC field in the header set to zero) and then
+continued over the page. The CRC field is then filled with the
+computed value.</p>
+
+<p>(A thorough discussion of CRC algorithms can be found in <a
+href="http://www.ross.net/crc/download/crc_v3.txt">"A
+Painless Guide to CRC Error Detection Algorithms"</a> by Ross
+Williams <a href="mailto:ross@ross.net">ross@ross.net</a>.)</p>
+
+<pre><tt>
+ byte value
+
+ 22  0xXX LSB
+ 23  0xXX
+ 24  0xXX
+ 25  0xXX MSB
+</tt></pre>
+
+<h4>page_segments</h4>
+
+<p>The number of segment entries to appear in the segment table. The
+maximum number of 255 segments (255 bytes each) sets the maximum
+possible physical page size at 65307 bytes or just under 64kB (thus
+we know that a header corrupted so as destroy sizing/alignment
+information will not cause a runaway bitstream. We'll read in the
+page according to the corrupted size information that's guaranteed to
+be a reasonable size regardless, notice the checksum mismatch, drop
+sync and then look for recapture).</p>
+
+<pre><tt>
+ byte value
+
+ 26 0x00-0xff (0-255)
+</tt></pre>
+
+<h4>segment_table (containing packet lacing values)</h4>
+
+<p>The lacing values for each packet segment physically appearing in
+this page are listed in contiguous order.</p>
+
+<pre><tt>
+ byte value
+
+ 27 0x00-0xff (0-255)
+ [...]
+ n  0x00-0xff (0-255, n=page_segments+26)
+</tt></pre>
+
+<p>Total page size is calculated directly from the known header size and
+lacing values in the segment table. Packet data segments follow
+immediately after the header.</p>
+
+<p>Page headers typically impose a flat .25-.5% space overhead assuming
+nominal ~8k page sizes. The segmentation table needed for exact
+packet recovery in the streaming layer adds approximately .5-1%
+nominal assuming expected encoder behavior in the 44.1kHz, 128kbps
+stereo encodings.</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/helper.html
===================================================================
--- /libvorbis-1.2.0/doc/helper.html	(revision 16)
+++ /libvorbis-1.2.0/doc/helper.html	(revision 16)
@@ -0,0 +1,239 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis I format specification: helper equations</h1>
+
+<h1>Overview</h1>
+
+<p>The equations below are used in multiple places by the Vorbis codec
+specification. Rather than cluttering up the main specification
+documents, they are defined here and linked in the main documents
+where appropriate.</p>
+
+<h2><a name="log">ilog</a></h2>
+
+<p>The "ilog(x)" function returns the position number (1 through n) of the
+highest set bit in the two's complement integer value
+<tt>[x]</tt>. Values of <tt>[x]</tt> less than zero are defined to return zero.</p>
+
+<pre>
+  1) [return_value] = 0;
+  2) if ( [x] is greater than zero ){
+      
+       3) increment [return_value];
+       4) logical shift [x] one bit to the right, padding the MSb with zero
+       5) repeat at step 2)
+
+     }
+
+   6) done
+</pre>
+
+<p>Examples:</p>
+
+<ul>
+<li>ilog(0) = 0;</li>
+<li>ilog(1) = 1;</li>
+<li>ilog(2) = 2;</li>
+<li>ilog(3) = 2;</li>
+<li>ilog(4) = 3;</li>
+<li>ilog(7) = 3;</li>
+<li>ilog(negative number) = 0;</li>
+</ul>
+
+<h2><a name="float32_unpack">float32_unpack</a></h2>
+
+<p>"float32_unpack(x)" is intended to translate the packed binary
+representation of a Vorbis codebook float value into the
+representation used by the decoder for floating point numbers. For
+purposes of this example, we will unpack a Vorbis float32 into a
+host-native floating point number.</p>
+
+<pre>
+  1) [mantissa] = [x] bitwise AND 0x1fffff (unsigned result)
+  2) [sign] = [x] bitwise AND 0x80000000 (unsigned result)
+  3) [exponent] = ( [x] bitwise AND 0x7fe00000) shifted right 21 bits (unsigned result)
+  4) if ( [sign] is nonzero ) then negate [mantissa]
+  5) return [mantissa] * ( 2 ^ ( [exponent] - 788 ) )
+</pre>
+
+<h2><a name="lookup1_values">lookup1_values</a></h2>
+
+<p>"lookup1_values(codebook_entries,codebook_dimensions)" is used to
+compute the correct length of the value index for a codebook VQ lookup
+table of lookup type 1. The values on this list are permuted to
+construct the VQ vector lookup table of size
+<tt>[codebook_entries]</tt>.</p>
+
+<p>The return value for this function is defined to be 'the greatest
+integer value for which <tt>[return_value] to the power of
+[codebook_dimensions] is less than or equal to
+[codebook_entries]</tt>'.</p>
+
+<h2><a name="low_neighbor">low_neighbor</a></h2>
+
+<p>"low_neighbor(v,x)" finds the position <i>n</i> in vector [v] of
+the greatest value scalar element for which <i>n</i> is less than
+<tt>[x]</tt> and <tt>vector [v] element <i>n</i> is less
+than vector [v] element [x]</tt>.</p>
+
+<h2><a name="high_neighbor">high_neighbor</a></h2>
+
+<p>"high_neighbor(v,x)" finds the position <i>n</i> in vector [v] of
+the lowest value scalar element for which <i>n</i> is less than
+<tt>[x]</tt> and <tt>vector [v] element <i>n</i> is greater
+than vector [v] element [x]</tt>.</p>
+
+<h2><a name="render_point">render_point</a></h2>
+
+<p>"render_point(x0,y0,x1,y1,X)" is used to find the Y value at point X
+along the line specified by x0, x1, y0 and y1. This function uses an
+integer algorithm to solve for the point directly without calculating
+intervening values along the line.</p>
+
+<pre>
+  1)  [dy] = [y1] - [y0]
+  2) [adx] = [x1] - [x0]
+  3) [ady] = absolute value of [dy]
+  4) [err] = [ady] * ([X] - [x0])
+  5) [off] = [err] / [adx] using integer division
+  6) if ( [dy] is less than zero ) {
+
+       7) [Y] = [y0] - [off]
+
+     } else {
+
+       8) [Y] = [y0] + [off]
+  
+     }
+
+  9) done
+</pre>
+
+<h2><a name="render_line">render_line</a></h2>
+
+<p>Floor decode type one uses the integer line drawing algorithm of
+"render_line(x0, y0, x1, y1, v)" to construct an integer floor
+curve for contiguous piecewise line segments. Note that it has not
+been relevant elsewhere, but here we must define integer division as
+rounding division of both positive and negative numbers toward zero.</p>
+
+<pre>
+  1)   [dy] = [y1] - [y0]
+  2)  [adx] = [x1] - [x0]
+  3)  [ady] = absolute value of [dy]
+  4) [base] = [dy] / [adx] using integer division
+  5)    [x] = [x0]
+  6)    [y] = [y0]
+  7)  [err] = 0
+
+  8) if ( [dy] is less than 0 ) {
+
+        9) [sy] = [base] - 1
+
+     } else {
+
+       10) [sy] = [base] + 1
+
+     }
+
+ 11) [ady] = [ady] - (absolute value of [base]) * [adx]
+ 12) vector [v] element [x] = [y]
+
+ 13) iterate [x] over the range [x0]+1 ... [x1]-1 {
+
+       14) [err] = [err] + [ady];
+       15) if ( [err] >= [adx] ) {
+
+             15) [err] = [err] - [adx]
+             16)   [y] = [y] + [sy]
+
+           } else {
+
+             17) [y] = [y] + [base]
+   
+           }
+
+       18) vector [v] element [x] = [y]
+
+     }
+</pre>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/index.html
===================================================================
--- /libvorbis-1.2.0/doc/index.html	(revision 16)
+++ /libvorbis-1.2.0/doc/index.html	(revision 16)
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis Documentation</h1>
+
+<h2>Vorbis technical discussion documents</h2>
+<ul>
+<li><a href="vorbis-fidelity.html">Fidelity measurement terminology</a></li>
+<li><a href="stereo.html">Vorbis channel coupling and stereo-specific application</a></li>
+</ul>
+
+<h2>Ogg Vorbis I specification</h2>
+
+<ul>
+<li>Vorbis I specification [<a href="Vorbis_I_spec.html">html</a>]
+  [<a href="Vorbis_I_spec.pdf">pdf</a>]</li>
+<li><a href="v-comment.html">Vorbis comment header specification</a></li>
+<li><a href="draft-ietf-avt-rtp-vorbis-06.txt">Embedding Vorbis encoded 
+audio in an RTP payload format</a></li>
+</ul>
+
+<h2>Ogg Vorbis programming documents</h2>
+
+<ul>
+<li>Programming with libvorbis</li>
+<li><a href="vorbisfile/index.html">Programming with vorbisfile</a></li>
+<li><a href="vorbisenc/index.html">Programming with vorbisenc</a></li>
+</ul>
+
+<h2>Ogg bitstream documentation</h2>
+
+<ul>
+<li><a href="oggstream.html">Ogg bitstream overview</a></li>
+<li><a href="framing.html">Ogg logical bitstream and framing spec</a></li>
+</ul>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2006 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/oggstream.html
===================================================================
--- /libvorbis-1.2.0/doc/oggstream.html	(revision 16)
+++ /libvorbis-1.2.0/doc/oggstream.html	(revision 16)
@@ -0,0 +1,234 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg logical and physical bitstream overview</h1>
+
+<h2>Ogg bitstreams</h2>
+
+<p>Ogg codecs use octet vectors of raw, compressed data
+(<em>packets</em>). These compressed packets do not have any
+high-level structure or boundary information; strung together, they
+appear to be streams of random bytes with no landmarks.</p>
+
+<p>Raw packets may be used directly by transport mechanisms that provide
+their own framing and packet-separation mechanisms (such as UDP
+datagrams). For stream based storage (such as files) and transport
+(such as TCP streams or pipes), Vorbis and other future Ogg codecs use
+the Ogg bitstream format to provide framing/sync, sync recapture
+after error, landmarks during seeking, and enough information to
+properly separate data back into packets at the original packet
+boundaries without relying on decoding to find packet boundaries.</p>
+
+<h2>Logical and physical bitstreams</h2>
+
+<p>Raw packets are grouped and encoded into contiguous pages of
+structured bitstream data called <em>logical bitstreams</em>. A
+logical bitstream consists of pages, in order, belonging to a single
+codec instance. Each page is a self contained entity (although it is
+possible that a packet may be split and encoded across one or more
+pages); that is, the page decode mechanism is designed to recognize,
+verify and handle single pages at a time from the overall bitstream.</p>
+
+<p>Multiple logical bitstreams can be combined (with restrictions) into a
+single <em>physical bitstream</em>. A physical bitstream consists of
+multiple logical bitstreams multiplexed at the page level and may
+include a 'meta-header' at the beginning of the multiplexed logical
+stream that serves as identification magic. Whole pages are taken in
+order from multiple logical bitstreams and combined into a single
+physical stream of pages. The decoder reconstructs the original
+logical bitstreams from the physical bitstream by taking the pages in
+order from the physical bitstream and redirecting them into the
+appropriate logical decoding entity. The simplest physical bitstream
+is a single, unmultiplexed logical bitstream with no meta-header; this
+is referred to as a 'degenerate stream'.</p>
+
+<p><a href="framing.html">Ogg Logical Bitstream Framing</a> discusses
+the page format of an Ogg bitstream, the packet coding process
+and logical bitstreams in detail. The remainder of this document
+specifies requirements for constructing finished, physical Ogg
+bitstreams.</p>
+
+<h2>Mapping Restrictions</h2>
+
+<p>Logical bitstreams may not be mapped/multiplexed into physical
+bitstreams without restriction. Here we discuss design restrictions
+on Ogg physical bitstreams in general, mostly to introduce
+design rationale. Each 'media' format defines its own (generally more
+restrictive) mapping. An 'Ogg Vorbis Audio Bitstream', for example, has a
+specific physical bitstream structure.
+An 'Ogg A/V' bitstream (not currently specified) will also mandate a
+specific, restricted physical bitstream format.</p>
+
+<h3>additional end-to-end structure</h3>
+
+<p>The <a href="framing.html">framing specification</a> defines
+'beginning of stream' and 'end of stream' page markers via a header
+flag (it is possible for a stream to consist of a single page). A
+stream always consists of an integer number of pages, an easy
+requirement given the variable size nature of pages.</p>
+
+<p>In addition to the header flag marking the first and last pages of a
+logical bitstream, the first page of an Ogg bitstream obeys
+additional restrictions. Each individual media mapping specifies its
+own implementation details regarding these restrictions.</p>
+
+<p>The first page of a logical Ogg bitstream consists of a single,
+small 'initial header' packet that includes sufficient information to
+identify the exact CODEC type and media requirements of the logical
+bitstream. The intent of this restriction is to simplify identifying
+the bitstream type and content; for a given media type (or across all
+Ogg media types) we can know that we only need a small, fixed
+amount of data to uniquely identify the bitstream type.</p>
+
+<p>As an example, Ogg Vorbis places the name and revision of the Vorbis
+CODEC, the audio rate and the audio quality into this initial header,
+thus simplifying vastly the certain identification of an Ogg Vorbis
+audio bitstream.</p>
+
+<h3>sequential multiplexing (chaining)</h3>
+
+<p>The simplest form of logical bitstream multiplexing is concatenation
+(<em>chaining</em>). Complete logical bitstreams are strung
+one-after-another in order. The bitstreams do not overlap; the final
+page of a given logical bitstream is immediately followed by the
+initial page of the next. Chaining is the only logical->physical
+mapping allowed by Ogg Vorbis.</p>
+
+<p>Each chained logical bitstream must have a unique serial number within
+the scope of the physical bitstream.</p>
+
+<h3>concurrent multiplexing (grouping)</h3>
+
+<p>Logical bitstreams may also be multiplexed 'in parallel'
+(<em>grouped</em>). An example of grouping would be to allow
+streaming of separate audio and video streams, using different codecs
+and different logical bitstreams, in the same physical bitstream.
+Whole pages from multiple logical bitstreams are mixed together.</p>
+
+<p>The initial pages of each logical bitstream must appear first; the
+media mapping specifies the order of the initial pages. For example,
+Ogg A/V will eventually specify an Ogg video bitstream with
+audio. The mapping may specify that the physical bitstream must begin
+with the initial page of a logical video bitstream, followed by the
+initial page of an audio stream. Unlike initial pages, terminal pages
+for the logical bitstreams need not all occur contiguously (although a
+specific media mapping may require this; it is not mandated by the
+generic Ogg stream spec). Terminal pages may be 'nil' pages,
+that is, pages containing no content but simply a page header with
+position information and the 'last page of bitstream' flag set in the
+page header.</p>
+
+<p>Each grouped bitstream must have a unique serial number within the
+scope of the physical bitstream.</p>
+
+<h3>sequential and concurrent multiplexing</h3>
+
+<p>Groups of concurrently multiplexed bitstreams may be chained
+consecutively. Such a physical bitstream obeys all the rules of both
+grouped and chained multiplexed streams; the groups, when unchained ,
+must stand on their own as a valid concurrently multiplexed
+bitstream.</p>
+
+<h3>multiplexing example</h3>
+
+<p>Below, we present an example of a grouped and chained bitstream:</p>
+
+<p><img src="stream.png" alt="stream"/></p>
+
+<p>In this example, we see pages from five total logical bitstreams
+multiplexed into a physical bitstream. Note the following
+characteristics:</p>
+
+<ol>
+<li>Grouped bitstreams begin together; all of the initial pages
+must appear before any data pages. When concurrently multiplexed
+groups are chained, the new group does not begin until all the
+bitstreams in the previous group have terminated.</li>
+
+<li>The pages of concurrently multiplexed bitstreams need not conform
+to a regular order; the only requirement is that page <tt>n</tt> of a
+logical bitstream follow page <tt>n-1</tt> in the physical bitstream.
+There are no restrictions on intervening pages belonging to other
+logical bitstreams. (Tying page appearance to bitrate demands is one
+logical strategy, ie, the page appears at the chronological point
+where decode requires more information).</li>
+</ol>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/programming.html
===================================================================
--- /libvorbis-1.2.0/doc/programming.html	(revision 16)
+++ /libvorbis-1.2.0/doc/programming.html	(revision 16)
@@ -0,0 +1,554 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Programming with Xiph.org <tt>libvorbis</tt></h1>
+
+<h2>Description</h2> 
+
+<p>Libvorbis is the Xiph.org Foundation's portable Ogg Vorbis CODEC
+implemented as a programmatic library. Libvorbis provides primitives
+to handle framing and manipulation of Ogg bitstreams (used by the
+Vorbis for streaming), a full analysis (encoding) interface as well as
+packet decoding and synthesis for playback.</p>
+
+<p>The libvorbis library does not provide any system interface; a
+full-featured demonstration player included with the library
+distribtion provides example code for a variety of system interfaces
+as well as a working example of using libvorbis in production code.</p>
+
+<h2>Encoding Overview</h2>
+
+<h2>Decoding Overview</h2>
+
+<p>Decoding a bitstream with libvorbis follows roughly the following
+steps:</p>
+
+<ol>
+<li>Frame the incoming bitstream into pages</li>
+<li>Sort the pages by logical bitstream and buffer then into logical streams</li>
+<li>Decompose the logical streams into raw packets</li>
+<li>Reconstruct segments of the original data from each packet</li>
+<li>Glue the reconstructed segments back into a decoded stream</li>
+</ol>
+
+<h3>Framing</h3>
+
+<p>An Ogg bitstream is logically arranged into pages, but to decode
+the pages, we have to find them first. The raw bitstream is first fed
+into an <tt>ogg_sync_state</tt> buffer using <tt>ogg_sync_buffer()</tt>
+and <tt>ogg_sync_wrote()</tt>. After each block we submit to the sync
+buffer, we should check to see if we can frame and extract a complete
+page or pages using <tt>ogg_sync_pageout()</tt>. Extra pages are
+buffered; allowing them to build up in the <tt>ogg_sync_state</tt>
+buffer will eventually exhaust memory.</p>
+
+<p>The Ogg pages returned from <tt>ogg_sync_pageout</tt> need not be
+decoded further to be used as landmarks in seeking; seeking can be
+either a rough process of simply jumping to approximately intuited
+portions of the bitstream, or it can be a precise bisection process
+that captures pages and inspects data position. When seeking,
+however, sequential multiplexing (chaining) must be accounted for;
+beginning play in a new logical bitstream requires initializing a
+synthesis engine with the headers from that bitstream. Vorbis
+bitstreams do not make use of concurent multiplexing (grouping).</p>
+
+<h3>Sorting</h3>
+
+<p>The pages produced by <tt>ogg_sync_pageout</tt> are then sorted by
+serial number to seperate logical bitstreams. Initialize logical
+bitstream buffers (<tt>og_stream_state</tt>) using
+<tt>ogg_stream_init()</tt>. Pages are submitted to the matching
+logical bitstream buffer using <tt>ogg_stream_pagein</tt>; the serial
+number of the page and the stream buffer must match, or the page will
+be rejected. A page submitted out of sequence will simply be noted,
+and in the course of outputting packets, the hole will be flagged
+(<tt>ogg_sync_pageout</tt> and <tt>ogg_stream_packetout</tt> will
+return a negative value at positions where they had to recapture the
+stream).</p>
+
+<h3>Extracting packets</h3>
+
+<p>After submitting page[s] to a logical stream, read available packets
+using <tt>ogg_stream_packetout</tt>.</p>
+
+<h3>Decoding packets</h3>
+
+<h3>Reassembling data segments</h3>
+
+<h2>Ogg Bitstream Manipulation Structures</h2>
+
+<p>Two of the Ogg bitstream data structures are intended to be
+transparent to the developer; the fields should be used directly.</p>
+
+<h3>ogg_packet</h3>
+
+<pre>
+typedef struct {
+  unsigned char *packet;
+  long  bytes;
+  long  b_o_s;
+  long  e_o_s;
+
+  size64 granulepos;
+
+} ogg_packet;
+</pre>
+
+<dl>
+<dt>packet:</dt>
+<dd>a pointer to the byte data of the raw packet</dd>
+<dt>bytes:</dt>
+<dd>the size of the packet' raw data</dd>
+<dt>b_o_s:</dt>
+<dd>beginning of stream; nonzero if this is the first packet of 
+  the logical bitstream</dd>
+<dt>e_o_s:</dt>
+<dd>end of stream; nonzero if this is the last packet of the 
+  logical bitstream</dd>
+<dt>granulepos:</dt>
+<dd>the absolute position of this packet in the original 
+  uncompressed data stream.</dd>
+</dl>
+
+<h4>encoding notes</h4>
+
+<p>The encoder is responsible for setting all of
+the fields of the packet to appropriate values before submission to
+<tt>ogg_stream_packetin()</tt>; however, it is noted that the value in
+<tt>b_o_s</tt> is ignored; the first page produced from a given
+<tt>ogg_stream_state</tt> structure will be stamped as the initial
+page. <tt>e_o_s</tt>, however, must be set; this is the means by
+which the stream encoding primitives handle end of stream and cleanup.</p>
+
+<h4>decoding notes</h4>
+
+<p><tt>ogg_stream_packetout()</tt> sets the fields
+to appropriate values. Note that granulepos will be >= 0 only in the
+case that the given packet actually represents that position (ie, only
+the last packet completed on any page will have a meaningful
+<tt>granulepos</tt>). Intervening frames will see <tt>granulepos</tt> set
+to -1.</p>
+
+<h3>ogg_page</h3>
+
+<pre>
+typedef struct {
+  unsigned char *header;
+  long header_len;
+  unsigned char *body;
+  long body_len;
+} ogg_page;
+</pre>
+
+<dl>
+<dt>header:</dt>
+<dd>pointer to the page header data</dd>
+<dt>header_len:</dt>
+<dd>length of the page header in bytes</dd>
+<dt>body:</dt>
+<dd>pointer to the page body</dd>
+<dt>body_len:</dt>
+<dd>length of the page body</dd>
+</dl>
+
+<p>Note that although the <tt>header</tt> and <tt>body</tt> pointers do
+not necessarily point into a single contiguous page vector, the page
+body must immediately follow the header in the bitstream.</p>
+
+<h2>Ogg Bitstream Manipulation Functions</h2>
+
+<h3>
+int    ogg_page_bos(ogg_page *og);
+</h3>
+
+<p>Returns the 'beginning of stream' flag for the given Ogg page. The
+beginning of stream flag is set on the initial page of a logical
+bitstream.</p>
+
+<p>Zero indicates the flag is cleared (this is not the initial page of a
+logical bitstream). Nonzero indicates the flag is set (this is the
+initial page of a logical bitstream).</p>
+
+<h3>
+int    ogg_page_continued(ogg_page *og);
+</h3>
+
+<p>Returns the 'packet continued' flag for the given Ogg page. The packet
+continued flag indicates whether or not the body data of this page
+begins with packet continued from a preceeding page.</p>
+
+<p>Zero (unset) indicates that the body data begins with a new packet.
+Nonzero (set) indicates that the first packet data on the page is a
+continuation from the preceeding page.</p>
+
+<h3>
+int    ogg_page_eos(ogg_page *og);
+</h3>
+
+<p>Returns the 'end of stream' flag for a give Ogg page. The end of page
+flag is set on the last (terminal) page of a logical bitstream.</p>
+
+<p>Zero (unset) indicates that this is not the last page of a logical
+bitstream. Nonzero (set) indicates that this is the last page of a
+logical bitstream and that no addiitonal pages belonging to this
+bitstream may follow.</p>
+
+<h3>
+size64 ogg_page_granulepos(ogg_page *og);
+</h3>
+
+<p>Returns the position of this page as an absolute position within the
+original uncompressed data. The position, as returned, is 'frames
+encoded to date up to and including the last whole packet on this
+page'. Partial packets begun on this page but continued to the
+following page are not included. If no packet ends on this page, the
+frame position value will be equal to the frame position value of the
+preceeding page. If none of the original uncompressed data is yet
+represented in the logical bitstream (for example, the first page of a
+bitstream consists only of a header packet; this packet encodes only
+metadata), the value shall be zero.</p>
+
+<p>The units of the framenumber are determined by media mapping. A
+vorbis audio bitstream, for example, defines one frame to be the
+channel values from a single sampling period (eg, a 16 bit stereo
+bitstream consists of two samples of two bytes for a total of four
+bytes, thus a frame would be four bytes). A video stream defines one
+frame to be a single frame of video.</p>
+
+<h3>
+int    ogg_page_pageno(ogg_page *og);
+</h3>
+
+<p>Returns the sequential page number of the given Ogg page. The first
+page in a logical bitstream is numbered zero; following pages are
+numbered in increasing monotonic order.</p>
+
+<h3>
+int    ogg_page_serialno(ogg_page *og);
+</h3>
+
+<p>Returns the serial number of the given Ogg page. The serial number is
+used as a handle to distinguish various logical bitstreams in a
+physical Ogg bitstresm. Every logical bitstream within a
+physical bitstream must use a unique (within the scope of the physical
+bitstream) serial number, which is stamped on all bitstream pages.</p>
+
+<h3>
+int    ogg_page_version(ogg_page *og);
+</h3>
+
+<p>Returns the revision of the Ogg bitstream structure of the given page.
+Currently, the only permitted number is zero. Later revisions of the
+bitstream spec will increment this version should any changes be
+incompatable.</p>
+
+<h3>
+int    ogg_stream_clear(ogg_stream_state *os);
+</h3>
+
+<p>Clears and deallocates the internal storage of the given Ogg stream.
+After clearing, the stream structure is not initialized for use;
+<tt>ogg_stream_init</tt> must be called to reinitialize for use.
+Use <tt>ogg_stream_reset</tt> to reset the stream state
+to a fresh, intiialized state.</p>
+
+<p><tt>ogg_stream_clear</tt> does not call <tt>free()</tt> on the pointer
+<tt>os</tt>, allowing use of this call on stream structures in static
+or automatic storage. <tt>ogg_stream_destroy</tt>is a complimentary
+function that frees the pointer as well.</p>
+
+<p>Returns zero on success and non-zero on failure. This function always
+succeeds.</p>
+
+<h3>
+int    ogg_stream_destroy(ogg_stream_state *os);
+</h3>
+
+<p>Clears and deallocates the internal storage of the given Ogg stream,
+then frees the storage associated with the pointer <tt>os</tt>.</p>
+
+<p><tt>ogg_stream_clear</tt> does not call <tt>free()</tt> on the pointer
+<tt>os</tt>, allowing use of that call on stream structures in static
+or automatic storage.</p>
+
+<p>Returns zero on success and non-zero on failure. This function always
+succeeds.</p>
+
+<h3>
+int    ogg_stream_init(ogg_stream_state *os,int serialno);
+</h3>
+
+<p>Initialize the storage associated with <tt>os</tt> for use as an Ogg
+stream. This call is used to initialize a stream for both encode and
+decode. The given serial number is the serial number that will be
+stamped on pages of the produced bitstream (during encode), or used as
+a check that pages match (during decode).</p>
+
+<p>Returns zero on success, nonzero on failure.</p>
+
+<h3>
+int    ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
+</h3>
+
+<p>Used during encoding to add the given raw packet to the given Ogg
+bitstream. The contents of <tt>op</tt> are copied;
+<tt>ogg_stream_packetin</tt> does not retain any pointers into
+<tt>op</tt>'s storage. The encoding proccess buffers incoming packets
+until enough packets have been assembled to form an entire page;
+<tt>ogg_stream_pageout</tt> is used to read complete pages.</p>
+
+<p>Returns zero on success, nonzero on failure.</p>
+
+<h3>
+int    ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
+</h3>
+
+<p>Used during decoding to read raw packets from the given logical
+bitstream. <tt>ogg_stream_packetout</tt> will only return complete
+packets for which checksumming indicates no corruption. The size and
+contents of the packet exactly match those given in the encoding
+process. </p>
+
+<p>Returns zero if the next packet is not ready to be read (not buffered
+or incomplete), positive if it returned a complete packet in
+<tt>op</tt> and negative if there is a gap, extra bytes or corruption
+at this position in the bitstream (essentially that the bitstream had
+to be recaptured). A negative value is not necessarily an error. It
+would be a common occurence when seeking, for example, which requires
+recapture of the bitstream at the position decoding continued.</p>
+
+<p>If the return value is positive, <tt>ogg_stream_packetout</tt> placed
+a packet in <tt>op</tt>. The data in <tt>op</tt> points to static
+storage that is valid until the next call to
+<tt>ogg_stream_pagein</tt>, <tt>ogg_stream_clear</tt>,
+<tt>ogg_stream_reset</tt>, or <tt>ogg_stream_destroy</tt>. The
+pointers are not invalidated by more calls to
+<tt>ogg_stream_packetout</tt>.</p>
+
+<h3>
+int    ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
+</h3>
+
+<p>Used during decoding to buffer the given complete, pre-verified page
+for decoding into raw Ogg packets. The given page must be framed,
+normally produced by <tt>ogg_sync_pageout</tt>, and from the logical
+bitstream associated with <tt>os</tt> (the serial numbers must match).
+The contents of the given page are copied; <tt>ogg_stream_pagein</tt>
+retains no pointers into <tt>og</tt> storage.</p>
+
+<p>Returns zero on success and non-zero on failure.</p>
+
+<h3>
+int    ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
+</h3>
+
+<p>Used during encode to read complete pages from the stream buffer. The
+returned page is ready for sending out to the real world.</p>
+
+<p>Returns zero if there is no complete page ready for reading. Returns
+nonzero when it has placed data for a complete page into
+<tt>og</tt>. Note that the storage returned in og points into internal
+storage; the pointers in <tt>og</tt> are valid until the next call to
+<tt>ogg_stream_pageout</tt>, <tt>ogg_stream_packetin</tt>,
+<tt>ogg_stream_reset</tt>, <tt>ogg_stream_clear</tt> or
+<tt>ogg_stream_destroy</tt>.</p>
+
+<h3>
+int    ogg_stream_reset(ogg_stream_state *os);
+</h3>
+
+<p>Resets the given stream's state to that of a blank, unused stream;
+this may be used during encode or decode.</p>
+
+<p>Note that if used during encode, it does not alter the stream's serial
+number. In addition, the next page produced during encoding will be
+marked as the 'initial' page of the logical bitstream.</p>
+
+<p>When used during decode, this simply clears the data buffer of any
+pending pages. Beginning and end of stream cues are read from the
+bitstream and are unaffected by reset.</p>
+
+<p>Returns zero on success and non-zero on failure. This function always
+succeeds.</p>
+
+<h3>
+char  *ogg_sync_buffer(ogg_sync_state *oy, long size);
+</h3>
+
+<p>This call is used to buffer a raw bitstream for framing and
+verification. <tt>ogg_sync_buffer</tt> handles stream capture and
+recapture, checksumming, and division into Ogg pages (as required by
+<tt>ogg_stream_pagein</tt>).</p>
+
+<p><tt>ogg_sync_buffer</tt> exposes a buffer area into which the decoder
+copies the next (up to) <tt>size</tt> bytes. We expose the buffer
+(rather than taking a buffer) in order to avoid an extra copy many
+uses; this way, for example, <tt>read()</tt> can transfer data
+directly into the stream buffer without first needing to place it in
+temporary storage.</p>
+
+<p>Returns a pointer into <tt>oy</tt>'s internal bitstream sync buffer;
+the remaining space in the sync buffer is at least <tt>size</tt>
+bytes. The decoder need not write all of <tt>size</tt> bytes;
+<tt>ogg_sync_wrote</tt> is used to inform the engine how many bytes
+were actually written. Use of <tt>ogg_sync_wrote</tt> after writing
+into the exposed buffer is mandantory.</p>
+
+<h3>
+int    ogg_sync_clear(ogg_sync_state *oy);
+</h3>
+
+<p><tt>ogg_sync_clear</tt>
+clears and deallocates the internal storage of the given Ogg sync
+buffer. After clearing, the sync structure is not initialized for
+use; <tt>ogg_sync_init</tt> must be called to reinitialize for use.
+Use <tt>ogg_sync_reset</tt> to reset the sync state and buffer to a
+fresh, intiialized state.</p>
+
+<p><tt>ogg_sync_clear</tt> does not call <tt>free()</tt> on the pointer
+<tt>oy</tt>, allowing use of this call on sync structures in static
+or automatic storage. <tt>ogg_sync_destroy</tt>is a complimentary
+function that frees the pointer as well.</p>
+
+<p>Returns zero on success and non-zero on failure. This function always
+succeeds.</p>
+
+<h3>
+int    ogg_sync_destroy(ogg_sync_state *oy);
+</h3>
+
+<p>Clears and deallocates the internal storage of the given Ogg sync
+buffer, then frees the storage associated with the pointer
+<tt>oy</tt>.</p>
+
+<p><tt>ogg_sync_clear</tt> does not call <tt>free()</tt> on the pointer
+<tt>oy</tt>, allowing use of that call on stream structures in static
+or automatic storage.</p>
+
+<p>Returns zero on success and non-zero on failure. This function always
+succeeds.</p>
+
+<h3>
+int    ogg_sync_init(ogg_sync_state *oy);
+</h3>
+
+<p>Initializes the sync buffer <tt>oy</tt> for use.</p>
+
+<p>Returns zero on success and non-zero on failure. This function always
+succeeds.</p>
+
+<h3>
+int    ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
+</h3>
+
+<p>Reads complete, framed, verified Ogg pages from the sync buffer,
+placing the page data in <tt>og</tt>.</p>
+
+<p>Returns zero when there's no complete pages buffered for
+retrieval. Returns negative when a loss of sync or recapture occurred
+(this is not necessarily an error; recapture would be required after
+seeking, for example). Returns positive when a page is returned in
+<tt>og</tt>. Note that the data in <tt>og</tt> points into the sync
+buffer storage; the pointers are valid until the next call to
+<tt>ogg_sync_buffer</tt>, <tt>ogg_sync_clear</tt>,
+<tt>ogg_sync_destroy</tt> or <tt>ogg_sync_reset</tt>.</p>
+
+<h3>
+int    ogg_sync_reset(ogg_sync_state *oy);
+</h3>
+
+<p><tt>ogg_sync_reset</tt> resets the sync state in <tt>oy</tt> to a
+clean, empty state. This is useful, for example, when seeking to a
+new location in a bitstream.</p>
+
+<p>Returns zero on success, nonzero on failure.</p>
+
+<h3>
+int    ogg_sync_wrote(ogg_sync_state *oy, long bytes);
+</h3>
+
+<p>Used to inform the sync state as to how many bytes were actually
+written into the exposed sync buffer. It must be equal to or less
+than the size of the buffer requested.</p>
+
+<p>Returns zero on success and non-zero on failure; failure occurs only
+when the number of bytes written were larger than the buffer.</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/stereo.html
===================================================================
--- /libvorbis-1.2.0/doc/stereo.html	(revision 16)
+++ /libvorbis-1.2.0/doc/stereo.html	(revision 16)
@@ -0,0 +1,418 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a, h4, h4 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis stereo-specific channel coupling discussion</h1>
+
+<h2>Abstract</h2>
+
+<p>The Vorbis audio CODEC provides a channel coupling
+mechanisms designed to reduce effective bitrate by both eliminating
+interchannel redundancy and eliminating stereo image information
+labeled inaudible or undesirable according to spatial psychoacoustic
+models. This document describes both the mechanical coupling
+mechanisms available within the Vorbis specification, as well as the
+specific stereo coupling models used by the reference
+<tt>libvorbis</tt> codec provided by xiph.org.</p>
+
+<h2>Mechanisms</h2>
+
+<p>In encoder release beta 4 and earlier, Vorbis supported multiple
+channel encoding, but the channels were encoded entirely separately
+with no cross-analysis or redundancy elimination between channels.
+This multichannel strategy is very similar to the mp3's <em>dual
+stereo</em> mode and Vorbis uses the same name for its analogous
+uncoupled multichannel modes.</p>
+
+<p>However, the Vorbis spec provides for, and Vorbis release 1.0 rc1 and
+later implement a coupled channel strategy. Vorbis has two specific
+mechanisms that may be used alone or in conjunction to implement
+channel coupling. The first is <em>channel interleaving</em> via
+residue backend type 2, and the second is <em>square polar
+mapping</em>. These two general mechanisms are particularly well
+suited to coupling due to the structure of Vorbis encoding, as we'll
+explore below, and using both we can implement both totally
+<em>lossless stereo image coupling</em> [bit-for-bit decode-identical
+to uncoupled modes], as well as various lossy models that seek to
+eliminate inaudible or unimportant aspects of the stereo image in
+order to enhance bitrate. The exact coupling implementation is
+generalized to allow the encoder a great deal of flexibility in
+implementation of a stereo or surround model without requiring any
+significant complexity increase over the combinatorially simpler
+mid/side joint stereo of mp3 and other current audio codecs.</p>
+
+<p>A particular Vorbis bitstream may apply channel coupling directly to
+more than a pair of channels; polar mapping is hierarchical such that
+polar coupling may be extrapolated to an arbitrary number of channels
+and is not restricted to only stereo, quadraphonics, ambisonics or 5.1
+surround. However, the scope of this document restricts itself to the
+stereo coupling case.</p>
+
+<h3>Square Polar Mapping</h3>
+
+<h4>maximal correlation</h4>
+ 
+<p>Recall that the basic structure of a a Vorbis I stream first generates
+from input audio a spectral 'floor' function that serves as an
+MDCT-domain whitening filter. This floor is meant to represent the
+rough envelope of the frequency spectrum, using whatever metric the
+encoder cares to define. This floor is subtracted from the log
+frequency spectrum, effectively normalizing the spectrum by frequency.
+Each input channel is associated with a unique floor function.</p>
+
+<p>The basic idea behind any stereo coupling is that the left and right
+channels usually correlate. This correlation is even stronger if one
+first accounts for energy differences in any given frequency band
+across left and right; think for example of individual instruments
+mixed into different portions of the stereo image, or a stereo
+recording with a dominant feature not perfectly in the center. The
+floor functions, each specific to a channel, provide the perfect means
+of normalizing left and right energies across the spectrum to maximize
+correlation before coupling. This feature of the Vorbis format is not
+a convenient accident.</p>
+
+<p>Because we strive to maximally correlate the left and right channels
+and generally succeed in doing so, left and right residue is typically
+nearly identical. We could use channel interleaving (discussed below)
+alone to efficiently remove the redundancy between the left and right
+channels as a side effect of entropy encoding, but a polar
+representation gives benefits when left/right correlation is
+strong.</p>
+
+<h4>point and diffuse imaging</h4>
+
+<p>The first advantage of a polar representation is that it effectively
+separates the spatial audio information into a 'point image'
+(magnitude) at a given frequency and located somewhere in the sound
+field, and a 'diffuse image' (angle) that fills a large amount of
+space simultaneously. Even if we preserve only the magnitude (point)
+data, a detailed and carefully chosen floor function in each channel
+provides us with a free, fine-grained, frequency relative intensity
+stereo*. Angle information represents diffuse sound fields, such as
+reverberation that fills the entire space simultaneously.</p>
+
+<p>*<em>Because the Vorbis model supports a number of different possible
+stereo models and these models may be mixed, we do not use the term
+'intensity stereo' talking about Vorbis; instead we use the terms
+'point stereo', 'phase stereo' and subcategories of each.</em></p>
+
+<p>The majority of a stereo image is representable by polar magnitude
+alone, as strong sounds tend to be produced at near-point sources;
+even non-diffuse, fast, sharp echoes track very accurately using
+magnitude representation almost alone (for those experimenting with
+Vorbis tuning, this strategy works much better with the precise,
+piecewise control of floor 1; the continuous approximation of floor 0
+results in unstable imaging). Reverberation and diffuse sounds tend
+to contain less energy and be psychoacoustically dominated by the
+point sources embedded in them. Thus, we again tend to concentrate
+more represented energy into a predictably smaller number of numbers.
+Separating representation of point and diffuse imaging also allows us
+to model and manipulate point and diffuse qualities separately.</p>
+
+<h4>controlling bit leakage and symbol crosstalk</h4>
+
+<p>Because polar
+representation concentrates represented energy into fewer large
+values, we reduce bit 'leakage' during cascading (multistage VQ
+encoding) as a secondary benefit. A single large, monolithic VQ
+codebook is more efficient than a cascaded book due to entropy
+'crosstalk' among symbols between different stages of a multistage cascade.
+Polar representation is a way of further concentrating entropy into
+predictable locations so that codebook design can take steps to
+improve multistage codebook efficiency. It also allows us to cascade
+various elements of the stereo image independently.</p>
+
+<h4>eliminating trigonometry and rounding</h4>
+
+<p>Rounding and computational complexity are potential problems with a
+polar representation. As our encoding process involves quantization,
+mixing a polar representation and quantization makes it potentially
+impossible, depending on implementation, to construct a coupled stereo
+mechanism that results in bit-identical decompressed output compared
+to an uncoupled encoding should the encoder desire it.</p>
+
+<p>Vorbis uses a mapping that preserves the most useful qualities of
+polar representation, relies only on addition/subtraction (during
+decode; high quality encoding still requires some trig), and makes it
+trivial before or after quantization to represent an angle/magnitude
+through a one-to-one mapping from possible left/right value
+permutations. We do this by basing our polar representation on the
+unit square rather than the unit-circle.</p>
+
+<p>Given a magnitude and angle, we recover left and right using the
+following function (note that A/B may be left/right or right/left
+depending on the coupling definition used by the encoder):</p>
+
+<pre>
+      if(magnitude>0)
+        if(angle>0){
+          A=magnitude;
+          B=magnitude-angle;
+        }else{
+          B=magnitude;
+          A=magnitude+angle;
+        }
+      else
+        if(angle>0){
+          A=magnitude;
+          B=magnitude+angle;
+        }else{
+          B=magnitude;
+          A=magnitude-angle;
+        }
+    }
+</pre>
+
+<p>The function is antisymmetric for positive and negative magnitudes in
+order to eliminate a redundant value when quantizing. For example, if
+we're quantizing to integer values, we can visualize a magnitude of 5
+and an angle of -2 as follows:</p>
+
+<p><img src="squarepolar.png" alt="square polar"/></p>
+
+<p>This representation loses or replicates no values; if the range of A
+and B are integral -5 through 5, the number of possible Cartesian
+permutations is 121. Represented in square polar notation, the
+possible values are:</p>
+
+<pre>
+ 0, 0
+
+-1,-2  -1,-1  -1, 0  -1, 1
+
+ 1,-2   1,-1   1, 0   1, 1
+
+-2,-4  -2,-3  -2,-2  -2,-1  -2, 0  -2, 1  -2, 2  -2, 3  
+
+ 2,-4   2,-3   ... following the pattern ...
+
+ ...   5, 1   5, 2   5, 3   5, 4   5, 5   5, 6   5, 7   5, 8   5, 9
+
+</pre>
+
+<p>...for a grand total of 121 possible values, the same number as in
+Cartesian representation (note that, for example, <tt>5,-10</tt> is
+the same as <tt>-5,10</tt>, so there's no reason to represent
+both. 2,10 cannot happen, and there's no reason to account for it.)
+It's also obvious that this mapping is exactly reversible.</p>
+
+<h3>Channel interleaving</h3>
+
+<p>We can remap and A/B vector using polar mapping into a magnitude/angle
+vector, and it's clear that, in general, this concentrates energy in
+the magnitude vector and reduces the amount of information to encode
+in the angle vector. Encoding these vectors independently with
+residue backend #0 or residue backend #1 will result in bitrate
+savings. However, there are still implicit correlations between the
+magnitude and angle vectors. The most obvious is that the amplitude
+of the angle is bounded by its corresponding magnitude value.</p>
+
+<p>Entropy coding the results, then, further benefits from the entropy
+model being able to compress magnitude and angle simultaneously. For
+this reason, Vorbis implements residue backend #2 which pre-interleaves
+a number of input vectors (in the stereo case, two, A and B) into a
+single output vector (with the elements in the order of
+A_0, B_0, A_1, B_1, A_2 ... A_n-1, B_n-1) before entropy encoding. Thus
+each vector to be coded by the vector quantization backend consists of
+matching magnitude and angle values.</p>
+
+<p>The astute reader, at this point, will notice that in the theoretical
+case in which we can use monolithic codebooks of arbitrarily large
+size, we can directly interleave and encode left and right without
+polar mapping; in fact, the polar mapping does not appear to lend any
+benefit whatsoever to the efficiency of the entropy coding. In fact,
+it is perfectly possible and reasonable to build a Vorbis encoder that
+dispenses with polar mapping entirely and merely interleaves the
+channel. Libvorbis based encoders may configure such an encoding and
+it will work as intended.</p>
+
+<p>However, when we leave the ideal/theoretical domain, we notice that
+polar mapping does give additional practical benefits, as discussed in
+the above section on polar mapping and summarized again here:</p>
+
+<ul>
+<li>Polar mapping aids in controlling entropy 'leakage' between stages
+of a cascaded codebook.</li>
+<li>Polar mapping separates the stereo image
+into point and diffuse components which may be analyzed and handled
+differently.</li>
+</ul>
+
+<h2>Stereo Models</h2>
+
+<h3>Dual Stereo</h3>
+
+<p>Dual stereo refers to stereo encoding where the channels are entirely
+separate; they are analyzed and encoded as entirely distinct entities.
+This terminology is familiar from mp3.</p>
+
+<h3>Lossless Stereo</h3>
+
+<p>Using polar mapping and/or channel interleaving, it's possible to
+couple Vorbis channels losslessly, that is, construct a stereo
+coupling encoding that both saves space but also decodes
+bit-identically to dual stereo. OggEnc 1.0 and later uses this
+mode in all high-bitrate encoding.</p>
+
+<p>Overall, this stereo mode is overkill; however, it offers a safe
+alternative to users concerned about the slightest possible
+degradation to the stereo image or archival quality audio.</p>
+
+<h3>Phase Stereo</h3>
+
+<p>Phase stereo is the least aggressive means of gracefully dropping
+resolution from the stereo image; it affects only diffuse imaging.</p>
+
+<p>It's often quoted that the human ear is deaf to signal phase above
+about 4kHz; this is nearly true and a passable rule of thumb, but it
+can be demonstrated that even an average user can tell the difference
+between high frequency in-phase and out-of-phase noise. Obviously
+then, the statement is not entirely true. However, it's also the case
+that one must resort to nearly such an extreme demonstration before
+finding the counterexample.</p>
+
+<p>'Phase stereo' is simply a more aggressive quantization of the polar
+angle vector; above 4kHz it's generally quite safe to quantize noise
+and noisy elements to only a handful of allowed phases, or to thin the
+phase with respect to the magnitude. The phases of high amplitude
+pure tones may or may not be preserved more carefully (they are
+relatively rare and L/R tend to be in phase, so there is generally
+little reason not to spend a few more bits on them)</p>
+
+<h4>example: eight phase stereo</h4>
+
+<p>Vorbis may implement phase stereo coupling by preserving the entirety
+of the magnitude vector (essential to fine amplitude and energy
+resolution overall) and quantizing the angle vector to one of only
+four possible values. Given that the magnitude vector may be positive
+or negative, this results in left and right phase having eight
+possible permutation, thus 'eight phase stereo':</p>
+
+<p><img src="eightphase.png" alt="eight phase"/></p>
+
+<p>Left and right may be in phase (positive or negative), the most common
+case by far, or out of phase by 90 or 180 degrees.</p>
+
+<h4>example: four phase stereo</h4>
+
+<p>Similarly, four phase stereo takes the quantization one step further;
+it allows only in-phase and 180 degree out-out-phase signals:</p>
+
+<p><img src="fourphase.png" alt="four phase"/></p>
+
+<h3>example: point stereo</h3>
+
+<p>Point stereo eliminates the possibility of out-of-phase signal
+entirely. Any diffuse quality to a sound source tends to collapse
+inward to a point somewhere within the stereo image. A practical
+example would be balanced reverberations within a large, live space;
+normally the sound is diffuse and soft, giving a sonic impression of
+volume. In point-stereo, the reverberations would still exist, but
+sound fairly firmly centered within the image (assuming the
+reverberation was centered overall; if the reverberation is stronger
+to the left, then the point of localization in point stereo would be
+to the left). This effect is most noticeable at low and mid
+frequencies and using headphones (which grant perfect stereo
+separation). Point stereo is is a graceful but generally easy to
+detect degradation to the sound quality and is thus used in frequency
+ranges where it is least noticeable.</p>
+
+<h3>Mixed Stereo</h3>
+
+<p>Mixed stereo is the simultaneous use of more than one of the above
+stereo encoding models, generally using more aggressive modes in
+higher frequencies, lower amplitudes or 'nearly' in-phase sound.</p>
+
+<p>It is also the case that near-DC frequencies should be encoded using
+lossless coupling to avoid frame blocking artifacts.</p>
+
+<h3>Vorbis Stereo Modes</h3>
+
+<p>Vorbis, as of 1.0, uses lossless stereo and a number of mixed modes
+constructed out of lossless and point stereo. Phase stereo was used
+in the rc2 encoder, but is not currently used for simplicity's sake. It
+will likely be re-added to the stereo model in the future.</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
+
+
+
+
+
+
Index: /libvorbis-1.2.0/doc/v-comment.html
===================================================================
--- /libvorbis-1.2.0/doc/v-comment.html	(revision 16)
+++ /libvorbis-1.2.0/doc/v-comment.html	(revision 16)
@@ -0,0 +1,285 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis I format specification: comment field and header specification</h1>
+
+<h1>Overview</h1>
+
+<p>The Vorbis text comment header is the second (of three) header
+packets that begin a Vorbis bitstream. It is meant for short, text
+comments, not arbitrary metadata; arbitrary metadata belongs in a
+separate logical bitstream (usually an XML stream type) that provides
+greater structure and machine parseability.</p>
+
+<p>The comment field is meant to be used much like someone jotting a
+quick note on the bottom of a CDR. It should be a little information to
+remember the disc by and explain it to others; a short, to-the-point
+text note that need not only be a couple words, but isn't going to be
+more than a short paragraph. The essentials, in other words, whatever
+they turn out to be, eg:</p>
+
+<blockquote><p>
+"Honest Bob and the Factory-to-Dealer-Incentives, _I'm Still Around_,
+opening for Moxy Fr&uuml;vous, 1997"
+</p></blockquote>
+
+<h1>Comment encoding</h1>
+
+<h2>Structure</h2>
+
+<p>The comment header logically is a list of eight-bit-clean vectors; the
+number of vectors is bounded to 2^32-1 and the length of each vector
+is limited to 2^32-1 bytes. The vector length is encoded; the vector
+contents themselves are not null terminated. In addition to the vector
+list, there is a single vector for vendor name (also 8 bit clean,
+length encoded in 32 bits). For example, the 1.0 release of libvorbis 
+set the vendor string to "Xiph.Org libVorbis I 20020717".</p>
+
+<p>The comment header is decoded as follows:</p>
+
+<pre>
+  1) [vendor_length] = read an unsigned integer of 32 bits
+  2) [vendor_string] = read a UTF-8 vector as [vendor_length] octets
+  3) [user_comment_list_length] = read an unsigned integer of 32 bits
+  4) iterate [user_comment_list_length] times {
+
+       5) [length] = read an unsigned integer of 32 bits
+       6) this iteration's user comment = read a UTF-8 vector as [length] octets
+
+     }
+
+  7) [framing_bit] = read a single bit as boolean
+  8) if ( [framing_bit] unset or end of packet ) then ERROR
+  9) done.
+</pre>
+
+<h2>Content vector format</h2>
+
+<p>The comment vectors are structured similarly to a UNIX environment variable.
+That is, comment fields consist of a field name and a corresponding value and
+look like:</p>
+
+<pre>
+comment[0]="ARTIST=me"; 
+comment[1]="TITLE=the sound of Vorbis"; 
+</pre>
+
+<ul>
+<li>A case-insensitive field name that may consist of ASCII 0x20 through
+0x7D, 0x3D ('=') excluded. ASCII 0x41 through 0x5A inclusive (A-Z) is
+to be considered equivalent to ASCII 0x61 through 0x7A inclusive
+(a-z).</li>
+<li>The field name is immediately followed by ASCII 0x3D ('='); 
+this equals sign is used to terminate the field name.</li>
+<li>0x3D is followed by the 8 bit clean UTF-8 encoded value of the 
+field contents to the end of the field.</li>
+</ul>
+
+<h3>Field names</h3>
+
+<p>Below is a proposed, minimal list of standard field names with a
+description of intended use. No single or group of field names is
+mandatory; a comment header may contain one, all or none of the names
+in this list.</p>
+
+<dl>
+
+<dt>TITLE</dt>
+<dd>Track/Work name</dd>
+
+<dt>VERSION</dt>
+<dd>The version field may be used to differentiate multiple
+versions of the same track title in a single collection.
+(e.g. remix info)</dd>
+
+<dt>ALBUM</dt>
+<dd>The collection name to which this track belongs</dd>
+
+<dt>TRACKNUMBER</dt>
+<dd>The track number of this piece if part of a specific larger collection or album</dd>
+
+<dt>ARTIST</dt>
+<dd>The artist generally considered responsible for the work. In popular music
+this is usually the performing band or singer. For classical music it would be
+the composer. For an audio book it would be the author of the original text.</dd>
+
+<dt>PERFORMER</dt>
+<dd>The artist(s) who performed the work. In classical music this would be the
+conductor, orchestra, soloists. In an audio book it would be the actor who did
+the reading. In popular music this is typically the same as the ARTIST and
+is omitted.</dd>
+
+<dt>COPYRIGHT</dt>
+<dd>Copyright attribution, e.g., '2001 Nobody's Band' or '1999 Jack Moffitt'</dd>
+
+<dt>LICENSE</dt>
+<dd>License information, eg, 'All Rights Reserved', 'Any
+Use Permitted', a URL to a license such as a Creative Commons license
+("www.creativecommons.org/blahblah/license.html") or the EFF Open
+Audio License ('distributed under the terms of the Open Audio
+License. see http://www.eff.org/IP/Open_licenses/eff_oal.html for
+details'), etc.</dd>
+
+<dt>ORGANIZATION</dt>
+<dd>Name of the organization producing the track (i.e.
+the 'record label')</dd>
+
+<dt>DESCRIPTION</dt>
+<dd>A short text description of the contents</dd>
+
+<dt>GENRE</dt>
+<dd>A short text indication of music genre</dd>
+
+<dt>DATE</dt>
+<dd>Date the track was recorded</dd>
+
+<dt>LOCATION</dt>
+<dd>Location where track was recorded</dd>
+
+<dt>CONTACT</dt>
+<dd>Contact information for the creators or distributors of the track.
+This could be a URL, an email address, the physical address of
+the producing label.</dd>
+
+<dt>ISRC</dt>
+<dd>ISRC number for the track; see <a href="http://www.ifpi.org/isrc/">the
+ISRC intro page</a> for more information on ISRC numbers.</dd>
+
+</dl>
+
+<h3>Implications</h3>
+
+<ul>
+<li>Field names should not be 'internationalized'; this is a
+concession to simplicity not an attempt to exclude the majority of
+the world that doesn't speak English. Field <emph>contents</emph>, 
+however, use the UTF-8 character encoding to allow easy representation 
+of any language.</li>
+<li>We have the length of the entirety of the field and restrictions on
+the field name so that the field name is bounded in a known way. Thus
+we also have the length of the field contents.</li>
+<li>Individual 'vendors' may use non-standard field names within
+reason. The proper use of comment fields should be clear through
+context at this point. Abuse will be discouraged.</li>
+<li>There is no vendor-specific prefix to 'nonstandard' field names.
+Vendors should make some effort to avoid arbitrarily polluting the
+common namespace. We will generally collect the more useful tags
+here to help with standardization.</li>
+<li>Field names are not required to be unique (occur once) within a
+comment header. As an example, assume a track was recorded by three
+well know artists; the following is permissible, and encouraged:
+<pre>
+              ARTIST=Dizzy Gillespie 
+              ARTIST=Sonny Rollins 
+              ARTIST=Sonny Stitt 
+</pre></li>
+</ul>
+
+<h2>Encoding</h2> 
+
+<p>The comment header comprises the entirety of the second bitstream
+header packet. Unlike the first bitstream header packet, it is not
+generally the only packet on the second page and may not be restricted
+to within the second bitstream page. The length of the comment header
+packet is (practically) unbounded. The comment header packet is not
+optional; it must be present in the bitstream even if it is
+effectively empty.</p>
+
+<p>The comment header is encoded as follows (as per Ogg's standard
+bitstream mapping which renders least-significant-bit of the word to be
+coded into the least significant available bit of the current
+bitstream octet first):</p>
+
+<ol>
+<li>Vendor string length (32 bit unsigned quantity specifying number of octets)</li>
+<li>Vendor string ([vendor string length] octets coded from beginning of string
+to end of string, not null terminated)</li>
+<li>Number of comment fields (32 bit unsigned quantity specifying number of fields)</li>
+<li>Comment field 0 length (if [Number of comment fields]>0; 32 bit unsigned
+quantity specifying number of octets)</li>
+<li>Comment field 0 ([Comment field 0 length] octets coded from beginning of
+string to end of string, not null terminated)</li>
+<li>Comment field 1 length (if [Number of comment fields]>1...)...</li>
+</ol>
+
+<p>This is actually somewhat easier to describe in code; implementation of the above
+can be found in vorbis/lib/info.c:_vorbis_pack_comment(),_vorbis_unpack_comment()</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/vorbis-clip.txt
===================================================================
--- /libvorbis-1.2.0/doc/vorbis-clip.txt	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbis-clip.txt	(revision 16)
@@ -0,0 +1,139 @@
+Topic:
+
+Sample granularity editing of a Vorbis file; inferred arbitrary sample
+length starting offsets / PCM stream lengths
+
+Overview:
+
+Vorbis, like mp3, is a frame-based* audio compression where audio is
+broken up into discrete short time segments.  These segments are
+'atomic' that is, one must recover the entire short time segment from
+the frame packet; there's no way to recover only a part of the PCM time
+segment from part of the coded packet without expanding the entire
+packet and then discarding a portion of the resulting PCM audio.
+
+* In mp3, the data segment representing a given time period is called
+  a 'frame'; the roughly equivalent Vorbis construct is a 'packet'.
+
+Thus, when we edit a Vorbis stream, the finest physical editing
+granularity is on these packet boundaries (the mp3 case is
+actually somewhat more complex and mp3 editing is more complicated
+than just snipping on a frame boundary because time data can be spread
+backward or forward over frames.  In Vorbis, packets are all
+stand-alone).  Thus, at the physical packet level, Vorbis is still
+limited to streams that contain an integral number of packets.
+
+However, Vorbis streams may still exactly represent and be edited to a
+PCM stream of arbitrary length and starting offset without padding the
+beginning or end of the decoded stream or requiring that the desired
+edit points be packet aligned.  Vorbis makes use of Ogg stream
+framing, and this framing provides time-stamping data, called a
+'granule position'; our starting offset and finished stream length may
+be inferred from correct usage of the granule position data.
+
+Time stamping mechanism:
+
+Vorbis packets are bundled into into Ogg pages (note that pages do not
+necessarily contain integral numbers of packets, but that isn't
+inportant in this discussion.  More about Ogg framing can be found in
+ogg/doc/framing.html).  Each page that contains a packet boundary is
+stamped with the absolute sample-granularity offset of the data, that
+is, 'complete samples-to-date' up to the last completed packet of that
+page. (The same mechanism is used for eg, video, where the number
+represents complete 2-D frames, and so on).
+
+(It's possible but rare for a packet to span more than two pages such
+that page[s] in the middle have no packet boundary; these packets have
+a granule position of '-1'.)
+
+This granule position mechaism in Ogg is used by Vorbis to indicate when the
+PCM data intended to be represented in a Vorbis segment begins a
+number of samples into the data represented by the first packet[s]
+and/or ends before the physical PCM data represented in the last
+packet[s].
+
+File length a non-integral number of frames:
+
+A file to be encoded in Vorbis will probably not encode into an
+integral number of packets; such a file is encoded with the last
+packet containing 'extra'* samples. These samples are not padding; they
+will be discarded in decode. 
+
+*(For best results, the encoder should use extra samples that preserve
+the character of the last frame.  Simply setting them to zero will
+introduce a 'cliff' that's hard to encode, resulting in spread-frame
+noise.  Libvorbis extrapolates the last frame past the end of data to
+produce the extra samples.  Even simply duplicating the last value is
+better than clamping the signal to zero).
+
+The encoder indicates to the decoder that the file is actually shorter
+than all of the samples ('original' + 'extra') by setting the granule
+position in the last page to a short value, that is, the last
+timestamp is the original length of the file discarding extra samples.
+The decoder will see that the number of samples it has decoded in the
+last page is too many; it is 'original' + 'extra', where the
+granulepos says that through the last packet we only have 'original'
+number of samples.  The decoder then ignores the 'extra' samples.
+This behavior is to occur only when the end-of-stream bit is set in
+the page (indicating last page of the logical stream).
+ 
+Note that it not legal for the granule position of the last page to
+indicate that there are more samples in the file than actually exist,
+however, implementations should handle such an illegal file gracefully
+in the interests of robust programming.
+
+Beginning point not on integral packet boundary:
+
+It is possible that we will the PCM data represented by a Vorbis
+stream to begin at a position later than where the decoded PCM data
+really begins after an integral packet boundary, a situation analagous
+to the above description where the PCM data does not end at an
+integral packet boundary.  The easiest example is taking a clip out of
+a larger Vorbis stream, and choosing a beginning point of the clip
+that is not on a packet boundary; we need to ignore a few samples to
+get the desired beginning point.
+
+The process of marking the desired beginning point is similar to
+marking an arbitrary ending point. If the encoder wishes sample zero
+to be some location past the actual beginning of data, it associates a
+'short' granule position value with the completion of the second*
+audio packet.  The granule position is associated with the second
+packet simply by making sure the second packet completes its page.
+
+*(We associate the short value with the second packet for two reasons.
+ a) The first packet only primes the overlap/add buffer.  No data is
+ returned before decoding the second packet; this places the decision
+ information at the point of decision.  b) Placing the short value on
+ the first packet would make the value negative (as the first packet
+ normally represents position zero); a negative value would break the
+ requirement that granule positions increase; the headers have
+ position values of zero)
+
+The decoder sees that on the first page that will return
+data from the overlap/add queue, we have more samples than the granule
+position accounts for, and discards the 'surplus' from the beginning
+of the queue.
+
+Note that short granule values (indicating less than the actually
+returned about of data) are not legal in the Vorbis spec outside of
+indicating beginning and ending sample positions.  However, decoders
+should, at minimum, tolerate inadvertant short values elsewhere in the
+stream (just as they should tolerate out-of-order/non-increasing
+granulepos values, although this too is illegal).
+
+Beginning point at arbitrary positive timestamp (no 'zero' sample):
+
+It's also possible that the granule position of the first page of an
+audio stream is a 'long value', that is, a value larger than the
+amount of PCM audio decoded.  This implies only that we are starting
+playback at some point into the logical stream, a potentially common
+occurence in streaming applications where the decoder may be
+connecting into a live stream.  The decoder should not treat the long
+value specially.
+
+A long value elsewhere in the stream would normally occur only when a
+page is lost or out of sequence, as indicated by the page's sequence
+number.  A long value under any other situation is not legal, however
+a decoder should tolerate both possibilities.
+
+
Index: /libvorbis-1.2.0/doc/vorbis-errors.txt
===================================================================
--- /libvorbis-1.2.0/doc/vorbis-errors.txt	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbis-errors.txt	(revision 16)
@@ -0,0 +1,103 @@
+Error return codes possible from libvorbis and libvorbisfile:
+
+All 'failure' style returns are <0; this either indicates a generic
+'false' value (eg, ready?  T or F) or an error condition.  Code can
+safely just test for < 0, or look at the specific return code for more
+detail.
+
+*** Return codes:
+
+OV_FALSE        The call returned a 'false' status (eg, ov_bitrate_instant 
+		can return OV_FALSE if playback is not in progress, and thus 
+		there is no instantaneous bitrate information to report.
+
+OV_HOLE		libvorbis/libvorbisfile is alerting the application that 
+		there was an interruption in the data (one of: garbage 
+		between pages, loss of sync followed by recapture, or a 
+		corrupt page)
+
+OV_EREAD        A read from media returned an error.
+
+OV_EFAULT       Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+
+OV_EIMPL        The bitstream makes use of a feature not implemented in this 
+		library version.
+
+OV_EINVAL       Invalid argument value.
+
+OV_ENOTVORBIS	Bitstream/page/packet is not Vorbis data.
+
+OV_EBADHEADER   Invalid Vorbis bitstream header.
+
+OV_EVERSION	Vorbis version mismatch.
+
+OV_ENOTAUDIO	Packet data submitted to vorbis_synthesis is not audio data.
+
+OV_EBADPACKET	Invalid packet submitted to vorbis_synthesis.
+
+OV_EBADLINK	Invalid stream section supplied to libvorbis/libvorbisfile, 
+		or the requested link is corrupt. 
+
+OV_ENOSEEK	Bitstream is not seekable.
+
+
+****************************************************************
+*** Libvorbis functions that can return failure/error codes:
+
+int vorbis_analysis_headerout()
+    OV_EIMPL
+
+int vorbis_analysis_wrote()
+    OV_EINVAL
+
+int vorbis_synthesis_headerin()
+    OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER
+
+int vorbis_synthesis()
+    OV_ENOTAUDIO, OV_EBADPACKET
+
+int vorbis_synthesis_read()
+    OV_EINVAL
+
+****************************************************************
+*** Libvorbisfile functions that can return failure/error codes:
+
+int ov_open_callbacks()   
+    OV_EREAD, OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER, OV_FAULT
+
+int ov_open()
+    OV_EREAD, OV_ENOTVORBIS, OV_EVERSION, OV_EBADHEADER, OV_FAULT
+
+long ov_bitrate()
+    OV_EINVAL, OV_FALSE
+
+long ov_bitrate_instant()
+    OV_FALSE
+
+ogg_int64_t ov_raw_total()
+    OV_EINVAL
+
+ogg_int64_t ov_pcm_total()
+    OV_EINVAL
+
+double ov_time_total()
+    OV_EINVAL
+
+int ov_raw_seek()
+    OV_ENOSEEK, OV_EINVAL, OV_BADLINK
+
+int ov_pcm_seek_page()
+    OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
+
+int ov_pcm_seek()
+    OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
+
+int ov_time_seek()
+    OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
+
+int ov_time_seek_page()
+    OV_ENOSEEK, OV_EINVAL, OV_EREAD, OV_BADLINK, OV_FAULT
+
+long ov_read()
+    OV_HOLE, OV_EBADLINK
Index: /libvorbis-1.2.0/doc/vorbis-fidelity.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbis-fidelity.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbis-fidelity.html	(revision 16)
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis: Fidelity measurement and terminology discussion</h1>
+
+<p>Terminology discussed in this document is based on common terminology
+associated with contemporary codecs such as MPEG I audio layer 3
+(mp3). However, some differences in terminology are useful in the
+context of Vorbis as Vorbis functions somewhat differently than most
+current formats. For clarity, then, we describe a common terminology
+for discussion of Vorbis's and other formats' audio quality.</p>
+
+<h2>Subjective and Objective</h2>
+
+<p><em>Objective</em> fidelity is a measure, based on a computable,
+mechanical metric, of how carefully an output matches an input. For
+example, a stereo amplifier may claim to introduce less that .01%
+total harmonic distortion when amplifying an input signal; this claim
+is easy to verify given proper equipment, and any number of testers are
+likely to arrive at the same, exact results. One need not listen to
+the equipment to make this measurement.</p>
+
+<p>However, given two amplifiers with identical, verifiable objective
+specifications, listeners may strongly prefer the sound quality of one
+over the other. This is actually the case in the decades old debate
+[some would say jihad] among audiophiles involving vacuum tube versus
+solid state amplifiers. There are people who can tell the difference,
+and strongly prefer one over the other despite seemingly identical,
+measurable quality. This preference is <em>subjective</em> and
+difficult to measure but nonetheless real.</p>
+
+<p>Individual elements of subjective differences often can be qualified,
+but overall subjective quality generally is not measurable. Different
+observers are likely to disagree on the exact results of a subjective
+test as each observer's perspective differs. When measuring
+subjective qualities, the best one can hope for is average, empirical
+results that show statistical significance across a group.</p>
+
+<p>Perceptual codecs are most concerned with subjective, not objective,
+quality. This is why evaluating a perceptual codec via distortion
+measures and sonograms alone is useless; these objective measures may
+provide insight into the quality or functioning of a codec, but cannot
+answer the much squishier subjective question, "Does it sound
+good?". The tube amplifier example is perhaps not the best as very few
+people can hear, or care to hear, the minute differences between tubes
+and transistors, whereas the subjective differences in perceptual
+codecs tend to be quite large even when objective differences are
+not.</p>
+
+<h2>Fidelity, Artifacts and Differences</h2>
+
+<p>Audio <em>artifacts</em> and loss of fidelity or more simply
+put, audio <em>differences</em> are not the same thing.</p>
+
+<p>A loss of fidelity implies differences between the perceived input and
+output signal; it does not necessarily imply that the differences in
+output are displeasing or that the output sounds poor (although this
+is often the case). Tube amplifiers are <em>not</em> higher fidelity
+than modern solid state and digital systems. They simply produce a
+form of distortion and coloring that is either unnoticeable or actually
+pleasing to many ears.</p>
+
+<p>As compared to an original signal using hard metrics, all perceptual
+codecs [ASPEC, ATRAC, MP3, WMA, AAC, TwinVQ, AC3 and Vorbis included]
+lose objective fidelity in order to reduce bitrate. This is fact. The
+idea is to lose fidelity in ways that cannot be perceived. However,
+most current streaming applications demand bitrates lower than what
+can be achieved by sacrificing only objective fidelity; this is also
+fact, despite whatever various company press releases might claim.
+Subjective fidelity eventually must suffer in one way or another.</p>
+
+<p>The goal is to choose the best possible tradeoff such that the
+fidelity loss is graceful and not obviously noticeable. Most listeners
+of FM radio do not realize how much lower fidelity that medium is as
+compared to compact discs or DAT. However, when compared directly to
+source material, the difference is obvious. A cassette tape is lower
+fidelity still, and yet the degradation, relatively speaking, is
+graceful and generally easy not to notice. Compare this graceful loss
+of quality to an average 44.1kHz stereo mp3 encoded at 80 or 96kbps.
+The mp3 might actually be higher objective fidelity but subjectively
+sounds much worse.</p>
+
+<p>Thus, when a CODEC <em>must</em> sacrifice subjective quality in order
+to satisfy a user's requirements, the result should be a
+<em>difference</em> that is generally either difficult to notice
+without comparison, or easy to ignore. An <em>artifact</em>, on the
+other hand, is an element introduced into the output that is
+immediately noticeable, obviously foreign, and undesired. The famous
+'underwater' or 'twinkling' effect synonymous with low bitrate (or
+poorly encoded) mp3 is an example of an <em>artifact</em>. This
+working definition differs slightly from common usage, but the coined
+distinction between differences and artifacts is useful for our
+discussion.</p>
+
+<p>The goal, when it is absolutely necessary to sacrifice subjective
+fidelity, is obviously to strive for differences and not artifacts.
+The vast majority of codecs today fail at this task miserably,
+predictably, and regularly in one way or another. Avoiding such
+failures when it is necessary to sacrifice subjective quality is a
+fundamental design objective of Vorbis and that objective is reflected
+in Vorbis's design and tuning.</p>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/vorbis.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbis.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbis.html	(revision 16)
@@ -0,0 +1,234 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
+<title>Ogg Vorbis Documentation</title>
+
+<style type="text/css">
+body {
+  margin: 0 18px 0 18px;
+  padding-bottom: 30px;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  color: #333333;
+  font-size: .8em;
+}
+
+a {
+  color: #3366cc;
+}
+
+img {
+  border: 0;
+}
+
+#xiphlogo {
+  margin: 30px 0 16px 0;
+}
+
+#content p {
+  line-height: 1.4;
+}
+
+h1, h1 a, h2, h2 a, h3, h3 a {
+  font-weight: bold;
+  color: #ff9900;
+  margin: 1.3em 0 8px 0;
+}
+
+h1 {
+  font-size: 1.3em;
+}
+
+h2 {
+  font-size: 1.2em;
+}
+
+h3 {
+  font-size: 1.1em;
+}
+
+li {
+  line-height: 1.4;
+}
+
+#copyright {
+  margin-top: 30px;
+  line-height: 1.5em;
+  text-align: center;
+  font-size: .8em;
+  color: #888888;
+  clear: both;
+}
+</style>
+
+</head>
+
+<body>
+
+<div id="xiphlogo">
+  <a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
+</div>
+
+<h1>Ogg Vorbis encoding format documentation</h1>
+
+<p><img src="wait.png" alt="wait"/>As of writing, not all the below document
+links are live. They will be populated as we complete the documents.</p>
+
+<h2>Documents</h2>
+
+<ul>
+<li><a href="packet.html">Vorbis packet structure</a></li>
+<li><a href="envelope.html">Temporal envelope shaping and blocksize</a></li>
+<li><a href="mdct.html">Time domain segmentation and MDCT transform</a></li>
+<li><a href="resolution.html">The resolution floor</a></li>
+<li><a href="residuals.html">MDCT-domain fine structure</a></li>
+</ul>
+
+<ul>
+<li><a href="probmodel.html">The Vorbis probability model</a></li>
+<li><a href="bitpack.html">The Vorbis bitpacker</a></li>
+</ul>
+
+<ul>
+<li><a href="oggstream.html">Ogg bitstream overview</a></li>
+<li><a href="framing.html">Ogg logical bitstream and framing spec</a></li>
+<li><a href="vorbis-stream.html">Vorbis packet->Ogg bitstream mapping</a></li>
+</ul>
+
+<ul>
+<li><a href="programming.html">Programming with libvorbis</a></li>
+</ul>
+
+<h2>Description</h2>
+
+<p>Ogg Vorbis is a general purpose compressed audio format
+for high quality (44.1-48.0kHz, 16+ bit, polyphonic) audio and music
+at moderate fixed and variable bitrates (40-80 kb/s/channel). This
+places Vorbis in the same class as audio representations including
+MPEG-1 audio layer 3, MPEG-4 audio (AAC and TwinVQ), and PAC.</p>
+
+<p>Vorbis is the first of a planned family of Ogg multimedia coding
+formats being developed as part of the Xiph.org Foundation's Ogg multimedia
+project. See <a href="http://www.xiph.org/">http://www.xiph.org/</a>
+for more information.</p>
+
+<h2>Vorbis technical documents</h2>
+
+<p>A Vorbis encoder takes in overlapping (but contiguous) short-time
+segments of audio data. The encoder analyzes the content of the audio
+to determine an optimal compact representation; this phase of encoding
+is known as <em>analysis</em>. For each short-time block of sound,
+the encoder then packs an efficient representation of the signal, as
+determined by analysis, into a raw packet much smaller than the size
+required by the original signal; this phase is <em>coding</em>.
+Lastly, in a streaming environment, the raw packets are then
+structured into a continuous stream of octets; this last phase is
+<em>streaming</em>. Note that the stream of octets is referred to both
+as a 'byte-' and 'bit-'stream; the latter usage is acceptible as the
+stream of octets is a physical representation of a true logical
+bit-by-bit stream.</p>
+
+<p>A Vorbis decoder performs a mirror image process of extracting the
+original sequence of raw packets from an Ogg stream (<em>stream
+decomposition</em>), reconstructing the signal representation from the
+raw data in the packet (<em>decoding</em>) and them reconstituting an
+audio signal from the decoded representation (<em>synthesis</em>).</p>
+
+<p>The <a href="programming.html">Programming with libvorbis</a>
+documents discuss use of the reference Vorbis codec library
+(libvorbis) produced by the Xiph.org Foundation.</p>
+
+<p>The data representations and algorithms necessary at each step to
+encode and decode Ogg Vorbis bitstreams are described by the below
+documents in sufficient detail to construct a complete Vorbis codec.
+Note that at the time of writing, Vorbis is still in a 'Request For
+Comments' stage of development; despite being in advanced stages of
+development, input from the multimedia community is welcome.</p>
+
+<h3>Vorbis analysis and synthesis</h3>
+
+<p>Analysis begins by seperating an input audio stream into individual,
+overlapping short-time segments of audio data. These segments are
+then transformed into an alternate representation, seeking to
+represent the original signal in a more efficient form that codes into
+a smaller number of bytes. The analysis and transformation stage is
+the most complex element of producing a Vorbis bitstream.</p>
+
+<p>The corresponding synthesis step in the decoder is simpler; there is
+no analysis to perform, merely a mechanical, deterministic
+reconstruction of the original audio data from the transform-domain
+representation.</p>
+
+<ul>
+<li><a href="packet.html">Vorbis packet structure</a>:
+Describes the basic analysis components necessary to produce Vorbis
+packets and the structure of the packet itself.</li>
+<li><a href="envelope.html">Temporal envelope shaping and blocksize</a>:
+Use of temporal envelope shaping and variable blocksize to minimize
+time-domain energy leakage during wide dynamic range and spectral energy
+swings. Also discusses time-related principles of psychoacoustics.</li>
+<li><a href="mdct.html">Time domain segmentation and MDCT transform</a>:
+Division of time domain data into individual overlapped, windowed
+short-time vectors and transformation using the MDCT</li>
+<li><a href="resolution.html">The resolution floor</a>: Use of frequency
+doamin psychoacoustics, and the MDCT-domain noise, masking and resolution
+floors</li>
+<li><a href="residuals.html">MDCT-domain fine structure</a>: Production,
+quantization and massaging of MDCT-spectrum fine structure</li>
+</ul>
+
+<h3>Vorbis coding and decoding</h3>
+
+<p>Coding and decoding converts the transform-domain representation of
+the original audio produced by analysis to and from a bitwise packed
+raw data packet. Coding and decoding consist of two logically
+orthogonal concepts, <em>back-end coding</em> and <em>bitpacking</em>.</p>
+
+<p><em>Back-end coding</em> uses a probability model to represent the raw numbers
+of the audio representation in as few physical bits as possible;
+familiar examples of back-end coding include Huffman coding and Vector
+Quantization.</p>
+
+<p><em>Bitpacking</em> arranges the variable sized words of the back-end
+coding into a vector of octets without wasting space. The octets
+produced by coding a single short-time audio segment is one raw Vorbis
+packet.</p>
+
+<ul>
+<li><a href="probmodel.html">The Vorbis probability model</a></li>
+<li><a href="bitpack.html">The Vorbis bitpacker</a>: Arrangement of 
+variable bit-length words into an octet-aligned packet.</li>
+</ul>
+
+<h3>Vorbis streaming and stream decomposition</h3>
+
+<p>Vorbis packets contain the raw, bitwise-compressed representation of a
+snippet of audio. These packets contain no structure and cannot be
+strung together directly into a stream; for streamed transmission and
+storage, Vorbis packets are encoded into an Ogg bitstream.</p>
+
+<ul>
+<li><a href="oggstream.html">Ogg bitstream overview</a>: High-level
+description of Ogg logical bitstreams, how logical bitstreams
+(of mixed media types) can be combined into physical bitstreams, and
+restrictions on logical-to-physical mapping. Note that this document is
+not specific only to Ogg Vorbis.</li>
+<li><a href="framing.html">Ogg logical bitstream and framing
+spec</a>: Low level, complete specification of Ogg logical
+bitstream pages. Note that this document is not specific only to Ogg
+Vorbis.</li>
+<li><a href="vorbis-stream.html">Vorbis bitstream mapping</a>:
+Specifically describes mapping Vorbis data into an
+Ogg physical bitstream.</li>
+</ul>
+
+<div id="copyright">
+  The Xiph Fish Logo is a
+  trademark (&trade;) of Xiph.Org.<br/>
+
+  These pages &copy; 1994 - 2005 Xiph.Org. All rights reserved.
+</div>
+
+</body>
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/Makefile
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/Makefile	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/Makefile	(revision 16)
@@ -0,0 +1,382 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# doc/vorbisenc/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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.
+
+
+
+
+pkgdatadir = $(datadir)/libvorbis
+pkglibdir = $(libdir)/libvorbis
+pkgincludedir = $(includedir)/libvorbis
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
+subdir = doc/vorbisenc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(docdir)"
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run aclocal-1.10
+ALLOCA = 
+AMTAR = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run automake-1.10
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O20 -ffast-math -D_REENTRANT -fsigned-char  -DUSE_MEMORY_H
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEBUG = -g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GREP = /bin/grep
+HAVE_PKG_CONFIG = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = 
+MAKEINFO = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+OGG_CFLAGS =  
+OGG_LIBS = -logg  
+PACKAGE = libvorbis
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PDFXMLTEX = 
+PKG_CONFIG = /usr/bin/pkg-config
+PROFILE = -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 1.2.0
+VE_LIB_AGE = 0
+VE_LIB_CURRENT = 2
+VE_LIB_REVISION = 3
+VF_LIB_AGE = 2
+VF_LIB_CURRENT = 5
+VF_LIB_REVISION = 0
+VORBIS_LIBS = -lm
+V_LIB_AGE = 4
+V_LIB_CURRENT = 4
+V_LIB_REVISION = 0
+XSLTPROC = 
+abs_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0/doc/vorbisenc
+abs_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0/doc/vorbisenc
+abs_top_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+abs_top_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisenc
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/giles/projects/ghostscript/libvorbis-1.2.0/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pthread_lib = -lpthread
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target = x86_64-unknown-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = unknown
+top_builddir = ../..
+top_srcdir = ../..
+doc_DATA = index.html overview.html reference.html style.css\
+	 vorbis_encode_ctl.html vorbis_encode_init.html vorbis_info.html\
+	vorbis_encode_init_vbr.html
+
+EXTRA_DIST = $(doc_DATA)
+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 \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/vorbisenc/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/vorbisenc/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-docDATA: $(doc_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+	done
+
+uninstall-docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
+	done
+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
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(docdir)"; 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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+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-docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-docDATA 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 uninstall-docDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/doc/vorbisenc/Makefile.am
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/Makefile.am	(revision 16)
@@ -0,0 +1,9 @@
+## Process this file with automake to produce Makefile.in
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisenc
+
+doc_DATA = index.html overview.html reference.html style.css\
+	 vorbis_encode_ctl.html vorbis_encode_init.html vorbis_info.html\
+	vorbis_encode_init_vbr.html
+
+EXTRA_DIST = $(doc_DATA)
Index: /libvorbis-1.2.0/doc/vorbisenc/Makefile.in
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/Makefile.in	(revision 16)
@@ -0,0 +1,382 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = doc/vorbisenc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(docdir)"
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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 = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisenc
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+doc_DATA = index.html overview.html reference.html style.css\
+	 vorbis_encode_ctl.html vorbis_encode_init.html vorbis_info.html\
+	vorbis_encode_init_vbr.html
+
+EXTRA_DIST = $(doc_DATA)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/vorbisenc/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/vorbisenc/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-docDATA: $(doc_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+	done
+
+uninstall-docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
+	done
+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
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(docdir)"; 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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+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-docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-docDATA 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 uninstall-docDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/doc/vorbisenc/changes.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/changes.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/changes.html	(revision 16)
@@ -0,0 +1,104 @@
+<html>
+
+<head>
+<title>libvorbisenc - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>Libvorbisenc API changes 1.0  through 1.1</h1>
+
+This document describes API additions to libvorbisenc between release
+1.0 and 1.1.
+
+<h2>1.0.1</h2> 
+
+The programming API and binary application ABI are unchanged and fully
+forward/backward compatible between release 1.0 and 1.0.1.  Libvorbis,
+libvorbisenc and libvorbisfile must match versions amongst themselves,
+however.
+
+<h2>1.1</h2>
+
+The binary ABI from release 1.0.1 to 1.1 is backward compatible;
+applications linked against libvorbis/libvorbisenc 1.0 and 1.0.1 will
+continue to function correctly when upgrading the libvorbis and
+libvorbisenc dynamic libraries without re-linking. <p>
+
+Release 1.1 adds several possible requests to the libvorbisenc <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> call in order to
+reflect the shift to <a href="overview.html#BBR">bit-reservoir style
+bitrate management</a>. In addition, several <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> requests are
+deprecated (but functional) as they are redered semantically obsolete
+by the <a href="overview.html#BBR">new bitrate management</a>.<p>
+
+<h3>Deprecated in 1.1</h3>
+
+These calls are still available to older codebases to preserve
+compatability; the fields of the <a
+href="ovectl_ratemanage_arg.html">ovectl_ratemanage_arg</a> argument
+are mapped as closely as possible to the fields of the new <a
+href="ovectl_ratemanage2_arg.html">ovectl_ratemanage2_arg</a>
+structure.
+
+<dl>
+<dt><a href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE_GET">OV_ECTL_RATEMANAGE_GET</a>:<dd> Use <a
+href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_GET">OV_ECTL_RATEMANAGE2_GET</a>
+instead.  
+
+
+<dt><a href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE_SET">OV_ECTL_RATEMANAGE_SET</a>:<dd> Use <a
+href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_SET">OV_ECTL_RATEMANAGE2_SET</a>
+instead.
+
+<dt><a href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE_AVG">OV_ECTL_RATEMANAGE_AVG</a>:<dd> Use <a
+href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_SET">OV_ECTL_RATEMANAGE2_SET</a>
+instead.
+
+<dt><a href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE_HARD">OV_ECTL_RATEMANAGE_HARD</a>:<dd> Use <a
+href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_SET">OV_ECTL_RATEMANAGE2_SET</a>
+instead.
+</dl>
+
+<h3>Newly added in 1.1</h3>
+
+The following calls are added in 1.1 to semantically reflect movement
+to a <a href="overview.html#BBR">bit-reservoir-based bitrate
+management</a> scheme by introducing the <a
+href="ovectl_ratemanage2_arg.html">ovectl_ratemanage2_arg</a>
+structure in order to better represent the abilities of the bitrate
+manager.<p>
+
+<dl>
+<dt><a href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_GET">OV_ECTL_RATEMANAGE2_GET</a><dd>
+
+Used to query the current state of bitrate management setup.
+
+<dt><a href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_SET">OV_ECTL_RATEMANAGE2_SET</a><dd>
+
+Used to set or alter bitrate management settings.
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/examples.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/examples.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/examples.html	(revision 16)
@@ -0,0 +1,133 @@
+<html>
+
+<head>
+<title>libvorbisenc - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>Libvorbisenc Setup Examples</h1>
+
+VBR is always the recommended mode for Vorbis encoding when
+there's no need to impose bitrate constraints.  True VBR encoding will
+always produce the most consistent quality output as well as the
+highest quality for a the bits used. 
+
+<p>The following code examples prepare a
+<a href="vorbis_info.html">vorbis_info</a> structure for encoding
+use with libvorbis.<p>
+
+<h2>Example: encoding using a VBR quality mode</h2>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc><td><pre><b> 
+   vorbis_info_init(&vi);
+
+  /*********************************************************************
+   Encoding using a VBR quality mode.  The usable range is -.1
+   (lowest quality, smallest file) to 1.0 (highest quality, largest file).
+   Example quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR 
+   *********************************************************************/
+  
+   ret = vorbis_encode_init_vbr(&vi,2,44100,.4);
+
+  /*********************************************************************
+   do not continue if setup failed; this can happen if we ask for a
+   mode that libVorbis does not support (eg, too low a quality mode, etc,
+   will return 'OV_EIMPL')
+   *********************************************************************/
+
+   if(ret) exit(1);
+</b></pre></td></tr></table>
+
+<h2>Example: encoding using average bitrate (ABR)</h2>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc><td><pre><b> 
+   vorbis_info_init(&vi);
+
+  /*********************************************************************
+   Encoding using an average bitrate mode (ABR).
+   example: 44kHz stereo coupled, average 128kbps ABR 
+   *********************************************************************/
+  
+   ret = vorbis_encode_init(&vi,2,44100,-1,128000,-1);
+
+  /*********************************************************************
+   do not continue if setup failed; this can happen if we ask for a
+   mode that libVorbis does not support (eg, too low a bitrate, etc,
+   will return 'OV_EIMPL')
+   *********************************************************************/
+
+   if(ret) exit(1);
+</b></pre></td></tr></table>
+
+<h2>Example: encoding using constant bitrate (CBR)</h2>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc><td><pre><b> 
+   vorbis_info_init(&vi);
+
+  /*********************************************************************
+   Encoding using a constant bitrate mode (CBR).
+   example: 44kHz stereo coupled, average 128kbps CBR 
+   *********************************************************************/
+  
+   ret = vorbis_encode_init(&vi,2,44100,128000,128000,128000);
+
+  /*********************************************************************
+   do not continue if setup failed; this can happen if we ask for a
+   mode that libVorbis does not support (eg, too low a bitrate, etc,
+   will return 'OV_EIMPL')
+   *********************************************************************/
+
+   if(ret) exit(1);
+</b></pre></td></tr></table>
+
+<h2>Example: encoding using VBR selected by approximate bitrate</h2>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc><td><pre><b> 
+   vorbis_info_init(&vi);
+
+  /*********************************************************************
+   Encode using a quality mode, but select that quality mode by asking for
+   an approximate bitrate.  This is not ABR, it is true VBR, but selected
+   using the bitrate interface, and then turning bitrate management off:
+   *********************************************************************/
+
+   ret = ( vorbis_encode_setup_managed(&vi,2,44100,-1,128000,-1) ||
+           vorbis_encode_ctl(&vi,OV_ECTL_RATEMANAGE2_SET,NULL) ||
+           vorbis_encode_setup_init(&vi));
+
+  /*********************************************************************
+   do not continue if setup failed; this can happen if we ask for a
+   mode that libVorbis does not support (eg, too low a bitrate, etc,
+   will return 'OV_EIMPL')
+   *********************************************************************/
+
+   if(ret) exit(1);
+</b></pre></td></tr></table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/index.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/index.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/index.html	(revision 16)
@@ -0,0 +1,40 @@
+<html>
+
+<head>
+<title>libvorbisenc - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>Libvorbisenc Documentation</h1>
+
+<p>
+Libvorbisenc is a convenient API for setting up an encoding environment using libvorbis.  Libvorbisenc encapsulates the actions needed to set up the encoder properly.
+<p>
+<a href="overview.html">libvorbisenc api overview</a><br>
+<a href="reference.html">libvorbisenc api reference</a><br>
+<a href="changes.html">libvorbisenc api changes from 1.0 and 1.0.1</a><br>
+<a href="examples.html">libvorbisenc encode setup examples</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/ov_ectl_ratemanage2_arg.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/ov_ectl_ratemanage2_arg.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/ov_ectl_ratemanage2_arg.html	(revision 16)
@@ -0,0 +1,92 @@
+<html>
+
+<head>
+<title>vorbis - datatype - ov_ectl_ratemanage2_arg</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>ov_ectl_ratemanage2_arg</h1>
+
+<p><i>declared in "vorbis/vorbisenc.h"</i></p>
+
+<p>
+
+The ov_ectl_ratemanage2_arg structure is used with <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> and the OV_ECTL_RATEMANAGE2_GET and
+OV_ECTL_RATEMANAGE2_SET  calls in order to query and modify specifics
+of the encoder's bitrate management configuration.
+
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>struct ovectl_ratemanage2_arg {
+  int    management_active;
+
+  long   bitrate_limit_min_kbps;
+  long   bitrate_limit_max_kbps;
+  long   bitrate_limit_reservoir_bits;
+  double bitrate_limit_reservoir_bias;
+
+  long   bitrate_average_kbps;
+  double bitrate_average_damping;
+};</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>management_active</i></dt>
+<dd>nonzero if bitrate management is active</dd>
+
+<dt><i>bitrate_limit_min_kbps</i></dt>
+<dd>Lower allowed bitrate limit in kilobits per second</dd>
+<dt><i>bitrate_limit_max_kbps</i></dt>
+<dd>Upper allowed bitrate limit in kilobits per second</dd>
+<dt><i>bitrate_limit_reservoir_bits</i></dt>
+<dd>Size of the bitrate reservoir in bits</dd>
+<dt><i>bitrate_limit_reservoir_bias</i></dt>
+
+<dd>Regulates the bitrate reservoir's preferred fill level in a range
+from 0.0 to 1.0; 0.0 tries to bank bits to buffer against future
+bitrate spikes, 1.0 buffers against future sudden drops in
+instantaneous bitrate.  Default is 0.1 </dd>
+
+<dt><i>bitrate_average_kbps</i></dt>
+<dd>Average bitrate setting in kilobits per second</dd>
+
+<dt><i>bitrate_average_damping</i></dt> <dd>Slew rate limit setting
+for average bitrate adjustment; sets the minimum time in seconds the
+bitrate tracker may swing from one extreme to the other when boosting
+or damping average bitrate.</dd>
+
+
+
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/ov_ectl_ratemanage_arg.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/ov_ectl_ratemanage_arg.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/ov_ectl_ratemanage_arg.html	(revision 16)
@@ -0,0 +1,92 @@
+<html>
+
+<head>
+<title>vorbis - datatype - ov_ectl_ratemanage_arg</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>ov_ectl_ratemanage_arg</h1>
+
+<p><i>declared in "vorbis/vorbisenc.h"</i></p>
+
+<p>
+
+The ov_ectl_ratemanage_arg structure is used with <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> and the OV_ECTL_RATEMANAGE_GET,
+OV_ECTL_RATEMANAGE_SET, OV_ECTL_RATEMANAGE_AVG,
+OV_ECTL_RATEMANAGE_HARD calls in order to query and modify specifics
+of the encoder's bitrate management configuration.  Note that this is
+a deprecated interface; please use vorbis_encode_ctl() with the <a
+href="ov_ectl_ratemanage2_arg.html">ov_ectl_ratemanage2_arg</a> struct
+and OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in new
+code.
+
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>struct ovectl_ratemanage_arg {
+  int    management_active;
+
+  long   bitrate_hard_min;
+  long   bitrate_hard_max;
+  double bitrate_hard_window;
+
+  long   bitrate_av_lo;
+  long   bitrate_av_hi;
+  double bitrate_av_window;
+  double bitrate_av_window_center;
+};</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+
+<dt><i>management_active</i></dt>
+<dd>nonzero if bitrate management is active</dd>
+
+<dt><i>bitrate_hard_min</i></dt>
+<dd>hard lower limit (in kilobits per second) below which the stream bitrate will never be allowed for any given bitrate_hard_window seconds of time.</dd>
+<dt><i>bitrate_hard_max</i></dt>
+<dd>hard upper limit (in kilobits per second) above which the stream bitrate will never be allowed for any given bitrate_hard_window seconds of time.</dd>
+<dt><i>bitrate_hard_window</i></dt>
+<dd>the window period (in seconds) used to regulate the hard bitrate minimum and maximum</dd>
+
+<dt><i>bitrate_av_lo</i></dt>
+<dd>soft lower limit (in kilobits per second) below which the average bitrate tracker will start nudging the bitrate higher.</dd>
+<dt><i>bitrate_av_hi</i></dt>
+<dd>soft upper limit (in kilobits per second) above which the average bitrate tracker will start nudging the bitrate lower.</dd>
+<dt><i>bitrate_av_window</i></dt>
+<dd>the window period (in seconds) used to regulate the average bitrate minimum and maximum.</dd>
+<dt><i>bitrate_av_window_center</i></dt>
+<dd>Regulates the relative centering of the average and hard windows; in libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but followed the average window regulation.  In libvorbis 1.1 a bit-reservoir interface replaces the old windowing interface; the older windowing interface is simulated and this field has no effect.</dd>
+
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/overview.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/overview.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/overview.html	(revision 16)
@@ -0,0 +1,382 @@
+<html>
+
+<head>
+<title>libvorbisenc - API Overview</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>Libvorbisenc API Overview</h1>
+
+<p>Libvorbisenc is an encoding convenience library intended to
+encapsulate the elaborate setup that libvorbis requires for encoding.
+Libvorbisenc gives easy access to all high-level adjustments an
+application may require when encoding and also exposes some low-level
+tuning parameters to allow applications to make detailed adjustments
+to the encoding process. <p>
+
+All the <b>libvorbisenc</b> routines are declared in "vorbis/vorbisenc.h".
+
+<em>Note: libvorbis and libvorbisenc always
+encode in a single pass. Thus, all possible encoding setups will work
+properly with live input and produce streams that decode properly when
+streamed.  See the subsection titled <a href="#BBR">"managed bitrate
+modes"</a> for details on setting limits on bitrate usage when Vorbis
+streams are used in a limited-bandwidth environment.</em>
+
+<h2>workflow</h2>
+
+<p>Libvorbisenc is used only during encoder setup; its function
+is to automate initialization of a multitude of settings in a
+<tt>vorbis_info</tt> structure which libvorbis then uses as a reference
+during the encoding process.  Libvorbisenc plays no part in the
+encoding process after setup.
+
+<p>Encode setup using libvorbisenc consists of three steps: 
+
+<ol>
+<li>high-level initialization of a <tt>vorbis_info</tt> structure by
+calling one of <a
+href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a> or <a
+href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>
+with the basic input audio parameters (rate and channels) and the
+basic desired encoded audio output parameters (VBR quality or ABR/CBR
+bitrate)<p>
+
+<li>optional adjustment of the basic setup defaults using <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a><p>
+
+<li>calling <a
+href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a> to
+finalize the high-level setup into the detailed low-level reference
+values needed by libvorbis to encode audio. The <tt>vorbis_info</tt>
+structure is then ready to use for encoding by libvorbis.<p>
+
+</ol>
+
+These three steps can be collapsed into a single call by using <a
+href="vorbis_encode_init_vbr.html">vorbis_encode_init_vbr</a> to set up a
+quality-based VBR stream or <a
+href="vorbis_encode_init.html">vorbis_encode_init</a> to set up a managed
+bitrate (ABR or CBR) stream.<p>
+
+<h2>adjustable encoding parameters</h2>
+
+<h3>input audio parameters</h3>
+
+<p>
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>parameter</b></td>
+	<td><b>description</b></td>
+</tr>
+<tr valign=top>
+<td>sampling rate</td>
+<td>
+The sampling rate (in samples per second) of the input audio.  Common examples are 8000 for telephony, 44100 for CD audio and 48000 for DAT.  Note that a mono sample (one center value) and a stereo sample (one left value and one right value) both are a single sample.
+
+</td>
+</tr>
+<tr valign=top>
+<td>channels</td>
+<td>
+
+The number of channels encoded in each input sample.  By default,
+stereo input modes (two channels) are 'coupled' by Vorbis 1.1 such
+that the stereo relationship between the samples is taken into account
+when encoding.  Stereo coupling my be disabled by using <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> with <a
+href="vorbis_encode_ctl.html#OV_ECTL_COUPLE_SET">OV_ECTL_COUPLE_SET</a>.
+
+</td>
+</tr>
+</table>
+
+<h3>quality and VBR modes</h3>
+
+Vorbis is natively a VBR codec; a user requests a given constant
+<em>quality</em> and the encoder keeps the encoding quality constant
+while allowing the bitrate to vary.  'Quality' modes (Variable BitRate)
+will always produce the most consistent encoding results as well as
+the highest quality for the amount of bits used.
+
+<p>
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>parameter</b></td>
+	<td><b>description</b></td>
+</tr>
+<tr valign=top>
+<td>quality</td>
+<td>
+A decimal float value requesting a desired quality.  Libvorbisenc 1.1 allows quality requests in the range of -0.1 (lowest quality, smallest files) through +1.0 (highest-quality, largest files). Quality -0.1 is intended as an ultra-low setting in which low bitrate is much more important than quality consistency.  Quality settings 0.0 and above are intended to produce consistent results at all times.  
+
+</td>
+</tr>
+</table>
+
+<a name="BBR">
+<h3>managed bitrate modes</h3>
+
+Although the Vorbis codec is natively VBR, libvorbis includes
+infrastructure for 'managing' the bitrate of streams by setting
+minimum and maximum usage constraints, as well as functionality for
+nudging a stream toward a desired average value.  These features
+should <em>only</em> be used when there is a requirement to limit
+bitrate in some way.  Although the difference is usually slight,
+managed bitrate modes will always produce output inferior to VBR
+(given equal bitrate usage). Setting overly or impossibly tight
+bitrate management requirements can affect output quality dramatically
+for the worse.<p>
+
+Beginning in libvorbis 1.1, bitrate management is implemented using a
+<em>bit-reservoir</em> algorithm. The encoder has a fixed-size
+reservoir used as a 'savings account' in encoding.  When a frame is
+smaller than the target rate, the unused bits go into the reservoir so
+that they may be used by future frames.  When a frame is larger than
+target bitrate, it draws 'banked' bits out of the reservoir.  Encoding
+is managed so that the reservoir never goes negative (when a maximum
+bitrate is specified) or fills beyond a fixed limit (when a minimum
+bitrate is specified).  An 'average bitrate' request is used as the
+set-point in a long-range bitrate tracker which adjusts the encoder's
+aggressiveness up or down depending on whether or not frames are coming
+in larger or smaller than the requested average point.
+
+<p>
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>parameter</b></td>
+	<td><b>description</b></td>
+</tr>
+<tr valign=top>
+<td>maximum bitrate</td> <td> The maximum allowed bitrate, set in bits
+per second.  If the bitrate would otherwise rise such that oversized
+frames would underflow the bit-reservoir by consuming banked bits,
+bitrate management will force the encoder to use fewer bits per frame
+by encoding with a more aggressive psychoacoustic model.<p> This
+setting is a hard limit; the bitstream will never be allowed, under
+any circumstances, to increase above the specified bitrate over the
+average period set by the reservoir; it may momentarily rise over if
+inspected on a granularity much finer than the average period across
+the reservoir.  Normally, the encoder will conserve bits gracefully by
+using more aggressive psychoacoustics to shrink a frame when forced
+to.  However, if the encoder runs out of means of gracefully shrinking
+a frame, it will simply take the smallest frame it can otherwise
+generate and truncate it to the maximum allowed length.  Note that
+this is not an error and although it will obviously adversely affect
+audio quality, a Vorbis decoder will be able to decode a truncated
+frame into audio.
+
+</td>
+</tr>
+
+<tr valign=top>
+<td>average bitrate</td> 
+
+<td>
+
+The average desired bitrate of a stream, set
+in bits per second.  Average bitrate is tracked via a reservoir like
+minimum and maximum bitrate, however the averaging reservior does not
+impose a hard limit; it is used to nudge the bitrate toward the
+desired average by slowly adjusting the psychoacoustic aggressiveness.
+As such, the reservoir size does not affect the average bitrate
+behavior.  Because this setting alone is not used to impose hard
+bitrate limits, the bitrate of a stream produced using only the
+<tt>average bitrate</tt> constraint will track the average over time
+but not necessarily adhere strictly to that average for any given
+period.  Should a strict localized average be required, <tt>average
+bitrate</tt> should be used along with <tt>minimum bitrate</tt> and
+<tt>maximum bitrate</tt>.
+</td>
+
+</tr>
+
+<tr valign=top>
+<td>minimum bitrate</td>
+<td> 
+ The minimum allowed bitrate, set in bits per second.  If
+the bitrate would otherwise fall such that undersized frames would
+overflow the bit-reservoir with unused bits, bitrate management will
+force the encoder to use more bits per frame by encoding with a less
+aggressive psychoacoustic model.<p> This setting is a hard limit; the
+bitstream will never be allowed, under any circumstances, to drop
+below the specified bitrate over the average period set by the
+reservoir; it may momentarily fall under if inspected on a granularity
+much finer than the average period across the reservoir.  Normally,
+the encoder will fill out undersided frames with additional useful
+coding information by increasing the perceived quality of the stream.
+If the encoder runs out of useful ways to consume more bits, it will
+pad frames out with zeroes.
+</td>
+</tr>
+
+<tr valign=top>
+<td>reservoir size</td> <td> The size of the minimum/maximum bitrate
+tracking reservoir, set in bits.  The reservoir is used as a 'bit
+bank' to average out localized surges and dips in bitrate while
+providing predictable, guaranteed buffering behavior for streams to be
+used in situations with constrained transport bandwidth.  The default
+setting is two seconds of average bitrate.<p>
+
+When a single frame is larger than the maximum allowed overall
+bitrate, the bits are 'borrowed' from the bitrate reservoir; if the
+reservoir contains insufficient bits to cover the defecit, the encoder
+must find some way to reduce the frame size. <p>
+
+When a frame is under the minimum limit, the surplus bits are placed
+into the reservoir, banking them for future use.  If the reservoir is
+already full of banked bits, the encoder is forced to find some way to
+make the frame larger.<p>
+
+If the frame size is between the minimum and maximum rates (thus
+implying the minimum and maximum allowed rates are different), the
+reservoir gravitates toward a fill point configured by the
+<tt>reservoir bias</tt> setting described next.  If the reservoir is
+fuller than the fill point (a 'surplus of surplus'), the encoder will
+consume a number bits from the reservoir equal to the number of the
+bits by which the frame exceeds minimum size.  If the reservoir is
+emptier than the fillpoint (a 'surplus of defecit'), bits are returned
+to the reservoir equaling the current frame's number of bits under the
+maximum frame size.  The idea of the fill point is to buffer against
+both underruns and overruns, by trying to hold the reservoir to a
+middle course.
+</td>
+</tr>
+
+<tr valign=top>
+<td>reservoir bias</td>
+
+<td>
+
+Reservoir bias is a setting between 0.0 and 1.0 that biases bitrate
+management toward smoothing bitrate spikes (0.0) or bitrate peaks
+(1.0); the default setting is 0.1.<p>
+
+Using settings toward 0.0 causes the bitrate manager to hoard bits in
+the bit reservoir such that there is a large pool of banked surplus to
+draw upon during short spikes in bitrate.  As a result, the encoder
+will react less aggressively and less drastically to curtail framesize
+during brief surges in bitrate.<p>
+
+Using settings toward 1.0 causes the bitrate manager to empty the bit
+reservoir such that there is a large buffer available to store surplus
+bits during sudden drops in bitrate.  As a result, the encoder will
+react less aggressively and less drastically to support minimum frame
+sizes during drops in bitrate and will tend not to store any extra
+bits in the reservoir for future bitrate spikes.<p>
+
+</td>
+</tr>
+
+<tr valign=top>
+<td>average track damping</td>
+<td> 
+
+A decimal value, in seconds, that controls how quickly the average
+bitrate tracker is allowed to slew from enforcing minimum frame sizes
+to maximum framesizes and vice versa.  Default value is 1.5
+seconds.<p>
+
+When the 'average bitrate' setting is in use, the average bitrate
+tracker uses an unbounded reservoir to track overall bitrate-to-date
+in the stream.  When bitrates are too low, the tracker will try to
+nudge bitrates up and when the bitrate is too high, nudge it down.
+The damping value regulates the maximum strength of the nudge; it
+describes, in seconds, how quickly the tracker may transition from an
+extreme nudge in one direction to an extreme nudge in the other.<p>
+
+</td>
+</tr>
+
+</table>
+
+<h3>encoding model adjustments</h3>
+
+The <a href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> call provides
+a generalized interface for making encoding setup adjustments to the
+basic high-level setup provided by <a
+href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a> or <a
+href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>.
+In reality, these two calls use <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> internally, and <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> can be used to adjust
+most of the parameters set by other calls.<p>
+
+In Vorbis 1.1, <a href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> can
+adjust the following additional parameters not described elsewhere:
+
+<p>
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>parameter</b></td>
+	<td><b>description</b></td>
+</tr>
+<tr valign=top>
+<td>management mode</td> <td> Configures whether or not bitrate
+management is in use or not.  Normally, this value is set implicitly
+during encoding setup; however, the supported means of selecting a
+quality mode by bitrate (that is, requesting a true VBR stream, but
+doing so by asking for an approximate bitrate) is to use <a
+href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>
+and then to explicitly turn off bitrate management by calling <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> with <a
+href="vorbis_encode_ctl.html#OV_ECTL_RATEMANAGE2_SET">OV_ECTL_RATEMANAGE2_SET</a>
+</td>
+</tr>
+
+<tr valign=top>
+<td>coupling</td> <td> Stereo encoding (and in the future, surround
+encodings) are normally encoded assuming the channels form a stereo
+image and that lossy-stereo modelling is appropriate; this is called
+'coupling'.  Stereo coupling may be explicitly enabled or disabled.
+</td>
+</tr>
+<tr valign=top>
+<td>lowpass</td> <td> Sets the hard lowpass of a given encoding mode;
+this may be used to conserve a few bits in high-rate audio that has
+limited bandwidth, or in testing of the encoder's acoustic model.  The
+encoder is generally already configured with ideal lowpasses (if any
+at all) for given modes; use of this parameter is strongly discouraged
+if the point is to try to 'improve' a given encoding mode for general
+encoding.
+</td>
+</tr>
+
+<tr valign=top>
+<td>impulse coding aggressiveness</td> <td>By default, libvorbis
+attempts to compromise between preventing wide bitrate swings and
+high-resolution impulse coding (which is required for the crispest
+possible attacks, but also requires a relatively large momentary
+bitrate increase).  This parameter allows an application to tune the
+compromise or eliminate it; A value of 0.0 indicates normal behavior
+while a value of -15.0 requests maximum possible impulse
+resolution.</td>
+</tr>
+
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 Vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
+
Index: /libvorbis-1.2.0/doc/vorbisenc/reference.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/reference.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/reference.html	(revision 16)
@@ -0,0 +1,48 @@
+<html>
+
+<head>
+<title>Vorbisfile API Reference</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>Vorbisenc API Reference</h1>
+
+<p>
+<b>Data Structures</b><br>
+<a href="vorbis_info.html">vorbis_info</a><br>
+<a href="ov_ectl_ratemanage_arg.html">ov_ectl_ratemanage_arg</a><br>
+<a href="ov_ectl_ratemanage2_arg.html">ov_ectl_ratemanage2_arg</a><br>
+
+<br>
+<b>Encoder Setup</b><br>
+<a href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a><br>
+<a href="vorbis_encode_init.html">vorbis_encode_init()</a><br>
+<a href="vorbis_encode_init_vbr.html">vorbis_encode_init_vbr()</a><br>
+<a href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a><br>
+<a href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a><br>
+<a href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a><br>
+
+<br>
+<br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+<td align=right><p class=tiny>vorbisenc version 1.1</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/style.css
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/style.css	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/style.css	(revision 16)
@@ -0,0 +1,7 @@
+BODY { font-family: Helvetica, sans-serif }
+TD { font-family: Helvetica, sans-serif }
+P { font-family: Helvetica, sans-serif }
+H1 { font-family: Helvetica, sans-serif }
+H2 { font-family: Helvetica, sans-serif }
+H4 { font-family: Helvetica, sans-serif }
+P.tiny { font-size: 8pt }
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_ctl.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_ctl.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_ctl.html	(revision 16)
@@ -0,0 +1,169 @@
+<html>
+
+<head>
+<title>libvorbisenc - function - vorbis_encode_ctl</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_encode_ctl</h1>
+
+<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
+
+<p>This function implements a generic interface to miscellaneous
+encoder settings similar to the clasasic UNIX 'ioctl()' system call.
+Applications may use vorbis_encode_ctl() to query or set bitrate
+management or quality mode details by using one of several
+<i>request</i> arguments detailed below.  Vorbis_encode_ctl() must be
+called after one of <a
+href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>
+or <a
+href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a>.
+When used to modify settings, vorbis_encode_ctl() must be called
+before <a
+href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a>.
+
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+extern int vorbis_encode_ctl(vorbis_info *vi,int request,void *arg);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vi</i></dt>
+<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd><p>
+<dt><i>request</i></dt>
+<dd>Specifies the desired action; possible request fields are detailed below.</dd><p>
+<dt><i>arg</i></dt>
+<dd>void * pointing to a data structure matching the request argument.</dd><p>
+</dl><p>
+
+<h3>Requests</h3>
+<dl>
+
+<dt><i>OV_ECTL_RATEMANAGE2_GET</i></dt>
+
+<dd><b>Argument: <a href="ovectl_ratemanage2_arg.html">struct
+ovectl_ratemanage2_arg *</a></b><br> Used to query the current
+encoder bitrate management setting.  Also used to initialize fields of
+an ovectl_ratemanage2_arg structure for use with
+OV_ECTL_RATEMANAGE2_SET.</dd><p>
+
+<dt><i>OV_ECTL_RATEMANAGE2_SET</i></dt>
+<dd><b>Argument: <a href="ovectl_ratemanage2_arg.html">struct
+ovectl_ratemanage2_arg *</a></b><br> Used to set the current
+encoder bitrate management settings to the values listed in the
+ovectl_ratemanage2_arg.  Passing a NULL pointer will disable bitrate
+management.
+</dd><p>
+
+<dt><i>OV_ECTL_LOWPASS_GET</i></dt>
+<dd><b>Argument: double *</b><br> Returns the current encoder hard-lowpass
+setting (kHz) in the double pointed to by arg.
+</dd><p>
+
+<dt><i>OV_ECTL_LOWPASS_SET</i></dt>
+<dd><b>Argument: double *</b><br> Sets the encoder hard-lowpass to the value
+(kHz) pointed to by arg. Valid lowpass settings range from 2 to 99.
+</dd><p>
+
+<dt><i>OV_ECTL_IBLOCK_GET</i></dt>
+<dd><b>Argument: double *</b><br> Returns the current encoder impulse
+block setting in the double pointed to by arg.</dd><p>
+
+<dt><i>OV_ECTL_IBLOCK_SET</i></dt> <dd><b>Argument: double *</b><br> Sets
+the impulse block bias to the the value pointed to by arg; valid range
+is -15.0 to 0.0 [default].  A negative impulse block bias will direct
+to encoder to use more bits when incoding short blocks that contain
+strong impulses, thus improving the accuracy of impulse encoding.</dd><p>
+
+<dt><i>OV_ECTL_RATEMANAGE_GET [deprecated]</i></dt>
+<dd>
+
+<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
+ovectl_ratemanage_arg *</a></b><br> Old interface to querying bitrate
+management settings; deprecated after move to bit-reservoir style
+management in 1.1 rendered this interface partially obsolete.  Please
+use OV_ECTL_RATEMANGE2_GET instead.
+
+</dd><p>
+
+<dt><i>OV_ECTL_RATEMANAGE_SET [deprecated]</i></dt>
+<dd>
+<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
+ovectl_ratemanage_arg *</a></b><br> Old interface to modifying bitrate
+management settings; deprecated after move to bit-reservoir style
+management in 1.1 rendered this interface partially obsolete.  Please
+use OV_ECTL_RATEMANGE2_SET instead.
+</dd><p>
+
+<dt><i>OV_ECTL_RATEMANAGE_AVG [deprecated]</i></dt>
+<dd>
+<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
+ovectl_ratemanage_arg *</a></b><br> Old interface to setting
+average-bitrate encoding mode; deprecated after move to bit-reservoir
+style management in 1.1 rendered this interface partially obsolete.
+Please use OV_ECTL_RATEMANGE2_SET instead.  
+</dd><p>
+
+<dt><i>OV_ECTL_RATEMANAGE_HARD [deprecated]</i></dt>
+<dd>
+<b>Argument: <a href="ovectl_ratemanage_arg.html">struct
+ovectl_ratemanage_arg *</a></b><br> Old interface to setting
+bounded-bitrate encoding modes; deprecated after move to bit-reservoir
+style management in 1.1 rendered this interface partially obsolete.
+Please use OV_ECTL_RATEMANGE2_SET instead.  
+</dd><p>
+
+
+</dl>
+
+
+<h3>Return Values</h3> vorbis_encode_ctl() returns zero on success,
+placing any further return information (such as the result of a query)
+into the storage pointed to by <i>*arg</i>.  On error,
+vorbis_encode_ctl() may return one of the following error codes:
+
+<dl>
+
+<dt>OV_EINVAL</dt><dd>Invalid argument, or an attempt to modify a
+setting after calling <a
+href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a>.</dd><p>
+
+<dt>OV_EIMPL</dt><dd>Unimplemented or unknown request</dd><p>
+
+</dl>
+
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_init.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_init.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_init.html	(revision 16)
@@ -0,0 +1,88 @@
+<html>
+
+<head>
+<title>libvorbisenc - function - vorbis_encode_init</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_encode_init</h1>
+
+<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
+
+<p>This is the primary function within libvorbisenc for setting up managed bitrate modes.
+<p>Before this function is called, the <a href="vorbis_info.html">vorbis_info</a> struct should be initialized by using vorbis_info_init() from the libvorbis API.  After encoding, vorbis_info_clear should be called.
+<p>The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set constraints for the encoded file.  This function uses these settings to select the appropriate encoding mode and set it up.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+extern int vorbis_encode_init(<a href="vorbis_info.html">vorbis_info</a> *vi,
+			      long channels,
+			      long rate,
+			      
+			      long max_bitrate,
+			      long nominal_bitrate,
+			      long min_bitrate);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vi</i></dt>
+<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
+<dt><i>channels</i></dt>
+<dd>The number of channels to be encoded.</dd>
+<dt><i>rate</i></dt>
+<dd>The sampling rate of the source audio.</dd>
+<dt><i>max_bitrate</i></dt>
+<dd>Desired maximum bitrate (limit). -1 indicates unset.</dd>
+<dt><i>nominal_bitrate</i></dt>
+<dd>Desired average, or central, bitrate. -1 indicates unset.</dd>
+<dt><i>min_bitrate</i></dt>
+<dd>Desired minimum bitrate. -1 indicates unset.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+<li>OV_EINVAL - Invalid setup request, eg, out of range argument. </li>
+<li>OV_EIMPL  - Unimplemented mode; unable to comply with bitrate request.</li>
+</ul>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_init_vbr.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_init_vbr.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_init_vbr.html	(revision 16)
@@ -0,0 +1,81 @@
+<html>
+
+<head>
+<title>libvorbisenc - function - vorbis_encode_init_vbr</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_encode_init_vbr</h1>
+
+<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
+
+<p>This is the primary function within libvorbisenc for setting up variable bitrate ("quality" based) modes.
+<p>Before this function is called, the <a href="vorbis_info.html">vorbis_info</a> struct should be initialized by using vorbis_info_init() from the libvorbis API.  After encoding, vorbis_info_clear should be called.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+extern int vorbis_encode_init_vbr(<a href="vorbis_info.html">vorbis_info</a> *vi,
+			      long channels,
+			      long rate,
+			      
+			      float base_quality);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vi</i></dt>
+<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
+<dt><i>channels</i></dt>
+<dd>The number of channels to be encoded.</dd>
+<dt><i>rate</i></dt>
+<dd>The sampling rate of the source audio.</dd>
+<dt><i>base_quality</i></dt>
+<dd>Desired quality level, currently from -0.1 to 1.0 (lo to hi).</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+<li>OV_EINVAL - Invalid setup request, eg, out of range argument. </li>
+<li>OV_EIMPL  - Unimplemented mode; unable to comply with quality level request.</li>
+</ul>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_init.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_init.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_init.html	(revision 16)
@@ -0,0 +1,88 @@
+<html>
+
+<head>
+<title>libvorbisenc - function - vorbis_encode_setup_init</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_encode_setup_init</h1>
+
+<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
+
+<p>This function performs the last stage of three-step encoding setup, as described in the API overview under <a href="overview.html#BBR">managed bitrate modes</a>.
+
+<p>Before this function is called, the <a
+href="vorbis_info.html">vorbis_info</a> struct should be initialized
+by using vorbis_info_init() from the libvorbis API, one of <a
+href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>
+or <a
+href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a>
+called to initialize the high-level encoding setup, and <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> called if
+necessary to make encoding setup changes.  vorbis_encode_setup_init()
+finalizes the highlevel encoding structure into a complete encoding
+setup after which the application may make no further setup changes.<p>
+
+After encoding, vorbis_info_clear should be called.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+extern int vorbis_encode_setup_init(<a href="vorbis_info.html">vorbis_info</a> *vi);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vi</i></dt>
+<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+<li>OV_EINVAL - Attempt to use vorbis_encode_setup_init() without first calling one of <a
+href="vorbis_encode_setup_managed.html">vorbis_encode_setup_managed()</a>
+or <a
+href="vorbis_encode_setup_vbr.html">vorbis_encode_setup_vbr()</a>
+to initialize the high-level encoding setup
+</li>
+</ul>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_managed.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_managed.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_managed.html	(revision 16)
@@ -0,0 +1,102 @@
+<html>
+
+<head>
+<title>libvorbisenc - function - vorbis_encode_setup_managed</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_encode_setup_managed</h1>
+
+<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
+
+<p>This function performs step-one of a three-step bitrate-managed
+encode setup.  It functions similarly to the one-step setup performed
+by <a href="vorbis_encode_init.html">vorbis_encode_init()</a> but
+allows an application to make further encode setup tweaks using <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> before finally
+calling <a
+href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a> to
+complete the setup process.
+
+<p>Before this function is called, the <a
+href="vorbis_info.html">vorbis_info</a> struct should be initialized
+by using vorbis_info_init() from the libvorbis API.  After encoding,
+vorbis_info_clear should be called.
+
+<p>The max_bitrate, nominal_bitrate, and min_bitrate settings are used
+to set constraints for the encoded file.  This function uses these
+settings to select the appropriate encoding mode and set it up.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+extern int vorbis_encode_init(<a href="vorbis_info.html">vorbis_info</a> *vi,
+			      long channels,
+			      long rate,
+			      
+			      long max_bitrate,
+			      long nominal_bitrate,
+			      long min_bitrate);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vi</i></dt>
+<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
+<dt><i>channels</i></dt>
+<dd>The number of channels to be encoded.</dd>
+<dt><i>rate</i></dt>
+<dd>The sampling rate of the source audio.</dd>
+<dt><i>max_bitrate</i></dt>
+<dd>Desired maximum bitrate (limit). -1 indicates unset.</dd>
+<dt><i>nominal_bitrate</i></dt>
+<dd>Desired average, or central, bitrate. -1 indicates unset.</dd>
+<dt><i>min_bitrate</i></dt>
+<dd>Desired minimum bitrate. -1 indicates unset.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+<li>OV_EINVAL - Invalid setup request, eg, out of range argument. </li>
+<li>OV_EIMPL  - Unimplemented mode; unable to comply with bitrate request.</li>
+</ul>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_vbr.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_vbr.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_encode_setup_vbr.html	(revision 16)
@@ -0,0 +1,90 @@
+<html>
+
+<head>
+<title>libvorbisenc - function - vorbis_encode_setup_vbr</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_encode_setup_vbr</h1>
+
+<p><i>declared in "vorbis/libvorbisenc.h";</i></p>
+
+<p>This function performs step-one of a three-step variable bitrate
+(quality-based) encode setup.  It functions similarly to the one-step
+setup performed by <a
+href="vorbis_encode_init_vbr.html">vorbis_encode_init_vbr()</a> but
+allows an application to make further encode setup tweaks using <a
+href="vorbis_encode_ctl.html">vorbis_encode_ctl()</a> before finally
+calling <a
+href="vorbis_encode_setup_init.html">vorbis_encode_setup_init()</a> to
+complete the setup process.
+
+<p>Before this function is called, the <a href="vorbis_info.html">vorbis_info</a> struct should be initialized by using vorbis_info_init() from the libvorbis API.  After encoding, vorbis_info_clear should be called.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+extern int vorbis_encode_init_vbr(<a href="vorbis_info.html">vorbis_info</a> *vi,
+			      long channels,
+			      long rate,
+			      
+			      float base_quality);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vi</i></dt>
+<dd>File pointer to an initialized <a href="vorbis_info.html">vorbis_info</a> struct.</dd>
+<dt><i>channels</i></dt>
+<dd>The number of channels to be encoded.</dd>
+<dt><i>rate</i></dt>
+<dd>The sampling rate of the source audio.</dd>
+<dt><i>base_quality</i></dt>
+<dd>Desired quality level, currently from -0.1 to 1.0 (lo to hi).</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+<li>OV_EINVAL - Invalid setup request, eg, out of range argument. </li>
+<li>OV_EIMPL  - Unimplemented mode; unable to comply with quality level request.</li>
+</ul>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisenc/vorbis_info.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisenc/vorbis_info.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisenc/vorbis_info.html	(revision 16)
@@ -0,0 +1,81 @@
+<html>
+
+<head>
+<title>vorbis - datatype - vorbis_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libvorbisenc documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+<h1>vorbis_info</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The vorbis_info structure contains information about a vorbis bitstream.
+
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>typedef struct vorbis_info{
+  int version;
+  int channels;
+  long rate;
+  
+  long bitrate_upper;
+  long bitrate_nominal;
+  long bitrate_lower;
+  long bitrate_window;
+
+  void *codec_setup;
+
+} vorbis_info;</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>version</i></dt>
+<dd>Vorbis encoder version used to create this bitstream.</dd>
+<dt><i>channels</i></dt>
+<dd>Int signifying number of channels in bitstream.</dd>
+<dt><i>rate</i></dt>
+<dd>Sampling rate of the bitstream.</dd>
+<dt><i>bitrate_upper</i></dt>
+<dd>Specifies the upper limit in a VBR bitstream.  If the value matches the bitrate_nominal and bitrate_lower parameters, the stream is fixed bitrate.  May be unset if no limit exists.</dd>
+<dt><i>bitrate_nominal</i></dt>
+<dd>Specifies the average bitrate for a VBR bitstream.  May be unset.  If the bitrate_upper and bitrate_lower parameters match, the stream is fixed bitrate.</dd>
+<dt><i>bitrate_lower</i></dt>
+<dd>Specifies the lower limit in a VBR bitstream.  If the value matches the bitrate_nominal and bitrate_upper parameters, the stream is fixed bitrate.  May be unset if no limit exists.</dd>
+<dt><i>bitrate_window</i></dt>
+<dd>Specifies the size of the bit reservoir in seconds relative to the nominal bitrate.  May be unset.</dd>
+<dt><i>codec_setup</i></dt>
+<dd>Pointer to private encoder setup state.</dd>
+
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2004 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>libvorbisenc release 1.1 - 20040709</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/Makefile
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/Makefile	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/Makefile	(revision 16)
@@ -0,0 +1,396 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# doc/vorbisfile/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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.
+
+
+
+
+pkgdatadir = $(datadir)/libvorbis
+pkglibdir = $(libdir)/libvorbis
+pkgincludedir = $(includedir)/libvorbis
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
+subdir = doc/vorbisfile
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(docdir)"
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run aclocal-1.10
+ALLOCA = 
+AMTAR = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run automake-1.10
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O20 -ffast-math -D_REENTRANT -fsigned-char  -DUSE_MEMORY_H
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEBUG = -g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GREP = /bin/grep
+HAVE_PKG_CONFIG = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = 
+MAKEINFO = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+OGG_CFLAGS =  
+OGG_LIBS = -logg  
+PACKAGE = libvorbis
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PDFXMLTEX = 
+PKG_CONFIG = /usr/bin/pkg-config
+PROFILE = -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 1.2.0
+VE_LIB_AGE = 0
+VE_LIB_CURRENT = 2
+VE_LIB_REVISION = 3
+VF_LIB_AGE = 2
+VF_LIB_CURRENT = 5
+VF_LIB_REVISION = 0
+VORBIS_LIBS = -lm
+V_LIB_AGE = 4
+V_LIB_CURRENT = 4
+V_LIB_REVISION = 0
+XSLTPROC = 
+abs_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0/doc/vorbisfile
+abs_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0/doc/vorbisfile
+abs_top_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+abs_top_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisfile
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/giles/projects/ghostscript/libvorbis-1.2.0/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pthread_lib = -lpthread
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target = x86_64-unknown-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = unknown
+top_builddir = ../..
+top_srcdir = ../..
+doc_DATA = OggVorbis_File.html callbacks.html chaining_example_c.html\
+	chainingexample.html crosslap.html datastructures.html decoding.html\
+	example.html exampleindex.html fileinfo.html index.html\
+	initialization.html ov_bitrate.html ov_bitrate_instant.html\
+	ov_callbacks.html ov_clear.html ov_comment.html ov_crosslap.html\
+	ov_info.html ov_open.html ov_open_callbacks.html ov_pcm_seek.html\
+	ov_pcm_seek_lap.html ov_pcm_seek_page.html ov_pcm_seek_page_lap.html\
+	ov_pcm_tell.html ov_pcm_total.html ov_raw_seek.html\
+	ov_raw_seek_lap.html ov_raw_tell.html ov_raw_total.html ov_read.html\
+	ov_read_float.html ov_seekable.html ov_serialnumber.html\
+	ov_streams.html ov_test.html ov_test_callbacks.html ov_test_open.html\
+	ov_time_seek.html ov_time_seek_lap.html ov_time_seek_page.html\
+	ov_time_seek_page_lap.html ov_time_tell.html ov_time_total.html\
+	overview.html reference.html return.html seekexample.html seeking.html\
+	seeking_example_c.html seeking_test_c.html seekingexample.html\
+	style.css threads.html vorbis_comment.html vorbis_info.html\
+	vorbisfile_example_c.html
+
+EXTRA_DIST = $(doc_DATA)
+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 \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/vorbisfile/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/vorbisfile/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-docDATA: $(doc_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+	done
+
+uninstall-docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
+	done
+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
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(docdir)"; 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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+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-docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-docDATA 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 uninstall-docDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/doc/vorbisfile/Makefile.am
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/Makefile.am	(revision 16)
@@ -0,0 +1,23 @@
+## Process this file with automake to produce Makefile.in
+
+docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisfile
+
+doc_DATA = OggVorbis_File.html callbacks.html chaining_example_c.html\
+	chainingexample.html crosslap.html datastructures.html decoding.html\
+	example.html exampleindex.html fileinfo.html index.html\
+	initialization.html ov_bitrate.html ov_bitrate_instant.html\
+	ov_callbacks.html ov_clear.html ov_comment.html ov_crosslap.html\
+	ov_info.html ov_open.html ov_open_callbacks.html ov_pcm_seek.html\
+	ov_pcm_seek_lap.html ov_pcm_seek_page.html ov_pcm_seek_page_lap.html\
+	ov_pcm_tell.html ov_pcm_total.html ov_raw_seek.html\
+	ov_raw_seek_lap.html ov_raw_tell.html ov_raw_total.html ov_read.html\
+	ov_read_float.html ov_seekable.html ov_serialnumber.html\
+	ov_streams.html ov_test.html ov_test_callbacks.html ov_test_open.html\
+	ov_time_seek.html ov_time_seek_lap.html ov_time_seek_page.html\
+	ov_time_seek_page_lap.html ov_time_tell.html ov_time_total.html\
+	overview.html reference.html return.html seekexample.html seeking.html\
+	seeking_example_c.html seeking_test_c.html seekingexample.html\
+	style.css threads.html vorbis_comment.html vorbis_info.html\
+	vorbisfile_example_c.html
+
+EXTRA_DIST = $(doc_DATA)
Index: /libvorbis-1.2.0/doc/vorbisfile/Makefile.in
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/Makefile.in	(revision 16)
@@ -0,0 +1,396 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = doc/vorbisfile
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(docdir)"
+docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(doc_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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 = $(datadir)/doc/$(PACKAGE)-$(VERSION)/vorbisfile
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+doc_DATA = OggVorbis_File.html callbacks.html chaining_example_c.html\
+	chainingexample.html crosslap.html datastructures.html decoding.html\
+	example.html exampleindex.html fileinfo.html index.html\
+	initialization.html ov_bitrate.html ov_bitrate_instant.html\
+	ov_callbacks.html ov_clear.html ov_comment.html ov_crosslap.html\
+	ov_info.html ov_open.html ov_open_callbacks.html ov_pcm_seek.html\
+	ov_pcm_seek_lap.html ov_pcm_seek_page.html ov_pcm_seek_page_lap.html\
+	ov_pcm_tell.html ov_pcm_total.html ov_raw_seek.html\
+	ov_raw_seek_lap.html ov_raw_tell.html ov_raw_total.html ov_read.html\
+	ov_read_float.html ov_seekable.html ov_serialnumber.html\
+	ov_streams.html ov_test.html ov_test_callbacks.html ov_test_open.html\
+	ov_time_seek.html ov_time_seek_lap.html ov_time_seek_page.html\
+	ov_time_seek_page_lap.html ov_time_tell.html ov_time_total.html\
+	overview.html reference.html return.html seekexample.html seeking.html\
+	seeking_example_c.html seeking_test_c.html seekingexample.html\
+	style.css threads.html vorbis_comment.html vorbis_info.html\
+	vorbisfile_example_c.html
+
+EXTRA_DIST = $(doc_DATA)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/vorbisfile/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/vorbisfile/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-docDATA: $(doc_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+	  $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+	done
+
+uninstall-docDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(doc_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(docdir)/$$f"; \
+	done
+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
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(docdir)"; 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
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docDATA
+
+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-docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-docDATA 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 uninstall-docDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/doc/vorbisfile/OggVorbis_File.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/OggVorbis_File.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/OggVorbis_File.html	(revision 16)
@@ -0,0 +1,137 @@
+<html>
+
+<head>
+<title>Vorbisfile - datatype - OggVorbis_File</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>OggVorbis_File</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h"</i></p>
+
+<p>
+The OggVorbis_File structure defines an Ogg Vorbis file.
+<p>
+
+This structure is used in all libvorbisfile routines.  Before it can
+be used, it must be initialized by <a
+href="ov_open.html">ov_open()</a>, <a
+href="ov_fopen.html">ov_fopen()</a>, or <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a>. <em>Important
+Note:</em> The use of <a href="ov_open.html">ov_open()</a> is
+discouraged under Windows due to a peculiarity of Windows linking
+convention; use <a href="ov_fopen.html">ov_fopen()</a> or <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> instead.  This
+caution only applies to Windows; use of <a
+href="ov_open.html">ov_open()</a> is appropriate for all other
+platforms.  See the <a href="ov_open.html">ov_open()</a> page for more
+information.
+
+<p>
+After use, the OggVorbis_File structure must be deallocated with a
+call to <a href="ov_clear.html">ov_clear()</a>.
+
+<p>
+Note that once a file handle is passed to a successful <a
+href="ov_open.html">ov_open()</a> call, the handle is owned by
+libvorbisfile and will be closed by libvorbisfile later during the
+call to <a href="ov_clear.html">ov_clear()</a>.  The handle should not
+be used or closed outside of the libvorbisfile API.  Similarly, files
+opened by <a href="ov_fopen.html">ov_fopen()</a> will also be closed
+internally by vorbisfile in <a href="ov_clear.html">ov_clear()</a>.<p>
+
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a> allows the
+application to choose whether libvorbisfile will or will not close the
+handle in <a href="ov_clear.html">ov_clear()</a>; see the <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> page for more information.<p>
+
+If a call to <a href="ov_open.html">ov_open()</a> or <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> <b>fails</b>,
+libvorbisfile does <b>not</b> assume ownership of the handle and the
+application is expected to close it if necessary.  A failed <a
+href="ov_fopen.html">ov_fopen()</a> call will internally close the
+file handle if the open process fails.<p>
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>typedef struct {
+  void             *datasource; /* Pointer to a FILE *, etc. */
+  int              seekable;
+  ogg_int64_t      offset;
+  ogg_int64_t      end;
+  ogg_sync_state   oy; 
+
+  /* If the FILE handle isn't seekable (eg, a pipe), only the current
+     stream appears */
+  int              links;
+  ogg_int64_t      *offsets;
+  ogg_int64_t      *dataoffsets;
+  long             *serialnos;
+  ogg_int64_t      *pcmlengths;
+  vorbis_info      *vi;
+  vorbis_comment   *vc;
+
+  /* Decoding working state local storage */
+  ogg_int64_t      pcm_offset;
+  int              ready_state;
+  long             current_serialno;
+  int              current_link;
+
+  ogg_int64_t      bittrack;
+  ogg_int64_t      samptrack;
+
+  ogg_stream_state os; /* take physical pages, weld into a logical
+                          stream of packets */
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+
+  <a href="ov_callbacks.html">ov_callbacks</a> callbacks;
+
+} OggVorbis_File;</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>datasource</i></dt>
+
+<dd>Pointer to file or other ogg source.  When using stdio based
+file/stream access, this field contains a <tt>FILE</tt> pointer. When using
+custom IO via callbacks, libvorbisfile treats this void pointer as a
+black box only to be passed to the callback routines provided by the
+application.</dd>
+
+<dt><i>seekable</i></dt>
+<dd>Read-only int indicating whether file is seekable. E.g., a physical file is seekable, a pipe isn't.</dd>
+<dt><i>links</i></dt>
+<dd>Read-only int indicating the number of logical bitstreams within the physical bitstream.</dd>
+<dt><i>ov_callbacks</i></dt>
+<dd>Collection of file manipulation routines to be used on this data source.  When using stdio/FILE access via <a href="ov_open.html">ov_open()</a>, the callbacks will be filled in with stdio calls or wrappers to stdio calls.</dd>
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/callbacks.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/callbacks.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/callbacks.html	(revision 16)
@@ -0,0 +1,121 @@
+<html>
+
+<head>
+<title>Vorbisfile - Callbacks and non-stdio I/O</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Callbacks and non-stdio I/O</h1>
+
+Although stdio is convenient and nearly universally implemented as per
+ANSI C, it is not suited to all or even most potential uses of Vorbis.
+For additional flexibility, embedded applications may provide their
+own I/O functions for use with Vorbisfile when stdio is unavailable or not
+suitable.  One common example is decoding a Vorbis stream from a
+memory buffer.<p>
+
+Use custom I/O functions by populating an <a
+href="ov_callbacks.html">ov_callbacks</a> structure and calling <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> or <a
+href="ov_test_callbacks.html">ov_test_callbacks()</a> rather than the
+typical <a href="ov_open.html">ov_open()</a> or <a
+href="ov_test.html">ov_test()</a>.  Past the open call, use of
+libvorbisfile is identical to using it with stdio.
+
+<h2>Read function</h2> 
+
+The read-like function provided in the <tt>read_func</tt> field is
+used to fetch the requested amount of data.  It expects the fetch
+operation to function similar to file-access, that is, a multiple read
+operations will retrieve contiguous sequential pieces of data,
+advancing a position cursor after each read.<p>
+
+The following behaviors are also expected:<p>
+<ul>
+<li>a return of '0' indicates end-of-data (if the by-thread errno is unset)
+<li>short reads mean nothing special (short reads are not treated as error conditions)
+<li>a return of zero with the by-thread errno set to nonzero indicates a read error
+</ul>
+<p>
+
+<h2>Seek function</h2> 
+
+The seek-like function provided in the <tt>seek_func</tt> field is
+used to request non-sequential data access by libvorbisfile, moving
+the access cursor to the requested position. The seek function is
+optional; if callbacks are only to handle non-seeking (streaming) data
+or the application wishes to force streaming behavior,
+<tt>seek_func</tt> and <tt>tell_func</tt> should be set to NULL. If
+the seek function is non-NULL, libvorbisfile mandates the following
+behavior:
+
+<ul>
+<li>The seek function must always return -1 (failure) if the given
+data abstraction is not seekable.  It may choose to always return -1
+if the application desires libvorbisfile to treat the Vorbis data
+strictly as a stream (which makes for a less expensive open
+operation).<p>
+
+<li>If the seek function initially indicates seekability, it must
+always succeed upon being given a valid seek request.<p>
+
+<li>The seek function must implement all of SEEK_SET, SEEK_CUR and
+SEEK_END.  The implementation of SEEK_END should set the access cursor
+one past the last byte of accessible data, as would stdio
+<tt>fseek()</tt><p>
+</ul>
+
+<h2>Close function</h2>
+
+The close function should deallocate any access state used by the
+passed in instance of the data access abstraction and invalidate the
+instance handle.  The close function is assumed to succeed; its return
+code is not checked.<p>
+
+The <tt>close_func</tt> may be set to NULL to indicate that libvorbis
+should not attempt to close the file/data handle in <a
+href="ov_clear.html">ov_clear</a> but allow the application to handle
+file/data access cleanup itself. For example, by passing the normal
+stdio calls as callback functions, but passing a <tt>close_func</tt>
+that is NULL or does nothing (as in the case of OV_CALLBACKS_NOCLOSE), an
+application may call <a href="ov_clear.html">ov_clear()</a> and then
+later <tt>fclose()</tt> the file originally passed to libvorbisfile.
+
+<h2>Tell function</h2> 
+
+The tell function is intended to mimic the
+behavior of <tt>ftell()</tt> and must return the byte position of the
+next data byte that would be read.  If the data access cursor is at
+the end of the 'file' (pointing to one past the last byte of data, as
+it would be after calling <tt>fseek(file,SEEK_END,0)</tt>), the tell
+function must return the data position (and thus the total file size),
+not an error.<p>
+
+The tell function need not be provided if the data IO abstraction is
+not seekable, or the application wishes to force streaming
+behavior. In this case, the <tt>tell_func</tt> and <tt>seek_func</tt>
+fields should be set to NULL.<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/chaining_example_c.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/chaining_example_c.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/chaining_example_c.html	(revision 16)
@@ -0,0 +1,90 @@
+<html>
+
+<head>
+<title>vorbisfile - chaining_example.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>chaining_example.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre width="80"><b>
+
+<font color="#A020F0">#include &lt;vorbis/codec.h&gt;</font>
+<font color="#A020F0">#include &lt;vorbis/vorbisfile.h&gt;</font>
+
+<strong><font color="#4169E1"><a name="main"></a>int main()</font></strong>{
+  OggVorbis_File ov;
+  int i;
+
+<font color="#A020F0">#ifdef _WIN32</font> <font color="#B22222">/* We need to set stdin to binary mode on windows. */</font>
+  _setmode( _fileno( stdin ), _O_BINARY );
+<font color="#A020F0">#endif</font>
+
+  <font color="#B22222">/* open the file/pipe on stdin */</font>
+  <font color="#4169E1">if</font>(ov_open_callbacks(stdin,&amp;ov,NULL,-1,OV_CALLBACKS_NOCLOSE)&lt;0){
+    printf(<font color="#666666">"Could not open input as an OggVorbis file.\n\n"</font>);
+    exit(1);
+  }
+  
+  <font color="#B22222">/* print details about each logical bitstream in the input */</font>
+  <font color="#4169E1">if</font>(ov_seekable(&amp;ov)){
+    printf(<font color="#666666">"Input bitstream contained %ld logical bitstream section(s).\n"</font>,
+           ov_streams(&amp;ov));
+    printf(<font color="#666666">"Total bitstream playing time: %ld seconds\n\n"</font>,
+           (long)ov_time_total(&amp;ov,-1));
+
+  }<font color="#4169E1">else</font>{
+    printf(<font color="#666666">"Standard input was not seekable.\n"</font>
+           <font color="#666666">"First logical bitstream information:\n\n"</font>);
+  }
+
+  <font color="#4169E1">for</font>(i=0;i&lt;ov_streams(&amp;ov);i++){
+    vorbis_info *vi=ov_info(&amp;ov,i);
+    printf(<font color="#666666">"\tlogical bitstream section %d information:\n"</font>,i+1);
+    printf(<font color="#666666">"\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n"</font>,
+           vi-&gt;rate,vi-&gt;channels,ov_bitrate(&amp;ov,i)/1000,
+           ov_serialnumber(&amp;ov,i));
+    printf(<font color="#666666">"\t\tcompressed length: %ld bytes "</font>,(long)(ov_raw_total(&amp;ov,i)));
+    printf(<font color="#666666">" play time: %lds\n"</font>,(long)ov_time_total(&amp;ov,i));
+  }
+
+  ov_clear(&amp;ov);
+  <font color="#4169E1">return</font> 0;
+}
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/chainingexample.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/chainingexample.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/chainingexample.html	(revision 16)
@@ -0,0 +1,175 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Chaining Example Code</h1>
+
+<p>
+The following is a run-through of the chaining example program supplied
+with vorbisfile - <a href="chaining_example_c.html">chaining_example.c</a>.  
+This program demonstrates how to work with a chained bitstream.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+#include "../lib/misc.h"
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure.  We also declare a other helpful variables to track our progress within the file.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+int main(){
+  OggVorbis_File ov;
+  int i;
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>This example takes its input on stdin which is in 'text' mode by default under Windows; this will corrupt the input data unless set to binary mode.  This applies only to Windows.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+#ifdef _WIN32 /* We need to set stdin to binary mode under Windows */
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>We call <a href="ov_open_callbacks.html">ov_open_callbacks()</a> to
+initialize the <a href="OggVorbis_File.html">OggVorbis_File</a>
+structure.  <a href="ov_open_callbacks.html">ov_open_callbacks()</a>
+also checks to ensure that we're reading Vorbis format and not
+something else. The OV_CALLBACKS_NOCLOSE callbacks instruct
+libvorbisfile not to close stdin later during cleanup.<p>
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)<0){
+    printf("Could not open input as an OggVorbis file.\n\n");
+    exit(1);
+  }
+
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+First we check to make sure the stream is seekable using <a href="ov_seekable.html">ov_seekable</a>.
+
+<p>Then we're going to find the number of logical bitstreams in the physical bitstream using <a href="ov_streams.html">ov_streams</a>.
+
+<p>We use <a href="ov_time_total.html">ov_time_total</a> to determine the total length of the physical bitstream.  We specify that we want the entire bitstream by using the argument <tt>-1</tt>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  if(ov_seekable(&amp;ov)){
+    printf("Input bitstream contained %ld logical bitstream section(s).\n",
+	   ov_streams(&amp;ov));
+    printf("Total bitstream playing time: %ld seconds\n\n",
+	   (long)ov_time_total(&amp;ov,-1));
+
+  }else{
+    printf("Standard input was not seekable.\n"
+	   "First logical bitstream information:\n\n");
+  }
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>Now we're going to iterate through each logical bitstream and print information about that bitstream.
+
+<p>We use <a href="ov_info.html">ov_info</a> to pull out the <a href="vorbis_info.html">vorbis_info</a> struct for each logical bitstream.  This struct contains bitstream-specific info.
+
+<p><a href="ov_serialnumber.html">ov_serialnumber</a> retrieves the unique serial number for the logical bistream.  <a href="ov_raw_total.html">ov_raw_total</a> gives the total compressed bytes for the logical bitstream, and <a href="ov_time_total.html">ov_time_total</a> gives the total time in the logical bitstream.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  for(i=0;i&lt;ov_streams(&amp;ov);i++){
+    vorbis_info *vi=ov_info(&amp;ov,i);
+    printf("\tlogical bitstream section %d information:\n",i+1);
+    printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
+	   vi-&gt;rate,vi-&gt;channels,ov_bitrate(&amp;ov,i)/1000,
+	   ov_serialnumber(&amp;ov,i));
+    printf("\t\tcompressed length: %ld bytes ",(long)(ov_raw_total(&amp;ov,i)));
+    printf(" play time: %lds\n",(long)ov_time_total(&amp;ov,i));
+  } 
+</b></pre>
+        </td>
+</tr>
+</table>
+<p>
+When we're done with the entire physical bitstream, we need to call <a href="ov_clear.html">ov_clear()</a> to release the bitstream.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  ov_clear(&amp;ov);
+  return 0;
+}
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+The full source for chaining_example.c can be found with the vorbis
+distribution in <a href="chaining_example_c.html">chaining_example.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/crosslap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/crosslap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/crosslap.html	(revision 16)
@@ -0,0 +1,121 @@
+<html>
+
+<head>
+<title>Vorbisfile - Sample Crosslapping</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>What is Crosslapping?</h1>
+
+<p>Crosslapping blends two samples together using a window function,
+such that any sudden discontinuities between the samples that may
+cause clicks or thumps are eliminated or blended away.  The technique
+is nearly identical to how Vorbis internally splices together frames
+of audio data during normal decode.  API functions are provided to <a
+href="ov_crosslap.html">crosslap transitions between seperate
+streams</a>, or to crosslap when <a href="seeking.html">seeking within
+a single stream</a>.
+
+<h1>Why Crosslap?</h1>
+<h2>The source of boundary clicks</h2>
+
+<p>Vorbis is a lossy compression format such that any compressed
+signal is at best a close approximation of the original.  The
+approximation may be very good (ie, indistingushable to the human
+ear), but it is an approximation nonetheless.  Even if a sample or set
+of samples is contructed carefully such that transitions from one to
+another match perfectly in the original, the compression process
+introduces minute amplitude and phase errors.  It's an unavoidable
+result of such high compression rates.
+
+<p>If an application transitions instantly from one sample to another,
+any tiny discrepancy introduced in the lossy compression process
+becomes audible as a stairstep discontinuity.  Even if the discrepancy
+in a normal lapped frame is only .1dB (usually far below the
+threshhold of perception), that's a sudden cliff of 380 steps in a 16
+bit sample (when there's a boundary with no lapping).
+
+<h2>I thought Vorbis was gapless</h2>
+
+<p>It is.  Vorbis introduces no extra samples at the beginning or end
+of a stream, nor does it remove any samples.  Gapless encoding
+eliminates 99% of the click, pop or outright blown speaker that would
+occur if boundaries had gaps or made no effort to align
+transitions. However, gapless encoding is not enough to entirely
+eliminate stairstep discontinuities all the time for exactly the
+reasons described above.
+
+<p>Frame lapping, like Vorbis performs internally during continuous
+playback, is necessary to eliminate that last epsilon of trouble.
+
+<h1>Easiest Crosslap</h1>
+
+The easiest way to perform crosslapping in Vorbis is to use the
+lapping functions with no other extra effort.  These functions behave
+identically to when lapping isn't used except to provide
+at-least-very-good lapping results.  Crosslapping will not introduce
+any samples into or remove any samples from the decoded audio; the
+only difference is that the transition is lapped.  Lapping occurs from
+the current PCM position (either in the old stream, or at the position
+prior to calling a lapping seek) forward into the next
+half-short-block of audio data to be read from the new stream or
+position.
+
+<p>Ideally, vorbisfile internally reads an extra frame of audio from
+the old stream/position to perform lapping into the new
+stream/position.  However, automagic crosslapping works properly even
+if the old stream/position is at EOF. In this case, the synthetic
+post-extrapolation generated by the encoder to pad out the last block
+with appropriate data (and avoid encoding a stairstep, which is
+inefficient) is used for crosslapping purposes.  Although this is
+synthetic data, the result is still usually completely unnoticable
+even in careful listening (and always preferable to a click or pop).
+
+<p>Vorbisfile will lap between streams of differing numbers of
+channels. Any extra channels from the old stream are ignored; playback
+of these channels simply ends. Extra channels in the new stream are
+lapped from silence.  Vorbisfile will also lap between streams links
+of differing sample rates.  In this case, the sample rates are ignored
+(no implicit resampling is done to match playback). It is up to the
+application developer to decide if this behavior makes any sense in a
+given context; in practical use, these default behaviors perform
+sensibly.
+
+<h1>Best Crosslap</h1>
+
+<p>To acheive the best possible crosslapping results, avoid the case
+where synthetic extrapolation data is used for crosslapping.  That is,
+design loops and samples such that a little bit of data is left over
+in sample A when seeking to sample B.  Normally, the end of sample A
+and the beginning of B would overlap exactly; this allows
+crosslapping to perform exactly as it would within vorbis when
+stitching audio frames together into continuous decoded audio.
+
+<p>The optimal amount of overlap is half a short-block, and this
+varies by compression mode.  Each encoder will vary in exact block
+size selection; for vorbis 1.0, for -q0 through -q10 and 44kHz or
+greater, a half-short block is 64 samples.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/datastructures.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/datastructures.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/datastructures.html	(revision 16)
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>Vorbisfile - Base Data Structures</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Base Data Structures</h1>
+<p>There are several data structures used to hold file and bitstream information during libvorbisfile decoding. These structures are declared in "vorbis/vorbisfile.h" and "vorbis/codec.h".
+<p>
+<p>When using libvorbisfile, it's not necessary to know about most of the contents of these data structures, but it may be helpful to understand what they contain.
+<br><br>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>datatype</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+	<td><a href="OggVorbis_File.html">OggVorbis_File</a></td>
+	<td>This structure represents the basic file information. It contains 
+	a pointer to the physical file or bitstream and various information about that bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="vorbis_comment.html">vorbis_comment</a></td>
+	<td>This structure contains the file comments. It contains 
+	a pointer to unlimited user comments, information about the number of comments, and a vendor description.</td>
+</tr>
+<tr valign=top>
+<td><a href="vorbis_info.html">vorbis_info</a></td>
+	<td>This structure contains encoder-related information about the bitstream.  It includes encoder info, channel info, and bitrate limits.</td>
+</tr>
+<tr valign=top>
+<td><a href="ov_callbacks.html">ov_callbacks</a></td>
+	<td>This structure contains pointers to the application-specified file manipulation routines set for use by <a href="ov_open_callbacks.html">ov_open_callbacks()</a>. See also the <a href="callbacks.html">provided document on using application-provided callbacks instead of stdio</a>.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/decoding.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/decoding.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/decoding.html	(revision 16)
@@ -0,0 +1,87 @@
+<html>
+
+<head>
+<title>Vorbisfile - Decoding</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Decoding</h1>
+
+<p>
+All libvorbisfile decoding routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+After <a href="initialization.html">initialization</a>, decoding audio
+is as simple as calling <a href="ov_read.html">ov_read()</a>. This
+function works similarly to reading from a normal file using
+<tt>read()</tt>.<p>
+
+However, a few differences are worth noting:
+
+<h2>multiple stream links</h2>
+
+A Vorbis stream may consist of multiple sections (called links) that
+encode differing numbers of channels or sample rates.  It is vitally
+important to pay attention to the link numbers returned by <a
+href="ov_read.html">ov_read</a> and handle audio changes that may
+occur at link boundaries.  Such multi-section files do exist in the
+wild and are not merely a specification curiosity.
+
+<h2>returned data amount</h2>
+
+<a href="ov_read.html">ov_read</a> does not attempt to completely fill
+a large, passed in data buffer; it merely guarantees that the passed
+back data does not overflow the passed in buffer size.  Large buffers
+may be filled by iteratively looping over calls to <a
+href="ov_read.html">ov_read</a> (incrementing the buffer pointer)
+until the original buffer is filled.
+
+<h2>file cursor position</h2>
+
+Vorbis files do not necessarily start at a sample number or time offset
+of zero.  Do not be surprised if a file begins at a positive offset of
+several minutes or hours, such as would happen if a large stream (such
+as a concert recording) is chopped into multiple seperate files.
+
+<p>
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_read.html">ov_read</a></td>
+	<td>This function makes up the main chunk of a decode loop. It takes an
+OggVorbis_File structure, which must have been initialized by a previous
+call to <a href="ov_open.html"><tt>ov_open()</tt></a>, <a href="ov_fopen.html"><tt>ov_fopen()</tt></a>, 
+or <a href="ov_open_callbacks.html"><tt>ov_open_callbacks()</tt></a>.</td>
+</tr>
+<tr valign=top>
+        <td><a href="ov_read_float.html">ov_read_float</a></td>
+        <td>This function decodes to floats instead of integer samples.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/example.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/example.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/example.html	(revision 16)
@@ -0,0 +1,208 @@
+<html>
+
+<head>
+<title>Vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Decoding Example Code</h1>
+
+<p>
+The following is a run-through of the decoding example program supplied
+with libvorbisfile, vorbisfile_example.c.  
+This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
+
+<p>
+First, relevant headers, including vorbis-specific "vorbis/codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "vorbis/codec.h"
+#include "vorbisfile.h"
+</b></pre>
+	</td>
+</tr>
+</table>
+<p>
+We also have to make a concession to Windows users here.  If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+</b></pre>
+	</td>
+</tr>
+</table>
+<p>
+Next, a buffer for the pcm audio output is declared.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+char pcmout[4096];
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure.  We also declare a few other helpful variables to track out progress within the file.
+Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+int main(int argc, char **argv){
+  OggVorbis_File vf;
+  int eof=0;
+  int current_section;
+
+#ifdef _WIN32
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>We call <a href="ov_open_callbacks.html">ov_open_callbacks()</a> to
+initialize the <b>OggVorbis_File</b> structure with default values.
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a> also checks
+to ensure that we're reading Vorbis format and not something else. The
+OV_CALLBACKS_NOCLOSE callbacks instruct libvorbisfile not to close
+stdin later during cleanup.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  if(ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) {
+      fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+      exit(1);
+  }
+
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
+We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  {
+    char **ptr=ov_comment(&vf,-1)->user_comments;
+    vorbis_info *vi=ov_info(&vf,-1);
+    while(*ptr){
+      fprintf(stderr,"%s\n",*ptr);
+      ++ptr;
+    }
+    fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+    fprintf(stderr,"\nDecoded length: %ld samples\n",
+            (long)ov_pcm_total(&vf,-1));
+    fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+  }
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+Here's the read loop:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+
+  while(!eof){
+    long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+    if (ret == 0) {
+      /* EOF */
+      eof=1;
+    } else if (ret < 0) {
+      /* error in the stream.  Not a problem, just reporting it in
+	 case we (the app) cares.  In this case, we don't. */
+    } else {
+      /* we don't bother dealing with sample rate changes, etc, but
+	 you'll have to*/
+      fwrite(pcmout,1,ret,stdout);
+    }
+  }
+
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
+Based on the value returned, we know if we're at the end of the file or have invalid data.  If we have valid data, we write it to the pcm output.
+
+<p>
+Now that we've finished playing, we can pack up and go home.  It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+
+  ov_clear(&vf);
+    
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/exampleindex.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/exampleindex.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/exampleindex.html	(revision 16)
@@ -0,0 +1,39 @@
+<html>
+
+<head>
+<title>vorbisfile - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>VorbisFile Example Code</h1>
+
+<p>
+Three sample programs are included with the vorbisfile distribution.
+<p>
+<a href="example.html">vorbisfile decoding</a><br>
+<a href="seekexample.html">vorbisfile seeking</a><br>
+<a href="chainingexample.html">vorbisfile bitstream chaining</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/fileinfo.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/fileinfo.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/fileinfo.html	(revision 16)
@@ -0,0 +1,95 @@
+<html>
+
+<head>
+<title>Vorbisfile - File Information</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>File Information</h1>
+<p>Libvorbisfile contains many functions to get information about bitstream attributes and decoding status.
+<p>
+All libvorbisfile file information routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_bitrate.html">ov_bitrate</a></td>
+	<td>Returns the average bitrate of the current logical bitstream.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_bitrate_instant.html">ov_bitrate_instant</a></td>
+	<td>Returns the exact bitrate since the last call of this function, or -1 if at the beginning of the bitream or no new information is available.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_streams.html">ov_streams</a></td>
+	<td>Gives the number of logical bitstreams within the current physical bitstream.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_seekable.html">ov_seekable</a></td>
+	<td>Indicates whether the bitstream is seekable.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_serialnumber.html">ov_serialnumber</a></td>
+	<td>Returns the unique serial number of the specified logical bitstream.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_raw_total.html">ov_raw_total</a></td>
+	<td>Returns the total (compressed) bytes in a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_pcm_total.html">ov_pcm_total</a></td>
+	<td>Returns the total number of samples in a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_time_total.html">ov_time_total</a></td>
+	<td>Returns the total time length in seconds of a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_raw_tell.html">ov_raw_tell</a></td>
+	<td>Returns the byte location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_pcm_tell.html">ov_pcm_tell</a></td>
+	<td>Returns the sample location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_time_tell.html">ov_time_tell</a></td>
+	<td>Returns the time location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_info.html">ov_info</a></td>
+	<td>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for a specific bitstream section.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_comment.html">ov_comment</a></td>
+	<td>Returns attached <a href="vorbis_comment.html">comments</a> for the current bitstream.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/index.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/index.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/index.html	(revision 16)
@@ -0,0 +1,49 @@
+<html>
+
+<head>
+<title>Vorbisfile - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Vorbisfile Documentation</h1>
+
+<p>
+
+The Vorbisfile library provides a convenient high-level API for
+decoding and basic manipulation of all Vorbis I audio streams.
+Libvorbisfile is implemented as a layer on top of Xiph.org's reference
+libogg and libvorbis libraries.<p>
+
+Vorbisfile can be used along with any ANSI compliant stdio implementation
+for file/stream access, or use custom stream i/o routines provided by
+the embedded environment.  Both uses are described in detail in this
+documentation.
+
+<p>
+<a href="overview.html">API overview</a><br>
+<a href="reference.html">API reference</a><br>
+<a href="exampleindex.html">Code Examples</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/initialization.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/initialization.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/initialization.html	(revision 16)
@@ -0,0 +1,118 @@
+<html>
+
+<head>
+<title>Vorbisfile - Setup/Teardown</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<H1>Setup/Teardown</h1> <p>In order to decode audio using
+libvorbisfile, a bitstream containing Vorbis audio must be properly
+initialized before decoding and cleared when decoding is finished.
+The simplest possible case is to use <a
+href="ov_fopen.html">ov_fopen()</a> to open the file for access, check
+it for Vorbis content, and prepare it for playback.  A successful <a
+href="return.html">return code</a> from <a
+href="ov_fopen.html">ov_fopen()</a> indicates the file is ready for use.
+Once the file is no longer needed, <a
+href="ov_clear.html">ov_clear()</a> is used to close the file and
+deallocate decoding resources.<p>
+
+On systems other than Windows<a href="ov_open.html#winfoot">[a]</a>, an
+application may also open a file itself using <tt>fopen()</tt>, then pass the
+<tt>FILE *</tt> to libvorbisfile using <a
+href="ov_open.html">ov_open()</a>. </b>Do not</b> call
+<tt>fclose()</tt> on a file handle successfully submitted to <a
+href="ov_open.html">ov_open()</a>; libvorbisfile does this in the <a
+href="ov_clear.html">ov_clear()</a> call.<p>
+
+An application that requires more setup flexibility may open a data
+stream using <a href="ov_open_callbacks.html">ov_open_callbacks()</a>
+to change default libvorbis behavior or specify non-stdio data access
+mechanisms.<p>
+
+<p>
+All libvorbisfile initialization and deallocation routines are declared in "vorbis/vorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_fopen.html">ov_fopen</a></td>
+	<td>Opens a file and initializes the Ogg Vorbis bitstream with default values.  This must be called before other functions in the library may be
+	used.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_open.html">ov_open</a></td>
+	<td>Initializes the Ogg Vorbis bitstream with default values from a passed in file handle.  This must be called before other functions in the library may be
+	used.  <a href="#winfoot"><em>Do not use this call under Windows [a];</em></a> Use <a href="ov_fopen.html">ov_fopen()</a> or <a href="ov_open_callbacks.html">ov_open_callbacks()</a> instead.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_open_callbacks.html">ov_open_callbacks</a></td>
+	<td>Initializes the Ogg Vorbis bitstream from a file handle and custom file/bitstream manipulation routines.  Used instead of <a href="ov_open.html">ov_open()</a> or <a href="ov_fopen.html">ov_fopen()</a> when altering or replacing libvorbis's default stdio I/O behavior, or when a bitstream must be initialized from a <tt>FILE *</tt> under Windows.</td>
+</tr>
+
+<tr valign=top>
+<td><a href="ov_test.html">ov_test</a></td> 
+
+<td>Partially opens a file just far enough to determine if the file
+is an Ogg Vorbis file or not.  A successful return indicates that the
+file appears to be an Ogg Vorbis file, but the <a
+href="OggVorbis_File.html">OggVorbis_File</a> struct is not yet fully
+initialized for actual decoding.  After a <a href="return.html">successful return</a>, the file
+may be closed using <a href="ov_clear.html">ov_clear()</a> or fully
+opened for decoding using <a
+href="ov_test_open.html">ov_test_open()</a>.<p> This call is intended to
+be used as a less expensive file open test than a full <a
+href="ov_open.html">ov_open()</a>.<p>
+Note that libvorbisfile owns the passed in file resource is it returns success; do not <tt>fclose()</tt> files owned by libvorbisfile.</td>
+
+</tr>
+<tr valign=top>
+<td><a href="ov_test_callbacks.html">ov_test_callbacks</a></td>
+<td>As above but allowing application-define I/O callbacks.<p>
+Note that libvorbisfile owns the passed in file resource is it returns success; do not <tt>fclose()</tt> files owned by libvorbisfile.</td>
+
+</tr>
+<tr valign=top>
+<td><a href="ov_test_open.html">ov_test_open</a><td>
+Finish opening a file after a successful call to <a href="ov_test.html">ov_test()</a> or <a href="ov_test_callbacks.html">ov_test_callbacks()</a>.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_clear.html">ov_clear</a></td> <td>Closes the
+	bitstream and cleans up loose ends.  Must be called when
+	finished with the bitstream.  After return, the <a
+	href="OggVorbis_File.html">OggVorbis_File</a> struct is
+	invalid and may not be used before being initialized again
+	before begin reinitialized.
+
+</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_bitrate.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_bitrate.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_bitrate.html	(revision 16)
@@ -0,0 +1,72 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_bitrate</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This function returns the average bitrate for the specified logical bitstream.  This may be different from the <a href=ov_info.html>ov_info->nominal_bitrate</a> value, as it is based on the actual average for this bitstream if the file is seekable.
+<p>Nonseekable files will return the nominal bitrate setting or the average of the upper and lower bounds, if any of these values are set.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_bitrate(OggVorbis_File *vf,int i);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the bitrate for the entire bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL indicates that an invalid argument value was submitted or that the stream represented by <tt>vf</tt> is not open.</li>
+<li>OV_FALSE means the call returned a 'false' status, which in this case most likely indicates that the file is nonseekable and the upper, lower, and nominal bitrates were unset.
+<li><i>n</i> indicates the bitrate for the given logical bitstream or the entire
+   physical bitstream.  If the file is open for random (seekable) access, it will
+   find the *actual* average bitrate.  If the file is streaming (nonseekable), it
+   returns the nominal bitrate (if set) or else the average of the
+   upper/lower bounds (if set).</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_bitrate_instant.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_bitrate_instant.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_bitrate_instant.html	(revision 16)
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_bitrate_instant</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Used to find the most recent bitrate played back within the file.  Will return 0 if the bitrate has not changed or it is the beginning of the file.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_bitrate_instant(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates the beginning of the file or unchanged bitrate info.</li>
+<li><i>n</i> indicates the actual bitrate since the last call.</li>
+<li>OV_FALSE indicates that playback is not in progress, and thus there is no instantaneous bitrate information to report.</li>
+<li>OV_EINVAL indicates that the stream represented by <tt>vf</tt> is not open.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_callbacks.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_callbacks.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_callbacks.html	(revision 16)
@@ -0,0 +1,117 @@
+<html>
+
+<head>
+<title>Vorbisfile - datatype - ov_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_callbacks</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The ov_callbacks structure contains file manipulation function prototypes necessary for opening, closing, seeking, and location.
+
+<p>
+The ov_callbacks structure does not need to be user-defined if you are
+working with stdio-based file manipulation; the <a
+href="ov_fopen.html">ov_fopen()</a> and <a
+href="ov_open.html">ov_open()</a> calls internally provide default callbacks for
+stdio.  ov_callbacks are defined and passed to <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> when
+implementing non-stdio based stream manipulation (such as playback
+from a memory buffer) or when <a
+href="ov_open.html#winfoot">ov_open()-style initialization from a <tt>FILE *</tt> is required under Windows [a]</a>.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>typedef struct {
+  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
+  int    (*seek_func)  (void *datasource, ogg_int64_t offset, int whence);
+  int    (*close_func) (void *datasource);
+  long   (*tell_func)  (void *datasource);
+} ov_callbacks;</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>read_func</i></dt>
+<dd>Pointer to custom data reading function.</dd>
+<dt><i>seek_func</i></dt>
+<dd>Pointer to custom data seeking function. If the data source is not seekable (or the application wants the data source to be treated as unseekable at all times), the provided seek callback should always return -1 (failure) or the <tt>seek_func</tt> and <tt>tell_func</tt> fields should be set to NULL.</dd>
+<dt><i>close_func</i></dt>
+<dd>Pointer to custom data source closure function.  Set to NULL if libvorbisfile should not attempt to automatically close the file/data handle.</dd>
+<dt><i>tell_func</i></dt>
+<dd>Pointer to custom data location function. If the data source is not seekable (or the application wants the data source to be treated as unseekable at all times), the provided tell callback should always return -1 (failure) or the <tt>seek_func</tt> and <tt>tell_func</tt> fields should be set to NULL.</dd>
+</dl>
+
+<p>
+
+<h3>Predefined callbacks</h3>
+The header vorbis/vorbisfile.h provides several predefined static ov_callbacks structures that may be passed to <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a>:
+<dl>
+<dt><tt>OV_CALLBACKS_DEFAULT</tt><dd>
+
+These callbacks provide the same behavior as used internally by <a
+href="ov_fopen.html">ov_fopen()</a> and <a
+href="ov_open.html">ov_open()</a>.
+
+<dt><tt>OV_CALLBACKS_NOCLOSE</tt><dd>
+
+The same as <tt>OV_CALLBACKS_DEFAULT</tt>, but with the
+<tt>close_func</tt> field set to NULL.  The most typical use would be
+to use <a href="ov_open_callbacks.html">ov_open_callbacks()</a> to
+provide the same behavior as <a href="ov_open.html">ov_open()</a>, but
+not close the file/data handle in <a
+href="ov_clear.html">ov_clear()</a>.
+
+<dt><tt>OV_CALLBACKS_STREAMONLY</tt><dd>
+
+A set of callbacks that set <tt>seek_func</tt> and <tt>tell_func</tt>
+to NULL, thus forcing strict streaming-only behavior regardless of
+whether or not the input is actually seekable.
+
+<dt><tt>OV_CALLBACKS_STREAMONLY_NOCLOSE</tt><dd>
+
+The same as <tt>OV_CALLBACKS_STREAMONLY</tt>, but with
+<tt>close_func</tt> also set to null, preventing libvorbisfile from
+attempting to close the file/data handle in <a
+href="ov_clear.html">ov_clear()</a>.
+
+</dl>
+<p>
+
+<h3>Examples and usage</h3>
+
+See <a href="callbacks.html">the callbacks and non-stdio I/O document</a> for more
+detailed information on required behavior of the various callback
+functions.<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_clear.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_clear.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_clear.html	(revision 16)
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_clear</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_clear</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p> After a bitstream has been opened using <a href="ov_fopen.html">ov_fopen()</a>/<a href="ov_open.html">ov_open()</a>/<a href="ov_open_callbacks.html">ov_open_callbacks()</a> and decoding is complete, the application must call <tt>ov_clear()</tt> to clear
+the decoder's buffers.  <tt>ov_clear()</tt> will also close the file unless it was opened using <a href="ov_open_callbacks.html">ov_open_callbacks()</a> with the <tt>close_func</tt> callback set to NULL.<p>
+
+<tt>ov_clear()</tt> must also be called after a successful call to <a href="ov_test.html">ov_test()</a> or <a href="ov_test_callbacks.html">ov_test_callbacks()</a>.<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_clear(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.  After <tt>ov_clear</tt> has been called, the contents of this structure are deallocated, and it can no longer be used without being reinitialized by a call to <a href="ov_fopen.html">ov_fopen()</a>, <a href="ov_open.html">ov_open()</a> or <a href="ov_open_callbacks.html">ov_open_callbacks()</a>.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_comment.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_comment.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_comment.html	(revision 16)
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_comment</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns a pointer to the <a href="vorbis_comment.html">vorbis_comment</a> struct for the specified bitstream.  For nonseekable streams, returns the struct for the current bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the <a href="vorbis_comment.html">vorbis_comment</a> struct for the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Returns the vorbis_comment struct for the specified bitstream.</li>
+<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_crosslap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_crosslap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_crosslap.html	(revision 16)
@@ -0,0 +1,100 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_crosslap</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_crosslap()</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>ov_crosslap overlaps and blends the boundary at a transition
+between two separate streams represented by separate <a
+href="OggVorbis_File.html">OggVorbis_File</a> structures.  For lapping
+transitions due to seeking within a single stream represented by a
+single <a href="OggVorbis_File.html">OggVorbis_File</a> structure,
+consider using the lapping versions of the <a
+href="seeking.html">vorbisfile seeking functions</a> instead.
+
+<p>ov_crosslap is used between the last (usually ov_read) call on
+the old stream and the first ov_read from the new stream.  Any
+desired positioning of the new stream must occur before the call to
+ov_crosslap() as a seek dumps all prior lapping information from a
+stream's decode state.  Crosslapping does not introduce or remove any
+extraneous samples; positioning works exactly as if ov_crosslap was not
+called.
+
+<p>ov_crosslap will lap between streams of differing numbers of
+channels. Any extra channels from the old stream are ignored; playback
+of these channels simply ends. Extra channels in the new stream are
+lapped from silence.  ov_crosslap will also lap between streams links
+of differing sample rates.  In this case, the sample rates are ignored
+(no implicit resampling is done to match playback). It is up to the
+application developer to decide if this behavior makes any sense in a
+given context; in practical use, these default behaviors perform
+sensibly.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_crosslap(<a href="OggVorbis_File.html">OggVorbis_File</a> *old, <a href="OggVorbis_File.html">OggVorbis_File</a> *new);
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>old</i></dt>
+<dd>A pointer to the OggVorbis_File structure representing the origin stream from which to transition playback.</dd>
+
+<dt><i>new</i></dt>
+<dd>A pointer to the OggVorbis_File structure representing the stream with which playback continues.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<dl>
+<dt>OV_EINVAL</dt>
+  <dd>crosslap called with an OggVorbis_File structure that isn't open.</dd>
+<dt>OV_EFAULT</dt>
+  <dd>internal error; implies a library bug or external heap corruption.</dd>
+<dt>OV_EREAD</dt>
+  <dd> A read from media returned an error.</dd>
+<dt>OV_EOF</dt>
+  <dd>indicates stream <tt>vf2</tt> is at end of file, or that <tt>vf1</tt> is at end of file immediately after a seek (making crosslap impossible as there's no preceding decode state to crosslap).</dd>
+<dt><i>0</i></dt>
+  <dd>success.</dd>
+</dl>
+</blockquote>
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_fopen.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_fopen.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_fopen.html	(revision 16)
@@ -0,0 +1,124 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_fopen</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_fopen</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This is the simplest function used to open and initialize an OggVorbis_File
+structure. It sets up all the related decoding structure.
+<p>The first argument is a file path suitable
+for passing to fopen(). <tt>vf</tt> should be a pointer to an empty
+OggVorbis_File structure -- this is used for ALL the externally visible
+libvorbisfile functions. Once this has been called, the same <a
+href="OggVorbis_File.html">OggVorbis_File</a> struct should be passed
+to all the libvorbisfile functions.
+<p>The <tt>vf</tt> structure initialized using ov_fopen() must
+eventually be cleaned using <a href="ov_clear.html">ov_clear()</a>.
+
+<p>
+It is often useful to call <tt>ov_fopen()</tt> simply to determine
+whether a given file is a Vorbis bitstream. If the <tt>ov_fopen()</tt>
+call fails, then the file is either inaccessable (errno is set) or not
+recognizable as Vorbis (errno unchanged).  If the call succeeds but
+the initialized <tt>vf</tt> structure will not be used, the
+application is responsible for calling <a
+href="ov_clear.html">ov_clear()</a> to clear the decoder's buffers and
+close the file.<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_fopen(char *path,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>path</i></dt>
+<dd>Null terminated string containing a file path suitable for passing to <tt>fopen()</tt>.
+</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream does not contain any Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<h3>Notes</h3>
+<dl>
+
+<dt><b>[a] Threaded decode</b><p>
+<dd>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open_callbacks()</tt>
+in the main control thread--instead, call <tt>ov_open_callbacks()</tt> in your decode/playback
+thread. This is important because <tt>ov_open_callbacks()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).  See <a href="threads.html">Thread Safety</a> for other information on using libvorbisfile with threads.
+<p>
+
+<dt><b>[b] Mixed media streams</b><p>
+<dd>
+As of Vorbisfile release 1.2.0, Vorbisfile is able to access the
+Vorbis content in mixed-media Ogg streams, not just Vorbis-only
+streams.  For example, Vorbisfile may be used to open and access the
+audio from an Ogg stream consisting of Theora video and Vorbis audio.
+Vorbisfile 1.2.0 decodes the first logical audio stream of each
+physical stream section.<p>
+
+<dt><b>[c] Faster testing for Vorbis files</b><p>
+<dd><a href="ov_test.html">ov_test()</a> and <a
+href="ov_test_callbacks.html">ov_test_callbacks()</a> provide less
+computationally expensive ways to test a file for Vorbisness, but
+require more setup code.<p>
+
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_info.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_info.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_info.html	(revision 16)
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_info</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for the specified bitstream.  For nonseekable files, always returns the current vorbis_info struct.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+vorbis_info *ov_info(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,int link);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. </dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Returns the vorbis_info struct for the specified bitstream.  Returns vorbis_info for current bitstream if the file is nonseekable or i=-1.</li>
+<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_open.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_open.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_open.html	(revision 16)
@@ -0,0 +1,183 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_open</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_open</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>ov_open is one of three initialization functions used to initialize
+an OggVorbis_File structure and prepare a bitstream for playback.
+
+<p><em><b> WARNING for Windows developers: </b> Do not use ov_open() in
+Windows applications; Windows linking places restrictions on
+passing <tt>FILE *</tt> handles successfully, and ov_open() runs
+afoul of these restrictions <a href="#winfoot">[a]</a>.  See the <a
+href="ov_open_callbacks.html">ov_open_callbacks() page </a> for
+details on using <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> instead. </em>
+
+<p>The first argument must be a file pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream). <tt>vf</tt> should be a pointer to the
+OggVorbis_File structure -- this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <a href="OggVorbis_File.html">OggVorbis_File</a>
+struct should be passed to all the libvorbisfile functions.<p>
+
+The <tt>vf</tt> structure initialized using ov_fopen() must eventually
+be cleaned using <a href="ov_clear.html">ov_clear()</a>.  Once a
+<tt>FILE *</tt> handle is passed to ov_open() successfully, the
+application MUST NOT <tt>fclose()</tt> or in any other way manipulate
+that file handle.  Vorbisfile will close the file in <a
+href="ov_clear.html">ov_clear()</a>.  If the application must be able
+to close the <tt>FILE *</tt> handle itself, see <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> with the use of
+<tt>OV_CALLBACKS_NOCLOSE</tt>.
+
+<p>It is often useful to call <tt>ov_open()</tt> simply to determine
+whether a given file is a Vorbis bitstream. If the <tt>ov_open()</tt>
+call fails, then the file is not recognizable as Vorbis.  If the call
+succeeds but the initialized <tt>vf</tt> structure will not be used,
+the application is responsible for calling <a
+href="ov_clear.html">ov_clear()</a> to clear the decoder's buffers and
+close the file.<p>
+
+If [and only if] an <tt>ov_open()</tt> call fails, the application
+must explicitly <tt>fclose()</tt> the <tt>FILE *</tt> pointer itself.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_open(FILE *f,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,char *initial,long ibytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<a name="notes"></a>
+<h3>Notes</h3>
+<dl>
+
+<a name="winfoot"></a>
+<dt><b>[a] Windows and ov_open()</b><p>
+
+<dd>Under Windows, stdio file access is implemented in each of many
+variants of crt.o, several of which are typically installed on any one
+Windows machine.  If libvorbisfile and the application using
+libvorbisfile are not linked against the exact same
+version/variant/build of crt.o (and they usually won't be, especially
+using a prebuilt libvorbis DLL), <tt>FILE *</tt> handles cannot be
+opened in the application and then passed to vorbisfile to be used
+by stdio calls from vorbisfile's different version of CRT.  For this
+reason, using <a href="ov_open.html">ov_open()</a> under Windows
+without careful, expert linking will typically cause a protection
+fault.  Windows programmers should use <a
+href="ov_fopen.html">ov_fopen()</a> (which will only use libvorbis's
+crt.o) or <a href="ov_open_callbacks.html">ov_open_callbacks()</a>
+(which will only use the application's crt.o) instead.<p>
+
+This warning only applies to Windows and only applies to <a
+href="ov_open.html">ov_open()</a>.  It is perfectly safe to use <a
+href="ov_open.html">ov_open()</a> on all other platforms.<p>
+
+For more information, see the following microsoft pages on <a
+href="http://msdn2.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx">C
+runtime library linking</a> and a specific description of <a
+href="http://msdn2.microsoft.com/en-us/library/ms235460(VS.80).aspx">restrictions
+on passing CRT objects across DLL boundaries</a>.
+
+<p>
+
+<dt><b>[b] Threaded decode</b><p>
+<dd>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open()</tt>
+in the main control thread--instead, call <tt>ov_open()</tt> in your decode/playback
+thread. This is important because <tt>ov_open()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).  See <a href="threads.html">Thread Safety</a> for other information on using libvorbisfile with threads.
+<p>
+
+<dt><b>[c] Mixed media streams</b><p>
+<dd>
+As of Vorbisfile release 1.2.0, Vorbisfile is able to access the
+Vorbis content in mixed-media Ogg streams, not just Vorbis-only
+streams.  For example, Vorbisfile may be used to open and access the
+audio from an Ogg stream consisting of Theora video and Vorbis audio.
+Vorbisfile 1.2.0 decodes the first logical audio stream of each
+physical stream section.<p>
+
+<dt><b>[d] Faster testing for Vorbis files</b><p>
+<dd><a href="ov_test.html">ov_test()</a> and <a
+href="ov_test_callbacks.html">ov_test_callbacks()</a> provide less
+computationally expensive ways to test a file for Vorbisness, but
+require more setup code.<p>
+
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_open_callbacks.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_open_callbacks.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_open_callbacks.html	(revision 16)
@@ -0,0 +1,147 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_open_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_open_callbacks</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This is an alternative function used to open and initialize an
+OggVorbis_File structure when using a data source other than a file,
+when its necessary to modify default file access behavior, or to
+initialize a Vorbis decode from a <tt>FILE *</tt> pointer under
+Windows where <a href="ov_open.html">ov_open()</a> cannot be used.  It
+allows the application to specify custom file manipulation routines
+and sets up all the related decoding structures.
+
+<p>Once ov_open_callbacks() has been called, the same
+<tt>OggVorbis_File</tt> struct should be passed to all the
+libvorbisfile functions.  Unlike <a
+href="ov_fopen.html">ov_fopen()</a> and <a
+href="ov_open.html">ov_open()</a>, ov_open_callbacks() may be used to
+instruct vorbisfile to either automatically close or not to close the
+file/data access handle in <a href="ov_clear.html">ov_clear()</a>.
+Automatic closure is disabled by passing NULL as the close callback,
+or using one of the predefined callback sets that specify a NULL close
+callback.  The application is responsible for closing a file when a
+call to ov_open_callbacks() is unsuccessful.<p>
+
+See also <a href="callbacks.html">Callbacks and Non-stdio I/O</a> for
+information on designing and specifying custom callback functions.<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_open_callbacks(void *datasource, <a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *initial, long ibytes, <a href="ov_callbacks.html">ov_callbacks</a> callbacks);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>datasource</i></dt>
+<dd>Pointer to a data structure allocated by the calling application, containing any state needed by the callbacks provided.</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the stream and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the stream and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt>.</dd>
+<dt><i>callbacks</i></dt>
+<dd>A completed <a href="ov_callbacks.html">ov_callbacks</a> struct which indicates desired custom file manipulation routines.  vorbisfile.h defines several preprovided callback sets; see <a href="ov_callbacks.html">ov_callbacks</a> for details.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream does not contain any Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<h3>Notes</h3>
+<dl>
+
+<dt><b>[a] Windows and use as an ov_open() substitute</b><p> Windows
+applications should not use <a href="ov_open.html">ov_open()</a> due
+to the likelihood of <a href="ov_open.html#winfoot">CRT linking
+mismatches and runtime protection faults
+[ov_open:a]</a>. ov_open_callbacks() is a safe substitute; specifically:
+
+<pre><tt>ov_open_callbacks(f, vf, initial, ibytes, OV_CALLBACKS_DEFAULT);</tt>
+</pre>
+
+... provides exactly the same functionality as <a
+href="ov_open.html">ov_open()</a> but will always work correctly under
+Windows, regardless of linking setup details.<p>
+
+<dt><b>[b] Threaded decode</b><p>
+<dd>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open_callbacks()</tt>
+in the main control thread--instead, call <tt>ov_open_callbacks()</tt> in your decode/playback
+thread. This is important because <tt>ov_open_callbacks()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).  See <a href="threads.html">Thread Safety</a> for other information on using libvorbisfile with threads.
+<p>
+
+<dt><b>[c] Mixed media streams</b><p>
+<dd>
+As of Vorbisfile release 1.2.0, Vorbisfile is able to access the
+Vorbis content in mixed-media Ogg streams, not just Vorbis-only
+streams.  For example, Vorbisfile may be used to open and access the
+audio from an Ogg stream consisting of Theora video and Vorbis audio.
+Vorbisfile 1.2.0 decodes the first logical audio stream of each
+physical stream section.<p>
+
+<dt><b>[d] Faster testing for Vorbis files</b><p>
+<dd><a href="ov_test.html">ov_test()</a> and <a
+href="ov_test_callbacks.html">ov_test_callbacks()</a> provide less
+computationally expensive ways to test a file for Vorbisness, but
+require more setup code.<p>
+
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek.html	(revision 16)
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_pcm_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in pcm samples) within the physical bitstream.  This function only works for seekable streams.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_lap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_lap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_lap.html	(revision 16)
@@ -0,0 +1,103 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_pcm_seek_lap</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek_lap</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in pcm samples) within the physical bitstream.  This variant of <a
+href="ov_pcm_seek.html">ov_pcm_seek</a> also automatically
+crosslaps the transition from the previous playback position into the
+new playback position in order to eliminate clicking and boundary
+discontinuities.  Otherwise, usage and behavior is identical to <a
+href="ov_pcm_seek.html">ov_pcm_seek</a>.
+
+<p>ov_pcm_seek_lap also updates everything needed within the decoder,
+so you can immediately call <a href="ov_read.html">ov_read()</a> and
+get data from the newly seeked to position.
+
+<p>ov_pcm_seek_lap will lap between logical stream links of differing
+numbers of channels. Any extra channels from the origin of the seek
+are ignored; playback of these channels simply ends. Extra channels at
+the destination are lapped from silence.  ov_pcm_seek_lap will also
+lap between logical stream links of differing sample rates.  In this
+case, the sample rates are ignored (no implicit resampling is done to
+match playback). It is up to the application developer to decide if
+this behavior makes any sense in a given context; in practical use,
+these default behaviors perform sensibly.
+
+<p>This function only works for seekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EOF - Indicates stream is at end of file immediately after a seek 
+  (making crosslap impossible as there's no preceeding decode state to crosslap).
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_page.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_page.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_page.html	(revision 16)
@@ -0,0 +1,84 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_pcm_seek_page</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek_page</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the closest page preceding the specified location (in pcm samples) within the physical bitstream.  This function only works for seekable streams.
+<p>This function is faster than <a href="ov_pcm_seek.html">ov_pcm_seek</a> because the function can begin decoding at a page boundary rather than seeking through any remaining samples before the specified location.  However, it is less accurate.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_page_lap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_page_lap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_seek_page_lap.html	(revision 16)
@@ -0,0 +1,112 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_pcm_seek_page_lap</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek_page_lap</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the closest page preceding the specified location (in pcm
+samples) within the physical bitstream.  This variant of <a
+href="ov_pcm_seek_page.html">ov_pcm_seek_page</a> also automatically
+crosslaps the transition from the previous playback position into the
+new playback position in order to eliminate clicking and boundary
+discontinuities.  Otherwise, usage and behavior is identical to <a
+href="ov_pcm_seek_page.html">ov_pcm_seek_page</a>.
+
+<p>This function is faster than <a
+href="ov_pcm_seek_lap.html">ov_pcm_seek_lap</a> because the function
+can begin decoding at a page boundary rather than seeking through any
+remaining samples before the specified location.  However, it is less
+accurate.
+
+<p>ov_pcm_seek_page_lap also updates everything needed within the
+decoder, so you can immediately call <a
+href="ov_read.html">ov_read()</a> and get data from the newly seeked
+to position.
+
+<p>ov_pcm_seek_page_lap will lap between logical stream links of
+differing numbers of channels. Any extra channels from the origin of
+the seek are ignored; playback of these channels simply ends. Extra
+channels at the destination are lapped from silence.
+ov_pcm_seek_page_lap will also lap between logical stream links of
+differing sample rates.  In this case, the sample rates are ignored
+(no implicit resampling is done to match playback). It is up to the
+application developer to decide if this behavior makes any sense in a
+given context; in practical use, these default behaviors perform
+sensibly.
+
+<p>This function only works for seekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EOF - Indicates stream is at end of file immediately after a seek 
+  (making crosslap impossible as there's no preceeding decode state to crosslap).
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_tell.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_tell.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_tell.html	(revision 16)
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_pcm_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_tell</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the current offset in samples.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in samples.</li>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_total.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_total.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_pcm_total.html	(revision 16)
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_pcm_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_total</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the total pcm samples of the physical bitstream or a specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  To retrieve the total pcm samples for the entire physical bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist or the bitstream is unseekable.</li>
+<li>
+total length in pcm samples of content if i=-1.</li>
+<li>length in pcm samples of logical bitstream if i=0 to n.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_raw_seek.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_raw_seek.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_raw_seek.html	(revision 16)
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_raw_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_seek</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in compressed raw bytes) within the physical bitstream.  This function only works for seekable streams.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>When seek speed is a priority, this is the best seek funtion to use.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_raw_seek(OggVorbis_File *vf,long pos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in compressed bytes to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_raw_seek_lap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_raw_seek_lap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_raw_seek_lap.html	(revision 16)
@@ -0,0 +1,110 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_raw_seek_lap</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_seek_lap</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in compressed raw bytes) within the
+physical bitstream.  This variant of <a
+href="ov_raw_seek.html">ov_raw_seek</a> also automatically crosslaps
+the transition from the previous playback position into the new
+playback position in order to eliminate clicking and boundary
+discontinuities.  Otherwise, usage and behavior is identical to <a
+href="ov_raw_seek.html">ov_raw_seek</a>.
+
+<p>When seek speed is a priority, but crosslapping is still desired,
+this is the best seek funtion to use.
+
+<p>ov_raw_seek_lap also updates everything needed within the decoder,
+so you can immediately call <a href="ov_read.html">ov_read()</a> and
+get data from the newly seeked to position.
+
+<p>ov_raw_seek_lap will lap between logical stream links of differing
+numbers of channels. Any extra channels from the origin of the seek
+are ignored; playback of these channels simply ends. Extra channels at
+the destination are lapped from silence.  ov_raw_seek_lap will also
+lap between logical stream links of differing sample rates.  In this
+case, the sample rates are ignored (no implicit resampling is done to
+match playback). It is up to the application developer to decide if
+this behavior makes any sense in a given context; in practical use,
+these default behaviors perform sensibly.
+
+<p>This function only works for seekable streams.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_raw_seek_lap(OggVorbis_File *vf,long pos);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in compressed bytes to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EOF - Indicates stream is at end of file immediately after a seek 
+  (making crosslap impossible as there's no preceeding decode state to crosslap).
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_raw_tell.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_raw_tell.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_raw_tell.html	(revision 16)
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_raw_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_tell</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the current offset in raw compressed bytes.</p>
+
+<p>Note that if you later use ov_raw_seek() to return to this point, you won't generally get back to exactly the same place, due to internal buffering. Also note that a read operation may not cause a change to the current raw offset - only a read that requires reading more data from the underlying data source will do that.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in bytes.</li>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_raw_total.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_raw_total.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_raw_total.html	(revision 16)
@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_raw_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_total</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the total (compressed) bytes of the physical bitstream or a specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  To retrieve the total bytes for the entire physical bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist or the bitstream is nonseekable</li>
+<li><tt>n</tt>
+total length in compressed bytes of content if i=-1.</li>
+<li><tt>n</tt> length in compressed bytes of logical bitstream if i=0 to n.</li>
+</blockquote>
+<p>
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_read.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_read.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_read.html	(revision 16)
@@ -0,0 +1,123 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_read</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_read()</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>
+   This is the main function used to decode a Vorbis file within a
+   loop.  It returns up to the specified number of bytes of decoded PCM audio
+   in the requested endianness, signedness, and word size.  If the audio is
+   multichannel, the channels are interleaved in the output buffer.
+   If the passed in buffer is large, <tt>ov_read()</tt> will not fill
+   it; the passed in buffer size is treated as a <em>limit</em> and
+   not a request.
+<p>
+   
+Note that up to this point, the Vorbisfile API could more or less hide the
+   multiple logical bitstream nature of chaining from the toplevel
+   application if the toplevel application didn't particularly care.
+   However, when reading audio back, the application must be aware
+   that multiple bitstream sections do not necessarily use the same
+   number of channels or sampling rate. <p> <tt>ov_read()</tt> passes
+   back the index of the sequential logical bitstream currently being
+   decoded (in <tt>*bitstream</tt>) along with the PCM data in order
+   that the toplevel application can handle channel and/or sample
+   rate changes. This number will be incremented at chaining
+   boundaries even for non-seekable streams. For seekable streams, it
+   represents the actual chaining index within the physical bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_read(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *buffer, int length, int bigendianp, int word, int sgned, int *bitstream);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>buffer</i></dt>
+<dd>A pointer to an output buffer.  The decoded output is inserted into this buffer.</dd>
+<dt><i>length</i></dt>
+<dd>Number of bytes to be read into the buffer. Should be the same size as the buffer.  A typical value is 4096.</dd>
+<dt><i>bigendianp</i></dt>
+<dd>Specifies big or little endian byte packing.  0 for little endian, 1 for b
+ig endian.  Typical value is 0.</dd>
+<dt><i>word</i></dt>
+<dd>Specifies word size.  Possible arguments are 1 for 8-bit samples, or 2 or 
+16-bit samples.  Typical value is 2.</dd>
+<dt><i>sgned</i></dt>
+<dd>Signed or unsigned data.  0 for unsigned, 1 for signed.  Typically 1.</dd>
+<dt><i>bitstream</i></dt>
+<dd>A pointer to the number of the current logical bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<dl>
+<dt>OV_HOLE</dt>
+  <dd>indicates there was an interruption in the data.
+      <br>(one of: garbage between pages, loss of sync followed by
+           recapture, or a corrupt page)</dd>
+<dt>OV_EBADLINK</dt>
+  <dd>indicates that an invalid stream section was supplied to
+      libvorbisfile, or the requested link is corrupt.</dd>
+<dt>0</dt>
+  <dd>indicates EOF</dd>
+<dt><i>n</i></dt>
+  <dd>indicates actual number of bytes read.  <tt>ov_read()</tt> will
+      decode at most one vorbis packet per invocation, so the value
+      returned will generally be less than <tt>length</tt>.
+</dl>
+</blockquote>
+
+<h3>Notes</h3>
+<p><b>Typical usage:</b>
+<blockquote>
+<tt>bytes_read = ov_read(&amp;vf,
+buffer, 4096,0,2,1,&amp;current_section)</tt>
+</blockquote>
+
+This reads up to 4096 bytes into a buffer, with signed 16-bit
+little-endian samples.
+</p>
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_read_float.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_read_float.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_read_float.html	(revision 16)
@@ -0,0 +1,101 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_read_float</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_read_float()</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>
+   This is the function used to decode a Vorbis file within a loop, but
+   returns samples in native float format instead of in integer formats.
+</p><p>
+   For more information on how ov_read_float() deals with the complex issues 
+   of chaining, etc, refer to the documentation for <a href="ov_read.html">ov_read()</a>.
+</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_read_float(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, float ***pcm_channels, int samples, int *bitstream);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible vorbisfile
+functions.</dd>
+<dt><i>pcm_channels</i></dt>
+<dd>A pointer to an output buffer.  The pointer will be set to the decoded output buffer.</dd>
+<dt><i>samples</i></dt>
+<dd>Maximum number of decoded samples to produce.</dd>
+<dt><i>bitstream</i></dt>
+<dd>A pointer to the number of the current logical bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<dl>
+<dt>OV_HOLE</dt>
+  <dd>indicates there was an interruption in the data.
+      <br>(one of: garbage between pages, loss of sync followed by
+           recapture, or a corrupt page)</dd>
+<dt>OV_EBADLINK</dt>
+  <dd>indicates that an invalid stream section was supplied to
+      libvorbisfile, or the requested link is corrupt.</dd>
+<dt>0</dt>
+  <dd>indicates EOF</dd>
+<dt><i>n</i></dt>
+  <dd>indicates actual number of samples read.  <tt>ov_read_float()</tt> will
+      decode at most one vorbis packet per invocation, so the value
+      returned will generally be less than <tt>length</tt>.
+</dl>
+</blockquote>
+
+<h3>Notes</h3>
+<p><b>Typical usage:</b>
+<blockquote>
+<tt>float **pcm;
+samples_read = ov_read_float(&amp;vf,pcm, 1024, &amp;current_section)</tt>
+</blockquote>
+
+This decodes up to 1024 float samples.
+</p>
+
+<br>
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
+
+
+
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_seekable.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_seekable.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_seekable.html	(revision 16)
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_seekable</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_seekable</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This indicates whether or not the bitstream is seekable.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_seekable(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates that the file is not seekable.</li>
+<li>nonzero indicates that the file is seekable.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_serialnumber.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_serialnumber.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_serialnumber.html	(revision 16)
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_serialnumber</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_serialnumber</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the serialnumber of the specified logical bitstream link number within the overall physical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_serialnumber(OggVorbis_File *vf,int i);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the serial number of the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 if the specified logical bitstream <i>i</i> does not exist.</li>
+
+<li>Returns the serial number of the logical bitstream <i>i</i> or the serial number of the current bitstream if the file is nonseekable.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_streams.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_streams.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_streams.html	(revision 16)
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_streams</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_streams</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the number of logical bitstreams within our physical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+long ov_streams(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. </dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+1 indicates a single logical bitstream or an unseekable file.</li>
+<li><i>n</i> indicates the number of logical bitstreams.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_test.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_test.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_test.html	(revision 16)
@@ -0,0 +1,101 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_test</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_test</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>
+This partially opens a vorbis file to test for Vorbis-ness.  It loads
+the headers for the first chain and tests for seekability (but does not seek).
+Use <a href="ov_test_open.html">ov_test_open()</a> to finish opening the file
+or <a href="ov_clear.html">ov_clear</a> to close/free it.
+<p>
+
+<p><em><b> WARNING for Windows developers: </b> Do not use ov_test()
+in Windows applications; Windows linking places restrictions on
+passing <tt>FILE *</tt> handles successfully, and ov_test() runs afoul
+of these restrictions <a href="#winfoot">[a]</a> in exactly the same
+way as <a href="ov_open.html">ov_open()</a>.  See the <a
+href="ov_test_callbacks.html">ov_test_callbacks() page </a> for
+details on using <a
+href="ov_test_callbacks.html">ov_test_callbacks()</a> instead. </em>
+<p>
+
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_test(FILE *f,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,char *initial,long ibytes);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream contains no Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<h3>Notes</h3>
+
+All the <a href="ov_open.html#notes">notes from ov_open()</a> apply to ov_test().
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_test_callbacks.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_test_callbacks.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_test_callbacks.html	(revision 16)
@@ -0,0 +1,111 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_test_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_test_callbacks</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>This is an alternative function used to open and test an OggVorbis_File
+structure when using a data source other than a file,
+when its necessary to modify default file access behavior, or to
+test for Vorbis content from a <tt>FILE *</tt> pointer under
+Windows where <a href="ov_open.html">ov_test()</a> cannot be used.  It
+allows the application to specify custom file manipulation routines
+and sets up all the related decoding structures.
+
+<p>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_test_callbacks(void *datasource, <a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *initial, long ibytes, <a href="ov_callbacks.html">ov_callbacks</a> callbacks);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt>.</dd>
+<dt><i>callbacks</i></dt>
+<dd>A completed <a href="ov_callbacks.html">ov_callbacks</a> struct which indicates desired custom file manipulation routines.  vorbisfile.h defines several preprovided callback sets; see <a href="ov_callbacks.html">ov_callbacks</a> for details.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream contains no Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<h3>Notes</h3>
+<dl>
+
+<dt><b>[a] Windows and use as an ov_test() substitute</b><p> Windows
+applications should not use <a href="ov_test.html">ov_test()</a> due
+to the likelihood of <a href="ov_open.html#winfoot">CRT linking
+mismatches and runtime protection faults
+[ov_open:a]</a>. ov_test_callbacks() is a safe substitute; specifically:
+
+<pre><tt>ov_test_callbacks(f, vf, initial, ibytes, OV_CALLBACKS_DEFAULT);</tt>
+</pre>
+
+... provides exactly the same functionality as <a
+href="ov_test.html">ov_test()</a> but will always work correctly under
+Windows, regardless of linking setup details.<p>
+
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_test_open.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_test_open.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_test_open.html	(revision 16)
@@ -0,0 +1,82 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_test_open</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_test_open</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>
+Finish opening a file partially opened with <a href="ov_test.html">ov_test()</a>
+or <a href="ov_test_callbacks.html">ov_test_callbacks()</a>.
+<p>
+
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_test_open(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisfile functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
+
+
+
+
+
+
+
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek.html	(revision 16)
@@ -0,0 +1,82 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_time_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>For seekable
+streams, this seeks to the given time. For implementing seeking in a player,
+this is the only function generally needed. This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.  This function does not work for unseekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_time_seek(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double s);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>ms</i></dt>
+<dd>Location to seek to within the file, specified in seconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_lap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_lap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_lap.html	(revision 16)
@@ -0,0 +1,105 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_time_seek_lap</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek_lap</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>For seekable
+streams, ov_time_seek_lap seeks to the given time. This variant of <a
+href="ov_time_seek.html">ov_time_seek</a> also automatically
+crosslaps the transition from the previous playback position into the
+new playback position in order to eliminate clicking and boundary
+discontinuities.  Otherwise, usage and behavior is identical to <a
+href="ov_time_seek.html">ov_time_seek</a>.
+
+<p>ov_time_seek_lap also updates everything needed within the decoder,
+so you can immediately call <a href="ov_read.html">ov_read()</a> and
+get data from the newly seeked to position.
+
+<p>ov_time_seek_lap will lap between logical stream links of differing
+numbers of channels. Any extra channels from the origin of the seek
+are ignored; playback of these channels simply ends. Extra channels at
+the destination are lapped from silence.  ov_time_seek_lap will also
+lap between logical stream links of differing sample rates.  In this
+case, the sample rates are ignored (no implicit resampling is done to
+match playback). It is up to the application developer to decide if
+this behavior makes any sense in a given context; in practical use,
+these default behaviors perform sensibly.
+
+<p> This function does not work for unseekable streams.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_time_seek_lap(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double s);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>ms</i></dt>
+<dd>Location to seek to within the file, specified in seconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EOF - Indicates stream is at end of file immediately after a seek 
+  (making crosslap impossible as there's no preceeding decode state to crosslap).
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_page.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_page.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_page.html	(revision 16)
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_time_seek_page</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek_page</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>For seekable
+streams, this seeks to closest full page preceding the given time.  This function is faster than <a href="ov_time_seek.html">ov_time_seek</a> because it doesn't seek through the last few samples to reach an exact time, but it is also less accurate.  This should be used when speed is important.
+<p>This function also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.  
+<p>This function does not work for unseekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_time_seek_page(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double s);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>ms</i></dt>
+<dd>Location to seek to within the file, specified in seconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_page_lap.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_page_lap.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_time_seek_page_lap.html	(revision 16)
@@ -0,0 +1,112 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_time_seek_page_lap</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek_page_lap</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>For seekable streams, ov_time_seek_page_lap seeks to the closest
+full page preceeding the given time.  This variant of <a
+href="ov_time_seek_page.html">ov_time_seek_page</a> also automatically
+crosslaps the transition from the previous playback position into the
+new playback position in order to eliminate clicking and boundary
+discontinuities.  Otherwise, usage and behavior is identical to <a
+href="ov_time_seek_page.html">ov_time_seek_page</a>.
+
+<p>ov_time_seek_page_lap is faster than <a
+href="ov_time_seek_lap.html">ov_time_seek_lap</a> because it doesn't
+seek through the last few samples to reach an exact time, but it is
+also less accurate.  This should be used when speed is important, but
+crosslapping is still desired.
+
+<p>ov_time_seek_page_lap also updates everything needed within the
+decoder, so you can immediately call <a
+href="ov_read.html">ov_read()</a> and get data from the newly seeked
+to position.
+
+<p>ov_time_seek_page_lap will lap between logical stream links of
+differing numbers of channels. Any extra channels from the origin of
+the seek are ignored; playback of these channels simply ends. Extra
+channels at the destination are lapped from silence.
+ov_time_seek_page_lap will also lap between logical stream links of
+differing sample rates.  In this case, the sample rates are ignored
+(no implicit resampling is done to match playback). It is up to the
+application developer to decide if this behavior makes any sense in a
+given context; in practical use, these default behaviors perform
+sensibly.
+
+<p>This function does not work for unseekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+int ov_time_seek_page_lap(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, double s);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>ms</i></dt>
+<dd>Location to seek to within the file, specified in seconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<ul>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:
+  <ul>
+  <li>OV_ENOSEEK - Bitstream is not seekable.
+  </li>
+  <li>OV_EINVAL - Invalid argument value; possibly called with an OggVorbis_File structure that isn't open.
+  </li>
+  <li>OV_EREAD - A read from media returned an error.
+  </li>
+  <li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+		corruption.
+  </li>
+  <li>OV_EOF - Indicates stream is at end of file immediately after a seek 
+  (making crosslap impossible as there's no preceeding decode state to crosslap).
+  </li>
+  <li>OV_EBADLINK - Invalid stream section supplied to libvorbisfile, or the requested link is corrupt. 
+  </li>
+  </ul></li>
+</ul></blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_time_tell.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_time_tell.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_time_tell.html	(revision 16)
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_time_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_time_tell</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+<p>Returns the current decoding offset in seconds.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+double ov_time_tell(OggVorbis_File *vf);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current decoding time offset in seconds.</li>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/ov_time_total.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/ov_time_total.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/ov_time_total.html	(revision 16)
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Vorbisfile - function - ov_time_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>ov_time_total</h1>
+
+<p><i>declared in "vorbis/vorbisfile.h";</i></p>
+
+
+<p>Returns the total time in seconds of the physical bitstream or a specified logical bitstream.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+double ov_time_total(OggVorbis_File *vf,int i);
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisfile
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  To retrieve the time total for the entire physical bitstream, this parameter should be set to -1.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist or the bitstream is nonseekable.</li>
+<li><tt>n</tt> total length in seconds of content if i=-1.</li>
+<li><tt>n</tt> length in seconds of logical bitstream if i=0 to n.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/overview.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/overview.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/overview.html	(revision 16)
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>Vorbisfile - API Overview</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Vorbisfile API Overview</h1>
+
+<p>The makeup of the Vorbisfile libvorbisfile library API is relatively
+simple.  It revolves around a single file resource.  This file resource is
+passed to libvorbisfile, where it is opened, manipulated, and closed,
+in the form of an <a href="OggVorbis_File.html">OggVorbis_File</a>
+struct.
+<p>
+The Vorbisfile API consists of the following functional categories:
+<p>
+<ul>
+<li><p><a href="datastructures.html">Base data structures</a>
+<li><p><a href="initialization.html">Setup/Teardown</a>
+<li><p><a href="decoding.html">Decoding</a>
+<li><p><a href="seeking.html">Seeking</a>
+<li><p><a href="fileinfo.html">File Information</a>
+</ul>
+<p>
+In addition, the following subjects deserve attention additional to
+the above general overview:
+<p>
+<ul>
+<li><p><a href="threads.html">Threading and thread safety</a>
+<li><p><a href="callbacks.html">Using [non stdio] custom stream I/O
+via callbacks</a>
+<li><p><a href="crosslap.html">Sample crosslapping</a>
+</ul>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
+
Index: /libvorbis-1.2.0/doc/vorbisfile/reference.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/reference.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/reference.html	(revision 16)
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>Vorbisfile API Reference</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Vorbisfile API Reference</h1>
+
+<p>
+<b>Data Structures</b><br>
+<a href="OggVorbis_File.html">OggVorbis_File</a><br>
+<a href="vorbis_comment.html">vorbis_comment</a><br>
+<a href="vorbis_info.html">vorbis_info</a><br>
+<a href="ov_callbacks.html">ov_callbacks</a><br>
+<br>
+<b>Setup/Teardown</b><br>
+<a href="ov_fopen.html">ov_fopen()</a><br>
+<a href="ov_open.html">ov_open()</a><br>
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a><br>
+<a href="ov_clear.html">ov_clear()</a><br>
+<a href="ov_test.html">ov_test()</a><br>
+<a href="ov_test_callbacks.html">ov_test_callbacks()</a><br>
+<a href="ov_test_open.html">ov_test_open()</a><br>
+<br>
+<b>Decoding</b><br>
+<a href="ov_read.html">ov_read()</a><br>
+<a href="ov_read_float.html">ov_read_float()</a><br>
+<a href="ov_crosslap.html">ov_crosslap()</a><br>
+<br>
+<b>Seeking</b><br>
+<a href="ov_raw_seek.html">ov_raw_seek()</a><br>
+<a href="ov_pcm_seek.html">ov_pcm_seek()</a><br>
+<a href="ov_time_seek.html">ov_time_seek()</a><br>
+<a href="ov_pcm_seek_page.html">ov_pcm_seek_page()</a><br>
+<a href="ov_time_seek_page.html">ov_time_seek_page()</a><p>
+<a href="ov_raw_seek_lap.html">ov_raw_seek_lap()</a><br>
+<a href="ov_pcm_seek_lap.html">ov_pcm_seek_lap()</a><br>
+<a href="ov_time_seek_lap.html">ov_time_seek_lap()</a><br>
+<a href="ov_pcm_seek_page_lap.html">ov_pcm_seek_page_lap()</a><br>
+<a href="ov_time_seek_page_lap.html">ov_time_seek_page_lap()</a><br>
+<br>
+<b>File Information</b><br>
+<a href="ov_bitrate.html">ov_bitrate()</a><br>
+<a href="ov_bitrate_instant.html">ov_bitrate_instant()</a><br>
+<a href="ov_streams.html">ov_streams()</a><br>
+<a href="ov_seekable.html">ov_seekable()</a><br>
+<a href="ov_serialnumber.html">ov_serialnumber()</a><br>
+<a href="ov_raw_total.html">ov_raw_total()</a><br>
+<a href="ov_pcm_total.html">ov_pcm_total()</a><br>
+<a href="ov_time_total.html">ov_time_total()</a><br>
+<a href="ov_raw_tell.html">ov_raw_tell()</a><br>
+<a href="ov_pcm_tell.html">ov_pcm_tell()</a><br>
+<a href="ov_time_tell.html">ov_time_tell()</a><br>
+<a href="ov_info.html">ov_info()</a><br>
+<a href="ov_comment.html">ov_comment()</a><br>
+<br>
+<b><a href="return.html">Return Codes</a></b><br>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/return.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/return.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/return.html	(revision 16)
@@ -0,0 +1,77 @@
+<html>
+
+<head>
+<title>Vorbisfile - Return Codes</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Return Codes</h1>
+
+<p>
+
+The following return codes are <tt>#define</tt>d in "vorbis/codec.h"
+may be returned by libvorbisfile.  Descriptions of a code relevant to
+a specific function are found in the reference description of that
+function.
+
+<dl>
+
+<dt>OV_FALSE</dt>
+<dd>Not true, or no data available</dd>
+
+<dt>OV_HOLE</dt>
+<dd>Vorbisfile encoutered missing or corrupt data in the bitstream.  Recovery
+is normally automatic and this return code is for informational purposes only.</dd>
+
+<dt>OV_EREAD</dt>
+<dd>Read error while fetching compressed data for decode</dd>
+
+<dt>OV_EFAULT</dt>
+<dd>Internal inconsistency in decode state.  Continuing is likely not possible.</dd>
+
+<dt>OV_EIMPL</dt>
+<dd>Feature not implemented</dd>
+
+<dt>OV_EINVAL</dt>
+<dd>Either an invalid argument, or incompletely initialized argument passed to libvorbisfile call</dd>
+
+<dt>OV_ENOTVORBIS</dt>
+<dd>The given file/data was not recognized as Ogg Vorbis data.</dd>
+
+<dt>OV_EBADHEADER</dt>
+<dd>The file/data is apparently an Ogg Vorbis stream, but contains a corrupted or undecipherable header.</dd>
+
+<dt>OV_EVERSION</dt>
+<dd>The bitstream format revision of the given stream is not supported.</dd>
+
+<dt>OV_EBADLINK</dt>
+<dd>The given link exists in the Vorbis data stream, but is not decipherable due to garbacge or corruption.</dd>
+
+<dt>OV_ENOSEEK</dt>
+<dd>The given stream is not seekable</dd>
+
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/seekexample.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/seekexample.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/seekexample.html	(revision 16)
@@ -0,0 +1,152 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Example Code: seeking</h1>
+
+<p>
+The following is a run-through of the seeking example program supplied
+with vorbisfile - <a href="seeking_test_c.html">seeking_test.c</a>.  
+This program tests the vorbisfile <a href="ov_time_seek.html">ov_time_seek</a> function by seeking to random points within the file.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#include &lt;stdlib.h>
+#include &lt;stdio.h>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+</b></pre>
+	</td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure.  We also declare other helpful variables to track our progress within the file.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+int main(){
+  OggVorbis_File ov;
+  int i;
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>This example takes its input on stdin which is in 'text' mode by default under Windows; this will corrupt the input data unless set to binary mode.  This applies only to Windows.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+#ifdef _WIN32 /* We need to set stdin to binary mode under Windows */
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p><a href="ov_open_callbacks.html">ov_open()</a> must be
+called to initialize the <a href="OggVorbis_File.html">OggVorbis_File</a> structure with default values.  
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  if(ov_open_callbacks(stdin,&ov,NULL,-1, OV_CALLBACKS_NOCLOSE)<0){
+    printf("Could not open input as an OggVorbis file.\n\n");
+    exit(1);
+  }
+
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+First we check to make sure the stream is seekable using <a href="ov_seekable.html">ov_seekable</a>.
+
+<p>Then we seek to 100 random spots in the bitstream using <a href="ov_time_seek.html">ov_time_seek</a> with randomly generated values.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  
+  /* print details about each logical bitstream in the input */
+  if(ov_seekable(&ov)){
+    double length=ov_time_total(&ov,-1);
+    printf("testing seeking to random places in %g seconds....\n",length);
+    for(i=0;i<100;i++){
+      double val=(double)rand()/RAND_MAX*length;
+      ov_time_seek(&ov,val);
+      printf("\r\t%d [%gs]...     ",i,val);
+      fflush(stdout);
+    }
+    
+    printf("\r                                   \nOK.\n\n");
+  }else{
+    printf("Standard input was not seekable.\n");
+  }
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+<p>
+When we're done seeking, we need to call <a href="ov_clear.html">ov_clear()</a> to release the bitstream.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  ov_clear(&ov);
+  return 0;
+}
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+The full source for seeking_test.c can be found with the vorbis
+distribution in <a href="seeking_test_c.html">seeking_test.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/seeking.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/seeking.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/seeking.html	(revision 16)
@@ -0,0 +1,107 @@
+<html>
+
+<head>
+<title>Vorbisfile - Seeking</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Seeking</h1>
+<p>Seeking functions allow you to specify a specific point in the stream to begin or continue decoding.
+<p>
+All libvorbisfile seeking routines are declared in "vorbis/vorbisfile.h".
+
+<p>Certain seeking functions are best suited to different situations.
+When speed is important and exact positioning isn't required,
+page-level seeking should be used.  Note also that Vorbis files do not
+necessarily start at a sample number or time offset of zero.  Do not
+be surprised if a file begins at a positive offset of several minutes
+or hours, such as would happen if a large stream (such as a concert
+recording) is chopped into multiple separate files.  Requesting to
+seek to a position before the beginning of such a file will seek to
+the position where audio begins.
+
+<p>As of vorbisfile version 1.68, seeking also optionally provides
+automatic crosslapping to eliminate clicks and other discontinuity
+artifacts at seeking boundaries.  This fetaure is of particular
+interest to player and game developers implementing dynamic music and
+audio engines, or others looking for smooth transitions within a
+single sample or across multiple samples.<p>
+
+<p>Naturally, seeking is available only within a seekable file or
+stream.  Seeking functions will return <tt>OV_ENOSEEK</tt> on
+nonseekable files and streams.
+
+</ul>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td><b>function</b></td>
+	<td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_raw_seek.html">ov_raw_seek</a></td>
+	<td>This function seeks to a position specified in the compressed bitstream, specified in bytes.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_pcm_seek.html">ov_pcm_seek</a></td>
+	<td>This function seeks to a specific audio sample number, specified in pcm samples.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_pcm_seek_page.html">ov_pcm_seek_page</a></td>
+	<td>This function seeks to the closest page preceding the specified audio sample number, specified in pcm samples.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_time_seek.html">ov_time_seek</a></td>
+	<td>This function seeks to the specific time location in the bitstream, specified in seconds </td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_time_seek_page.html">ov_time_seek_page</a></td>
+	<td>This function seeks to the closest page preceding the specified time position in the bitstream</td>
+</tr>
+
+</tr>
+<tr valign=top>
+	<td><a href="ov_raw_seek_lap.html">ov_raw_seek_lap</a></td>
+	<td>This function seeks to a position specified in the compressed bitstream, specified in bytes.  The boundary between the old and new playback positions is crosslapped to eliminate discontinuities. </td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_pcm_seek_lap.html">ov_pcm_seek_lap</a></td>
+	<td>This function seeks to a specific audio sample number, specified in pcm samples.  The boundary between the old and new playback positions is crosslapped to eliminate discontinuities.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_pcm_seek_page_lap.html">ov_pcm_seek_page_lap</a></td>
+	<td>This function seeks to the closest page preceding the specified audio sample number, specified in pcm samples.  The boundary between the old and new playback positions is crosslapped to eliminate discontinuities.</td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_time_seek_lap.html">ov_time_seek_lap</a></td>
+	<td>This function seeks to the specific time location in the bitstream, specified in seconds.  The boundary between the old and new playback positions is crosslapped to eliminate discontinuities. </td>
+</tr>
+<tr valign=top>
+	<td><a href="ov_time_seek_page_lap.html">ov_time_seek_page_lap</a></td>
+	<td>This function seeks to the closest page preceding the specified time position in the bitstream.  The boundary between the old and new playback positions is crosslapped to eliminate discontinuities.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/seeking_example_c.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/seeking_example_c.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/seeking_example_c.html	(revision 16)
@@ -0,0 +1,86 @@
+<html>
+
+<head>
+<title>vorbisfile - seeking_test.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>seeking_test.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+
+int main(){
+  OggVorbis_File ov;
+  int i;
+
+#ifdef _WIN32 /* We need to set stdin to binary mode under Windows */
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+
+  /* open the file/pipe on stdin */
+  if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)==-1){
+    printf("Could not open input as an OggVorbis file.\n\n");
+    exit(1);
+  }
+  
+  /* print details about each logical bitstream in the input */
+  if(ov_seekable(&ov)){
+    double length=ov_time_total(&ov,-1);
+    printf("testing seeking to random places in %g seconds....\n",length);
+    for(i=0;i<100;i++){
+      double val=(double)rand()/RAND_MAX*length;
+      ov_time_seek(&ov,val);
+      printf("\r\t%d [%gs]...     ",i,val);
+      fflush(stdout);
+    }
+    
+    printf("\r                                   \nOK.\n\n");
+  }else{
+    printf("Standard input was not seekable.\n");
+  }
+
+  ov_clear(&ov);
+  return 0;
+}
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/seeking_test_c.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/seeking_test_c.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/seeking_test_c.html	(revision 16)
@@ -0,0 +1,86 @@
+<html>
+
+<head>
+<title>vorbisfile - seeking_test.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>seeking_test.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+
+int main(){
+  OggVorbis_File ov;
+  int i;
+
+#ifdef _WIN32 /* We need to set stdin to binary mode under Windows */
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+
+  /* open the file/pipe on stdin */
+  if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)==-1){
+    printf("Could not open input as an OggVorbis file.\n\n");
+    exit(1);
+  }
+  
+  /* print details about each logical bitstream in the input */
+  if(ov_seekable(&ov)){
+    double length=ov_time_total(&ov,-1);
+    printf("testing seeking to random places in %g seconds....\n",length);
+    for(i=0;i<100;i++){
+      double val=(double)rand()/RAND_MAX*length;
+      ov_time_seek(&ov,val);
+      printf("\r\t%d [%gs]...     ",i,val);
+      fflush(stdout);
+    }
+    
+    printf("\r                                   \nOK.\n\n");
+  }else{
+    printf("Standard input was not seekable.\n");
+  }
+
+  ov_clear(&ov);
+  return 0;
+}
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/seekingexample.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/seekingexample.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/seekingexample.html	(revision 16)
@@ -0,0 +1,203 @@
+<html>
+
+<head>
+<title>vorbisfile - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+<h1>Example Code</h1>
+
+<p>
+The following is a run-through of the decoding example program supplied
+with vorbisfile - <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.  
+This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
+
+<p>
+First, relevant headers, including vorbis-specific "codec.h" and "vorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+</b></pre>
+	</td>
+</tr>
+</table>
+<p>
+We also have to make a concession to Windows users here.  If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+</b></pre>
+	</td>
+</tr>
+</table>
+<p>
+Next, a buffer for the pcm audio output is declared.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+char pcmout[4096];
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure.  We also declare a few other helpful variables to track out progress within the file.
+Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+int main(int argc, char **argv){
+  OggVorbis_File vf;
+  int eof=0;
+  int current_section;
+
+#ifdef _WIN32
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p><a href="ov_open_callbacks.html">ov_open_callbacks()</a> must be
+called to initialize the <b>OggVorbis_File</b> structure with default values.  
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  if(ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) {
+      fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+      exit(1);
+  }
+
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
+We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  {
+    char **ptr=ov_comment(&vf,-1)->user_comments;
+    vorbis_info *vi=ov_info(&vf,-1);
+    while(*ptr){
+      fprintf(stderr,"%s\n",*ptr);
+      ++ptr;
+    }
+    fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+    fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+  }
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+Here's the read loop:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+
+  while(!eof){
+    long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+    switch(ret){
+    case 0:
+      /* EOF */
+      eof=1;
+      break;
+    case -1:
+      break;
+    default:
+      fwrite(pcmout,1,ret,stdout);
+      break;
+    }
+  }
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
+Based on the value returned, we know if we're at the end of the file or have invalid data.  If we have valid data, we write it to the pcm output.
+
+<p>
+Now that we've finished playing, we can pack up and go home.  It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+
+  ov_clear(&vf);
+    
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+The full source for vorbisfile_example.c can be found with the vorbis
+distribution in <a href="vorbisfile_example_c.html">vorbisfile_example.c</a>.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000 vorbis team</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.25 - 20000615</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/style.css
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/style.css	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/style.css	(revision 16)
@@ -0,0 +1,7 @@
+BODY { font-family: Helvetica, sans-serif }
+TD { font-family: Helvetica, sans-serif }
+P { font-family: Helvetica, sans-serif }
+H1 { font-family: Helvetica, sans-serif }
+H2 { font-family: Helvetica, sans-serif }
+H4 { font-family: Helvetica, sans-serif }
+P.tiny { font-size: 8pt }
Index: /libvorbis-1.2.0/doc/vorbisfile/threads.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/threads.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/threads.html	(revision 16)
@@ -0,0 +1,50 @@
+<html>
+
+<head>
+<title>Vorbisfile - Thread Safety</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>Thread Safety</h1>
+
+Vorbisfile's libvorbisfile may be used safely in a threading environment
+so long as thread access to individual <a
+href="OggVorbis_File.html">OggVorbis_File</a> instances is serialized.  
+<ul>
+
+<li>Only one thread at a time may enter a function that takes a given <a
+href="OggVorbis_File.html">OggVorbis_File</a> instance, even if the
+functions involved appear to be read-only.<p>
+
+<li>Multiple threads may enter
+libvorbisfile at a given time, so long as each thread's function calls
+are using different <a href="OggVorbis_File.html">OggVorbis_File</a>
+instances. <p>
+
+<li>Any one <a
+href="OggVorbis_File.html">OggVorbis_File</a> instance may be used safely from multiple threads so long as only one thread at a time is making calls using that instance.<p>
+</ul>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/vorbis_comment.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/vorbis_comment.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/vorbis_comment.html	(revision 16)
@@ -0,0 +1,70 @@
+<html>
+
+<head>
+<title>Vorbisfile - datatype - vorbis_comment</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>vorbis_comment</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The vorbis_comment structure defines an Ogg Vorbis comment.
+<p>
+Only the fields the program needs must be defined.  If a field isn't
+defined by the application, it will either be blank (if it's a string value)
+or set to some reasonable default (usually 0).
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>typedef struct vorbis_comment{
+  /* unlimited user comment fields. */
+  char **user_comments;
+  int  *comment_lengths;
+  int  comments;
+  char *vendor;
+
+} vorbis_comment;</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>user_comments</i></dt>
+<dd>Unlimited user comment array. The individual strings in the array are 8 bit clean, by the Vorbis specification, and as such the <tt>comment_lengths</tt> array should be consulted to determine string length.  For convenience, each string is also NULL-terminated by the decode library (although Vorbis comments are not NULL terminated within the bitstream itself).</dd>
+<dt><i>comment_lengths</i></dt>
+<dd>An int array that stores the length of each comment string</dd>
+<dt><i>comments</i></dt>
+<dd>Int signifying number of user comments in user_comments field.</dd>
+<dt><i>vendor</i></dt>
+<dd>Information about the creator of the file.  Stored in a standard C 0-terminated string.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/vorbis_info.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/vorbis_info.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/vorbis_info.html	(revision 16)
@@ -0,0 +1,80 @@
+<html>
+
+<head>
+<title>Vorbisfile - datatype - vorbis_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>vorbis_info</h1>
+
+<p><i>declared in "vorbis/codec.h"</i></p>
+
+<p>
+The vorbis_info structure contains basic information about the audio in a vorbis bitstream.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>typedef struct vorbis_info{
+  int version;
+  int channels;
+  long rate;
+  
+  long bitrate_upper;
+  long bitrate_nominal;
+  long bitrate_lower;
+  long bitrate_window;
+
+  void *codec_setup;
+
+} vorbis_info;</b></pre>
+	</td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>version</i></dt>
+<dd>Vorbis encoder version used to create this bitstream.</dd>
+<dt><i>channels</i></dt>
+<dd>Int signifying number of channels in bitstream.</dd>
+<dt><i>rate</i></dt>
+<dd>Sampling rate of the bitstream.</dd>
+<dt><i>bitrate_upper</i></dt>
+<dd>Specifies the upper limit in a VBR bitstream.  If the value matches the bitrate_nominal and bitrate_lower parameters, the stream is fixed bitrate.  May be unset if no limit exists.</dd>
+<dt><i>bitrate_nominal</i></dt>
+<dd>Specifies the average bitrate for a VBR bitstream.  May be unset.  If the bitrate_upper and bitrate_lower parameters match, the stream is fixed bitrate.</dd>
+<dt><i>bitrate_lower</i></dt>
+<dd>Specifies the lower limit in a VBR bitstream.  If the value matches the bitrate_nominal and bitrate_upper parameters, the stream is fixed bitrate.  May be unset if no limit exists.</dd>
+<dt><i>bitrate_window</i></dt>
+<dd>Currently unset.</dd>
+
+<dt><i>codec_setup</i></dt>
+<dd>Internal structure that contains the detailed/unpacked configuration for decoding the current Vorbis bitstream.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/vorbisfile/vorbisfile_example_c.html
===================================================================
--- /libvorbis-1.2.0/doc/vorbisfile/vorbisfile_example_c.html	(revision 16)
+++ /libvorbis-1.2.0/doc/vorbisfile/vorbisfile_example_c.html	(revision 16)
@@ -0,0 +1,106 @@
+<html>
+
+<head>
+<title>vorbisfile - vorbisfile_example.c</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+<h1>vorbisfile_example.c</h1>
+
+<p>
+The example program source:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+	<td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+
+char pcmout[4096];
+
+int main(int argc, char **argv){
+  OggVorbis_File vf;
+  int eof=0;
+  int current_section;
+
+#ifdef _WIN32
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+  if(ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) {
+      fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+      exit(1);
+  }
+
+  {
+    char **ptr=ov_comment(&vf,-1)->user_comments;
+    vorbis_info *vi=ov_info(&vf,-1);
+    while(*ptr){
+      fprintf(stderr,"%s\n",*ptr);
+      ++ptr;
+    }
+    fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+    fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+  }
+  
+  while(!eof){
+    long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+    if (ret == 0) {
+      /* EOF */
+      eof=1;
+    } else if (ret < 0) {
+      /* error in the stream.  Not a problem, just reporting it in
+	 case we (the app) cares.  In this case, we don't. */
+    } else {
+      /* we don't bother dealing with sample rate changes, etc, but
+	 you'll have to */
+      fwrite(pcmout,1,ret,stdout);
+    }
+  }
+
+  ov_clear(&vf);
+    
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
+
+</b></pre>
+	</td>
+</tr>
+</table>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2007 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
+</tr><tr>
+<td><p class=tiny>Vorbisfile documentation</p></td>
+<td align=right><p class=tiny>vorbisfile version 1.2.0 - 20070723</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
Index: /libvorbis-1.2.0/doc/xml/01-introduction.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/01-introduction.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/01-introduction.xml	(revision 16)
@@ -0,0 +1,665 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-intro">
+<sectioninfo>
+<releaseinfo>
+ $Id: 01-introduction.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</releaseinfo>
+</sectioninfo>
+<title>Introduction and Description</title>
+
+<section>
+<title>Overview</title>
+
+<para>
+This document provides a high level description of the Vorbis codec's
+construction.  A bit-by-bit specification appears beginning in 
+<xref linkend="vorbis-spec-codec"/>.
+The later sections assume a high-level
+understanding of the Vorbis decode process, which is 
+provided here.</para>
+
+<section>
+<title>Application</title>
+<para>
+Vorbis is a general purpose perceptual audio CODEC intended to allow
+maximum encoder flexibility, thus allowing it to scale competitively
+over an exceptionally wide range of bitrates.  At the high
+quality/bitrate end of the scale (CD or DAT rate stereo, 16/24 bits)
+it is in the same league as MPEG-2 and MPC.  Similarly, the 1.0
+encoder can encode high-quality CD and DAT rate stereo at below 48kbps
+without resampling to a lower rate.  Vorbis is also intended for
+lower and higher sample rates (from 8kHz telephony to 192kHz digital
+masters) and a range of channel representations (monaural,
+polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255
+discrete channels).
+</para>
+</section>
+
+<section>
+<title>Classification</title>
+<para>
+Vorbis I is a forward-adaptive monolithic transform CODEC based on the
+Modified Discrete Cosine Transform.  The codec is structured to allow
+addition of a hybrid wavelet filterbank in Vorbis II to offer better
+transient response and reproduction using a transform better suited to
+localized time events.
+</para>
+</section>
+
+<section>
+<title>Assumptions</title>
+
+<para>
+The Vorbis CODEC design assumes a complex, psychoacoustically-aware
+encoder and simple, low-complexity decoder. Vorbis decode is
+computationally simpler than mp3, although it does require more
+working memory as Vorbis has no static probability model; the vector
+codebooks used in the first stage of decoding from the bitstream are
+packed in their entirety into the Vorbis bitstream headers. In
+packed form, these codebooks occupy only a few kilobytes; the extent
+to which they are pre-decoded into a cache is the dominant factor in
+decoder memory usage.
+</para>
+
+<para>
+Vorbis provides none of its own framing, synchronization or protection
+against errors; it is solely a method of accepting input audio,
+dividing it into individual frames and compressing these frames into
+raw, unformatted 'packets'. The decoder then accepts these raw
+packets in sequence, decodes them, synthesizes audio frames from
+them, and reassembles the frames into a facsimile of the original
+audio stream. Vorbis is a free-form variable bit rate (VBR) codec and packets have no
+minimum size, maximum size, or fixed/expected size.  Packets
+are designed that they may be truncated (or padded) and remain
+decodable; this is not to be considered an error condition and is used
+extensively in bitrate management in peeling.  Both the transport
+mechanism and decoder must allow that a packet may be any size, or
+end before or after packet decode expects.</para>
+
+<para>
+Vorbis packets are thus intended to be used with a transport mechanism
+that provides free-form framing, sync, positioning and error correction
+in accordance with these design assumptions, such as Ogg (for file
+transport) or RTP (for network multicast).  For purposes of a few
+examples in this document, we will assume that Vorbis is to be
+embedded in an Ogg stream specifically, although this is by no means a
+requirement or fundamental assumption in the Vorbis design.</para>
+
+<para>
+The specification for embedding Vorbis into
+an Ogg transport stream is in <xref linkend="vorbis-over-ogg"/>.
+</para>
+
+</section>
+
+<section>
+<title>Codec Setup and Probability Model</title>
+
+<para>
+Vorbis' heritage is as a research CODEC and its current design
+reflects a desire to allow multiple decades of continuous encoder
+improvement before running out of room within the codec specification.
+For these reasons, configurable aspects of codec setup intentionally
+lean toward the extreme of forward adaptive.</para>
+
+<para>
+The single most controversial design decision in Vorbis (and the most
+unusual for a Vorbis developer to keep in mind) is that the entire
+probability model of the codec, the Huffman and VQ codebooks, is
+packed into the bitstream header along with extensive CODEC setup
+parameters (often several hundred fields).  This makes it impossible,
+as it would be with MPEG audio layers, to embed a simple frame type
+flag in each audio packet, or begin decode at any frame in the stream
+without having previously fetched the codec setup header.
+</para>
+
+<note><para>
+Vorbis <emphasis>can</emphasis> initiate decode at any arbitrary packet within a
+bitstream so long as the codec has been initialized/setup with the
+setup headers.</para></note>
+
+<para>
+Thus, Vorbis headers are both required for decode to begin and
+relatively large as bitstream headers go.  The header size is
+unbounded, although for streaming a rule-of-thumb of 4kB or less is
+recommended (and Xiph.Org's Vorbis encoder follows this suggestion).</para>
+
+<para>
+Our own design work indicates the primary liability of the
+required header is in mindshare; it is an unusual design and thus
+causes some amount of complaint among engineers as this runs against
+current design trends (and also points out limitations in some
+existing software/interface designs, such as Windows' ACM codec
+framework).  However, we find that it does not fundamentally limit
+Vorbis' suitable application space.</para>
+
+</section>
+
+<section><title>Format Specification</title>
+<para>
+The Vorbis format is well-defined by its decode specification; any
+encoder that produces packets that are correctly decoded by the
+reference Vorbis decoder described below may be considered a proper
+Vorbis encoder.  A decoder must faithfully and completely implement
+the specification defined below (except where noted) to be considered
+a proper Vorbis decoder.</para>
+</section>
+
+<section><title>Hardware Profile</title>
+<para>
+Although Vorbis decode is computationally simple, it may still run
+into specific limitations of an embedded design.  For this reason,
+embedded designs are allowed to deviate in limited ways from the
+'full' decode specification yet still be certified compliant.  These
+optional omissions are labelled in the spec where relevant.</para>
+</section>
+
+</section>
+
+<section>
+<title>Decoder Configuration</title>
+
+<para>
+Decoder setup consists of configuration of multiple, self-contained
+component abstractions that perform specific functions in the decode
+pipeline.  Each different component instance of a specific type is
+semantically interchangeable; decoder configuration consists both of
+internal component configuration, as well as arrangement of specific
+instances into a decode pipeline.  Componentry arrangement is roughly
+as follows:</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="components.png" format="PNG"/>
+</imageobject>
+<textobject>
+  <phrase>decoder pipeline configuration</phrase>
+</textobject>
+</mediaobject>
+
+<section><title>Global Config</title>
+<para>
+Global codec configuration consists of a few audio related fields
+(sample rate, channels), Vorbis version (always '0' in Vorbis I),
+bitrate hints, and the lists of component instances.  All other
+configuration is in the context of specific components.</para>
+</section>
+
+<section><title>Mode</title>
+
+<para>
+Each Vorbis frame is coded according to a master 'mode'.  A bitstream
+may use one or many modes.</para>
+
+<para>
+The mode mechanism is used to encode a frame according to one of
+multiple possible methods with the intention of choosing a method best
+suited to that frame.  Different modes are, e.g. how frame size
+is changed from frame to frame. The mode number of a frame serves as a
+top level configuration switch for all other specific aspects of frame
+decode.</para>
+
+<para>
+A 'mode' configuration consists of a frame size setting, window type
+(always 0, the Vorbis window, in Vorbis I), transform type (always
+type 0, the MDCT, in Vorbis I) and a mapping number.  The mapping
+number specifies which mapping configuration instance to use for
+low-level packet decode and synthesis.</para>
+
+</section>
+
+<section><title>Mapping</title>
+
+<para>
+A mapping contains a channel coupling description and a list of
+'submaps' that bundle sets of channel vectors together for grouped
+encoding and decoding. These submaps are not references to external
+components; the submap list is internal and specific to a mapping.</para>
+
+<para>
+A 'submap' is a configuration/grouping that applies to a subset of
+floor and residue vectors within a mapping.  The submap functions as a
+last layer of indirection such that specific special floor or residue
+settings can be applied not only to all the vectors in a given mode,
+but also specific vectors in a specific mode.  Each submap specifies
+the proper floor and residue instance number to use for decoding that
+submap's spectral floor and spectral residue vectors.</para>
+
+<para>
+As an example:</para>
+
+<para>
+Assume a Vorbis stream that contains six channels in the standard 5.1
+format.  The sixth channel, as is normal in 5.1, is bass only.
+Therefore it would be wasteful to encode a full-spectrum version of it
+as with the other channels.  The submapping mechanism can be used to
+apply a full range floor and residue encoding to channels 0 through 4,
+and a bass-only representation to the bass channel, thus saving space.
+In this example, channels 0-4 belong to submap 0 (which indicates use
+of a full-range floor) and channel 5 belongs to submap 1, which uses a
+bass-only representation.</para>
+
+</section>
+
+<section><title>Floor</title>
+
+<para>
+Vorbis encodes a spectral 'floor' vector for each PCM channel.  This
+vector is a low-resolution representation of the audio spectrum for
+the given channel in the current frame, generally used akin to a
+whitening filter.  It is named a 'floor' because the Xiph.Org
+reference encoder has historically used it as a unit-baseline for
+spectral resolution.</para>
+
+<para>
+A floor encoding may be of two types.  Floor 0 uses a packed LSP
+representation on a dB amplitude scale and Bark frequency scale.
+Floor 1 represents the curve as a piecewise linear interpolated
+representation on a dB amplitude scale and linear frequency scale.
+The two floors are semantically interchangeable in
+encoding/decoding. However, floor type 1 provides more stable
+inter-frame behavior, and so is the preferred choice in all
+coupled-stereo and high bitrate modes.  Floor 1 is also considerably
+less expensive to decode than floor 0.</para>
+
+<para>
+Floor 0 is not to be considered deprecated, but it is of limited
+modern use.  No known Vorbis encoder past Xiph.org's own beta 4 makes
+use of floor 0.</para>
+
+<para>
+The values coded/decoded by a floor are both compactly formatted and
+make use of entropy coding to save space.  For this reason, a floor
+configuration generally refers to multiple codebooks in the codebook
+component list.  Entropy coding is thus provided as an abstraction,
+and each floor instance may choose from any and all available
+codebooks when coding/decoding.</para>
+
+</section>
+
+<section><title>Residue</title>
+<para>
+The spectral residue is the fine structure of the audio spectrum
+once the floor curve has been subtracted out.  In simplest terms, it
+is coded in the bitstream using cascaded (multi-pass) vector
+quantization according to one of three specific packing/coding
+algorithms numbered 0 through 2.  The packing algorithm details are
+configured by residue instance.  As with the floor components, the
+final VQ/entropy encoding is provided by external codebook instances
+and each residue instance may choose from any and all available
+codebooks.</para>
+</section>
+
+<section><title>Codebooks</title>
+
+<para>
+Codebooks are a self-contained abstraction that perform entropy
+decoding and, optionally, use the entropy-decoded integer value as an
+offset into an index of output value vectors, returning the indicated
+vector of values.</para>
+
+<para>
+The entropy coding in a Vorbis I codebook is provided by a standard
+Huffman binary tree representation.  This tree is tightly packed using
+one of several methods, depending on whether codeword lengths are
+ordered or unordered, or the tree is sparse.</para>
+
+<para>
+The codebook vector index is similarly packed according to index
+characteristic.  Most commonly, the vector index is encoded as a
+single list of values of possible values that are then permuted into
+a list of n-dimensional rows (lattice VQ).</para>
+
+</section>
+
+</section>
+
+
+<section>
+<title>High-level Decode Process</title>
+
+<section>
+<title>Decode Setup</title> 
+
+<para>
+Before decoding can begin, a decoder must initialize using the
+bitstream headers matching the stream to be decoded.  Vorbis uses
+three header packets; all are required, in-order, by this
+specification. Once set up, decode may begin at any audio packet
+belonging to the Vorbis stream. In Vorbis I, all packets after the
+three initial headers are audio packets. </para>
+
+<para>
+The header packets are, in order, the identification
+header, the comments header, and the setup header.</para>
+
+<section><title>Identification Header</title>
+<para>
+The identification header identifies the bitstream as Vorbis, Vorbis
+version, and the simple audio characteristics of the stream such as
+sample rate and number of channels.</para>
+</section>
+
+<section><title>Comment Header</title>
+<para>
+The comment header includes user text comments ("tags") and a vendor
+string for the application/library that produced the bitstream.  The
+encoding and proper use of the comment header is described in 
+<xref linkend="vorbis-spec-comment"/>.</para>
+</section>
+
+<section><title>Setup Header</title>
+<para>
+The setup header includes extensive CODEC setup information as well as
+the complete VQ and Huffman codebooks needed for decode.</para>
+</section>
+
+</section>
+
+<section><title>Decode Procedure</title>
+
+<highlights>
+<para>
+The decoding and synthesis procedure for all audio packets is
+fundamentally the same.
+<orderedlist>
+<listitem><simpara>decode packet type flag</simpara></listitem>
+<listitem><simpara>decode mode number</simpara></listitem>
+<listitem><simpara>decode window shape (long windows only)</simpara></listitem>
+<listitem><simpara>decode floor</simpara></listitem>
+<listitem><simpara>decode residue into residue vectors</simpara></listitem>
+<listitem><simpara>inverse channel coupling of residue vectors</simpara></listitem>
+<listitem><simpara>generate floor curve from decoded floor data</simpara></listitem>
+<listitem><simpara>compute dot product of floor and residue, producing audio spectrum vector</simpara></listitem>
+<listitem><simpara>inverse monolithic transform of audio spectrum vector, always an MDCT in Vorbis I</simpara></listitem>
+<listitem><simpara>overlap/add left-hand output of transform with right-hand output of previous frame</simpara></listitem>
+<listitem><simpara>store right hand-data from transform of current frame for future lapping</simpara></listitem>
+<listitem><simpara>if not first frame, return results of overlap/add as audio result of current frame</simpara></listitem>
+</orderedlist>
+</para>
+</highlights>
+
+<para>
+Note that clever rearrangement of the synthesis arithmetic is
+possible; as an example, one can take advantage of symmetries in the
+MDCT to store the right-hand transform data of a partial MDCT for a
+50% inter-frame buffer space savings, and then complete the transform
+later before overlap/add with the next frame.  This optimization
+produces entirely equivalent output and is naturally perfectly legal.
+The decoder must be <emphasis>entirely mathematically equivalent</emphasis> to the
+specification, it need not be a literal semantic implementation.</para>
+
+<section><title>Packet type decode</title> 
+
+<para>
+Vorbis I uses four packet types. The first three packet types mark each
+of the three Vorbis headers described above. The fourth packet type
+marks an audio packet. All other packet types are reserved; packets
+marked with a reserved type should be ignored.</para>
+
+<para>
+Following the three header packets, all packets in a Vorbis I stream
+are audio.  The first step of audio packet decode is to read and
+verify the packet type; <emphasis>a non-audio packet when audio is expected
+indicates stream corruption or a non-compliant stream. The decoder
+must ignore the packet and not attempt decoding it to
+audio</emphasis>.</para>
+
+</section>
+
+
+<section><title>Mode decode</title>
+<para>
+Vorbis allows an encoder to set up multiple, numbered packet 'modes',
+as described earlier, all of which may be used in a given Vorbis
+stream. The mode is encoded as an integer used as a direct offset into
+the mode instance index. </para>
+</section>
+
+<section id="vorbis-spec-window">
+<title>Window shape decode (long windows only)</title>
+
+<para>
+Vorbis frames may be one of two PCM sample sizes specified during
+codec setup.  In Vorbis I, legal frame sizes are powers of two from 64
+to 8192 samples.  Aside from coupling, Vorbis handles channels as
+independent vectors and these frame sizes are in samples per channel.</para>
+
+<para>
+Vorbis uses an overlapping transform, namely the MDCT, to blend one
+frame into the next, avoiding most inter-frame block boundary
+artifacts.  The MDCT output of one frame is windowed according to MDCT
+requirements, overlapped 50% with the output of the previous frame and
+added.  The window shape assures seamless reconstruction.  </para>
+
+<para>
+This is easy to visualize in the case of equal sized-windows:</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="window1.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>overlap of two equal-sized windows</phrase>
+</textobject>
+</mediaobject>
+
+<para>
+And slightly more complex in the case of overlapping unequal sized
+windows:</para>
+
+<mediaobject>
+<imageobject> 
+ <imagedata fileref="window2.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>overlap of a long and a short window</phrase>
+</textobject>
+</mediaobject>
+
+<para>
+In the unequal-sized window case, the window shape of the long window
+must be modified for seamless lapping as above.  It is possible to
+correctly infer window shape to be applied to the current window from
+knowing the sizes of the current, previous and next window.  It is
+legal for a decoder to use this method. However, in the case of a long
+window (short windows require no modification), Vorbis also codes two
+flag bits to specify pre- and post- window shape.  Although not
+strictly necessary for function, this minor redundancy allows a packet
+to be fully decoded to the point of lapping entirely independently of
+any other packet, allowing easier abstraction of decode layers as well
+as allowing a greater level of easy parallelism in encode and
+decode.</para>
+
+<para>
+A description of valid window functions for use with an inverse MDCT
+can be found in the paper 
+<citetitle pubwork="article">
+<ulink url="http://www.iocon.com/resource/docs/ps/eusipco_corrected.ps">
+The use of multirate filter banks for coding of high quality digital
+audio</ulink></citetitle>, by T. Sporer, K. Brandenburg and B. Edler.  Vorbis windows
+all use the slope function 
+  <inlineequation>
+
+    <alt>y=sin(.5*PI*sin^2((x+.5)/n*pi))</alt>
+    <inlinemediaobject>
+     <textobject>
+      <phrase>$y = \sin(.5*\pi \, \sin^2((x+.5)/n*\pi))$</phrase>
+     </textobject>
+    </inlinemediaobject>
+  </inlineequation>.
+</para>
+
+</section>
+
+<section><title>floor decode</title>
+<para>
+Each floor is encoded/decoded in channel order, however each floor
+belongs to a 'submap' that specifies which floor configuration to
+use.  All floors are decoded before residue decode begins.</para>
+</section>
+
+<section><title>residue decode</title> 
+
+<para>
+Although the number of residue vectors equals the number of channels,
+channel coupling may mean that the raw residue vectors extracted
+during decode do not map directly to specific channels.  When channel
+coupling is in use, some vectors will correspond to coupled magnitude
+or angle.  The coupling relationships are described in the codec setup
+and may differ from frame to frame, due to different mode numbers.</para>
+
+<para>
+Vorbis codes residue vectors in groups by submap; the coding is done
+in submap order from submap 0 through n-1.  This differs from floors
+which are coded using a configuration provided by submap number, but
+are coded individually in channel order.</para>
+
+</section>
+
+<section><title>inverse channel coupling</title>
+
+<para>
+A detailed discussion of stereo in the Vorbis codec can be found in
+the document <ulink url="stereo.html"><citetitle>Stereo Channel Coupling in the
+Vorbis CODEC</citetitle></ulink>.  Vorbis is not limited to only stereo coupling, but
+the stereo document also gives a good overview of the generic coupling
+mechanism.</para>
+
+<para>
+Vorbis coupling applies to pairs of residue vectors at a time;
+decoupling is done in-place a pair at a time in the order and using
+the vectors specified in the current mapping configuration.  The
+decoupling operation is the same for all pairs, converting square
+polar representation (where one vector is magnitude and the second
+angle) back to Cartesian representation.</para>
+
+<para>
+After decoupling, in order, each pair of vectors on the coupling list, 
+the resulting residue vectors represent the fine spectral detail
+of each output channel.</para>
+
+</section>
+
+<section><title>generate floor curve</title>
+
+<para>
+The decoder may choose to generate the floor curve at any appropriate
+time.  It is reasonable to generate the output curve when the floor
+data is decoded from the raw packet, or it can be generated after
+inverse coupling and applied to the spectral residue directly,
+combining generation and the dot product into one step and eliminating
+some working space.</para>
+
+<para>
+Both floor 0 and floor 1 generate a linear-range, linear-domain output
+vector to be multiplied (dot product) by the linear-range,
+linear-domain spectral residue.</para>
+
+</section>
+
+<section><title>compute floor/residue dot product</title>
+
+<para>
+This step is straightforward; for each output channel, the decoder
+multiplies the floor curve and residue vectors element by element,
+producing the finished audio spectrum of each channel.</para>
+
+<para>
+One point is worth mentioning about this dot product; a common mistake
+in a fixed point implementation might be to assume that a 32 bit
+fixed-point representation for floor and residue and direct
+multiplication of the vectors is sufficient for acceptable spectral
+depth in all cases because it happens to mostly work with the current
+Xiph.Org reference encoder.</para>
+
+<para>
+However, floor vector values can span ~140dB (~24 bits unsigned), and
+the audio spectrum vector should represent a minimum of 120dB (~21
+bits with sign), even when output is to a 16 bit PCM device.  For the
+residue vector to represent full scale if the floor is nailed to
+-140dB, it must be able to span 0 to +140dB.  For the residue vector
+to reach full scale if the floor is nailed at 0dB, it must be able to
+represent -140dB to +0dB.  Thus, in order to handle full range
+dynamics, a residue vector may span -140dB to +140dB entirely within
+spec.  A 280dB range is approximately 48 bits with sign; thus the
+residue vector must be able to represent a 48 bit range and the dot
+product must be able to handle an effective 48 bit times 24 bit
+multiplication.  This range may be achieved using large (64 bit or
+larger) integers, or implementing a movable binary point
+representation.</para>
+
+</section>
+
+<section><title>inverse monolithic transform (MDCT)</title>
+
+<para>
+The audio spectrum is converted back into time domain PCM audio via an
+inverse Modified Discrete Cosine Transform (MDCT).  A detailed
+description of the MDCT is available in the paper <ulink
+url="http://www.iocon.com/resource/docs/ps/eusipco_corrected.ps"><citetitle pubwork="article">The use of multirate filter banks for coding of high quality digital
+audio</citetitle></ulink>, by T. Sporer, K. Brandenburg and B. Edler.</para>
+
+<para>
+Note that the PCM produced directly from the MDCT is not yet finished
+audio; it must be lapped with surrounding frames using an appropriate
+window (such as the Vorbis window) before the MDCT can be considered
+orthogonal.</para>
+
+</section>
+
+<section><title>overlap/add data</title>
+<para>
+Windowed MDCT output is overlapped and added with the right hand data
+of the previous window such that the 3/4 point of the previous window
+is aligned with the 1/4 point of the current window (as illustrated in
+the window overlap diagram). At this point, the audio data between the
+center of the previous frame and the center of the current frame is
+now finished and ready to be returned. </para>
+</section>
+
+<section><title>cache right hand data</title>
+<para>
+The decoder must cache the right hand portion of the current frame to
+be lapped with the left hand portion of the next frame.
+</para>
+</section>
+
+<section><title>return finished audio data</title>
+
+<para>
+The overlapped portion produced from overlapping the previous and
+current frame data is finished data to be returned by the decoder.
+This data spans from the center of the previous window to the center
+of the current window.  In the case of same-sized windows, the amount
+of data to return is one-half block consisting of and only of the
+overlapped portions. When overlapping a short and long window, much of
+the returned range is not actually overlap.  This does not damage
+transform orthogonality.  Pay attention however to returning the
+correct data range; the amount of data to be returned is:
+
+<programlisting>
+window_blocksize(previous_window)/4+window_blocksize(current_window)/4
+</programlisting>
+
+from the center of the previous window to the center of the current
+window.</para>
+
+<para>
+Data is not returned from the first frame; it must be used to 'prime'
+the decode engine.  The encoder accounts for this priming when
+calculating PCM offsets; after the first frame, the proper PCM output
+offset is '0' (as no data has been returned yet).</para>
+</section>
+</section>
+
+</section>
+
+</section>
+<!-- end Vorbis I specification introduction and description -->
+
Index: /libvorbis-1.2.0/doc/xml/02-bitpacking.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/02-bitpacking.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/02-bitpacking.xml	(revision 16)
@@ -0,0 +1,280 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-bitpacking">
+<sectioninfo>
+<releaseinfo>
+ $Id: 02-bitpacking.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</releaseinfo>
+</sectioninfo>
+<title>Bitpacking Convention</title>
+
+
+<section>
+<title>Overview</title>
+
+<para>
+The Vorbis codec uses relatively unstructured raw packets containing
+arbitrary-width binary integer fields.  Logically, these packets are a
+bitstream in which bits are coded one-by-one by the encoder and then
+read one-by-one in the same monotonically increasing order by the
+decoder.  Most current binary storage arrangements group bits into a
+native word size of eight bits (octets), sixteen bits, thirty-two bits
+or, less commonly other fixed word sizes.  The Vorbis bitpacking
+convention specifies the correct mapping of the logical packet
+bitstream into an actual representation in fixed-width words.
+</para>
+
+<section><title>octets, bytes and words</title>
+
+<para>
+In most contemporary architectures, a 'byte' is synonymous with an
+'octet', that is, eight bits.  This has not always been the case;
+seven, ten, eleven and sixteen bit 'bytes' have been used.  For
+purposes of the bitpacking convention, a byte implies the native,
+smallest integer storage representation offered by a platform.  On
+modern platforms, this is generally assumed to be eight bits (not
+necessarily because of the processor but because of the
+filesystem/memory architecture.  Modern filesystems invariably offer
+bytes as the fundamental atom of storage).  A 'word' is an integer
+size that is a grouped multiple of this smallest size.</para>
+
+<para>
+The most ubiquitous architectures today consider a 'byte' to be an
+octet (eight bits) and a word to be a group of two, four or eight
+bytes (16, 32 or 64 bits).  Note however that the Vorbis bitpacking
+convention is still well defined for any native byte size; Vorbis uses
+the native bit-width of a given storage system. This document assumes
+that a byte is one octet for purposes of example.</para>
+
+</section><section><title>bit order</title>
+
+<para>
+A byte has a well-defined 'least significant' bit (LSb), which is the
+only bit set when the byte is storing the two's complement integer
+value +1.  A byte's 'most significant' bit (MSb) is at the opposite
+end of the byte. Bits in a byte are numbered from zero at the LSb to
+<emphasis>n</emphasis> (<emphasis>n</emphasis>=7 in an octet) for the
+MSb.</para>
+
+</section>
+
+<section><title>byte order</title>
+
+<para>
+Words are native groupings of multiple bytes.  Several byte orderings
+are possible in a word; the common ones are 3-2-1-0 ('big endian' or
+'most significant byte first' in which the highest-valued byte comes
+first), 0-1-2-3 ('little endian' or 'least significant byte first' in
+which the lowest value byte comes first) and less commonly 3-1-2-0 and
+0-2-1-3 ('mixed endian').</para>
+
+<para>
+The Vorbis bitpacking convention specifies storage and bitstream
+manipulation at the byte, not word, level, thus host word ordering is
+of a concern only during optimization when writing high performance
+code that operates on a word of storage at a time rather than by byte.
+Logically, bytes are always coded and decoded in order from byte zero
+through byte <emphasis>n</emphasis>.</para>
+
+</section>
+
+<section><title>coding bits into byte sequences</title>
+
+<para>
+The Vorbis codec has need to code arbitrary bit-width integers, from
+zero to 32 bits wide, into packets.  These integer fields are not
+aligned to the boundaries of the byte representation; the next field
+is written at the bit position at which the previous field ends.</para>
+
+<para>
+The encoder logically packs integers by writing the LSb of a binary
+integer to the logical bitstream first, followed by next least
+significant bit, etc, until the requested number of bits have been
+coded.  When packing the bits into bytes, the encoder begins by
+placing the LSb of the integer to be written into the least
+significant unused bit position of the destination byte, followed by
+the next-least significant bit of the source integer and so on up to
+the requested number of bits.  When all bits of the destination byte
+have been filled, encoding continues by zeroing all bits of the next
+byte and writing the next bit into the bit position 0 of that byte.
+Decoding follows the same process as encoding, but by reading bits
+from the byte stream and reassembling them into integers.</para>
+
+</section>
+
+<section><title>signedness</title>
+
+<para>
+The signedness of a specific number resulting from decode is to be
+interpreted by the decoder given decode context.  That is, the three
+bit binary pattern 'b111' can be taken to represent either 'seven' as
+an unsigned integer, or '-1' as a signed, two's complement integer.
+The encoder and decoder are responsible for knowing if fields are to
+be treated as signed or unsigned.</para>
+
+</section>
+
+<section><title>coding example</title>
+
+<para>
+Code the 4 bit integer value '12' [b1100] into an empty bytestream.
+Bytestream result:
+
+<screen>  
+              |
+              V
+
+        7 6 5 4 3 2 1 0
+byte 0 [0 0 0 0 1 1 0 0]  &lt;-
+byte 1 [               ]
+byte 2 [               ]
+byte 3 [               ]
+             ...
+byte n [               ]  bytestream length == 1 byte
+
+</screen>
+</para>
+
+<para>
+Continue by coding the 3 bit integer value '-1' [b111]:
+
+<screen>
+        |
+        V
+
+        7 6 5 4 3 2 1 0
+byte 0 [0 1 1 1 1 1 0 0]  &lt;-
+byte 1 [               ]
+byte 2 [               ]
+byte 3 [               ]
+             ... 
+byte n [               ]  bytestream length == 1 byte
+</screen>
+</para>
+
+<para>
+Continue by coding the 7 bit integer value '17' [b0010001]:
+
+<screen>
+          |
+          V    
+
+        7 6 5 4 3 2 1 0
+byte 0 [1 1 1 1 1 1 0 0]
+byte 1 [0 0 0 0 1 0 0 0]  &lt;-
+byte 2 [               ]
+byte 3 [               ]
+             ...
+byte n [               ]  bytestream length == 2 bytes
+                          bit cursor == 6
+</screen>
+</para>
+
+<para>
+Continue by coding the 13 bit integer value '6969' [b110 11001110 01]:
+
+<screen>
+                |
+                V
+
+        7 6 5 4 3 2 1 0
+byte 0 [1 1 1 1 1 1 0 0]
+byte 1 [0 1 0 0 1 0 0 0]
+byte 2 [1 1 0 0 1 1 1 0]
+byte 3 [0 0 0 0 0 1 1 0]  &lt;-
+             ...
+byte n [               ]  bytestream length == 4 bytes
+
+</screen>
+</para>
+
+</section>
+
+<section><title>decoding example</title>
+
+<para>
+Reading from the beginning of the bytestream encoded in the above example:
+
+<screen>
+                      |
+                      V
+                      
+        7 6 5 4 3 2 1 0
+byte 0 [1 1 1 1 1 1 0 0]  &lt;-
+byte 1 [0 1 0 0 1 0 0 0]
+byte 2 [1 1 0 0 1 1 1 0]
+byte 3 [0 0 0 0 0 1 1 0]  bytestream length == 4 bytes
+
+</screen>
+</para>
+
+<para>
+We read two, two-bit integer fields, resulting in the returned numbers
+'b00' and 'b11'.  Two things are worth noting here:
+
+<itemizedlist>
+<listitem>
+<para>Although these four bits were originally written as a single
+four-bit integer, reading some other combination of bit-widths from the
+bitstream is well defined.  There are no artificial alignment
+boundaries maintained in the bitstream.</para>
+</listitem>
+<listitem>
+<para>The second value is the
+two-bit-wide integer 'b11'.  This value may be interpreted either as
+the unsigned value '3', or the signed value '-1'.  Signedness is
+dependent on decode context.</para>
+</listitem>
+</itemizedlist>
+</para>
+
+</section>
+
+<section><title>end-of-packet alignment</title>
+
+<para>
+The typical use of bitpacking is to produce many independent
+byte-aligned packets which are embedded into a larger byte-aligned
+container structure, such as an Ogg transport bitstream.  Externally,
+each bytestream (encoded bitstream) must begin and end on a byte
+boundary.  Often, the encoded bitstream is not an integer number of
+bytes, and so there is unused (uncoded) space in the last byte of a
+packet.</para>
+
+<para>
+Unused space in the last byte of a bytestream is always zeroed during
+the coding process.  Thus, should this unused space be read, it will
+return binary zeroes.</para>
+
+<para>
+Attempting to read past the end of an encoded packet results in an
+'end-of-packet' condition.  End-of-packet is not to be considered an
+error; it is merely a state indicating that there is insufficient
+remaining data to fulfill the desired read size.  Vorbis uses truncated
+packets as a normal mode of operation, and as such, decoders must
+handle reading past the end of a packet as a typical mode of
+operation. Any further read operations after an 'end-of-packet'
+condition shall also return 'end-of-packet'.</para>
+
+</section>
+
+<section><title> reading zero bits</title>
+
+<para>
+Reading a zero-bit-wide integer returns the value '0' and does not
+increment the stream cursor.  Reading to the end of the packet (but
+not past, such that an 'end-of-packet' condition has not triggered)
+and then reading a zero bit integer shall succeed, returning 0, and
+not trigger an end-of-packet condition.  Reading a zero-bit-wide
+integer after a previous read sets 'end-of-packet' shall also fail
+with 'end-of-packet'.</para>
+
+</section>
+
+</section>
+</section>
+
Index: /libvorbis-1.2.0/doc/xml/03-codebook.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/03-codebook.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/03-codebook.xml	(revision 16)
@@ -0,0 +1,458 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-codebook">
+<sectioninfo>
+<releaseinfo>
+ $Id: 03-codebook.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</releaseinfo>
+</sectioninfo>
+<title>Probability Model and Codebooks</title>
+
+<section>
+<title>Overview</title>
+
+<para>
+Unlike practically every other mainstream audio codec, Vorbis has no
+statically configured probability model, instead packing all entropy
+decoding configuration, VQ and Huffman, into the bitstream itself in
+the third header, the codec setup header.  This packed configuration
+consists of multiple 'codebooks', each containing a specific
+Huffman-equivalent representation for decoding compressed codewords as
+well as an optional lookup table of output vector values to which a
+decoded Huffman value is applied as an offset, generating the final
+decoded output corresponding to a given compressed codeword.</para>
+
+<section><title>Bitwise operation</title>
+<para>
+The codebook mechanism is built on top of the vorbis bitpacker. Both
+the codebooks themselves and the codewords they decode are unrolled 
+from a packet as a series of arbitrary-width values read from the 
+stream according to <xref linkend="vorbis-spec-bitpacking"/>.</para>
+</section>
+
+</section>
+
+<section>
+<title>Packed codebook format</title>
+
+<para>
+For purposes of the examples below, we assume that the storage
+system's native byte width is eight bits.  This is not universally
+true; see <xref linkend="vorbis-spec-bitpacking"/> for discussion 
+relating to non-eight-bit bytes.</para>
+
+<section><title>codebook decode</title>
+
+<para>
+A codebook begins with a 24 bit sync pattern, 0x564342:
+
+<screen>
+byte 0: [ 0 1 0 0 0 0 1 0 ] (0x42)
+byte 1: [ 0 1 0 0 0 0 1 1 ] (0x43)
+byte 2: [ 0 1 0 1 0 1 1 0 ] (0x56)
+</screen></para>
+
+<para>
+16 bit <varname>[codebook_dimensions]</varname> and 24 bit <varname>[codebook_entries]</varname> fields:
+
+<screen>
+
+byte 3: [ X X X X X X X X ] 
+byte 4: [ X X X X X X X X ] [codebook_dimensions] (16 bit unsigned)
+
+byte 5: [ X X X X X X X X ] 
+byte 6: [ X X X X X X X X ] 
+byte 7: [ X X X X X X X X ] [codebook_entries] (24 bit unsigned)
+
+</screen></para>
+
+<para>
+Next is the <varname>[ordered]</varname> bit flag:
+
+<screen>
+
+byte 8: [               X ] [ordered] (1 bit)
+
+</screen></para>
+
+<para>
+Each entry, numbering a
+total of <varname>[codebook_entries]</varname>, is assigned a codeword length.
+We now read the list of codeword lengths and store these lengths in
+the array <varname>[codebook_codeword_lengths]</varname>. Decode of lengths is
+according to whether the <varname>[ordered]</varname> flag is set or unset.
+
+<itemizedlist>
+<listitem>
+  <para>If the <varname>[ordered]</varname> flag is unset, the codeword list is not
+  length ordered and the decoder needs to read each codeword length
+  one-by-one.</para> 
+
+  <para>The decoder first reads one additional bit flag, the
+  <varname>[sparse]</varname> flag.  This flag determines whether or not the
+  codebook contains unused entries that are not to be included in the
+  codeword decode tree:
+
+<screen>
+byte 8: [             X 1 ] [sparse] flag (1 bit)
+</screen></para>
+
+<para>
+  The decoder now performs for each of the <varname>[codebook_entries]</varname>
+  codebook entries:
+
+<screen>
+  
+  1) if([sparse] is set){
+
+         2) [flag] = read one bit;
+         3) if([flag] is set){
+
+              4) [length] = read a five bit unsigned integer;
+              5) codeword length for this entry is [length]+1;
+
+            } else {
+
+              6) this entry is unused.  mark it as such.
+
+            }
+
+     } else the sparse flag is not set {
+
+        7) [length] = read a five bit unsigned integer;
+        8) the codeword length for this entry is [length]+1;
+        
+     }
+
+</screen></para>
+</listitem>
+<listitem>
+  <para>If the <varname>[ordered]</varname> flag is set, the codeword list for this
+  codebook is encoded in ascending length order.  Rather than reading
+  a length for every codeword, the encoder reads the number of
+  codewords per length.  That is, beginning at entry zero:
+
+<screen>
+  1) [current_entry] = 0;
+  2) [current_length] = read a five bit unsigned integer and add 1;
+  3) [number] = read <link linkend="vorbis-spec-ilog">ilog</link>([codebook_entries] - [current_entry]) bits as an unsigned integer
+  4) set the entries [current_entry] through [current_entry]+[number]-1, inclusive, 
+    of the [codebook_codeword_lengths] array to [current_length]
+  5) set [current_entry] to [number] + [current_entry]
+  6) increment [current_length] by 1
+  7) if [current_entry] is greater than [codebook_entries] ERROR CONDITION; 
+    the decoder will not be able to read this stream.
+  8) if [current_entry] is less than [codebook_entries], repeat process starting at 3)
+  9) done.
+</screen></para>
+</listitem>
+</itemizedlist>
+
+After all codeword lengths have been decoded, the decoder reads the
+vector lookup table.  Vorbis I supports three lookup types:
+<orderedlist>
+<listitem>
+<simpara>No lookup</simpara>
+</listitem><listitem>
+<simpara>Implicitly populated value mapping (lattice VQ)</simpara>
+</listitem><listitem>
+<simpara>Explicitly populated value mapping (tessellated or 'foam'
+VQ)</simpara>
+</listitem>
+</orderedlist>
+</para>
+
+<para>
+The lookup table type is read as a four bit unsigned integer:
+<screen>
+  1) [codebook_lookup_type] = read four bits as an unsigned integer
+</screen></para>
+
+<para>
+Codebook decode precedes according to <varname>[codebook_lookup_type]</varname>:
+<itemizedlist>
+<listitem>
+<para>Lookup type zero indicates no lookup to be read.  Proceed past
+lookup decode.</para>
+</listitem><listitem>
+<para>Lookup types one and two are similar, differing only in the
+number of lookup values to be read.  Lookup type one reads a list of
+values that are permuted in a set pattern to build a list of vectors,
+each vector of order <varname>[codebook_dimensions]</varname> scalars.  Lookup
+type two builds the same vector list, but reads each scalar for each
+vector explicitly, rather than building vectors from a smaller list of
+possible scalar values.  Lookup decode proceeds as follows:
+
+<screen>
+  1) [codebook_minimum_value] = <link linkend="vorbis-spec-float32_unpack">float32_unpack</link>( read 32 bits as an unsigned integer) 
+  2) [codebook_delta_value] = <link linkend="vorbis-spec-float32_unpack">float32_unpack</link>( read 32 bits as an unsigned integer) 
+  3) [codebook_value_bits] = read 4 bits as an unsigned integer and add 1
+  4) [codebook_sequence_p] = read 1 bit as a boolean flag
+
+  if ( [codebook_lookup_type] is 1 ) {
+   
+     5) [codebook_lookup_values] = <link linkend="vorbis-spec-lookup1_values">lookup1_values</link>(<varname>[codebook_entries]</varname>, <varname>[codebook_dimensions]</varname> )
+
+  } else {
+
+     6) [codebook_lookup_values] = <varname>[codebook_entries]</varname> * <varname>[codebook_dimensions]</varname>
+
+  }
+
+  7) read a total of [codebook_lookup_values] unsigned integers of [codebook_value_bits] each; 
+     store these in order in the array [codebook_multiplicands]
+</screen></para>
+</listitem><listitem>
+<para>A <varname>[codebook_lookup_type]</varname> of greater than two is reserved
+and indicates a stream that is not decodable by the specification in this
+document.</para>
+</listitem>
+</itemizedlist>
+</para>
+
+<para>
+An 'end of packet' during any read operation in the above steps is
+considered an error condition rendering the stream undecodable.</para>
+
+<section><title>Huffman decision tree representation</title>
+
+<para>
+The <varname>[codebook_codeword_lengths]</varname> array and
+<varname>[codebook_entries]</varname> value uniquely define the Huffman decision
+tree used for entropy decoding.</para>
+
+<para>
+Briefly, each used codebook entry (recall that length-unordered
+codebooks support unused codeword entries) is assigned, in order, the
+lowest valued unused binary Huffman codeword possible.  Assume the
+following codeword length list:
+
+<screen>
+entry 0: length 2
+entry 1: length 4
+entry 2: length 4
+entry 3: length 4
+entry 4: length 4
+entry 5: length 2
+entry 6: length 3
+entry 7: length 3
+</screen></para>
+
+<para>
+Assigning codewords in order (lowest possible value of the appropriate
+length to highest) results in the following codeword list:
+
+<screen>
+entry 0: length 2 codeword 00
+entry 1: length 4 codeword 0100
+entry 2: length 4 codeword 0101
+entry 3: length 4 codeword 0110
+entry 4: length 4 codeword 0111
+entry 5: length 2 codeword 10
+entry 6: length 3 codeword 110
+entry 7: length 3 codeword 111
+</screen></para>
+
+
+<note>
+<para>
+Unlike most binary numerical values in this document, we
+intend the above codewords to be read and used bit by bit from left to
+right, thus the codeword '001' is the bit string 'zero, zero, one'.
+When determining 'lowest possible value' in the assignment definition
+above, the leftmost bit is the MSb.</para>
+</note>
+
+<para>
+It is clear that the codeword length list represents a Huffman
+decision tree with the entry numbers equivalent to the leaves numbered
+left-to-right:
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="hufftree.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[huffman tree illustration]</phrase>
+</textobject>
+</mediaobject>
+</para>
+
+<para>
+As we assign codewords in order, we see that each choice constructs a
+new leaf in the leftmost possible position.</para>
+
+<para>
+Note that it's possible to underspecify or overspecify a Huffman tree
+via the length list.  In the above example, if codeword seven were
+eliminated, it's clear that the tree is unfinished:
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="hufftree-under.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[underspecified huffman tree illustration]</phrase>
+</textobject>
+</mediaobject>
+</para>
+
+<para>
+Similarly, in the original codebook, it's clear that the tree is fully
+populated and a ninth codeword is impossible.  Both underspecified and
+overspecified trees are an error condition rendering the stream
+undecodable.</para>
+
+<para>
+Codebook entries marked 'unused' are simply skipped in the assigning
+process.  They have no codeword and do not appear in the decision
+tree, thus it's impossible for any bit pattern read from the stream to
+decode to that entry number.</para>
+
+</section>
+
+<section><title>VQ lookup table vector representation</title>
+
+<para>
+Unpacking the VQ lookup table vectors relies on the following values:
+<programlisting>
+the [codebook_multiplicands] array
+[codebook_minimum_value]
+[codebook_delta_value]
+[codebook_sequence_p]
+[codebook_lookup_type]
+[codebook_entries]
+[codebook_dimensions]
+[codebook_lookup_values]
+</programlisting>
+</para>
+
+<para>
+Decoding (unpacking) a specific vector in the vector lookup table
+proceeds according to <varname>[codebook_lookup_type]</varname>.  The unpacked
+vector values are what a codebook would return during audio packet
+decode in a VQ context.</para>
+
+<section><title>Vector value decode: Lookup type 1</title>
+
+<para>
+Lookup type one specifies a lattice VQ lookup table built
+algorithmically from a list of scalar values.  Calculate (unpack) the
+final values of a codebook entry vector from the entries in
+<varname>[codebook_multiplicands]</varname> as follows (<varname>[value_vector]</varname>
+is the output vector representing the vector of values for entry number
+<varname>[lookup_offset]</varname> in this codebook):
+
+<screen>
+  1) [last] = 0;
+  2) [index_divisor] = 1;
+  3) iterate [i] over the range 0 ... [codebook_dimensions]-1 (once for each scalar value in the value vector) {
+       
+       4) [multiplicand_offset] = ( [lookup_offset] divided by [index_divisor] using integer 
+          division ) integer modulo [codebook_lookup_values]
+
+       5) vector [value_vector] element [i] = 
+            ( [codebook_multiplicands] array element number [multiplicand_offset] ) *
+            [codebook_delta_value] + [codebook_minimum_value] + [last];
+
+       6) if ( [codebook_sequence_p] is set ) then set [last] = vector [value_vector] element [i]
+
+       7) [index_divisor] = [index_divisor] * [codebook_lookup_values]
+
+     }
+ 
+  8) vector calculation completed.
+</screen></para>
+
+</section>
+
+<section><title>Vector value decode: Lookup type 2</title>
+
+<para>
+Lookup type two specifies a VQ lookup table in which each scalar in
+each vector is explicitly set by the <varname>[codebook_multiplicands]</varname>
+array in a one-to-one mapping.  Calculate [unpack] the
+final values of a codebook entry vector from the entries in
+<varname>[codebook_multiplicands]</varname> as follows (<varname>[value_vector]</varname>
+is the output vector representing the vector of values for entry number
+<varname>[lookup_offset]</varname> in this codebook):
+
+<screen>
+  1) [last] = 0;
+  2) [multiplicand_offset] = [lookup_offset] * [codebook_dimensions]
+  3) iterate [i] over the range 0 ... [codebook_dimensions]-1 (once for each scalar value in the value vector) {
+
+       4) vector [value_vector] element [i] = 
+            ( [codebook_multiplicands] array element number [multiplicand_offset] ) *
+            [codebook_delta_value] + [codebook_minimum_value] + [last];
+
+       5) if ( [codebook_sequence_p] is set ) then set [last] = vector [value_vector] element [i] 
+
+       6) increment [multiplicand_offset]
+
+     }
+ 
+  7) vector calculation completed.
+</screen></para>
+
+</section>
+
+</section>
+
+</section>
+
+</section>
+
+<section>
+<title>Use of the codebook abstraction</title>
+
+<para>
+The decoder uses the codebook abstraction much as it does the
+bit-unpacking convention; a specific codebook reads a
+codeword from the bitstream, decoding it into an entry number, and then
+returns that entry number to the decoder (when used in a scalar
+entropy coding context), or uses that entry number as an offset into
+the VQ lookup table, returning a vector of values (when used in a context
+desiring a VQ value). Scalar or VQ context is always explicit; any call
+to the codebook mechanism requests either a scalar entry number or a
+lookup vector.</para>
+
+<para>
+Note that VQ lookup type zero indicates that there is no lookup table;
+requesting decode using a codebook of lookup type 0 in any context
+expecting a vector return value (even in a case where a vector of
+dimension one) is forbidden.  If decoder setup or decode requests such
+an action, that is an error condition rendering the packet
+undecodable.</para>
+
+<para>
+Using a codebook to read from the packet bitstream consists first of
+reading and decoding the next codeword in the bitstream. The decoder
+reads bits until the accumulated bits match a codeword in the
+codebook.  This process can be though of as logically walking the
+Huffman decode tree by reading one bit at a time from the bitstream,
+and using the bit as a decision boolean to take the 0 branch (left in
+the above examples) or the 1 branch (right in the above examples).
+Walking the tree finishes when the decode process hits a leaf in the
+decision tree; the result is the entry number corresponding to that
+leaf.  Reading past the end of a packet propagates the 'end-of-stream'
+condition to the decoder.</para>
+
+<para>
+When used in a scalar context, the resulting codeword entry is the
+desired return value.</para>
+
+<para>
+When used in a VQ context, the codeword entry number is used as an
+offset into the VQ lookup table.  The value returned to the decoder is
+the vector of scalars corresponding to this offset.</para>
+
+</section>
+
+</section>
+
+<!-- end section of probablity model and codebooks -->
Index: /libvorbis-1.2.0/doc/xml/04-codec.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/04-codec.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/04-codec.xml	(revision 16)
@@ -0,0 +1,711 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY pi     "&#x03C0;"> <!-- GREEK SMALL LETTER PI -->
+]>
+
+<section id="vorbis-spec-codec">
+<sectioninfo>
+<releaseinfo>
+ $Id: 04-codec.xml 10466 2005-11-28 00:34:44Z giles $
+</releaseinfo>
+</sectioninfo>
+<title>Codec Setup and Packet Decode</title>
+
+<section>
+<title>Overview</title>
+
+<para>
+This document serves as the top-level reference document for the
+bit-by-bit decode specification of Vorbis I.  This document assumes a
+high-level understanding of the Vorbis decode process, which is
+provided in <xref linkend="vorbis-spec-intro"/>.  <xref
+linkend="vorbis-spec-bitpacking"/> covers reading and writing bit fields from
+and to bitstream packets.</para>
+
+</section>
+
+<section>
+<title>Header decode and decode setup</title>
+
+<para>
+A Vorbis bitstream begins with three header packets. The header
+packets are, in order, the identification header, the comments header,
+and the setup header. All are required for decode compliance.  An
+end-of-packet condition during decoding the first or third header
+packet renders the stream undecodable.  End-of-packet decoding the
+comment header is a non-fatal error condition.</para>
+
+<section><title>Common header decode</title>
+
+<para>
+Each header packet begins with the same header fields.
+</para>
+
+<screen>
+  1) [packet_type] : 8 bit value
+  2) 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73: the characters 'v','o','r','b','i','s' as six octets
+</screen>
+
+<para>
+Decode continues according to packet type; the identification header
+is type 1, the comment header type 3 and the setup header type 5
+(these types are all odd as a packet with a leading single bit of '0'
+is an audio packet).  The packets must occur in the order of
+identification, comment, setup.</para>
+
+</section>
+
+<section><title>Identification header</title>
+
+<para>
+The identification header is a short header of only a few fields used
+to declare the stream definitively as Vorbis, and provide a few externally
+relevant pieces of information about the audio stream. The
+identification header is coded as follows:</para>
+
+<screen>
+ 1) [vorbis_version] = read 32 bits as unsigned integer
+ 2) [audio_channels] = read 8 bit integer as unsigned
+ 3) [audio_sample_rate] = read 32 bits as unsigned integer
+ 4) [bitrate_maximum] = read 32 bits as signed integer
+ 5) [bitrate_nominal] = read 32 bits as signed integer
+ 6) [bitrate_minimum] = read 32 bits as signed integer
+ 7) [blocksize_0] = 2 exponent (read 4 bits as unsigned integer)
+ 8) [blocksize_1] = 2 exponent (read 4 bits as unsigned integer)
+ 9) [framing_flag] = read one bit
+</screen>
+
+<para>
+<varname>[vorbis_version]</varname> is to read '0' in order to be compatible
+with this document.  Both <varname>[audio_channels]</varname> and
+<varname>[audio_sample_rate]</varname> must read greater than zero.  Allowed final
+blocksize values are 64, 128, 256, 512, 1024, 2048, 4096 and 8192 in
+Vorbis I.  <varname>[blocksize_0]</varname> must be less than or equal to
+<varname>[blocksize_1]</varname>.  The framing bit must be nonzero.  Failure to
+meet any of these conditions renders a stream undecodable.</para>
+
+<para>
+The bitrate fields above are used only as hints. The nominal bitrate
+field especially may be considerably off in purely VBR streams.  The
+fields are meaningful only when greater than zero.</para>
+
+<para>
+<itemizedlist>
+  <listitem><simpara>All three fields set to the same value implies a fixed rate, or tightly bounded, nearly fixed-rate bitstream</simpara></listitem>
+  <listitem><simpara>Only nominal set implies a VBR or ABR stream that averages the nominal bitrate</simpara></listitem>
+  <listitem><simpara>Maximum and or minimum set implies a VBR bitstream that obeys the bitrate limits</simpara></listitem>
+  <listitem><simpara>None set indicates the encoder does not care to speculate.</simpara></listitem>
+</itemizedlist>
+</para>
+
+</section>
+
+<section><title>Comment header</title>
+<para>
+Comment header decode and data specification is covered in
+<xref linkend="vorbis-spec-comment"/>.</para>
+</section>
+
+<section><title>Setup header</title>
+
+<para>
+Vorbis codec setup is configurable to an extreme degree:
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="components.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[decoder pipeline configuration]</phrase>
+</textobject>
+</mediaobject>
+</para>
+
+<para>
+The setup header contains the bulk of the codec setup information
+needed for decode.  The setup header contains, in order, the lists of
+codebook configurations, time-domain transform configurations
+(placeholders in Vorbis I), floor configurations, residue
+configurations, channel mapping configurations and mode
+configurations. It finishes with a framing bit of '1'.  Header decode
+proceeds in the following order:</para>
+
+<section><title>Codebooks</title>
+
+<orderedlist>
+<listitem><simpara><varname>[vorbis_codebook_count]</varname> = read eight bits as unsigned integer and add one</simpara></listitem>
+<listitem><simpara>Decode <varname>[vorbis_codebook_count]</varname> codebooks in order as defined
+in <xref linkend="vorbis-spec-codebook"/>.  Save each configuration, in
+order, in an array of
+codebook configurations <varname>[vorbis_codebook_configurations]</varname>.</simpara></listitem>
+</orderedlist>
+
+</section>
+
+<section><title>Time domain transforms</title>
+
+<para>
+These hooks are placeholders in Vorbis I.  Nevertheless, the
+configuration placeholder values must be read to maintain bitstream
+sync.</para>
+
+<orderedlist>
+<listitem><simpara><varname>[vorbis_time_count]</varname> = read 6 bits as unsigned integer and add one</simpara></listitem>
+<listitem><simpara>read <varname>[vorbis_time_count]</varname> 16 bit values; each value should be zero.  If any value is nonzero, this is an error condition and the stream is undecodable.</simpara></listitem>
+</orderedlist>
+
+</section>
+
+<section><title>Floors</title>
+
+<para>
+Vorbis uses two floor types; header decode is handed to the decode
+abstraction of the appropriate type.</para>
+
+<orderedlist>
+ <listitem><simpara><varname>[vorbis_floor_count]</varname> = read 6 bits as unsigned integer and add one</simpara></listitem>
+ <listitem><para>For each <varname>[i]</varname> of <varname>[vorbis_floor_count]</varname> floor numbers:
+  <orderedlist>
+   <listitem><simpara>read the floor type: vector <varname>[vorbis_floor_types]</varname> element <varname>[i]</varname> =
+read 16 bits as unsigned integer</simpara></listitem>
+   <listitem><simpara>If the floor type is zero, decode the floor
+configuration as defined in <xref linkend="vorbis-spec-floor0"/>; save
+this
+configuration in slot <varname>[i]</varname> of the floor configuration array <varname>[vorbis_floor_configurations]</varname>.</simpara></listitem>
+   <listitem><simpara>If the floor type is one,
+decode the floor configuration as defined in <xref
+linkend="vorbis-spec-floor1"/>; save this configuration in slot <varname>[i]</varname> of the floor configuration array <varname>[vorbis_floor_configurations]</varname>.</simpara></listitem>
+   <listitem><simpara>If the the floor type is greater than one, this stream is undecodable; ERROR CONDITION</simpara></listitem>
+  </orderedlist>
+ </para></listitem>
+</orderedlist>
+
+</section>
+
+<section><title>Residues</title>
+
+<para>
+Vorbis uses three residue types; header decode of each type is identical.
+</para>
+
+<orderedlist>
+<listitem><simpara><varname>[vorbis_residue_count]</varname> = read 6 bits as unsigned integer and add one
+</simpara></listitem>
+<listitem><para>For each of <varname>[vorbis_residue_count]</varname> residue numbers:
+ <orderedlist>
+  <listitem><simpara>read the residue type; vector <varname>[vorbis_residue_types]</varname> element <varname>[i]</varname> = read 16 bits as unsigned integer</simpara></listitem>
+  <listitem><simpara>If the residue type is zero,
+one or two, decode the residue configuration as defined in <xref
+linkend="vorbis-spec-residue"/>; save this configuration in slot <varname>[i]</varname> of the residue configuration array <varname>[vorbis_residue_configurations]</varname>.</simpara></listitem>
+  <listitem><simpara>If the the residue type is greater than two, this stream is undecodable; ERROR CONDITION</simpara></listitem>
+ </orderedlist>
+</para></listitem>
+</orderedlist>
+
+</section>
+
+<section><title>Mappings</title>
+
+<para>
+Mappings are used to set up specific pipelines for encoding
+multichannel audio with varying channel mapping applications. Vorbis I
+uses a single mapping type (0), with implicit PCM channel mappings.</para>
+
+<orderedlist>
+ <listitem><simpara><varname>[vorbis_mapping_count]</varname> = read 6 bits as unsigned integer and add one</simpara></listitem>
+ <listitem><para>For each <varname>[i]</varname> of <varname>[vorbis_mapping_count]</varname> mapping numbers:
+  <orderedlist>
+   <listitem><simpara>read the mapping type: 16 bits as unsigned integer.  There's no reason to save the mapping type in Vorbis I.</simpara></listitem>
+   <listitem><simpara>If the mapping type is nonzero, the stream is undecodable</simpara></listitem>
+   <listitem><para>If the mapping type is zero:
+    <orderedlist>
+     <listitem><para>read 1 bit as a boolean flag
+      <orderedlist>
+       <listitem><simpara>if set, <varname>[vorbis_mapping_submaps]</varname> = read 4 bits as unsigned integer and add one</simpara></listitem>
+       <listitem><simpara>if unset, <varname>[vorbis_mapping_submaps]</varname> = 1</simpara></listitem>
+      </orderedlist>
+      </para>
+     </listitem>
+     <listitem><para>read 1 bit as a boolean flag
+       <orderedlist>
+         <listitem><para>if set, square polar channel mapping is in use:
+           <orderedlist>
+             <listitem><simpara><varname>[vorbis_mapping_coupling_steps]</varname> = read 8 bits as unsigned integer and add one</simpara></listitem>
+             <listitem><para>for <varname>[j]</varname> each of <varname>[vorbis_mapping_coupling_steps]</varname> steps:
+               <orderedlist>
+                 <listitem><simpara>vector <varname>[vorbis_mapping_magnitude]</varname> element <varname>[j]</varname>= read <link linkend="vorbis-spec-ilog">ilog</link>(<varname>[audio_channels]</varname> - 1) bits as unsigned integer</simpara></listitem>
+                 <listitem><simpara>vector <varname>[vorbis_mapping_angle]</varname> element <varname>[j]</varname>= read <link linkend="vorbis-spec-ilog">ilog</link>(<varname>[audio_channels]</varname> - 1) bits as unsigned integer</simpara></listitem>
+                 <listitem><simpara>the numbers read in the above two steps are channel numbers representing the channel to treat as magnitude and the channel to treat as angle, respectively.  If for any coupling step the angle channel number equals the magnitude channel number, the magnitude channel number is greater than <varname>[audio_channels]</varname>-1, or the angle channel is greater than <varname>[audio_channels]</varname>-1, the stream is undecodable.</simpara></listitem>
+               </orderedlist>
+               </para>
+             </listitem>
+           </orderedlist>
+           </para>
+         </listitem>
+         <listitem><simpara>if unset, <varname>[vorbis_mapping_coupling_steps]</varname> = 0</simpara></listitem>
+       </orderedlist>
+       </para>
+     </listitem>
+     <listitem><simpara>read 2 bits (reserved field); if the value is nonzero, the stream is undecodable</simpara></listitem>
+     <listitem><simpara>if <varname>[vorbis_mapping_submaps]</varname> is greater than one, we read channel multiplex settings. For each <varname>[j]</varname> of <varname>[audio_channels]</varname> channels:</simpara>
+      <orderedlist>
+       <listitem><simpara>vector <varname>[vorbis_mapping_mux]</varname> element <varname>[j]</varname> = read 4 bits as unsigned integer</simpara></listitem>
+       <listitem><simpara>if the value is greater than the highest numbered submap (<varname>[vorbis_mapping_submaps]</varname> - 1), this in an error condition rendering the stream undecodable</simpara></listitem>
+      </orderedlist>
+     </listitem>
+     <listitem><simpara>for each submap <varname>[j]</varname> of <varname>[vorbis_mapping_submaps]</varname> submaps, read the floor and residue numbers for use in decoding that submap:</simpara>
+      <orderedlist>
+       <listitem><simpara>read and discard 8 bits (the unused time configuration placeholder)</simpara></listitem>
+       <listitem><simpara>read 8 bits as unsigned integer for the floor number; save in vector <varname>[vorbis_mapping_submap_floor]</varname> element <varname>[j]</varname></simpara></listitem>
+       <listitem><simpara>verify the floor number is not greater than the highest number floor configured for the bitstream. If it is, the bitstream is undecodable</simpara></listitem>
+       <listitem><simpara>read 8 bits as unsigned integer for the residue number; save in vector <varname>[vorbis_mapping_submap_residue]</varname> element <varname>[j]</varname></simpara></listitem>
+       <listitem><simpara>verify the residue number is not greater than the highest number residue configured for the bitstream.  If it is, the bitstream is undecodable</simpara></listitem>
+      </orderedlist>
+     </listitem>
+     <listitem><simpara>save this mapping configuration in slot <varname>[i]</varname> of the mapping configuration array <varname>[vorbis_mapping_configurations]</varname>.</simpara></listitem>
+    </orderedlist></para>
+   </listitem>
+  </orderedlist>
+ </para></listitem>
+</orderedlist>
+
+</section>
+
+<section><title>Modes</title>
+
+<orderedlist>
+ <listitem><simpara><varname>[vorbis_mode_count]</varname> = read 6 bits as unsigned integer and add one</simpara></listitem>
+ <listitem><simpara>For each of <varname>[vorbis_mode_count]</varname> mode numbers:</simpara>
+  <orderedlist>
+  <listitem><simpara><varname>[vorbis_mode_blockflag]</varname> = read 1 bit</simpara></listitem>
+  <listitem><simpara><varname>[vorbis_mode_windowtype]</varname> = read 16 bits as unsigned integer</simpara></listitem>
+  <listitem><simpara><varname>[vorbis_mode_transformtype]</varname> = read 16 bits as unsigned integer</simpara></listitem>
+  <listitem><simpara><varname>[vorbis_mode_mapping]</varname> = read 8 bits as unsigned integer</simpara></listitem>
+  <listitem><simpara>verify ranges; zero is the only legal value in Vorbis I for
+<varname>[vorbis_mode_windowtype]</varname>
+and <varname>[vorbis_mode_transformtype]</varname>.  <varname>[vorbis_mode_mapping]</varname> must not be greater than the highest number mapping in use.  Any illegal values render the stream undecodable.</simpara></listitem>
+  <listitem><simpara>save this mode configuration in slot <varname>[i]</varname> of the mode configuration array
+<varname>[vorbis_mode_configurations]</varname>.</simpara></listitem>
+ </orderedlist>
+</listitem>
+<listitem><simpara>read 1 bit as a framing flag.  If unset, a framing error occurred and the stream is not
+decodable.</simpara></listitem>
+</orderedlist>
+
+<para>
+After reading mode descriptions, setup header decode is complete.
+</para>
+
+</section>
+
+</section>
+
+</section>
+
+<section>
+<title>Audio packet decode and synthesis</title>
+
+<para>
+Following the three header packets, all packets in a Vorbis I stream
+are audio.  The first step of audio packet decode is to read and
+verify the packet type. <emphasis>A non-audio packet when audio is expected
+indicates stream corruption or a non-compliant stream. The decoder
+must ignore the packet and not attempt decoding it to audio</emphasis>.
+</para>
+
+<section><title>packet type, mode and window decode</title>
+
+<orderedlist>
+ <listitem><simpara>read 1 bit <varname>[packet_type]</varname>; check that packet type is 0 (audio)</simpara></listitem>
+ <listitem><simpara>read <link linkend="vorbis-spec-ilog">ilog</link>([vorbis_mode_count]-1) bits
+<varname>[mode_number]</varname></simpara></listitem>
+ <listitem><simpara>decode blocksize <varname>[n]</varname> is equal to <varname>[blocksize_0]</varname> if 
+<varname>[vorbis_mode_blockflag]</varname> is 0, else <varname>[n]</varname> is equal to <varname>[blocksize_1]</varname>.</simpara></listitem>
+ <listitem><simpara>perform window selection and setup; this window is used later by the inverse MDCT:</simpara>
+  <orderedlist>
+   <listitem><simpara>if this is a long window (the <varname>[vorbis_mode_blockflag]</varname> flag of this mode is
+set):</simpara>
+    <orderedlist>
+     <listitem><simpara>read 1 bit for <varname>[previous_window_flag]</varname></simpara></listitem>
+     <listitem><simpara>read 1 bit for <varname>[next_window_flag]</varname></simpara></listitem>
+     <listitem><simpara>if <varname>[previous_window_flag]</varname> is not set, the left half
+         of the window will be a hybrid window for lapping with a
+         short block.  See <xref
+linkend="vorbis-spec-window"/> for an illustration of overlapping
+dissimilar
+         windows. Else, the left half window will have normal long
+         shape.</simpara></listitem>
+     <listitem><simpara>if <varname>[next_window_flag]</varname> is not set, the right half of
+         the window will be a hybrid window for lapping with a short
+         block.  See <xref linkend="vorbis-spec-window"/> for an
+illustration of overlapping dissimilar
+         windows. Else, the left right window will have normal long
+         shape.</simpara></listitem>
+    </orderedlist>
+   </listitem>
+   <listitem><simpara> if this is a short window, the window is always the same 
+       short-window shape.</simpara></listitem>
+  </orderedlist>
+ </listitem>
+</orderedlist>
+
+<para>
+Vorbis windows all use the slope function y=sin(0.5 * &pi; * sin^2((x+.5)/n * &pi;)),
+where n is window size and x ranges 0...n-1, but dissimilar
+lapping requirements can affect overall shape.  Window generation
+proceeds as follows:</para>
+
+<orderedlist>
+ <listitem><simpara> <varname>[window_center]</varname> = <varname>[n]</varname> / 2</simpara></listitem>
+ <listitem><para> if (<varname>[vorbis_mode_blockflag]</varname> is set and <varname>[previous_window_flag]</varname> is
+not set) then
+  <orderedlist>
+   <listitem><simpara><varname>[left_window_start]</varname> = <varname>[n]</varname>/4 -
+<varname>[blocksize_0]</varname>/4</simpara></listitem>
+   <listitem><simpara><varname>[left_window_end]</varname> = <varname>[n]</varname>/4 + <varname>[blocksize_0]</varname>/4</simpara></listitem>
+   <listitem><simpara><varname>[left_n]</varname> = <varname>[blocksize_0]</varname>/2</simpara></listitem>
+  </orderedlist>
+ else
+  <orderedlist>
+   <listitem><simpara><varname>[left_window_start]</varname> = 0</simpara></listitem>
+   <listitem><simpara><varname>[left_window_end]</varname> = <varname>[window_center]</varname></simpara></listitem>
+   <listitem><simpara><varname>[left_n]</varname> = <varname>[n]</varname>/2</simpara></listitem>
+  </orderedlist></para>
+ </listitem>
+ <listitem><para> if (<varname>[vorbis_mode_blockflag]</varname> is set and <varname>[next_window_flag]</varname> is not
+set) then 
+  <orderedlist>
+   <listitem><simpara><varname>[right_window_start]</varname> = <varname>[n]*3</varname>/4 -
+<varname>[blocksize_0]</varname>/4</simpara></listitem>
+   <listitem><simpara><varname>[right_window_end]</varname> = <varname>[n]*3</varname>/4 +
+<varname>[blocksize_0]</varname>/4</simpara></listitem>
+   <listitem><simpara><varname>[right_n]</varname> = <varname>[blocksize_0]</varname>/2</simpara></listitem>
+  </orderedlist>
+ else
+  <orderedlist>
+   <listitem><simpara><varname>[right_window_start]</varname> = <varname>[window_center]</varname></simpara></listitem>
+   <listitem><simpara><varname>[right_window_end]</varname> = <varname>[n]</varname></simpara></listitem>
+   <listitem><simpara><varname>[right_n]</varname> = <varname>[n]</varname>/2</simpara></listitem>
+  </orderedlist></para>
+ </listitem>
+ <listitem><simpara> window from range 0 ... <varname>[left_window_start]</varname>-1 inclusive is zero</simpara></listitem>
+ <listitem><simpara> for <varname>[i]</varname> in range <varname>[left_window_start]</varname> ...
+<varname>[left_window_end]</varname>-1, window(<varname>[i]</varname>) = sin(.5 * &pi; * sin^2( (<varname>[i]</varname>-<varname>[left_window_start]</varname>+.5) / <varname>[left_n]</varname> * .5 * &pi;) )</simpara></listitem>
+ <listitem><simpara> window from range <varname>[left_window_end]</varname> ... <varname>[right_window_start]</varname>-1
+inclusive is one</simpara></listitem><listitem><simpara> for <varname>[i]</varname> in range <varname>[right_window_start]</varname> ... <varname>[right_window_end]</varname>-1, window(<varname>[i]</varname>) = sin(.5 * &pi; * sin^2( (<varname>[i]</varname>-<varname>[right_window_start]</varname>+.5) / <varname>[right_n]</varname> * .5 * &pi; + .5 * &pi;) )</simpara></listitem>
+<listitem><simpara> window from range <varname>[right_window_start]</varname> ... <varname>[n]</varname>-1 is
+zero</simpara></listitem>
+</orderedlist>
+
+<para>
+An end-of-packet condition up to this point should be considered an
+error that discards this packet from the stream.  An end of packet
+condition past this point is to be considered a possible nominal
+occurrence.</para>
+
+</section>
+
+<section><title>floor curve decode</title>
+
+<para>
+From this point on, we assume out decode context is using mode number
+<varname>[mode_number]</varname> from configuration array
+<varname>[vorbis_mode_configurations]</varname> and the map number
+<varname>[vorbis_mode_mapping]</varname> (specified by the current mode) taken
+from the mapping configuration array
+<varname>[vorbis_mapping_configurations]</varname>.</para>
+
+<para>
+Floor curves are decoded one-by-one in channel order.</para>
+
+<para>
+For each floor <varname>[i]</varname> of <varname>[audio_channels]</varname>
+ <orderedlist>
+  <listitem><simpara><varname>[submap_number]</varname> = element <varname>[i]</varname> of vector [vorbis_mapping_mux]</simpara></listitem>
+  <listitem><simpara><varname>[floor_number]</varname> = element <varname>[submap_number]</varname> of vector
+[vorbis_submap_floor]</simpara></listitem>
+  <listitem><simpara>if the floor type of this
+floor (vector <varname>[vorbis_floor_types]</varname> element
+<varname>[floor_number]</varname>) is zero then decode the floor for
+channel <varname>[i]</varname> according to the
+<xref linkend="vorbis-spec-floor0-decode"/></simpara></listitem>
+  <listitem><simpara>if the type of this floor
+is one then decode the floor for channel <varname>[i]</varname> according
+to the <xref linkend="vorbis-spec-floor1-decode"/></simpara></listitem>
+  <listitem><simpara>save the needed decoded floor information for channel for later synthesis</simpara></listitem>
+  <listitem><simpara>if the decoded floor returned 'unused', set vector <varname>[no_residue]</varname> element
+<varname>[i]</varname> to true, else set vector <varname>[no_residue]</varname> element <varname>[i]</varname> to
+false</simpara></listitem>
+ </orderedlist>
+</para>
+
+<para>
+An end-of-packet condition during floor decode shall result in packet
+decode zeroing all channel output vectors and skipping to the
+add/overlap output stage.</para>
+
+</section>
+
+<section><title>nonzero vector propagate</title>
+
+<para>
+A possible result of floor decode is that a specific vector is marked
+'unused' which indicates that that final output vector is all-zero
+values (and the floor is zero).  The residue for that vector is not
+coded in the stream, save for one complication.  If some vectors are
+used and some are not, channel coupling could result in mixing a
+zeroed and nonzeroed vector to produce two nonzeroed vectors.</para>
+
+<para>
+for each <varname>[i]</varname> from 0 ... <varname>[vorbis_mapping_coupling_steps]</varname>-1
+
+<orderedlist>
+ <listitem><simpara>if either <varname>[no_residue]</varname> entry for channel
+(<varname>[vorbis_mapping_magnitude]</varname> element <varname>[i]</varname>)
+or channel
+(<varname>[vorbis_mapping_angle]</varname> element <varname>[i]</varname>)
+are set to false, then both must be set to false.  Note that an 'unused' 
+floor has no decoded floor information; it is important that this is 
+remembered at floor curve synthesis time.</simpara></listitem>
+</orderedlist>
+</para>
+
+</section>
+
+<section><title>residue decode</title>
+
+<para>
+Unlike floors, which are decoded in channel order, the residue vectors
+are decoded in submap order.</para>
+
+<para>
+for each submap <varname>[i]</varname> in order from 0 ... <varname>[vorbis_mapping_submaps]</varname>-1</para>
+
+<orderedlist>
+ <listitem><simpara><varname>[ch]</varname> = 0</simpara></listitem>
+ <listitem><simpara>for each channel <varname>[j]</varname> in order from 0 ... <varname>[audio_channels]</varname> - 1</simpara>
+  <orderedlist>
+   <listitem><simpara>if channel <varname>[j]</varname> in submap <varname>[i]</varname> (vector <varname>[vorbis_mapping_mux]</varname> element <varname>[j]</varname> is equal to <varname>[i]</varname>)</simpara>
+    <orderedlist>
+     <listitem><para>if vector <varname>[no_residue]</varname> element <varname>[j]</varname> is true
+      <orderedlist>
+       <listitem><simpara>vector <varname>[do_not_decode_flag]</varname> element <varname>[ch]</varname> is set</simpara></listitem>
+      </orderedlist>
+     else
+      <orderedlist>
+       <listitem><simpara>vector <varname>[do_not_decode_flag]</varname> element <varname>[ch]</varname> is unset</simpara></listitem>
+      </orderedlist></para>
+     </listitem>
+     <listitem><simpara>increment <varname>[ch]</varname></simpara></listitem>
+    </orderedlist>
+   </listitem>
+  </orderedlist>
+ </listitem><listitem><simpara><varname>[residue_number]</varname> = vector <varname>[vorbis_mapping_submap_residue]</varname> element <varname>[i]</varname></simpara></listitem>
+ <listitem><simpara><varname>[residue_type]</varname> = vector <varname>[vorbis_residue_types]</varname> element <varname>[residue_number]</varname></simpara></listitem>
+ <listitem><simpara>decode <varname>[ch]</varname> vectors using residue <varname>[residue_number]</varname>, according to type <varname>[residue_type]</varname>, also passing vector <varname>[do_not_decode_flag]</varname> to indicate which vectors in the bundle should not be decoded. Correct per-vector decode length is <varname>[n]</varname>/2.</simpara></listitem>
+ <listitem><simpara><varname>[ch]</varname> = 0</simpara></listitem>
+ <listitem><simpara>for each channel <varname>[j]</varname> in order from 0 ... <varname>[audio_channels]</varname></simpara>
+  <orderedlist>
+   <listitem><simpara>if channel <varname>[j]</varname> is in submap <varname>[i]</varname> (vector <varname>[vorbis_mapping_mux]</varname> element <varname>[j]</varname> is equal to <varname>[i]</varname>)</simpara>
+    <orderedlist>
+     <listitem><simpara>residue vector for channel <varname>[j]</varname> is set to decoded residue vector <varname>[ch]</varname></simpara></listitem>
+     <listitem><simpara>increment <varname>[ch]</varname></simpara></listitem>
+    </orderedlist>
+   </listitem>
+  </orderedlist>
+ </listitem>
+</orderedlist>
+
+</section>
+
+<section><title>inverse coupling</title>
+
+<para>
+for each <varname>[i]</varname> from <varname>[vorbis_mapping_coupling_steps]</varname>-1 descending to 0
+
+<orderedlist>
+ <listitem><simpara><varname>[magnitude_vector]</varname> = the residue vector for channel
+(vector <varname>[vorbis_mapping_magnitude]</varname> element <varname>[i]</varname>)</simpara></listitem>
+ <listitem><simpara><varname>[angle_vector]</varname> = the residue vector for channel (vector
+<varname>[vorbis_mapping_angle]</varname> element <varname>[i]</varname>)</simpara></listitem>
+ <listitem><simpara>for each scalar value <varname>[M]</varname> in vector <varname>[magnitude_vector]</varname> and the corresponding scalar value <varname>[A]</varname> in vector <varname>[angle_vector]</varname>:</simpara>
+  <orderedlist>
+   <listitem><para>if (<varname>[M]</varname> is greater than zero)
+    <orderedlist>
+     <listitem><para>if (<varname>[A]</varname> is greater than zero)
+      <orderedlist>
+       <listitem><simpara><varname>[new_M]</varname> = <varname>[M]</varname></simpara></listitem>
+       <listitem><simpara><varname>[new_A]</varname> = <varname>[M]</varname>-<varname>[A]</varname></simpara></listitem>
+      </orderedlist>
+     else
+      <orderedlist>
+       <listitem><simpara><varname>[new_A]</varname> = <varname>[M]</varname></simpara></listitem>
+       <listitem><simpara><varname>[new_M]</varname> = <varname>[M]</varname>+<varname>[A]</varname></simpara></listitem>
+      </orderedlist>
+     </para></listitem>
+    </orderedlist>
+   else
+    <orderedlist>
+     <listitem><para>if (<varname>[A]</varname> is greater than zero)
+      <orderedlist>
+       <listitem><simpara><varname>[new_M]</varname> = <varname>[M]</varname></simpara></listitem>
+       <listitem><simpara><varname>[new_A]</varname> = <varname>[M]</varname>+<varname>[A]</varname></simpara></listitem>
+      </orderedlist>
+     else
+      <orderedlist>
+       <listitem><simpara><varname>[new_A]</varname> = <varname>[M]</varname></simpara></listitem>
+       <listitem><simpara><varname>[new_M]</varname> = <varname>[M]</varname>-<varname>[A]</varname></simpara></listitem>
+      </orderedlist>
+     </para></listitem>
+    </orderedlist>
+   </para></listitem>
+   <listitem><simpara>set scalar value <varname>[M]</varname> in vector <varname>[magnitude_vector]</varname> to <varname>[new_M]</varname></simpara></listitem>
+   <listitem><simpara>set scalar value <varname>[A]</varname> in vector <varname>[angle_vector]</varname> to <varname>[new_A]</varname></simpara></listitem>
+  </orderedlist>
+ </listitem>
+</orderedlist>
+</para>
+
+</section>
+
+<section><title>dot product</title>
+
+<para>
+For each channel, synthesize the floor curve from the decoded floor
+information, according to packet type. Note that the vector synthesis
+length for floor computation is <varname>[n]</varname>/2.</para>
+
+<para>
+For each channel, multiply each element of the floor curve by each
+element of that channel's residue vector.  The result is the dot
+product of the floor and residue vectors for each channel; the produced
+vectors are the length <varname>[n]</varname>/2 audio spectrum for each
+channel.</para>
+
+<para>
+One point is worth mentioning about this dot product; a common mistake
+in a fixed point implementation might be to assume that a 32 bit
+fixed-point representation for floor and residue and direct
+multiplication of the vectors is sufficient for acceptable spectral
+depth in all cases because it happens to mostly work with the current
+Xiph.Org reference encoder. </para>
+
+<para>
+However, floor vector values can span ~140dB (~24 bits unsigned), and
+the audio spectrum vector should represent a minimum of 120dB (~21
+bits with sign), even when output is to a 16 bit PCM device.  For the
+residue vector to represent full scale if the floor is nailed to
+-140dB, it must be able to span 0 to +140dB.  For the residue vector
+to reach full scale if the floor is nailed at 0dB, it must be able to
+represent -140dB to +0dB.  Thus, in order to handle full range
+dynamics, a residue vector may span -140dB to +140dB entirely within
+spec.  A 280dB range is approximately 48 bits with sign; thus the
+residue vector must be able to represent a 48 bit range and the dot
+product must be able to handle an effective 48 bit times 24 bit
+multiplication.  This range may be achieved using large (64 bit or
+larger) integers, or implementing a movable binary point
+representation.</para>
+
+</section>
+
+<section><title>inverse MDCT</title>
+
+<para>
+Convert the audio spectrum vector of each channel back into time
+domain PCM audio via an inverse Modified Discrete Cosine Transform
+(MDCT).  A detailed description of the MDCT is available in the paper
+<ulink url="http://www.iocon.com/resource/docs/ps/eusipco_corrected.ps"><citetitle pubwork="article">The
+use of multirate filter banks for coding of high quality digital
+audio</citetitle></ulink>, by T. Sporer, K. Brandenburg and B. Edler.  The window
+function used for the MDCT is the function described earlier.</para>
+
+</section>
+
+<section><title>overlap_add</title>
+
+<para>
+Windowed MDCT output is overlapped and added with the right hand data
+of the previous window such that the 3/4 point of the previous window
+is aligned with the 1/4 point of the current window (as illustrated in
+<xref linkend="vorbis-spec-window"/>).  The overlapped portion
+produced from overlapping the previous and current frame data is
+finished data to be returned by the decoder.  This data spans from the
+center of the previous window to the center of the current window.  In
+the case of same-sized windows, the amount of data to return is
+one-half block consisting of and only of the overlapped portions. When
+overlapping a short and long window, much of the returned range does not
+actually overlap.  This does not damage transform orthogonality.  Pay
+attention however to returning the correct data range; the amount of
+data to be returned is:
+
+<programlisting>
+window_blocksize(previous_window)/4+window_blocksize(current_window)/4
+</programlisting>
+
+from the center (element windowsize/2) of the previous window to the
+center (element windowsize/2-1, inclusive) of the current window.</para>
+
+<para>
+Data is not returned from the first frame; it must be used to 'prime'
+the decode engine.  The encoder accounts for this priming when
+calculating PCM offsets; after the first frame, the proper PCM output
+offset is '0' (as no data has been returned yet).</para>
+
+</section>
+
+<section><title>output channel order</title>
+
+<para>
+Vorbis I specifies only a channel mapping type 0.  In mapping type 0,
+channel mapping is implicitly defined as follows for standard audio
+applications:</para>
+
+<variablelist>
+ <varlistentry>
+  <term>one channel</term>
+  <listitem>
+   <simpara>the stream is monophonic</simpara>
+  </listitem>
+ </varlistentry><varlistentry>
+  <term>two channels</term><listitem>
+   <simpara>the stream is stereo.  channel order: left, right</simpara>
+  </listitem>
+ </varlistentry><varlistentry>
+  <term>three channels</term><listitem>
+   <simpara>the stream is a 1d-surround encoding.  channel order: left,
+center, right</simpara>
+  </listitem>
+ </varlistentry><varlistentry>
+  <term>four channels</term><listitem>
+   <simpara>the stream is quadraphonic surround.  channel order: front left,
+front right, rear left, rear right</simpara>
+  </listitem>
+ </varlistentry><varlistentry>
+  <term>five channels</term><listitem>
+   <simpara>the stream is five-channel surround.  channel order: front left,
+front center, front right, rear left, rear right</simpara>
+  </listitem>
+ </varlistentry><varlistentry>
+  <term>six channels</term><listitem>
+   <simpara>the stream is 5.1 surround.  channel order: front left, front
+center, front right, rear left, rear right, LFE</simpara>
+  </listitem>
+ </varlistentry><varlistentry>
+  <term>greater than six channels</term><listitem>
+   <simpara>channel use and order is defined by the application</simpara>
+  </listitem>
+ </varlistentry>
+</variablelist>
+
+<para>
+Applications using Vorbis for dedicated purposes may define channel
+mapping as seen fit.  Future channel mappings (such as three and four
+channel <ulink url="http://www.ambisonic.net/">Ambisonics</ulink>) will
+make use of channel mappings other than mapping 0.</para>
+
+</section>
+
+</section>
+
+</section>
Index: /libvorbis-1.2.0/doc/xml/05-comment.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/05-comment.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/05-comment.xml	(revision 16)
@@ -0,0 +1,284 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY % isolat1 SYSTEM "http://www.oasis-open.org/docbook/xml/4.2/ent/iso-lat1.ent">
+%isolat1;
+]>
+
+<section id="vorbis-spec-comment">
+<sectioninfo>
+ <releaseinfo>
+ $Id: 05-comment.xml 11703 2006-07-17 16:33:17Z giles $
+</releaseinfo>
+</sectioninfo>
+<title>comment field and header specification</title>
+
+
+<section><title>Overview</title>
+
+<para>The Vorbis text comment header is the second (of three) header
+packets that begin a Vorbis bitstream. It is meant for short text
+comments, not arbitrary metadata; arbitrary metadata belongs in a
+separate logical bitstream (usually an XML stream type) that provides
+greater structure and machine parseability.</para>
+
+<para>The comment field is meant to be used much like someone jotting a
+quick note on the bottom of a CDR. It should be a little information to
+remember the disc by and explain it to others; a short, to-the-point
+text note that need not only be a couple words, but isn't going to be
+more than a short paragraph.  The essentials, in other words, whatever
+they turn out to be, eg:
+
+<blockquote>
+<simpara>Honest Bob and the Factory-to-Dealer-Incentives, <citetitle>I'm Still
+Around</citetitle>, opening for Moxy Fr&uuml;vous, 1997.</simpara>
+</blockquote>
+</para>
+
+</section>
+
+<section><title>Comment encoding</title>
+
+<section><title>Structure</title>
+
+<para>
+The comment header is logically a list of eight-bit-clean vectors; the
+number of vectors is bounded to 2^32-1 and the length of each vector
+is limited to 2^32-1 bytes. The vector length is encoded; the vector
+contents themselves are not null terminated. In addition to the vector
+list, there is a single vector for vendor name (also 8 bit clean,
+length encoded in 32 bits). For example, the 1.0 release of libvorbis 
+set the vendor string to "Xiph.Org libVorbis I 20020717".</para>
+
+<para>The comment header is decoded as follows:
+
+<programlisting>
+  1) [vendor_length] = read an unsigned integer of 32 bits
+  2) [vendor_string] = read a UTF-8 vector as [vendor_length] octets
+  3) [user_comment_list_length] = read an unsigned integer of 32 bits
+  4) iterate [user_comment_list_length] times {
+       5) [length] = read an unsigned integer of 32 bits
+       6) this iteration's user comment = read a UTF-8 vector as [length] octets
+     }
+  7) [framing_bit] = read a single bit as boolean
+  8) if ( [framing_bit] unset or end-of-packet ) then ERROR
+  9) done.
+</programlisting>
+</para>
+
+</section>
+
+<section><title>Content vector format</title>
+
+<para>
+The comment vectors are structured similarly to a UNIX environment variable.
+That is, comment fields consist of a field name and a corresponding value and
+look like:</para>
+
+<blockquote><programlisting>
+comment[0]="ARTIST=me"; 
+comment[1]="TITLE=the sound of Vorbis"; 
+</programlisting></blockquote>
+
+<para>
+The field name is case-insensitive and may consist of ASCII 0x20
+through 0x7D, 0x3D ('=') excluded. ASCII 0x41 through 0x5A inclusive
+(characters A-Z) is to be considered equivalent to ASCII 0x61 through 
+0x7A inclusive (characters a-z).
+</para>
+
+<para>
+The field name is immediately followed by ASCII 0x3D ('=');
+this equals sign is used to terminate the field name.
+</para>
+
+<para>
+0x3D is followed by 8 bit clean UTF-8 encoded value of the
+field contents to the end of the field.
+</para>
+
+<section><title>Field names</title>
+
+<para>Below is a proposed, minimal list of standard field names with a
+description of intended use.  No single or group of field names is
+mandatory; a comment header may contain one, all or none of the names
+in this list.</para>
+
+<variablelist>
+<varlistentry>
+<term>TITLE</term>
+<listitem>
+<simpara>Track/Work name</simpara>
+</listitem>
+</varlistentry>
+<varlistentry>
+ <term>VERSION</term>
+<listitem>
+ <simpara>The version field may be used to
+differentiate multiple
+versions of the same track title in a single collection. (e.g. remix
+info)
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>ALBUM</term><listitem><simpara>The collection name to which this track belongs
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>TRACKNUMBER</term>
+<listitem><simpara>The track number of this piece if part of a specific larger collection or album
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>ARTIST</term>
+<listitem><simpara>The artist generally considered responsible for the work. In popular music this is usually the performing band or singer. For classical music it would be the composer. For an audio book it would be the author of the original text.
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>PERFORMER</term>
+<listitem><simpara>The artist(s) who performed the work. In classical music this would be the conductor, orchestra, soloists. In an audio book it would be the actor who did the reading. In popular music this is typically the same as the ARTIST and is omitted.
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>COPYRIGHT</term>
+<listitem><simpara>Copyright attribution, e.g., '2001 Nobody's Band' or '1999 Jack Moffitt'
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>LICENSE</term>
+<listitem><simpara>License information, eg, 'All Rights Reserved', 'Any
+Use Permitted', a URL to a license such as a Creative Commons license
+("www.creativecommons.org/blahblah/license.html") or the EFF Open
+Audio License ('distributed under the terms of the Open Audio
+License. see http://www.eff.org/IP/Open_licenses/eff_oal.html for
+details'), etc.
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>ORGANIZATION</term>
+<listitem><simpara>Name of the organization producing the track (i.e.
+the 'record label')
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>DESCRIPTION</term>
+<listitem><simpara>A short text description of the contents
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>GENRE</term>
+<listitem><simpara>A short text indication of music genre
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>DATE</term>
+<listitem><simpara>Date the track was recorded
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>LOCATION</term>
+<listitem><simpara>Location where track was recorded
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>CONTACT</term>
+<listitem><simpara>Contact information for the creators or distributors of the track. This could be a URL, an email address, the physical address of the producing label.
+</simpara></listitem>
+</varlistentry>
+
+<varlistentry><term>ISRC</term>
+<listitem><simpara>International Standard Recording Code for the
+track; see <ulink
+url="http://www.ifpi.org/isrc/">the ISRC
+intro page</ulink> for more information on ISRC numbers.
+</simpara></listitem>
+</varlistentry>
+
+</variablelist>
+
+</section>
+
+<section><title>Implications</title>
+
+<para>Field names should not be 'internationalized'; this is a
+concession to simplicity not an attempt to exclude the majority of
+the world that doesn't speak English. Field <emphasis>contents</emphasis>,
+however, use the UTF-8 character encoding to allow easy representation 
+of any language.</para>
+
+<para>We have the length of the entirety of the field and restrictions on
+the field name so that the field name is bounded in a known way. Thus
+we also have the length of the field contents.</para>
+
+<para>Individual 'vendors' may use non-standard field names within
+reason. The proper use of comment fields should be clear through
+context at this point.  Abuse will be discouraged.</para>
+
+<para>There is no vendor-specific prefix to 'nonstandard' field names.
+Vendors should make some effort to avoid arbitrarily polluting the
+common namespace. We will generally collect the more useful tags
+here to help with standardization.</para>
+
+<para>Field names are not required to be unique (occur once) within a
+comment header.  As an example, assume a track was recorded by three
+well know artists; the following is permissible, and encouraged:
+
+<blockquote><programlisting>
+ARTIST=Dizzy Gillespie 
+ARTIST=Sonny Rollins 
+ARTIST=Sonny Stitt 
+</programlisting></blockquote>
+
+</para>
+
+</section>
+
+</section>
+
+<section><title>Encoding</title> 
+
+<para>
+The comment header comprises the entirety of the second bitstream
+header packet.  Unlike the first bitstream header packet, it is not
+generally the only packet on the second page and may not be restricted
+to within the second bitstream page.  The length of the comment header
+packet is (practically) unbounded.  The comment header packet is not
+optional; it must be present in the bitstream even if it is
+effectively empty.</para>
+
+<para>
+The comment header is encoded as follows (as per Ogg's standard
+bitstream mapping which renders least-significant-bit of the word to be
+coded into the least significant available bit of the current
+bitstream octet first):
+
+<orderedlist>
+ <listitem><simpara>
+  Vendor string length (32 bit unsigned quantity specifying number of octets)
+ </simpara></listitem>
+ <listitem><simpara>
+  Vendor string ([vendor string length] octets coded from beginning of string to end of string, not null terminated)
+ </simpara></listitem>
+ <listitem><simpara>
+  Number of comment fields (32 bit unsigned quantity specifying number of fields)
+ </simpara></listitem>
+ <listitem><simpara>
+  Comment field 0 length (if [Number of comment fields]>0; 32 bit unsigned quantity specifying number of octets)
+ </simpara></listitem>
+ <listitem><simpara>
+  Comment field 0 ([Comment field 0 length] octets coded from beginning of string to end of string, not null terminated)
+ </simpara></listitem>
+ <listitem><simpara>
+  Comment field 1 length (if [Number of comment fields]>1...)...
+ </simpara></listitem>
+</orderedlist>
+</para>
+
+<para>
+This is actually somewhat easier to describe in code; implementation of the above can be found in <filename>vorbis/lib/info.c</filename>, <function>_vorbis_pack_comment()</function> and <function>_vorbis_unpack_comment()</function>.
+</para>
+
+</section>
+</section>
+
+</section>
Index: /libvorbis-1.2.0/doc/xml/06-floor0.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/06-floor0.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/06-floor0.xml	(revision 16)
@@ -0,0 +1,257 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-floor0">
+<sectioninfo>
+<releaseinfo>
+  $Id: 06-floor0.xml 10424 2005-11-23 08:44:18Z xiphmont $
+</releaseinfo>
+</sectioninfo>  
+<title>Floor type 0 setup and decode</title>
+
+
+<section>
+<title>Overview</title>
+
+<para>
+Vorbis floor type zero uses Line Spectral Pair (LSP, also alternately
+known as Line Spectral Frequency or LSF) representation to encode a
+smooth spectral envelope curve as the frequency response of the LSP
+filter.  This representation is equivalent to a traditional all-pole
+infinite impulse response filter as would be used in linear predictive
+coding; LSP representation may be converted to LPC representation and
+vice-versa.</para>
+
+</section>
+
+<section>
+<title>Floor 0 format</title>
+
+<para>
+Floor zero configuration consists of six integer fields and a list of
+VQ codebooks for use in coding/decoding the LSP filter coefficient
+values used by each frame. </para>
+
+<section><title>header decode</title>
+
+<para>
+Configuration information for instances of floor zero decodes from the
+codec setup header (third packet).  configuration decode proceeds as
+follows:</para>
+
+<screen>
+  1) [floor0_order] = read an unsigned integer of 8 bits
+  2) [floor0_rate] = read an unsigned integer of 16 bits
+  3) [floor0_bark_map_size] = read an unsigned integer of 16 bits
+  4) [floor0_amplitude_bits] = read an unsigned integer of six bits
+  5) [floor0_amplitude_offset] = read an unsigned integer of eight bits
+  6) [floor0_number_of_books] = read an unsigned integer of four bits and add 1
+  7) if any of [floor0_order], [floor0_rate], [floor0_bark_map_size], [floor0_amplitude_bits],
+     [floor0_amplitude_offset] or [floor0_number_of_books] are less than zero, the stream is not decodable
+  8) array [floor0_book_list] = read a list of [floor0_number_of_books] unsigned integers of eight bits each;
+</screen>
+
+<para>
+An end-of-packet condition during any of these bitstream reads renders
+this stream undecodable.  In addition, any element of the array
+<varname>[floor0_book_list]</varname> that is greater than the maximum codebook
+number for this bitstream is an error condition that also renders the
+stream undecodable.</para>
+
+</section>
+
+<section id="vorbis-spec-floor0-decode">
+<title>packet decode</title>
+
+<para>
+Extracting a floor0 curve from an audio packet consists of first
+decoding the curve amplitude and <varname>[floor0_order]</varname> LSP
+coefficient values from the bitstream, and then computing the floor
+curve, which is defined as the frequency response of the decoded LSP
+filter.</para>
+
+<para>
+Packet decode proceeds as follows:</para>
+<screen>
+  1) [amplitude] = read an unsigned integer of [floor0_amplitude_bits] bits
+  2) if ( [amplitude] is greater than zero ) {
+       3) [coefficients] is an empty, zero length vector
+       4) [booknumber] = read an unsigned integer of <link linkend="vorbis-spec-ilog">ilog</link>( [floor0_number_of_books] ) bits
+       5) if ( [booknumber] is greater than the highest number decode codebook ) then packet is undecodable
+       6) [last] = zero;
+       7) vector [temp_vector] = read vector from bitstream using codebook number [floor0_book_list] element [booknumber] in VQ context.
+       8) add the scalar value [last] to each scalar in vector [temp_vector]
+       9) [last] = the value of the last scalar in vector [temp_vector]
+      10) concatenate [temp_vector] onto the end of the [coefficients] vector
+      11) if (length of vector [coefficients] is less than [floor0_order], continue at step 6
+
+     }
+
+ 12) done.
+ 
+</screen>
+
+<para>
+Take note of the following properties of decode:
+<itemizedlist>
+ <listitem><simpara>An <varname>[amplitude]</varname> value of zero must result in a return code that indicates this channel is unused in this frame (the output of the channel will be all-zeroes in synthesis).  Several later stages of decode don't occur for an unused channel.</simpara></listitem>
+ <listitem><simpara>An end-of-packet condition during decode should be considered a
+nominal occruence; if end-of-packet is reached during any read
+operation above, floor decode is to return 'unused' status as if the
+<varname>[amplitude]</varname> value had read zero at the beginning of decode.</simpara></listitem>
+
+ <listitem><simpara>The book number used for decode
+can, in fact, be stored in the bitstream in <link linkend="vorbis-spec-ilog">ilog</link>( <varname>[floor0_number_of_books]</varname> -
+1 ) bits.  Nevertheless, the above specification is correct and values
+greater than the maximum possible book value are reserved.</simpara></listitem>
+
+ <listitem><simpara>The number of scalars read into the vector <varname>[coefficients]</varname>
+may be greater than <varname>[floor0_order]</varname>, the number actually
+required for curve computation.  For example, if the VQ codebook used
+for the floor currently being decoded has a
+<varname>[codebook_dimensions]</varname> value of three and
+<varname>[floor0_order]</varname> is ten, the only way to fill all the needed
+scalars in <varname>[coefficients]</varname> is to to read a total of twelve
+scalars as four vectors of three scalars each.  This is not an error
+condition, and care must be taken not to allow a buffer overflow in
+decode. The extra values are not used and may be ignored or discarded.</simpara></listitem>
+</itemizedlist>
+</para>
+
+</section>
+
+<section id="vorbis-spec-floor0-synth">
+<title>curve computation</title>
+
+<para>
+Given an <varname>[amplitude]</varname> integer and <varname>[coefficients]</varname>
+vector from packet decode as well as the [floor0_order],
+[floor0_rate], [floor0_bark_map_size], [floor0_amplitude_bits] and
+[floor0_amplitude_offset] values from floor setup, and an output
+vector size <varname>[n]</varname> specified by the decode process, we compute a
+floor output vector.</para>
+
+<para>
+If the value <varname>[amplitude]</varname> is zero, the return value is a
+length <varname>[n]</varname> vector with all-zero scalars.  Otherwise, begin by
+assuming the following definitions for the given vector to be
+synthesized:</para>
+
+<informalequation>
+ <mediaobject>
+  <textobject><phrase>[lsp map equation]</phrase></textobject>
+  <textobject role="tex"><phrase>
+   <![CDATA[
+   \begin{math}
+     \mathrm{map}_i = \left\{
+       \begin{array}{ll}
+          \min (  
+            \mathtt{floor0\_bark\_map\_size} - 1,
+            foobar
+          ) & \textrm{for } i \in [0,n-1] \\
+          -1 & \textrm{for } i = n
+        \end{array}
+      \right.
+    \end {math}
+    
+    where
+    
+    \begin{math}
+    foobar = 
+      \left\lfloor
+        \mathrm{bark}\left(\frac{\mathtt{floor0\_rate} \cdot i}{2n}\right) \cdot \frac{\mathtt{floor0\_bark\_map\_size}} {\mathrm{bark}(.5 \cdot \mathtt{floor0\_rate})} 
+      \right\rfloor
+    \end{math}
+                  
+    and
+                
+    \begin{math}
+      \mathrm{bark}(x) = 13.1 \arctan (.00074x) + 2.24 \arctan (.0000000185x^2 + .0001x)
+    \end{math}
+    ]]>
+   </phrase></textobject>
+  <imageobject><imagedata  fileref="lspmap.png"/></imageobject>
+ </mediaobject>
+</informalequation>
+
+<para>
+The above is used to synthesize the LSP curve on a Bark-scale frequency
+axis, then map the result to a linear-scale frequency axis.
+Similarly, the below calculation synthesizes the output LSP curve <varname>[output]</varname> on a log
+(dB) amplitude scale, mapping it to linear amplitude in the last step:</para>
+
+<orderedlist>
+ <listitem><simpara> <varname>[i]</varname> = 0 </simpara></listitem>
+ <listitem><para>if ( <varname>[floor0_order]</varname> is odd ) {
+  <orderedlist>
+   <listitem><para>calculate <varname>[p]</varname> and <varname>[q]</varname> according to:
+        <informalequation>
+         <mediaobject>
+          <textobject><phrase>[equation for odd lsp]</phrase></textobject>
+	  <textobject role="tex"><phrase>
+	   <![CDATA[
+           \begin{eqnarray*}
+             p & = & (1 - \cos^2\omega)\prod_{j=0}^{(\mathtt{order}-3)/2} 4 (\cos c_{2j+1} - \cos \omega)^2 \\
+             q & = & \frac{1}{4} \prod_{j=0}^{(\mathtt{order}-1)/2} 4 (\cos c_{2j+1} - \cos \omega)^2
+           \end{eqnarray*}
+	   ]]>
+          </phrase></textobject>
+	  <imageobject><imagedata fileref="oddlsp.png"/></imageobject>
+	 </mediaobject>
+        </informalequation>
+   </para></listitem>
+  </orderedlist>
+  } else <varname>[floor0_order]</varname> is even {
+  <orderedlist>
+   <listitem><para>calculate <varname>[p]</varname> and <varname>[q]</varname> according to:
+        <informalequation>
+         <mediaobject>
+	  <textobject><phrase>[equation for even lsp]</phrase></textobject>
+	  <textobject role="tex"><phrase>
+	   <![CDATA[
+           \begin{eqnarray*}
+             p & = & \frac{(1 - \cos^2\omega)}{2} \prod_{j=0}^{(\mathtt{order}-2)/2} 4 (\cos c_{2j} - \cos \omega)^2 \\
+             q & = & \frac{(1 + \cos^2\omega)}{2} \prod_{j=0}^{(\mathtt{order}-2)/2} 4 (\cos c_{2j} - \cos \omega)^2
+           \end{eqnarray*}
+	   ]]>
+          </phrase></textobject>
+	  <imageobject><imagedata fileref="evenlsp.png"/></imageobject>
+	 </mediaobject>
+        </informalequation>
+   </para></listitem>
+  </orderedlist> 
+  }
+ </para></listitem>
+ <listitem><para>calculate <varname>[linear_floor_value]</varname> according to:
+     <informalequation>
+      <mediaobject>
+       <textobject><phrase>[expression for floorval]</phrase></textobject>
+       <textobject role="tex"><phrase>
+	 <![CDATA[
+         \begin{math}
+           \exp \left( .11512925 \left(\frac{\mathtt{amplitude} \cdot \mathtt{floor0\_amplitute\_offset}}{(2^{\mathtt{floor0\_amplitude\_bits}}-1)\sqrt{p+q}}
+                  - \mathtt{floor0\_amplitude\_offset} \right) \right)
+         \end{math}
+	 ]]>
+       </phrase></textobject>
+       <imageobject><imagedata fileref="floorval.png"/></imageobject>
+      </mediaobject>
+     </informalequation>
+ </para></listitem>
+ <listitem><simpara><varname>[iteration_condition]</varname> = map element <varname>[i]</varname></simpara></listitem>
+ <listitem><simpara><varname>[output]</varname> element <varname>[i]</varname> = <varname>[linear_floor_value]</varname></simpara></listitem>
+ <listitem><simpara>increment <varname>[i]</varname></simpara></listitem>
+ <listitem><simpara>if ( map element <varname>[i]</varname> is equal to <varname>[iteration_condition]</varname> ) continue at step 5</simpara></listitem>
+ <listitem><simpara>if ( <varname>[i]</varname> is less than <varname>[n]</varname> ) continue at step 2</simpara></listitem>
+ <listitem><simpara>done</simpara></listitem>
+</orderedlist>
+
+</section>
+
+</section>
+
+</section>
+
Index: /libvorbis-1.2.0/doc/xml/07-floor1.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/07-floor1.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/07-floor1.xml	(revision 16)
@@ -0,0 +1,450 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-floor1">
+<sectioninfo>
+<releaseinfo>
+ $Id: 07-floor1.xml 10466 2005-11-28 00:34:44Z giles $
+</releaseinfo>
+</sectioninfo>
+<title>Floor type 1 setup and decode</title>
+
+<section>
+<title>Overview</title>
+
+<para>
+Vorbis floor type one uses a piecewise straight-line representation to
+encode a spectral envelope curve. The representation plots this curve
+mechanically on a linear frequency axis and a logarithmic (dB)
+amplitude axis. The integer plotting algorithm used is similar to
+Bresenham's algorithm.</para>
+
+</section>
+
+<section>
+<title>Floor 1 format</title>
+
+<section><title>model</title>
+
+<para>
+Floor type one represents a spectral curve as a series of
+line segments.  Synthesis constructs a floor curve using iterative
+prediction in a process roughly equivalent to the following simplified
+description:</para>
+
+<para>
+<itemizedlist>
+ <listitem><simpara> the first line segment (base case) is a logical line spanning
+from x_0,y_0 to x_1,y_1 where in the base case x_0=0 and x_1=[n], the
+full range of the spectral floor to be computed.</simpara></listitem>
+
+<listitem><simpara>the induction step chooses a point x_new within an existing
+logical line segment and produces a y_new value at that point computed
+from the existing line's y value at x_new (as plotted by the line) and
+a difference value decoded from the bitstream packet.</simpara></listitem>
+
+<listitem><simpara>floor computation produces two new line segments, one running from
+x_0,y_0 to x_new,y_new and from x_new,y_new to x_1,y_1. This step is
+performed logically even if y_new represents no change to the
+amplitude value at x_new so that later refinement is additionally
+bounded at x_new.</simpara></listitem>
+
+<listitem><simpara>the induction step repeats, using a list of x values specified in
+the codec setup header at floor 1 initialization time.  Computation
+is completed at the end of the x value list.</simpara></listitem>
+
+</itemizedlist>
+</para>
+
+<para>
+Consider the following example, with values chosen for ease of
+understanding rather than representing typical configuration:</para>
+
+<para>
+For the below example, we assume a floor setup with an [n] of 128.
+The list of selected X values in increasing order is
+0,16,32,48,64,80,96,112 and 128.  In list order, the values interleave
+as 0, 128, 64, 32, 96, 16, 48, 80 and 112.  The corresponding
+list-order Y values as decoded from an example packet are 110, 20, -5,
+-45, 0, -25, -10, 30 and -10.  We compute the floor in the following
+way, beginning with the first line:</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="floor1-1.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[graph of example floor]</phrase>
+</textobject>
+</mediaobject>
+
+<para>
+We now draw new logical lines to reflect the correction to new_Y, and
+iterate for X positions 32 and 96:</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="floor1-2.png" format="PNG"/> 
+ </imageobject>
+ <textobject>
+  <phrase>[graph of example floor]</phrase>
+ </textobject>
+</mediaobject>
+  
+<para>
+Although the new Y value at X position 96 is unchanged, it is still
+used later as an endpoint for further refinement.  From here on, the
+pattern should be clear; we complete the floor computation as follows:</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="floor1-3.png" format="PNG"/> 
+ </imageobject>
+ <textobject>
+  <phrase>[graph of example floor]</phrase>
+ </textobject>
+</mediaobject>
+  
+<mediaobject>
+<imageobject>
+ <imagedata fileref="floor1-4.png" format="PNG"/> 
+ </imageobject>
+ <textobject>
+  <phrase>[graph of example floor]</phrase>
+ </textobject>
+</mediaobject>
+  
+
+<para>
+A more efficient algorithm with carefully defined integer rounding
+behavior is used for actual decode, as described later.  The actual
+algorithm splits Y value computation and line plotting into two steps
+with modifications to the above algorithm to eliminate noise
+accumulation through integer roundoff/truncation. </para>
+
+</section>
+
+<section><title>header decode</title>
+
+<para>
+A list of floor X values is stored in the packet header in interleaved
+format (used in list order during packet decode and synthesis).  This
+list is split into partitions, and each partition is assigned to a
+partition class.  X positions 0 and [n] are implicit and do not belong
+to an explicit partition or partition class.</para>
+
+<para>
+A partition class consists of a representation vector width (the
+number of Y values which the partition class encodes at once), a
+'subclass' value representing the number of alternate entropy books
+the partition class may use in representing Y values, the list of
+[subclass] books and a master book used to encode which alternate
+books were chosen for representation in a given packet.  The
+master/subclass mechanism is meant to be used as a flexible
+representation cascade while still using codebooks only in a scalar
+context.</para>
+
+<screen>
+
+  1) [floor1_partitions] = read 5 bits as unsigned integer
+  2) [maximum_class] = -1
+  3) iterate [i] over the range 0 ... [floor1_partitions]-1 {
+       
+        4) vector [floor1_partition_class_list] element [i] = read 4 bits as unsigned integer
+
+     }
+
+  5) [maximum_class] = largest integer scalar value in vector [floor1_partition_class_list]
+  6) iterate [i] over the range 0 ... [maximum_class] {
+
+        7) vector [floor1_class_dimensions] element [i] = read 3 bits as unsigned integer and add 1
+	8) vector [floor1_class_subclasses] element [i] = read 2 bits as unsigned integer
+        9) if ( vector [floor1_class_subclasses] element [i] is nonzero ) {
+            
+             10) vector [floor1_class_masterbooks] element [i] = read 8 bits as unsigned integer
+           
+           }
+
+       11) iterate [j] over the range 0 ... (2 exponent [floor1_class_subclasses] element [i]) - 1  {
+
+             12) array [floor1_subclass_books] element [i],[j] = 
+                 read 8 bits as unsigned integer and subtract one
+           }
+      }
+
+ 13) [floor1_multiplier] = read 2 bits as unsigned integer and add one
+ 14) [rangebits] = read 4 bits as unsigned integer
+ 15) vector [floor1_X_list] element [0] = 0
+ 16) vector [floor1_X_list] element [1] = 2 exponent [rangebits];
+ 17) [floor1_values] = 2
+ 18) iterate [i] over the range 0 ... [floor1_partitions]-1 {
+
+       19) [current_class_number] = vector [floor1_partition_class_list] element [i]
+       20) iterate [j] over the range 0 ... ([floor1_class_dimensions] element [current_class_number])-1 {
+             21) vector [floor1_X_list] element ([floor1_values]) = 
+                 read [rangebits] bits as unsigned integer
+             22) increment [floor1_values] by one
+           }
+     }
+ 
+ 23) done
+</screen>
+
+<para>
+An end-of-packet condition while reading any aspect of a floor 1
+configuration during setup renders a stream undecodable.  In
+addition, a <varname>[floor1_class_masterbooks]</varname> or
+<varname>[floor1_subclass_books]</varname> scalar element greater than the
+highest numbered codebook configured in this stream is an error
+condition that renders the stream undecodable.</para>
+
+<section id="vorbis-spec-floor1-decode">
+<title>packet decode</title>
+
+<para>
+Packet decode begins by checking the <varname>[nonzero]</varname> flag:</para>
+
+<screen>
+  1) [nonzero] = read 1 bit as boolean
+</screen>
+
+<para>
+If <varname>[nonzero]</varname> is unset, that indicates this channel contained
+no audio energy in this frame.  Decode immediately returns a status
+indicating this floor curve (and thus this channel) is unused this
+frame.  (A return status of 'unused' is different from decoding a
+floor that has all points set to minimum representation amplitude,
+which happens to be approximately -140dB).
+</para>
+
+<para>
+Assuming <varname>[nonzero]</varname> is set, decode proceeds as follows:</para>
+
+<screen>
+  1) [range] = vector { 256, 128, 86, 64 } element ([floor1_multiplier]-1)
+  2) vector [floor1_Y] element [0] = read <link linkend="vorbis-spec-ilog">ilog</link>([range]-1) bits as unsigned integer
+  3) vector [floor1_Y] element [1] = read <link linkend="vorbis-spec-ilog">ilog</link>([range]-1) bits as unsigned integer
+  4) [offset] = 2;
+  5) iterate [i] over the range 0 ... [floor1_partitions]-1 {
+
+       6) [class] = vector [floor1_partition_class]  element [i]
+       7) [cdim]  = vector [floor1_class_dimensions] element [class]
+       8) [cbits] = vector [floor1_class_subclasses] element [class]
+       9) [csub]  = (2 exponent [cbits])-1
+      10) [cval]  = 0
+      11) if ( [cbits] is greater than zero ) {
+ 
+             12) [cval] = read from packet using codebook number
+                 (vector [floor1_class_masterbooks] element [class]) in scalar context
+          }
+      
+      13) iterate [j] over the range 0 ... [cdim]-1 {
+       
+             14) [book] = array [floor1_subclass_books] element [class],([cval] bitwise AND [csub])
+             15) [cval] = [cval] right shifted [cbits] bits
+	     16) if ( [book] is not less than zero ) {
+	     
+	           17) vector [floor1_Y] element ([j]+[offset]) = read from packet using codebook 
+                       [book] in scalar context
+
+                 } else [book] is less than zero {
+
+	           18) vector [floor1_Y] element ([j]+[offset]) = 0
+
+                 }
+          }
+             
+      19) [offset] = [offset] + [cdim]
+         
+     }
+  
+ 20) done
+</screen>
+
+<para>
+An end-of-packet condition during curve decode should be considered a
+nominal occurrence; if end-of-packet is reached during any read
+operation above, floor decode is to return 'unused' status as if the
+<varname>[nonzero]</varname> flag had been unset at the beginning of decode.
+</para>
+
+<para>
+Vector <varname>[floor1_Y]</varname> contains the values from packet decode
+needed for floor 1 synthesis.</para>
+
+</section>
+
+<section id="vorbis-spec-floor1-synth">
+<title>curve computation</title>
+
+<para>
+Curve computation is split into two logical steps; the first step
+derives final Y amplitude values from the encoded, wrapped difference
+values taken from the bitstream.  The second step plots the curve
+lines.  Also, although zero-difference values are used in the
+iterative prediction to find final Y values, these points are
+conditionally skipped during final line computation in step two.
+Skipping zero-difference values allows a smoother line fit.  </para>
+
+<para>
+Although some aspects of the below algorithm look like inconsequential
+optimizations, implementors are warned to follow the details closely.
+Deviation from implementing a strictly equivalent algorithm can result
+in serious decoding errors.</para>
+
+<section>
+<title>step 1: amplitude value synthesis</title>
+
+<para>
+Unwrap the always-positive-or-zero values read from the packet into
++/- difference values, then apply to line prediction.</para>
+
+<screen>
+  1) [range] = vector { 256, 128, 86, 64 } element ([floor1_multiplier]-1)
+  2) vector [floor1_step2_flag] element [0] = set
+  3) vector [floor1_step2_flag] element [1] = set
+  4) vector [floor1_final_Y] element [0] = vector [floor1_Y] element [0]
+  5) vector [floor1_final_Y] element [1] = vector [floor1_Y] element [1]
+  6) iterate [i] over the range 2 ... [floor1_values]-1 {
+    
+       7) [low_neighbor_offset] = <link linkend="vorbis-spec-low_neighbor">low_neighbor</link>([floor1_X_list],[i])
+       8) [high_neighbor_offset] = <link linkend="vorbis-spec-high_neighbor">high_neighbor</link>([floor1_X_list],[i])
+
+       9) [predicted] = <link linkend="vorbis-spec-render_point">render_point</link>( vector [floor1_X_list] element [low_neighbor_offset],
+				      vector [floor1_final_Y] element [low_neighbor_offset],
+                                      vector [floor1_X_list] element [high_neighbor_offset],
+				      vector [floor1_final_Y] element [high_neighbor_offset],
+                                      vector [floor1_X_list] element [i] )
+
+      10) [val] = vector [floor1_Y] element [i]
+      11) [highroom] = [range] - [predicted]
+      12) [lowroom]  = [predicted]
+      13) if ( [highroom] is less than [lowroom] ) {
+
+            14) [room] = [highroom] * 2
+         
+          } else [highroom] is not less than [lowroom] {
+		      
+            15) [room] = [lowroom] * 2
+        
+          }
+
+      16) if ( [val] is nonzero ) {
+
+            17) vector [floor1_step2_flag] element [low_neighbor_offset] = set
+            18) vector [floor1_step2_flag] element [high_neighbor_offset] = set
+            19) vector [floor1_step2_flag] element [i] = set
+            20) if ( [val] is greater than or equal to [room] ) {
+ 
+                  21) if ( [highroom] is greater than [lowroom] ) {
+
+                        22) vector [floor1_final_Y] element [i] = [val] - [lowroom] + [predicted]
+		     
+		      } else [highroom] is not greater than [lowroom] {
+              
+                        23) vector [floor1_final_Y] element [i] = [predicted] - [val] + [highroom] - 1
+                   
+                      }
+               
+                } else [val] is less than [room] {
+		 
+		  24) if ([val] is odd) {
+                 
+                        25) vector [floor1_final_Y] element [i] = 
+                            [predicted] - (([val] + 1) divided by  2 using integer division)
+
+                      } else [val] is even {
+
+                        26) vector [floor1_final_Y] element [i] = 
+                            [predicted] + ([val] / 2 using integer division)
+                          
+                      }
+
+                }      
+
+          } else [val] is zero {
+
+            27) vector [floor1_step2_flag] element [i] = unset
+            28) vector [floor1_final_Y] element [i] = [predicted]
+
+          }
+
+     }
+
+ 29) done
+
+</screen>
+
+</section>
+
+<section>
+<title>step 2: curve synthesis</title>
+
+<para>
+Curve synthesis generates a return vector <varname>[floor]</varname> of length
+<varname>[n]</varname> (where <varname>[n]</varname> is provided by the decode process
+calling to floor decode).  Floor 1 curve synthesis makes use of the
+<varname>[floor1_X_list]</varname>, <varname>[floor1_final_Y]</varname> and
+<varname>[floor1_step2_flag]</varname> vectors, as well as [floor1_multiplier]
+and [floor1_values] values.</para>
+
+<para>
+Decode begins by sorting the scalars from vectors
+<varname>[floor1_X_list]</varname>, <varname>[floor1_final_Y]</varname> and
+<varname>[floor1_step2_flag]</varname> together into new vectors
+<varname>[floor1_X_list]'</varname>, <varname>[floor1_final_Y]'</varname> and
+<varname>[floor1_step2_flag]'</varname> according to ascending sort order of the
+values in <varname>[floor1_X_list]</varname>.  That is, sort the values of
+<varname>[floor1_X_list]</varname> and then apply the same permutation to
+elements of the other two vectors so that the X, Y and step2_flag
+values still match.</para>
+
+<para>
+Then compute the final curve in one pass:</para>
+
+<screen>
+  1) [hx] = 0
+  2) [lx] = 0
+  3) [ly] = vector [floor1_final_Y]' element [0] * [floor1_multiplier]
+  4) iterate [i] over the range 1 ... [floor1_values]-1 {
+
+       5) if ( [floor1_step2_flag]' element [i] is set ) {
+
+             6) [hy] = [floor1_final_Y]' element [i] * [floor1_multiplier]
+ 	     7) [hx] = [floor1_X_list]' element [i]
+             8) <link linkend="vorbis-spec-render_line">render_line</link>( [lx], [ly], [hx], [hy], [floor] )
+             9) [lx] = [hx]
+	    10) [ly] = [hy]
+          }
+     }
+ 
+ 11) if ( [hx] is less than [n] ) {
+
+        12) <link linkend="vorbis-spec-render_line">render_line</link>( [hx], [hy], [n], [hy], [floor] )
+
+     }
+
+ 13) if ( [hx] is greater than [n] ) {
+
+            14) truncate vector [floor] to [n] elements
+
+     }
+ 
+ 15) for each scalar in vector [floor], perform a lookup substitution using 
+     the scalar value from [floor] as an offset into the vector <link linkend="vorbis-spec-floor1_inverse_dB_table">[floor1_inverse_dB_static_table]</link>
+
+ 16) done
+
+</screen>
+
+</section>
+
+</section>
+
+</section>
+</section>
+</section>
+
Index: /libvorbis-1.2.0/doc/xml/08-residue.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/08-residue.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/08-residue.xml	(revision 16)
@@ -0,0 +1,492 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-residue">
+<sectioninfo>
+ <releaseinfo>
+  $Id: 08-residue.xml 13159 2007-06-21 05:22:35Z xiphmont $
+ </releaseinfo>
+</sectioninfo>
+<title>Residue setup and decode</title>
+
+
+<section>
+<title>Overview</title>
+
+<para>
+A residue vector represents the fine detail of the audio spectrum of
+one channel in an audio frame after the encoder subtracts the floor
+curve and performs any channel coupling.  A residue vector may
+represent spectral lines, spectral magnitude, spectral phase or
+hybrids as mixed by channel coupling.  The exact semantic content of
+the vector does not matter to the residue abstraction.</para>
+
+<para>
+Whatever the exact qualities, the Vorbis residue abstraction codes the
+residue vectors into the bitstream packet, and then reconstructs the
+vectors during decode.  Vorbis makes use of three different encoding
+variants (numbered 0, 1 and 2) of the same basic vector encoding
+abstraction.</para>
+
+</section>
+
+<section>
+<title>Residue format</title>
+
+<para>
+Residue format partitions each vector in the vector bundle into chunks,
+classifies each chunk, encodes the chunk classifications and finally
+encodes the chunks themselves using the the specific VQ arrangement
+defined for each selected classification.
+The exact interleaving and partitioning vary by residue encoding number,
+however the high-level process used to classify and encode the residue 
+vector is the same in all three variants.</para>
+
+<para>
+A set of coded residue vectors are all of the same length.  High level
+coding structure, ignoring for the moment exactly how a partition is
+encoded and simply trusting that it is, is as follows:</para>
+
+<para>
+<itemizedlist>
+<listitem><para>Each vector is partitioned into multiple equal sized chunks
+according to configuration specified.  If we have a vector size of
+<emphasis>n</emphasis>, a partition size <emphasis>residue_partition_size</emphasis>, and a total
+of <emphasis>ch</emphasis> residue vectors, the total number of partitioned chunks
+coded is <emphasis>n</emphasis>/<emphasis>residue_partition_size</emphasis>*<emphasis>ch</emphasis>.  It is
+important to note that the integer division truncates.  In the below
+example, we assume an example <emphasis>residue_partition_size</emphasis> of 8.</para></listitem>
+
+<listitem><para>Each partition in each vector has a classification number that
+specifies which of multiple configured VQ codebook setups are used to
+decode that partition.  The classification numbers of each partition
+can be thought of as forming a vector in their own right, as in the
+illustration below.  Just as the residue vectors are coded in grouped
+partitions to increase encoding efficiency, the classification vector
+is also partitioned into chunks.  The integer elements of each scalar
+in a classification chunk are built into a single scalar that
+represents the classification numbers in that chunk.  In the below
+example, the classification codeword encodes two classification
+numbers.</para></listitem>
+
+<listitem><para>The values in a residue vector may be encoded monolithically in a
+single pass through the residue vector, but more often efficient
+codebook design dictates that each vector is encoded as the additive
+sum of several passes through the residue vector using more than one
+VQ codebook.  Thus, each residue value potentially accumulates values
+from multiple decode passes.  The classification value associated with
+a partition is the same in each pass, thus the classification codeword
+is coded only in the first pass.</para></listitem>
+
+</itemizedlist>
+</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="residue-pack.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[illustration of residue vector format]</phrase>
+</textobject>
+</mediaobject>
+
+</section>
+
+<section><title>residue 0</title>
+
+<para>
+Residue 0 and 1 differ only in the way the values within a residue
+partition are interleaved during partition encoding (visually treated
+as a black box--or cyan box or brown box--in the above figure).</para>
+
+<para>
+Residue encoding 0 interleaves VQ encoding according to the
+dimension of the codebook used to encode a partition in a specific
+pass.  The dimension of the codebook need not be the same in multiple
+passes, however the partition size must be an even multiple of the
+codebook dimension.</para>
+
+<para>
+As an example, assume a partition vector of size eight, to be encoded
+by residue 0 using codebook sizes of 8, 4, 2 and 1:</para>
+
+<programlisting>
+
+            original residue vector: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 8  encoded as: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 4  encoded as: [ 0 2 4 6 ], [ 1 3 5 7 ]
+
+codebook dimensions = 2  encoded as: [ 0 4 ], [ 1 5 ], [ 2 6 ], [ 3 7 ]
+
+codebook dimensions = 1  encoded as: [ 0 ], [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ]
+
+</programlisting>
+
+<para>
+It is worth mentioning at this point that no configurable value in the
+residue coding setup is restricted to a power of two.</para>
+
+</section>
+
+<section><title>residue 1</title>
+
+<para>
+Residue 1 does not interleave VQ encoding.  It represents partition
+vector scalars in order.  As with residue 0, however, partition length
+must be an integer multiple of the codebook dimension, although
+dimension may vary from pass to pass.</para>
+
+<para>
+As an example, assume a partition vector of size eight, to be encoded
+by residue 0 using codebook sizes of 8, 4, 2 and 1:</para>
+
+<programlisting>
+
+            original residue vector: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 8  encoded as: [ 0 1 2 3 4 5 6 7 ]
+
+codebook dimensions = 4  encoded as: [ 0 1 2 3 ], [ 4 5 6 7 ]
+
+codebook dimensions = 2  encoded as: [ 0 1 ], [ 2 3 ], [ 4 5 ], [ 6 7 ]
+
+codebook dimensions = 1  encoded as: [ 0 ], [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ]
+
+</programlisting>
+
+</section>
+
+<section><title>residue 2</title>
+
+<para>
+Residue type two can be thought of as a variant of residue type 1.
+Rather than encoding multiple passed-in vectors as in residue type 1,
+the <emphasis>ch</emphasis> passed in vectors of length <emphasis>n</emphasis> are first
+interleaved and flattened into a single vector of length
+<emphasis>ch</emphasis>*<emphasis>n</emphasis>.  Encoding then proceeds as in type 1. Decoding is
+as in type 1 with decode interleave reversed. If operating on a single
+vector to begin with, residue type 1 and type 2 are equivalent.</para>
+
+<mediaobject>
+<imageobject>
+ <imagedata fileref="residue2.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[illustration of residue type 2]</phrase>
+</textobject>
+</mediaobject>
+
+</section>
+
+<section>
+<title>Residue decode</title>
+
+<section><title>header decode</title>
+
+<para>
+Header decode for all three residue types is identical.</para>
+<programlisting>
+  1) [residue_begin] = read 24 bits as unsigned integer
+  2) [residue_end] = read 24 bits as unsigned integer
+  3) [residue_partition_size] = read 24 bits as unsigned integer and add one
+  4) [residue_classifications] = read 6 bits as unsigned integer and add one
+  5) [residue_classbook] = read 8 bits as unsigned integer
+</programlisting>
+
+<para>
+<varname>[residue_begin]</varname> and <varname>[residue_end]</varname> select the specific
+sub-portion of each vector that is actually coded; it implements akin
+to a bandpass where, for coding purposes, the vector effectively
+begins at element <varname>[residue_begin]</varname> and ends at
+<varname>[residue_end]</varname>.  Preceding and following values in the unpacked
+vectors are zeroed.  Note that for residue type 2, these values as
+well as <varname>[residue_partition_size]</varname>apply to the interleaved
+vector, not the individual vectors before interleave.
+<varname>[residue_partition_size]</varname> is as explained above,
+<varname>[residue_classifications]</varname> is the number of possible
+classification to which a partition can belong and
+<varname>[residue_classbook]</varname> is the codebook number used to code
+classification codewords.  The number of dimensions in book
+<varname>[residue_classbook]</varname> determines how many classification values
+are grouped into a single classification codeword.</para>
+
+<para>
+Next we read a bitmap pattern that specifies which partition classes
+code values in which passes.</para>
+
+<programlisting>
+  1) iterate [i] over the range 0 ... [residue_classifications]-1 {
+  
+       2) [high_bits] = 0
+       3) [low_bits] = read 3 bits as unsigned integer
+       4) [bitflag] = read one bit as boolean
+       5) if ( [bitflag] is set ) then [high_bits] = read five bits as unsigned integer
+       6) vector [residue_cascade] element [i] = [high_bits] * 8 + [low_bits]
+     }
+  7) done
+</programlisting>
+
+<para>
+Finally, we read in a list of book numbers, each corresponding to
+specific bit set in the cascade bitmap.  We loop over the possible
+codebook classifications and the maximum possible number of encoding
+stages (8 in Vorbis I, as constrained by the elements of the cascade
+bitmap being eight bits):</para>
+
+<programlisting>
+  1) iterate [i] over the range 0 ... [residue_classifications]-1 {
+  
+       2) iterate [j] over the range 0 ... 7 {
+  
+            3) if ( vector [residue_cascade] element [i] bit [j] is set ) {
+
+                 4) array [residue_books] element [i][j] = read 8 bits as unsigned integer
+
+               } else {
+
+                 5) array [residue_books] element [i][j] = unused
+
+               }
+          }
+      }
+
+  6) done
+</programlisting>
+
+<para>
+An end-of-packet condition at any point in header decode renders the
+stream undecodable.  In addition, any codebook number greater than the
+maximum numbered codebook set up in this stream also renders the
+stream undecodable.</para>
+
+</section>
+
+<section><title>packet decode</title>
+
+<para>
+Format 0 and 1 packet decode is identical except for specific
+partition interleave.  Format 2 packet decode can be built out of the
+format 1 decode process.  Thus we describe first the decode
+infrastructure identical to all three formats.</para>
+
+<para>
+In addition to configuration information, the residue decode process
+is passed the number of vectors in the submap bundle and a vector of
+flags indicating if any of the vectors are not to be decoded.  If the
+passed in number of vectors is 3 and vector number 1 is marked 'do not
+decode', decode skips vector 1 during the decode loop.  However, even
+'do not decode' vectors are allocated and zeroed.</para>
+
+<para>
+Depending on the values of <varname>[residue_begin]</varname> and
+<varname>[residue_end]</varname>, it is obvious that the encoded
+portion of a residue vector may be the entire possible residue vector
+or some other strict subset of the actual residue vector size with
+zero padding at either uncoded end.  However, it is also possible to
+set <varname>[residue_begin]</varname> and
+<varname>[residue_end]</varname> to specify a range partially or
+wholly beyond the maximum vector size.  Before beginning residue
+decode, limit <varname>[residue_begin]</varname> and
+<varname>[residue_end]</varname> to the maximum possible vector size
+as follows.  We assume that the number of vectors being encoded,
+<varname>[ch]</varname> is provided by the higher level decoding
+process.</para>
+
+<programlisting>
+  1) [actual_size] = current blocksize/2;
+  2) if residue encoding is format 2
+       3) [actual_size] = [actual_size] * [ch];
+  4) [limit_residue_begin] = maximum of ([residue_begin],[actual_size]);
+  5) [limit_residue_end] = maximum of ([residue_end],[actual_size]);
+</programlisting>
+
+<para>
+The following convenience values are conceptually useful to clarifying
+the decode process:</para>
+
+<programlisting>
+  1) [classwords_per_codeword] = [codebook_dimensions] value of codebook [residue_classbook]
+  2) [n_to_read] = [limit_residue_end] - [limit_residue_begin]
+  3) [partitions_to_read] = [n_to_read] / [residue_partition_size]
+</programlisting>
+
+<para>
+Packet decode proceeds as follows, matching the description offered earlier in the document. </para>
+<programlisting>
+  1) allocate and zero all vectors that will be returned.
+  2) if ([n_to_read] is zero), stop; there is no residue to decode.
+  3) iterate [pass] over the range 0 ... 7 {
+
+       4) [partition_count] = 0
+
+       5) while [partition_count] is less than [partitions_to_read]
+
+            6) if ([pass] is zero) {
+     
+                 7) iterate [j] over the range 0 .. [ch]-1 {
+
+                      8) if vector [j] is not marked 'do not decode' {
+
+                           9) [temp] = read from packet using codebook [residue_classbook] in scalar context
+                          10) iterate [i] descending over the range [classwords_per_codeword]-1 ... 0 {
+
+                               11) array [classifications] element [j],([i]+[partition_count]) =
+                                   [temp] integer modulo [residue_classifications]
+                               12) [temp] = [temp] / [residue_classifications] using integer division
+
+                              }
+      
+                         }
+            
+                    }
+          
+               }
+
+           13) iterate [i] over the range 0 .. ([classwords_per_codeword] - 1) while [partition_count] 
+               is also less than [partitions_to_read] {
+
+                 14) iterate [j] over the range 0 .. [ch]-1 {
+   
+                      15) if vector [j] is not marked 'do not decode' {
+   
+                           16) [vqclass] = array [classifications] element [j],[partition_count]
+                           17) [vqbook] = array [residue_books] element [vqclass],[pass]
+                           18) if ([vqbook] is not 'unused') {
+   
+                                19) decode partition into output vector number [j], starting at scalar 
+                                    offset [limit_residue_begin]+[partition_count]*[residue_partition_size] using 
+                                    codebook number [vqbook] in VQ context
+                          }
+                     }
+   
+                 20) increment [partition_count] by one
+
+               }
+          }
+     }
+ 
+ 21) done
+
+</programlisting>
+
+<para>
+An end-of-packet condition during packet decode is to be considered a
+nominal occurrence.  Decode returns the result of vector decode up to
+that point.</para>
+
+</section>
+
+<section><title>format 0 specifics</title>
+
+<para>
+Format zero decodes partitions exactly as described earlier in the
+'Residue Format: residue 0' section.  The following pseudocode
+presents the same algorithm. Assume:</para>
+
+<para>
+<itemizedlist>
+<listitem><simpara> <varname>[n]</varname> is the value in <varname>[residue_partition_size]</varname></simpara></listitem>
+<listitem><simpara><varname>[v]</varname> is the residue vector</simpara></listitem>
+<listitem><simpara><varname>[offset]</varname> is the beginning read offset in [v]</simpara></listitem>
+</itemizedlist>
+</para>
+
+<programlisting>
+ 1) [step] = [n] / [codebook_dimensions]
+ 2) iterate [i] over the range 0 ... [step]-1 {
+
+      3) vector [entry_temp] = read vector from packet using current codebook in VQ context
+      4) iterate [j] over the range 0 ... [codebook_dimensions]-1 {
+
+           5) vector [v] element ([offset]+[i]+[j]*[step]) =
+	        vector [v] element ([offset]+[i]+[j]*[step]) +
+                vector [entry_temp] element [j]
+
+         }
+
+    }
+
+  6) done
+
+</programlisting>
+
+</section>
+
+<section><title>format 1 specifics</title>
+
+<para>
+Format 1 decodes partitions exactly as described earlier in the
+'Residue Format: residue 1' section.  The following pseudocode
+presents the same algorithm. Assume:</para>
+
+<para>
+<itemizedlist>
+<listitem><simpara> <varname>[n]</varname> is the value in
+<varname>[residue_partition_size]</varname></simpara></listitem>
+<listitem><simpara><varname>[v]</varname> is the residue vector</simpara></listitem>
+<listitem><simpara><varname>[offset]</varname> is the beginning read offset in [v]</simpara></listitem>
+</itemizedlist>
+</para>
+
+<programlisting>
+ 1) [i] = 0
+ 2) vector [entry_temp] = read vector from packet using current codebook in VQ context
+ 3) iterate [j] over the range 0 ... [codebook_dimensions]-1 {
+
+      4) vector [v] element ([offset]+[i]) =
+	  vector [v] element ([offset]+[i]) +
+          vector [entry_temp] element [j]
+      5) increment [i]
+
+    }
+ 
+  6) if ( [i] is less than [n] ) continue at step 2
+  7) done
+</programlisting>
+
+</section>
+
+<section><title>format 2 specifics</title>
+ 
+<para>
+Format 2 is reducible to format 1.  It may be implemented as an additional step prior to and an additional post-decode step after a normal format 1 decode.
+</para>
+
+<para>
+Format 2 handles 'do not decode' vectors differently than residue 0 or
+1; if all vectors are marked 'do not decode', no decode occurrs.
+However, if at least one vector is to be decoded, all the vectors are
+decoded.  We then request normal format 1 to decode a single vector
+representing all output channels, rather than a vector for each
+channel.  After decode, deinterleave the vector into independent vectors, one for each output channel.  That is:</para>
+
+<orderedlist>
+ <listitem><simpara>If all vectors 0 through <emphasis>ch</emphasis>-1 are marked 'do not decode', allocate and clear a single vector <varname>[v]</varname>of length <emphasis>ch*n</emphasis> and skip step 2 below; proceed directly to the post-decode step.</simpara></listitem>
+ <listitem><simpara>Rather than performing format 1 decode to produce <emphasis>ch</emphasis> vectors of length <emphasis>n</emphasis> each, call format 1 decode to produce a single vector <varname>[v]</varname> of length <emphasis>ch*n</emphasis>. </simpara></listitem>
+ <listitem><para>Post decode: Deinterleave the single vector <varname>[v]</varname> returned by format 1 decode as described above into <emphasis>ch</emphasis> independent vectors, one for each outputchannel, according to:
+  <programlisting>
+  1) iterate [i] over the range 0 ... [n]-1 {
+
+       2) iterate [j] over the range 0 ... [ch]-1 {
+
+            3) output vector number [j] element [i] = vector [v] element ([i] * [ch] + [j])
+
+          }
+     }
+
+  4) done
+  </programlisting>
+ </para></listitem>
+</orderedlist>
+
+</section>
+
+</section>
+
+</section>
+
Index: /libvorbis-1.2.0/doc/xml/09-helper.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/09-helper.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/09-helper.xml	(revision 16)
@@ -0,0 +1,211 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-helper">
+<sectioninfo>
+<releaseinfo>
+ $Id: 09-helper.xml 7186 2004-07-20 07:19:25Z xiphmont $
+</releaseinfo>
+</sectioninfo>
+<title>Helper equations</title>
+
+<section>
+<title>Overview</title>
+
+<para>
+The equations below are used in multiple places by the Vorbis codec
+specification.  Rather than cluttering up the main specification
+documents, they are defined here and referenced where appropriate.
+</para>
+
+</section>
+
+<section>
+<title>Functions</title>
+
+<section id="vorbis-spec-ilog">
+<title>ilog</title>
+
+<para>
+The "ilog(x)" function returns the position number (1 through n) of the highest set bit in the two's complement integer value
+<varname>[x]</varname>.  Values of <varname>[x]</varname> less than zero are defined to return zero.</para>
+
+<programlisting>
+  1) [return_value] = 0;
+  2) if ( [x] is greater than zero ){
+      
+       3) increment [return_value];
+       4) logical shift [x] one bit to the right, padding the MSb with zero
+       5) repeat at step 2)
+
+     }
+
+   6) done
+</programlisting>
+
+<para>
+Examples:
+
+<itemizedlist>
+ <listitem><simpara>ilog(0) = 0;</simpara></listitem>
+ <listitem><simpara>ilog(1) = 1;</simpara></listitem>
+ <listitem><simpara>ilog(2) = 2;</simpara></listitem>
+ <listitem><simpara>ilog(3) = 2;</simpara></listitem>
+ <listitem><simpara>ilog(4) = 3;</simpara></listitem>
+ <listitem><simpara>ilog(7) = 3;</simpara></listitem>
+ <listitem><simpara>ilog(negative number) = 0;</simpara></listitem>
+</itemizedlist>
+</para>
+
+</section>
+
+<section id="vorbis-spec-float32_unpack">
+<title>float32_unpack</title>
+
+<para>
+"float32_unpack(x)" is intended to translate the packed binary
+representation of a Vorbis codebook float value into the
+representation used by the decoder for floating point numbers.  For
+purposes of this example, we will unpack a Vorbis float32 into a
+host-native floating point number.</para>
+
+<programlisting>
+  1) [mantissa] = [x] bitwise AND 0x1fffff (unsigned result)
+  2) [sign] = [x] bitwise AND 0x80000000 (unsigned result)
+  3) [exponent] = ( [x] bitwise AND 0x7fe00000) shifted right 21 bits (unsigned result)
+  4) if ( [sign] is nonzero ) then negate [mantissa]
+  5) return [mantissa] * ( 2 ^ ( [exponent] - 788 ) )
+</programlisting>
+
+</section>
+
+<section id="vorbis-spec-lookup1_values">
+<title>lookup1_values</title>
+
+<para>
+"lookup1_values(codebook_entries,codebook_dimensions)" is used to
+compute the correct length of the value index for a codebook VQ lookup
+table of lookup type 1.  The values on this list are permuted to
+construct the VQ vector lookup table of size
+<varname>[codebook_entries]</varname>.</para>
+
+<para>
+The return value for this function is defined to be 'the greatest
+integer value for which <varname>[return_value] to the power of
+[codebook_dimensions] is less than or equal to
+[codebook_entries]</varname>'.</para>
+
+</section>
+
+<section id="vorbis-spec-low_neighbor">
+<title>low_neighbor</title>
+
+<para>
+"low_neighbor(v,x)" finds the position <varname>n</varname> in vector <varname>[v]</varname> of
+the greatest value scalar element for which <varname>n</varname> is less than
+<varname>[x]</varname> and vector <varname>[v]</varname> element <varname>n</varname> is less
+than vector <varname>[v]</varname> element <varname>[x]</varname>.</para>
+
+<section id="vorbis-spec-high_neighbor">
+<title>high_neighbor</title>
+
+<para>
+"high_neighbor(v,x)" finds the position <varname>n</varname> in vector [v] of
+the lowest value scalar element for which <varname>n</varname> is less than
+<varname>[x]</varname> and vector <varname>[v]</varname> element <varname>n</varname> is greater
+than vector <varname>[v]</varname> element <varname>[x]</varname>.</para>
+
+</section>
+
+<section id="vorbis-spec-render_point">
+<title>render_point</title>
+
+<para>
+"render_point(x0,y0,x1,y1,X)" is used to find the Y value at point X
+along the line specified by x0, x1, y0 and y1.  This function uses an
+integer algorithm to solve for the point directly without calculating
+intervening values along the line.</para>
+
+<programlisting>
+  1)  [dy] = [y1] - [y0]
+  2) [adx] = [x1] - [x0]
+  3) [ady] = absolute value of [dy]
+  4) [err] = [ady] * ([X] - [x0])
+  5) [off] = [err] / [adx] using integer division
+  6) if ( [dy] is less than zero ) {
+
+       7) [Y] = [y0] - [off]
+
+     } else {
+
+       8) [Y] = [y0] + [off]
+  
+     }
+
+  9) done
+</programlisting>
+
+</section>
+
+<section id="vorbis-spec-render_line">
+<title>render_line</title>
+
+<para>
+Floor decode type one uses the integer line drawing algorithm of
+"render_line(x0, y0, x1, y1, v)" to construct an integer floor
+curve for contiguous piecewise line segments. Note that it has not
+been relevant elsewhere, but here we must define integer division as
+rounding division of both positive and negative numbers toward zero.
+</para>
+
+<programlisting>
+  1)   [dy] = [y1] - [y0]
+  2)  [adx] = [x1] - [x0]
+  3)  [ady] = absolute value of [dy]
+  4) [base] = [dy] / [adx] using integer division
+  5)    [x] = [x0]
+  6)    [y] = [y0]
+  7)  [err] = 0
+
+  8) if ( [dy] is less than 0 ) {
+
+        9) [sy] = [base] - 1
+
+     } else {
+
+       10) [sy] = [base] + 1
+
+     }
+
+ 11) [ady] = [ady] - (absolute value of [base]) * [adx]
+ 12) vector [v] element [x] = [y]
+
+ 13) iterate [x] over the range [x0]+1 ... [x1]-1 {
+
+       14) [err] = [err] + [ady];
+       15) if ( [err] >= [adx] ) {
+
+             16) [err] = [err] - [adx]
+             17)   [y] = [y] + [sy]
+
+           } else {
+
+             18) [y] = [y] + [base]
+   
+           }
+
+       19) vector [v] element [x] = [y]
+
+     }
+</programlisting>
+
+</section>
+
+</section>
+
+</section>
+
+</section>
Index: /libvorbis-1.2.0/doc/xml/10-tables.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/10-tables.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/10-tables.xml	(revision 16)
@@ -0,0 +1,94 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<section id="vorbis-spec-tables">
+<sectioninfo>
+ <releaseinfo>
+  $Id: 10-tables.xml 7186 2004-07-20 07:19:25Z xiphmont $
+ </releaseinfo>
+</sectioninfo>
+<title>Tables</title>
+
+<section id="vorbis-spec-floor1_inverse_dB_table">
+<title>floor1_inverse_dB_table</title>
+
+<para>
+The vector <varname>[floor1_inverse_dB_table]</varname> is a 256 element static
+lookup table consiting of the following values (read left to right
+then top to bottom):</para>
+
+<screen>
+  1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07, 
+  1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07, 
+  1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.1287530e-07, 
+  2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07, 
+  2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07, 
+  3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07, 
+  4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07, 
+  6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07, 
+  7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07, 
+  1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06, 
+  1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06, 
+  1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06, 
+  2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06, 
+  2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06, 
+  3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06, 
+  4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06, 
+  5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06, 
+  7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06, 
+  9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05, 
+  1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05, 
+  1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05, 
+  2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05, 
+  2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05, 
+  3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05, 
+  4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05, 
+  5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05, 
+  7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05, 
+  9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824, 
+  0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085, 
+  0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536, 
+  0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449, 
+  0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787, 
+  0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456, 
+  0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927, 
+  0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058, 
+  0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457, 
+  0.00092223983, 0.00098217216, 0.0010459992,  0.0011139742, 
+  0.0011863665,  0.0012634633,  0.0013455702,  0.0014330129, 
+  0.0015261382,  0.0016253153,  0.0017309374,  0.0018434235, 
+  0.0019632195,  0.0020908006,  0.0022266726,  0.0023713743, 
+  0.0025254795,  0.0026895994,  0.0028643847,  0.0030505286, 
+  0.0032487691,  0.0034598925,  0.0036847358,  0.0039241906, 
+  0.0041792066,  0.0044507950,  0.0047400328,  0.0050480668, 
+  0.0053761186,  0.0057254891,  0.0060975636,  0.0064938176, 
+  0.0069158225,  0.0073652516,  0.0078438871,  0.0083536271, 
+  0.0088964928,  0.009474637,   0.010090352,   0.010746080, 
+  0.011444421,   0.012188144,   0.012980198,   0.013823725, 
+  0.014722068,   0.015678791,   0.016697687,   0.017782797, 
+  0.018938423,   0.020169149,   0.021479854,   0.022875735, 
+  0.024362330,   0.025945531,   0.027631618,   0.029427276, 
+  0.031339626,   0.033376252,   0.035545228,   0.037855157, 
+  0.040315199,   0.042935108,   0.045725273,   0.048696758, 
+  0.051861348,   0.055231591,   0.058820850,   0.062643361, 
+  0.066714279,   0.071049749,   0.075666962,   0.080584227, 
+  0.085821044,   0.091398179,   0.097337747,   0.10366330, 
+  0.11039993,    0.11757434,    0.12521498,    0.13335215, 
+  0.14201813,    0.15124727,    0.16107617,    0.17154380, 
+  0.18269168,    0.19456402,    0.20720788,    0.22067342, 
+  0.23501402,    0.25028656,    0.26655159,    0.28387361, 
+  0.30232132,    0.32196786,    0.34289114,    0.36517414, 
+  0.38890521,    0.41417847,    0.44109412,    0.46975890, 
+  0.50028648,    0.53279791,    0.56742212,    0.60429640, 
+  0.64356699,    0.68538959,    0.72993007,    0.77736504, 
+  0.82788260,    0.88168307,    0.9389798,     1.
+</screen>
+
+</section>
+
+</section>
+
+<!-- end tables section -->
Index: /libvorbis-1.2.0/doc/xml/TODO
===================================================================
--- /libvorbis-1.2.0/doc/xml/TODO	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/TODO	(revision 16)
@@ -0,0 +1,28 @@
+TODO list for vorbis spec docbook conversion.
+
+* Get the figures working in pdf. Jade seems to be doing something
+  (suboptimal) with <graphic>, and nothing at all with <imageobject>.
+
+* Proof against html original and remove it.
+
+* Reset all those nested lists of decoding structions in docbook. They
+  don't wrap properly in the printed version, and they don't look so
+  good. Easy but tedious.
+
+* Set remaining auxiliary material.
+
+* Get vector versions of the figures from Monty and/or create them anew.
+  We need eps versions for the printable version. Optionally, have the
+  makefile run them through ghostscript to create the pngs for the html
+  version if the docbook processor isn't smart enough to do so.
+
+* Get the equations working. We should have one version, either latex or
+  mathml from which both the html and print versions are generated. Latex
+  source is in the alt tags in the document.
+
+* Normalize variable naming. The current spec uses brackets to indicated
+  values decoded from the bitstream. In html and pdf we can use tt font
+  to indicate this, so the [] is redundant. Remove them from scalars and
+  either keep them for vectors, or set the vectors bold tt. Note that
+  this requires resetting the already tt sections.
+
Index: /libvorbis-1.2.0/doc/xml/Vorbis_I_spec.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/Vorbis_I_spec.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/Vorbis_I_spec.xml	(revision 16)
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+		"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+[
+  <!ENTITY colophon SYSTEM "footer.xml">
+]>
+
+<article>
+<articleinfo>
+  <title>Vorbis I specification</title>
+  <corpauthor>Xiph.org Foundation</corpauthor>
+</articleinfo>
+
+ <xi:include href="01-introduction.xml"  xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="02-bitpacking.xml"    xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="03-codebook.xml"      xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="04-codec.xml"         xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="05-comment.xml"       xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="06-floor0.xml"        xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="07-floor1.xml"        xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="08-residue.xml"       xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="09-helper.xml"        xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="10-tables.xml"        xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+
+ <xi:include href="a1-encapsulation_ogg.xml"  xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+ <xi:include href="a2-encapsulation_rtp.xml"  xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+ <xi:include href="footer.xml"           xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+</article>
Index: /libvorbis-1.2.0/doc/xml/a1-encapsulation_ogg.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/a1-encapsulation_ogg.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/a1-encapsulation_ogg.xml	(revision 16)
@@ -0,0 +1,201 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<appendix id="vorbis-over-ogg">
+<appendixinfo>
+ <releaseinfo>
+  $Id: a1-encapsulation_ogg.xml 7186 2004-07-20 07:19:25Z xiphmont $
+ </releaseinfo>
+</appendixinfo>
+<title>Embedding Vorbis into an Ogg stream</title>
+
+<section>
+<title>Overview</title>
+
+<para>
+This document describes using Ogg logical and physical transport
+streams to encapsulate Vorbis compressed audio packet data into file
+form.</para>
+
+<para>
+The <xref linkend="vorbis-spec-intro"/> provides an overview of the construction
+of Vorbis audio packets.</para>
+
+<para>
+The <ulink url="oggstream.html">Ogg
+bitstream overview</ulink> and <ulink url="framing.html">Ogg logical
+bitstream and framing spec</ulink> provide detailed descriptions of Ogg
+transport streams. This specification document assumes a working
+knowledge of the concepts covered in these named backround
+documents.  Please read them first.</para>
+
+<section><title>Restrictions</title>
+
+<para>
+The Ogg/Vorbis I specification currently dictates that Ogg/Vorbis
+streams use Ogg transport streams in degenerate, unmultiplexed
+form only. That is:
+
+<itemizedlist>
+ <listitem><simpara>
+  A meta-headerless Ogg file encapsulates the Vorbis I packets
+ </simpara></listitem>
+ <listitem><simpara>
+  The Ogg stream may be chained, i.e. contain multiple, contigous logical streams (links).
+ </simpara></listitem>
+ <listitem><simpara>
+  The Ogg stream must be unmultiplexed (only one stream, a Vorbis audio stream, per link)
+ </simpara></listitem>
+</itemizedlist>
+</para>
+
+<para>
+This is not to say that it is not currently possible to multiplex
+Vorbis with other media types into a multi-stream Ogg file.  At the
+time this document was written, Ogg was becoming a popular container
+for low-bitrate movies consisting of DiVX video and Vorbis audio.
+However, a 'Vorbis I audio file' is taken to imply Vorbis audio
+existing alone within a degenerate Ogg stream.  A compliant 'Vorbis
+audio player' is not required to implement Ogg support beyond the
+specific support of Vorbis within a degenrate ogg stream (naturally,
+application authors are encouraged to support full multiplexed Ogg
+handling).
+</para>
+
+</section>
+
+<section><title>MIME type</title>
+
+<para>
+The correct MIME type of any Ogg file is <literal>application/ogg</literal>.
+However, if a file is a Vorbis I audio file (which implies a
+degenerate Ogg stream including only unmultiplexed Vorbis audio), the
+mime type <literal>audio/x-vorbis</literal> is also allowed.</para>
+
+</section>
+
+</section>
+
+<section>
+<title>Encapsulation</title>
+
+<para>
+Ogg encapsulation of a Vorbis packet stream is straightforward.</para>
+
+<itemizedlist>
+
+<listitem><simpara>
+  The first Vorbis packet (the identification header), which
+  uniquely identifies a stream as Vorbis audio, is placed alone in the
+  first page of the logical Ogg stream.  This results in a first Ogg
+  page of exactly 58 bytes at the very beginning of the logical stream.
+</simpara></listitem>
+
+<listitem><simpara>
+  This first page is marked 'beginning of stream' in the page flags.
+</simpara></listitem>
+
+<listitem><simpara>
+  The second and third vorbis packets (comment and setup
+  headers) may span one or more pages beginning on the second page of
+  the logical stream.  However many pages they span, the third header
+  packet finishes the page on which it ends.  The next (first audio) packet
+  must begin on a fresh page.
+</simpara></listitem>
+
+<listitem><simpara>
+  The granule position of these first pages containing only headers is zero.
+</simpara></listitem>
+
+<listitem><simpara>
+  The first audio packet of the logical stream begins a fresh Ogg page.
+</simpara></listitem>
+
+<listitem><simpara>
+  Packets are placed into ogg pages in order until the end of stream.
+</simpara></listitem>
+
+<listitem><simpara>
+  The last page is marked 'end of stream' in the page flags.
+</simpara></listitem>
+
+<listitem><simpara>
+  Vorbis packets may span page boundaries.
+</simpara></listitem>
+
+<listitem><simpara>
+  The granule position of pages containing Vorbis audio is in units
+  of PCM audio samples (per channel; a stereo stream's granule position
+  does not increment at twice the speed of a mono stream).
+</simpara></listitem>
+
+<listitem><simpara>
+  The granule position of a page represents the end PCM sample
+  position of the last packet <emphasis>completed</emphasis> on that page.
+  A page that is entirely spanned by a single packet (that completes on a
+  subsequent page) has no granule position, and the granule position is
+  set to '-1'.
+</simpara></listitem>
+
+<listitem>
+  <simpara>
+    The granule (PCM) position of the first page need not indicate
+    that the stream started at position zero.  Although the granule
+    position belongs to the last completed packet on the page and a 
+    valid granule position must be positive, by
+    inference it may indicate that the PCM position of the beginning
+    of audio is positive or negative.
+  </simpara>
+    
+  <itemizedlist>
+    <listitem><simpara>
+        A positive starting value simply indicates that this stream begins at
+        some positive time offset, potentially within a larger
+        program. This is a common case when connecting to the middle
+        of broadcast stream.
+    </simpara></listitem>
+    <listitem><simpara>
+        A negative value indicates that
+        output samples preceeding time zero should be discarded during
+        decoding; this technique is used to allow sample-granularity
+        editing of the stream start time of already-encoded Vorbis
+        streams.  The number of samples to be discarded must not exceed 
+        the overlap-add span of the first two audio packets.
+    </simpara></listitem>
+  </itemizedlist>
+  
+  <simpara>
+    In both of these cases in which the initial audio PCM starting
+    offset is nonzero, the second finished audio packet must flush the
+    page on which it appears and the third packet begin a fresh page.
+    This allows the decoder to always be able to perform PCM position
+    adjustments before needing to return any PCM data from synthesis, 
+    resulting in correct positioning information without any aditional
+    seeking logic.
+  </simpara>
+  
+  <note><simpara>
+    Failure to do so should, at worst, cause a
+    decoder implementation to return incorrect positioning information
+    for seeking operations at the very beginning of the stream.
+  </simpara></note>
+</listitem>
+  
+<listitem><simpara>
+  A granule position on the final page in a stream that indicates
+  less audio data than the final packet would normally return is used to
+  end the stream on other than even frame boundaries.  The difference
+  between the actual available data returned and the declared amount
+  indicates how many trailing samples to discard from the decoding
+  process.
+ </simpara></listitem>
+</itemizedlist>
+
+</section>
+
+</appendix>
+
+<!-- end appendix on Vorbis encapsulation in Ogg -->
Index: /libvorbis-1.2.0/doc/xml/a2-encapsulation_rtp.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/a2-encapsulation_rtp.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/a2-encapsulation_rtp.xml	(revision 16)
@@ -0,0 +1,31 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+
+<appendix id="vorbis-over-rtp">
+<appendixinfo>
+ <releaseinfo>
+  $Id: a2-encapsulation_rtp.xml 7483 2004-08-05 13:53:16Z thomasvs $
+ </releaseinfo>
+</appendixinfo>
+<title>Vorbis encapsulation in RTP</title>
+
+<literallayout class="monospaced">
+<!-- this works with extensions implemented in Saxon and Xalan
+<textobject><textdata 
+fileref="draft-rtp.xml"/></textobject> -->
+<!-- this works with xinclude, implemented in xsltproc -->
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+      href="draft-rtp.xml" parse="text">
+  <xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
+    <para>Please consult the internet draft <citetitle>RTP Payload Format for Vorbis Encoded
+    Audio</citetitle> for description of how to embed Vorbis audio in an RTP stream.</para>
+  </xi:fallback>
+</xi:include>
+</literallayout>
+
+</appendix>
+
+<!-- end rtp appendix -->
Index: /libvorbis-1.2.0/doc/xml/footer.xml
===================================================================
--- /libvorbis-1.2.0/doc/xml/footer.xml	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/footer.xml	(revision 16)
@@ -0,0 +1,60 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+                "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+]>
+<!-- footer or colophon for xiph.org documents -->
+
+<!-- articles aren't permitted an explicit colophon -->
+<appendix id="footer">
+<title>Colophon</title>
+
+<mediaobject>
+<!-- pdf is better but some tools don't handle it -->
+<imageobject>
+ <imagedata fileref="xifish.pdf" format="PDF"/>
+</imageobject>
+<imageobject>
+ <imagedata fileref="xifish.eps" format="EPS"/>
+</imageobject>
+<imageobject>
+ <imagedata fileref="white-xifish.png" format="PNG"/>
+</imageobject>
+<textobject>
+ <phrase>[Xiph.org logo]</phrase>
+</textobject>
+</mediaobject>
+
+<para>
+Ogg is a <ulink url="http://www.xiph.org/">Xiph.org Foundation</ulink> effort
+to protect essential tenets of Internet multimedia from corporate
+hostage-taking; Open Source is the net's greatest tool to keep
+everyone honest. See <ulink url="http://www.xiph.org/about.html">About
+the Xiph.org Foundation</ulink> for details.
+</para>
+
+<para>
+Ogg Vorbis is the first Ogg audio CODEC.  Anyone may freely use and
+distribute the Ogg and Vorbis specification, whether in a private,
+public or corporate capacity.  However, the Xiph.org Foundation and
+the Ogg project (xiph.org) reserve the right to set the Ogg Vorbis
+specification and certify specification compliance.</para>
+
+<para>
+Xiph.org's Vorbis software CODEC implementation is distributed under a
+BSD-like license.  This does not restrict third parties from
+distributing independent implementations of Vorbis software under
+other licenses.</para>
+
+<para>
+Ogg, Vorbis, Xiph.org Foundation and their logos are trademarks (tm)
+of the <ulink url="http://www.xiph.org/">Xiph.org Foundation</ulink>.  These
+pages are copyright (C) 1994-2007 Xiph.org Foundation. All rights
+reserved.</para>
+
+<para>
+This document is set in DocBook XML.
+</para>
+
+</appendix>
+<!-- end of colophon -->
Index: /libvorbis-1.2.0/doc/xml/spec-common.xsl
===================================================================
--- /libvorbis-1.2.0/doc/xml/spec-common.xsl	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/spec-common.xsl	(revision 16)
@@ -0,0 +1,24 @@
+<?xml version='1.0'?>
+<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0">
+<!--  elements of customization for Xiph.org specs
+      common to all docbook output formats
+
+      this file is included by the format-specific stylesheets
+      $Id: spec-common.xsl 7186 2004-07-20 07:19:25Z xiphmont $
+-->
+
+  <xsl:param name="use.svg" select="'0'"/>
+
+  <xsl:param name="section.autolabel" select="'1'"/>
+  <xsl:param name="section.label.includes.component.label" select="'1'"/>
+  <xsl:param name="appendix.autolabel" select="'1'"/>
+
+  <!-- we have latex versions of the equations inline -->
+  <xsl:param name="tex.math.in.alt" select="'latex'"/>
+  <xsl:param name="tex.math.delims" select="'0'"/>
+
+  <!-- we're using xinclude instead to the extent that xsltproc doesn't support this -->
+  <xsl:param name="textinclude.extension" select="'1'"/>
+
+<!-- end common elements -->
+</xsl:stylesheet>
Index: /libvorbis-1.2.0/doc/xml/spec-fo.xsl
===================================================================
--- /libvorbis-1.2.0/doc/xml/spec-fo.xsl	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/spec-fo.xsl	(revision 16)
@@ -0,0 +1,16 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0"> 
+  <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/> 
+  <xsl:include href="spec-common.xsl"/>
+  <xsl:param name="paper.type" select="'A4'"/> 
+
+  <xsl:attribute-set name="section.title.level1.properties">
+    <xsl:attribute name="break-before">page</xsl:attribute>
+  </xsl:attribute-set>
+
+  <!-- the appendix pagebreak setting doesn't seem to be respected -->
+  <xsl:attribute-set name="appendix.title.properties">
+    <xsl:attribute name="break-before">page</xsl:attribute>
+  </xsl:attribute-set>
+
+</xsl:stylesheet>  
Index: /libvorbis-1.2.0/doc/xml/spec-html.xsl
===================================================================
--- /libvorbis-1.2.0/doc/xml/spec-html.xsl	(revision 16)
+++ /libvorbis-1.2.0/doc/xml/spec-html.xsl	(revision 16)
@@ -0,0 +1,5 @@
+<?xml version='1.0'?> 
+<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0"> 
+  <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/> 
+  <xsl:include href="spec-common.xsl"/>
+</xsl:stylesheet>  
Index: /libvorbis-1.2.0/examples/.deps/chaining_example.Po
===================================================================
--- /libvorbis-1.2.0/examples/.deps/chaining_example.Po	(revision 16)
+++ /libvorbis-1.2.0/examples/.deps/chaining_example.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/examples/.deps/decoder_example.Po
===================================================================
--- /libvorbis-1.2.0/examples/.deps/decoder_example.Po	(revision 16)
+++ /libvorbis-1.2.0/examples/.deps/decoder_example.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/examples/.deps/encoder_example.Po
===================================================================
--- /libvorbis-1.2.0/examples/.deps/encoder_example.Po	(revision 16)
+++ /libvorbis-1.2.0/examples/.deps/encoder_example.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/examples/.deps/seeking_example.Po
===================================================================
--- /libvorbis-1.2.0/examples/.deps/seeking_example.Po	(revision 16)
+++ /libvorbis-1.2.0/examples/.deps/seeking_example.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/examples/.deps/vorbisfile_example.Po
===================================================================
--- /libvorbis-1.2.0/examples/.deps/vorbisfile_example.Po	(revision 16)
+++ /libvorbis-1.2.0/examples/.deps/vorbisfile_example.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/examples/Makefile
===================================================================
--- /libvorbis-1.2.0/examples/Makefile	(revision 16)
+++ /libvorbis-1.2.0/examples/Makefile	(revision 16)
@@ -0,0 +1,515 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# examples/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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.
+
+
+
+
+pkgdatadir = $(datadir)/libvorbis
+pkglibdir = $(libdir)/libvorbis
+pkgincludedir = $(includedir)/libvorbis
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
+noinst_PROGRAMS = decoder_example$(EXEEXT) encoder_example$(EXEEXT) \
+	chaining_example$(EXEEXT) vorbisfile_example$(EXEEXT) \
+	seeking_example$(EXEEXT)
+subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_chaining_example_OBJECTS = chaining_example.$(OBJEXT)
+chaining_example_OBJECTS = $(am_chaining_example_OBJECTS)
+chaining_example_DEPENDENCIES = ../lib/libvorbisfile.la \
+	../lib/libvorbis.la
+am_decoder_example_OBJECTS = decoder_example.$(OBJEXT)
+decoder_example_OBJECTS = $(am_decoder_example_OBJECTS)
+decoder_example_LDADD = $(LDADD)
+decoder_example_DEPENDENCIES = ../lib/libvorbis.la
+am_encoder_example_OBJECTS = encoder_example.$(OBJEXT)
+encoder_example_OBJECTS = $(am_encoder_example_OBJECTS)
+encoder_example_DEPENDENCIES = ../lib/libvorbisenc.la \
+	../lib/libvorbis.la
+am_seeking_example_OBJECTS = seeking_example.$(OBJEXT)
+seeking_example_OBJECTS = $(am_seeking_example_OBJECTS)
+seeking_example_DEPENDENCIES = ../lib/libvorbisfile.la \
+	../lib/libvorbis.la
+am_vorbisfile_example_OBJECTS = vorbisfile_example.$(OBJEXT)
+vorbisfile_example_OBJECTS = $(am_vorbisfile_example_OBJECTS)
+vorbisfile_example_DEPENDENCIES = ../lib/libvorbisfile.la \
+	../lib/libvorbis.la
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
+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 = $(chaining_example_SOURCES) $(decoder_example_SOURCES) \
+	$(encoder_example_SOURCES) $(seeking_example_SOURCES) \
+	$(vorbisfile_example_SOURCES)
+DIST_SOURCES = $(chaining_example_SOURCES) $(decoder_example_SOURCES) \
+	$(encoder_example_SOURCES) $(seeking_example_SOURCES) \
+	$(vorbisfile_example_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run aclocal-1.10
+ALLOCA = 
+AMTAR = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run automake-1.10
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O20 -ffast-math -D_REENTRANT -fsigned-char  -DUSE_MEMORY_H
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEBUG = -g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GREP = /bin/grep
+HAVE_PKG_CONFIG = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = 
+MAKEINFO = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+OGG_CFLAGS =  
+OGG_LIBS = -logg  
+PACKAGE = libvorbis
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PDFXMLTEX = 
+PKG_CONFIG = /usr/bin/pkg-config
+PROFILE = -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 1.2.0
+VE_LIB_AGE = 0
+VE_LIB_CURRENT = 2
+VE_LIB_REVISION = 3
+VF_LIB_AGE = 2
+VF_LIB_CURRENT = 5
+VF_LIB_REVISION = 0
+VORBIS_LIBS = -lm
+V_LIB_AGE = 4
+V_LIB_CURRENT = 4
+V_LIB_REVISION = 0
+XSLTPROC = 
+abs_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0/examples
+abs_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0/examples
+abs_top_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+abs_top_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/giles/projects/ghostscript/libvorbis-1.2.0/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pthread_lib = -lpthread
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target = x86_64-unknown-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = unknown
+top_builddir = ..
+top_srcdir = ..
+AUTOMAKE_OPTIONS = foreign
+INCLUDES = -I$(top_srcdir)/include  
+
+# uncomment to build static executables from the example code
+#LDFLAGS = -all-static 
+LDADD = ../lib/libvorbis.la 
+decoder_example_SOURCES = decoder_example.c
+encoder_example_SOURCES = encoder_example.c
+encoder_example_LDADD = ../lib/libvorbisenc.la ../lib/libvorbis.la 
+chaining_example_SOURCES = chaining_example.c
+chaining_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+vorbisfile_example_SOURCES = vorbisfile_example.c
+vorbisfile_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+seeking_example_SOURCES = seeking_example.c
+seeking_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.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 \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  examples/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  examples/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-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+chaining_example$(EXEEXT): $(chaining_example_OBJECTS) $(chaining_example_DEPENDENCIES) 
+	@rm -f chaining_example$(EXEEXT)
+	$(LINK) $(chaining_example_OBJECTS) $(chaining_example_LDADD) $(LIBS)
+decoder_example$(EXEEXT): $(decoder_example_OBJECTS) $(decoder_example_DEPENDENCIES) 
+	@rm -f decoder_example$(EXEEXT)
+	$(LINK) $(decoder_example_OBJECTS) $(decoder_example_LDADD) $(LIBS)
+encoder_example$(EXEEXT): $(encoder_example_OBJECTS) $(encoder_example_DEPENDENCIES) 
+	@rm -f encoder_example$(EXEEXT)
+	$(LINK) $(encoder_example_OBJECTS) $(encoder_example_LDADD) $(LIBS)
+seeking_example$(EXEEXT): $(seeking_example_OBJECTS) $(seeking_example_DEPENDENCIES) 
+	@rm -f seeking_example$(EXEEXT)
+	$(LINK) $(seeking_example_OBJECTS) $(seeking_example_LDADD) $(LIBS)
+vorbisfile_example$(EXEEXT): $(vorbisfile_example_OBJECTS) $(vorbisfile_example_DEPENDENCIES) 
+	@rm -f vorbisfile_example$(EXEEXT)
+	$(LINK) $(vorbisfile_example_OBJECTS) $(vorbisfile_example_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/chaining_example.Po
+include ./$(DEPDIR)/decoder_example.Po
+include ./$(DEPDIR)/encoder_example.Po
+include ./$(DEPDIR)/seeking_example.Po
+include ./$(DEPDIR)/vorbisfile_example.Po
+
+.c.o:
+	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(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; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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:
+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-noinstPROGRAMS \
+	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-noinstPROGRAMS 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
+
+
+debug:
+	$(MAKE) all CFLAGS="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
+
+profile:
+	$(MAKE) all CFLAGS="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char"
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/examples/Makefile.am
===================================================================
--- /libvorbis-1.2.0/examples/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/examples/Makefile.am	(revision 16)
@@ -0,0 +1,28 @@
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = foreign
+
+INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@
+
+noinst_PROGRAMS = decoder_example encoder_example chaining_example\
+		vorbisfile_example seeking_example
+
+# uncomment to build static executables from the example code
+#LDFLAGS = -all-static 
+LDADD = ../lib/libvorbis.la 
+
+decoder_example_SOURCES = decoder_example.c
+encoder_example_SOURCES = encoder_example.c
+encoder_example_LDADD = ../lib/libvorbisenc.la ../lib/libvorbis.la 
+chaining_example_SOURCES = chaining_example.c
+chaining_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+vorbisfile_example_SOURCES = vorbisfile_example.c
+vorbisfile_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+seeking_example_SOURCES = seeking_example.c
+seeking_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
Index: /libvorbis-1.2.0/examples/Makefile.in
===================================================================
--- /libvorbis-1.2.0/examples/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/examples/Makefile.in	(revision 16)
@@ -0,0 +1,515 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+noinst_PROGRAMS = decoder_example$(EXEEXT) encoder_example$(EXEEXT) \
+	chaining_example$(EXEEXT) vorbisfile_example$(EXEEXT) \
+	seeking_example$(EXEEXT)
+subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+am_chaining_example_OBJECTS = chaining_example.$(OBJEXT)
+chaining_example_OBJECTS = $(am_chaining_example_OBJECTS)
+chaining_example_DEPENDENCIES = ../lib/libvorbisfile.la \
+	../lib/libvorbis.la
+am_decoder_example_OBJECTS = decoder_example.$(OBJEXT)
+decoder_example_OBJECTS = $(am_decoder_example_OBJECTS)
+decoder_example_LDADD = $(LDADD)
+decoder_example_DEPENDENCIES = ../lib/libvorbis.la
+am_encoder_example_OBJECTS = encoder_example.$(OBJEXT)
+encoder_example_OBJECTS = $(am_encoder_example_OBJECTS)
+encoder_example_DEPENDENCIES = ../lib/libvorbisenc.la \
+	../lib/libvorbis.la
+am_seeking_example_OBJECTS = seeking_example.$(OBJEXT)
+seeking_example_OBJECTS = $(am_seeking_example_OBJECTS)
+seeking_example_DEPENDENCIES = ../lib/libvorbisfile.la \
+	../lib/libvorbis.la
+am_vorbisfile_example_OBJECTS = vorbisfile_example.$(OBJEXT)
+vorbisfile_example_OBJECTS = $(am_vorbisfile_example_OBJECTS)
+vorbisfile_example_DEPENDENCIES = ../lib/libvorbisfile.la \
+	../lib/libvorbis.la
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
+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 = $(chaining_example_SOURCES) $(decoder_example_SOURCES) \
+	$(encoder_example_SOURCES) $(seeking_example_SOURCES) \
+	$(vorbisfile_example_SOURCES)
+DIST_SOURCES = $(chaining_example_SOURCES) $(decoder_example_SOURCES) \
+	$(encoder_example_SOURCES) $(seeking_example_SOURCES) \
+	$(vorbisfile_example_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign
+INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@
+
+# uncomment to build static executables from the example code
+#LDFLAGS = -all-static 
+LDADD = ../lib/libvorbis.la 
+decoder_example_SOURCES = decoder_example.c
+encoder_example_SOURCES = encoder_example.c
+encoder_example_LDADD = ../lib/libvorbisenc.la ../lib/libvorbis.la 
+chaining_example_SOURCES = chaining_example.c
+chaining_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+vorbisfile_example_SOURCES = vorbisfile_example.c
+vorbisfile_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+seeking_example_SOURCES = seeking_example.c
+seeking_example_LDADD = ../lib/libvorbisfile.la ../lib/libvorbis.la 
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  examples/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  examples/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+chaining_example$(EXEEXT): $(chaining_example_OBJECTS) $(chaining_example_DEPENDENCIES) 
+	@rm -f chaining_example$(EXEEXT)
+	$(LINK) $(chaining_example_OBJECTS) $(chaining_example_LDADD) $(LIBS)
+decoder_example$(EXEEXT): $(decoder_example_OBJECTS) $(decoder_example_DEPENDENCIES) 
+	@rm -f decoder_example$(EXEEXT)
+	$(LINK) $(decoder_example_OBJECTS) $(decoder_example_LDADD) $(LIBS)
+encoder_example$(EXEEXT): $(encoder_example_OBJECTS) $(encoder_example_DEPENDENCIES) 
+	@rm -f encoder_example$(EXEEXT)
+	$(LINK) $(encoder_example_OBJECTS) $(encoder_example_LDADD) $(LIBS)
+seeking_example$(EXEEXT): $(seeking_example_OBJECTS) $(seeking_example_DEPENDENCIES) 
+	@rm -f seeking_example$(EXEEXT)
+	$(LINK) $(seeking_example_OBJECTS) $(seeking_example_LDADD) $(LIBS)
+vorbisfile_example$(EXEEXT): $(vorbisfile_example_OBJECTS) $(vorbisfile_example_DEPENDENCIES) 
+	@rm -f vorbisfile_example$(EXEEXT)
+	$(LINK) $(vorbisfile_example_OBJECTS) $(vorbisfile_example_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chaining_example.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decoder_example.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder_example.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seeking_example.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vorbisfile_example.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; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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:
+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-noinstPROGRAMS \
+	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-noinstPROGRAMS 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
+
+
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/examples/chaining_example.c
===================================================================
--- /libvorbis-1.2.0/examples/chaining_example.c	(revision 16)
+++ /libvorbis-1.2.0/examples/chaining_example.c	(revision 16)
@@ -0,0 +1,72 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: illustrate simple use of chained bitstream and vorbisfile.a
+ last mod: $Id: chaining_example.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <vorbis/codec.h>
+#include <vorbis/vorbisfile.h>
+
+#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+int main(){
+  OggVorbis_File ov;
+  int i;
+
+#ifdef _WIN32 /* We need to set stdin to binary mode. Damn windows. */
+  /* Beware the evil ifdef. We avoid these where we can, but this one we 
+     cannot. Don't add any more, you'll probably go to hell if you do. */
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+
+  /* open the file/pipe on stdin */
+  if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)<0){
+    printf("Could not open input as an OggVorbis file.\n\n");
+    exit(1);
+  }
+  
+  /* print details about each logical bitstream in the input */
+  if(ov_seekable(&ov)){
+    printf("Input bitstream contained %ld logical bitstream section(s).\n",
+	   ov_streams(&ov));
+    printf("Total bitstream samples: %ld\n\n",
+	   (long)ov_pcm_total(&ov,-1));
+    printf("Total bitstream playing time: %ld seconds\n\n",
+	   (long)ov_time_total(&ov,-1));
+
+  }else{
+    printf("Standard input was not seekable.\n"
+	   "First logical bitstream information:\n\n");
+  }
+
+  for(i=0;i<ov_streams(&ov);i++){
+    vorbis_info *vi=ov_info(&ov,i);
+    printf("\tlogical bitstream section %d information:\n",i+1);
+    printf("\t\t%ldHz %d channels bitrate %ldkbps serial number=%ld\n",
+	   vi->rate,vi->channels,ov_bitrate(&ov,i)/1000,
+	   ov_serialnumber(&ov,i));
+    printf("\t\theader length: %ld bytes\n",(long)
+	   (ov.dataoffsets[i]-ov.offsets[i]));
+    printf("\t\tcompressed length: %ld bytes\n",(long)(ov_raw_total(&ov,i)));
+    printf("\t\tplay time: %lds\n",(long)ov_time_total(&ov,i));
+  }
+
+  ov_clear(&ov);
+  return 0;
+}
+
Index: /libvorbis-1.2.0/examples/decoder_example.c
===================================================================
--- /libvorbis-1.2.0/examples/decoder_example.c	(revision 16)
+++ /libvorbis-1.2.0/examples/decoder_example.c	(revision 16)
@@ -0,0 +1,307 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: simple example decoder
+ last mod: $Id: decoder_example.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to
+   stdout.  Decodes simple and chained OggVorbis files from beginning
+   to end.  Vorbisfile.a is somewhat more complex than the code below.  */
+
+/* Note that this is POSIX, not ANSI code */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <vorbis/codec.h>
+
+#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+#if defined(__MACOS__) && defined(__MWERKS__)
+#include <console.h>      /* CodeWarrior's Mac "command-line" support */
+#endif
+
+ogg_int16_t convbuffer[4096]; /* take 8k out of the data segment, not the stack */
+int convsize=4096;
+
+extern void _VDBG_dump(void);
+
+int main(){
+  ogg_sync_state   oy; /* sync and verify incoming physical bitstream */
+  ogg_stream_state os; /* take physical pages, weld into a logical
+			  stream of packets */
+  ogg_page         og; /* one Ogg bitstream page.  Vorbis packets are inside */
+  ogg_packet       op; /* one raw packet of data for decode */
+  
+  vorbis_info      vi; /* struct that stores all the static vorbis bitstream
+			  settings */
+  vorbis_comment   vc; /* struct that stores all the bitstream user comments */
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+  
+  char *buffer;
+  int  bytes;
+
+#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
+  /* Beware the evil ifdef. We avoid these where we can, but this one we 
+     cannot. Don't add any more, you'll probably go to hell if you do. */
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+#if defined(macintosh) && defined(__MWERKS__)
+  {
+    int argc;
+    char **argv;
+    argc=ccommand(&argv); /* get a "command line" from the Mac user */
+                     /* this also lets the user set stdin and stdout */
+  }
+#endif
+
+  /********** Decode setup ************/
+
+  ogg_sync_init(&oy); /* Now we can read pages */
+  
+  while(1){ /* we repeat if the bitstream is chained */
+    int eos=0;
+    int i;
+
+    /* grab some data at the head of the stream.  We want the first page
+       (which is guaranteed to be small and only contain the Vorbis
+       stream initial header) We need the first page to get the stream
+       serialno. */
+
+    /* submit a 4k block to libvorbis' Ogg layer */
+    buffer=ogg_sync_buffer(&oy,4096);
+    bytes=fread(buffer,1,4096,stdin);
+    ogg_sync_wrote(&oy,bytes);
+    
+    /* Get the first page. */
+    if(ogg_sync_pageout(&oy,&og)!=1){
+      /* have we simply run out of data?  If so, we're done. */
+      if(bytes<4096)break;
+      
+      /* error case.  Must not be Vorbis data */
+      fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+      exit(1);
+    }
+  
+    /* Get the serial number and set up the rest of decode. */
+    /* serialno first; use it to set up a logical stream */
+    ogg_stream_init(&os,ogg_page_serialno(&og));
+    
+    /* extract the initial header from the first page and verify that the
+       Ogg bitstream is in fact Vorbis data */
+    
+    /* I handle the initial header first instead of just having the code
+       read all three Vorbis headers at once because reading the initial
+       header is an easy way to identify a Vorbis bitstream and it's
+       useful to see that functionality seperated out. */
+    
+    vorbis_info_init(&vi);
+    vorbis_comment_init(&vc);
+    if(ogg_stream_pagein(&os,&og)<0){ 
+      /* error; stream version mismatch perhaps */
+      fprintf(stderr,"Error reading first page of Ogg bitstream data.\n");
+      exit(1);
+    }
+    
+    if(ogg_stream_packetout(&os,&op)!=1){ 
+      /* no page? must not be vorbis */
+      fprintf(stderr,"Error reading initial header packet.\n");
+      exit(1);
+    }
+    
+    if(vorbis_synthesis_headerin(&vi,&vc,&op)<0){ 
+      /* error case; not a vorbis header */
+      fprintf(stderr,"This Ogg bitstream does not contain Vorbis "
+	      "audio data.\n");
+      exit(1);
+    }
+    
+    /* At this point, we're sure we're Vorbis.  We've set up the logical
+       (Ogg) bitstream decoder.  Get the comment and codebook headers and
+       set up the Vorbis decoder */
+    
+    /* The next two packets in order are the comment and codebook headers.
+       They're likely large and may span multiple pages.  Thus we reead
+       and submit data until we get our two pacakets, watching that no
+       pages are missing.  If a page is missing, error out; losing a
+       header page is the only place where missing data is fatal. */
+    
+    i=0;
+    while(i<2){
+      while(i<2){
+	int result=ogg_sync_pageout(&oy,&og);
+	if(result==0)break; /* Need more data */
+	/* Don't complain about missing or corrupt data yet.  We'll
+	   catch it at the packet output phase */
+	if(result==1){
+	  ogg_stream_pagein(&os,&og); /* we can ignore any errors here
+					 as they'll also become apparent
+					 at packetout */
+	  while(i<2){
+	    result=ogg_stream_packetout(&os,&op);
+	    if(result==0)break;
+	    if(result<0){
+	      /* Uh oh; data at some point was corrupted or missing!
+		 We can't tolerate that in a header.  Die. */
+	      fprintf(stderr,"Corrupt secondary header.  Exiting.\n");
+	      exit(1);
+	    }
+	    vorbis_synthesis_headerin(&vi,&vc,&op);
+	    i++;
+	  }
+	}
+      }
+      /* no harm in not checking before adding more */
+      buffer=ogg_sync_buffer(&oy,4096);
+      bytes=fread(buffer,1,4096,stdin);
+      if(bytes==0 && i<2){
+	fprintf(stderr,"End of file before finding all Vorbis headers!\n");
+	exit(1);
+      }
+      ogg_sync_wrote(&oy,bytes);
+    }
+    
+    /* Throw the comments plus a few lines about the bitstream we're
+       decoding */
+    {
+      char **ptr=vc.user_comments;
+      while(*ptr){
+	fprintf(stderr,"%s\n",*ptr);
+	++ptr;
+      }
+      fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi.channels,vi.rate);
+      fprintf(stderr,"Encoded by: %s\n\n",vc.vendor);
+    }
+    
+    convsize=4096/vi.channels;
+
+    /* OK, got and parsed all three headers. Initialize the Vorbis
+       packet->PCM decoder. */
+    vorbis_synthesis_init(&vd,&vi); /* central decode state */
+    vorbis_block_init(&vd,&vb);     /* local state for most of the decode
+				       so multiple block decodes can
+				       proceed in parallel.  We could init
+				       multiple vorbis_block structures
+				       for vd here */
+    
+    /* The rest is just a straight decode loop until end of stream */
+    while(!eos){
+      while(!eos){
+	int result=ogg_sync_pageout(&oy,&og);
+	if(result==0)break; /* need more data */
+	if(result<0){ /* missing or corrupt data at this page position */
+	  fprintf(stderr,"Corrupt or missing data in bitstream; "
+		  "continuing...\n");
+	}else{
+	  ogg_stream_pagein(&os,&og); /* can safely ignore errors at
+					 this point */
+	  while(1){
+	    result=ogg_stream_packetout(&os,&op);
+
+	    if(result==0)break; /* need more data */
+	    if(result<0){ /* missing or corrupt data at this page position */
+	      /* no reason to complain; already complained above */
+	    }else{
+	      /* we have a packet.  Decode it */
+	      float **pcm;
+	      int samples;
+	      
+	      if(vorbis_synthesis(&vb,&op)==0) /* test for success! */
+		vorbis_synthesis_blockin(&vd,&vb);
+	      /* 
+		 
+	      **pcm is a multichannel float vector.  In stereo, for
+	      example, pcm[0] is left, and pcm[1] is right.  samples is
+	      the size of each channel.  Convert the float values
+	      (-1.<=range<=1.) to whatever PCM format and write it out */
+	      
+	      while((samples=vorbis_synthesis_pcmout(&vd,&pcm))>0){
+		int j;
+		int clipflag=0;
+		int bout=(samples<convsize?samples:convsize);
+		
+		/* convert floats to 16 bit signed ints (host order) and
+		   interleave */
+		for(i=0;i<vi.channels;i++){
+		  ogg_int16_t *ptr=convbuffer+i;
+		  float  *mono=pcm[i];
+		  for(j=0;j<bout;j++){
+#if 1
+		    int val=mono[j]*32767.f;
+#else /* optional dither */
+		    int val=mono[j]*32767.f+drand48()-0.5f;
+#endif
+		    /* might as well guard against clipping */
+		    if(val>32767){
+		      val=32767;
+		      clipflag=1;
+		    }
+		    if(val<-32768){
+		      val=-32768;
+		      clipflag=1;
+		    }
+		    *ptr=val;
+		    ptr+=vi.channels;
+		  }
+		}
+		
+		if(clipflag)
+		  fprintf(stderr,"Clipping in frame %ld\n",(long)(vd.sequence));
+		
+		
+		fwrite(convbuffer,2*vi.channels,bout,stdout);
+		
+		vorbis_synthesis_read(&vd,bout); /* tell libvorbis how
+						   many samples we
+						   actually consumed */
+	      }	    
+	    }
+	  }
+	  if(ogg_page_eos(&og))eos=1;
+	}
+      }
+      if(!eos){
+	buffer=ogg_sync_buffer(&oy,4096);
+	bytes=fread(buffer,1,4096,stdin);
+	ogg_sync_wrote(&oy,bytes);
+	if(bytes==0)eos=1;
+      }
+    }
+    
+    /* clean up this logical bitstream; before exit we see if we're
+       followed by another [chained] */
+
+    ogg_stream_clear(&os);
+  
+    /* ogg_page and ogg_packet structs always point to storage in
+       libvorbis.  They're never freed or manipulated directly */
+    
+    vorbis_block_clear(&vb);
+    vorbis_dsp_clear(&vd);
+	vorbis_comment_clear(&vc);
+    vorbis_info_clear(&vi);  /* must be called last */
+  }
+
+  /* OK, clean up the framer */
+  ogg_sync_clear(&oy);
+  
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
Index: /libvorbis-1.2.0/examples/encoder_example.c
===================================================================
--- /libvorbis-1.2.0/examples/encoder_example.c	(revision 16)
+++ /libvorbis-1.2.0/examples/encoder_example.c	(revision 16)
@@ -0,0 +1,253 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: simple example encoder
+ last mod: $Id: encoder_example.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* takes a stereo 16bit 44.1kHz WAV file from stdin and encodes it into
+   a Vorbis bitstream */
+
+/* Note that this is POSIX, not ANSI, code */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+#include <vorbis/vorbisenc.h>
+
+#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+#if defined(__MACOS__) && defined(__MWERKS__)
+#include <console.h>      /* CodeWarrior's Mac "command-line" support */
+#endif
+
+#define READ 1024
+signed char readbuffer[READ*4+44]; /* out of the data segment, not the stack */
+
+int main(){
+  ogg_stream_state os; /* take physical pages, weld into a logical
+			  stream of packets */
+  ogg_page         og; /* one Ogg bitstream page.  Vorbis packets are inside */
+  ogg_packet       op; /* one raw packet of data for decode */
+  
+  vorbis_info      vi; /* struct that stores all the static vorbis bitstream
+			  settings */
+  vorbis_comment   vc; /* struct that stores all the user comments */
+
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+
+  int eos=0,ret;
+  int i, founddata;
+
+#if defined(macintosh) && defined(__MWERKS__)
+  int argc = 0;
+  char **argv = NULL;
+  argc = ccommand(&argv); /* get a "command line" from the Mac user */
+                          /* this also lets the user set stdin and stdout */
+#endif
+
+  /* we cheat on the WAV header; we just bypass 44 bytes and never
+     verify that it matches 16bit/stereo/44.1kHz.  This is just an
+     example, after all. */
+
+#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
+  /* if we were reading/writing a file, it would also need to in
+     binary mode, eg, fopen("file.wav","wb"); */
+  /* Beware the evil ifdef. We avoid these where we can, but this one we 
+     cannot. Don't add any more, you'll probably go to hell if you do. */
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+
+  /* we cheat on the WAV header; we just bypass the header and never
+     verify that it matches 16bit/stereo/44.1kHz.  This is just an
+     example, after all. */
+
+  readbuffer[0] = '\0';
+  for (i=0, founddata=0; i<30 && ! feof(stdin) && ! ferror(stdin); i++)
+  {
+    fread(readbuffer,1,2,stdin);
+
+    if ( ! strncmp((char*)readbuffer, "da", 2) )
+    {
+      founddata = 1;
+      fread(readbuffer,1,6,stdin);
+      break;
+    }
+  }
+
+  /********** Encode setup ************/
+
+  vorbis_info_init(&vi);
+
+  /* choose an encoding mode.  A few possibilities commented out, one
+     actually used: */
+
+  /*********************************************************************
+   Encoding using a VBR quality mode.  The usable range is -.1
+   (lowest quality, smallest file) to 1. (highest quality, largest file).
+   Example quality mode .4: 44kHz stereo coupled, roughly 128kbps VBR 
+  
+   ret = vorbis_encode_init_vbr(&vi,2,44100,.4);
+
+   ---------------------------------------------------------------------
+
+   Encoding using an average bitrate mode (ABR).
+   example: 44kHz stereo coupled, average 128kbps VBR 
+  
+   ret = vorbis_encode_init(&vi,2,44100,-1,128000,-1);
+
+   ---------------------------------------------------------------------
+
+   Encode using a quality mode, but select that quality mode by asking for
+   an approximate bitrate.  This is not ABR, it is true VBR, but selected
+   using the bitrate interface, and then turning bitrate management off:
+
+   ret = ( vorbis_encode_setup_managed(&vi,2,44100,-1,128000,-1) ||
+           vorbis_encode_ctl(&vi,OV_ECTL_RATEMANAGE2_SET,NULL) ||
+           vorbis_encode_setup_init(&vi));
+
+   *********************************************************************/
+
+  ret=vorbis_encode_init_vbr(&vi,2,44100,0.1);
+
+  /* do not continue if setup failed; this can happen if we ask for a
+     mode that libVorbis does not support (eg, too low a bitrate, etc,
+     will return 'OV_EIMPL') */
+
+  if(ret)exit(1);
+
+  /* add a comment */
+  vorbis_comment_init(&vc);
+  vorbis_comment_add_tag(&vc,"ENCODER","encoder_example.c");
+
+  /* set up the analysis state and auxiliary encoding storage */
+  vorbis_analysis_init(&vd,&vi);
+  vorbis_block_init(&vd,&vb);
+  
+  /* set up our packet->stream encoder */
+  /* pick a random serial number; that way we can more likely build
+     chained streams just by concatenation */
+  srand(time(NULL));
+  ogg_stream_init(&os,rand());
+
+  /* Vorbis streams begin with three headers; the initial header (with
+     most of the codec setup parameters) which is mandated by the Ogg
+     bitstream spec.  The second header holds any comment fields.  The
+     third header holds the bitstream codebook.  We merely need to
+     make the headers, then pass them to libvorbis one at a time;
+     libvorbis handles the additional Ogg bitstream constraints */
+
+  {
+    ogg_packet header;
+    ogg_packet header_comm;
+    ogg_packet header_code;
+
+    vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code);
+    ogg_stream_packetin(&os,&header); /* automatically placed in its own
+					 page */
+    ogg_stream_packetin(&os,&header_comm);
+    ogg_stream_packetin(&os,&header_code);
+
+	/* This ensures the actual
+	 * audio data will start on a new page, as per spec
+	 */
+	while(!eos){
+		int result=ogg_stream_flush(&os,&og);
+		if(result==0)break;
+		fwrite(og.header,1,og.header_len,stdout);
+		fwrite(og.body,1,og.body_len,stdout);
+	}
+
+  }
+  
+  while(!eos){
+    long i;
+    long bytes=fread(readbuffer,1,READ*4,stdin); /* stereo hardwired here */
+
+    if(bytes==0){
+      /* end of file.  this can be done implicitly in the mainline,
+         but it's easier to see here in non-clever fashion.
+         Tell the library we're at end of stream so that it can handle
+         the last frame and mark end of stream in the output properly */
+      vorbis_analysis_wrote(&vd,0);
+
+    }else{
+      /* data to encode */
+
+      /* expose the buffer to submit data */
+      float **buffer=vorbis_analysis_buffer(&vd,READ);
+      
+      /* uninterleave samples */
+      for(i=0;i<bytes/4;i++){
+	buffer[0][i]=((readbuffer[i*4+1]<<8)|
+		      (0x00ff&(int)readbuffer[i*4]))/32768.f;
+	buffer[1][i]=((readbuffer[i*4+3]<<8)|
+		      (0x00ff&(int)readbuffer[i*4+2]))/32768.f;
+      }
+    
+      /* tell the library how much we actually submitted */
+      vorbis_analysis_wrote(&vd,i);
+    }
+
+    /* vorbis does some data preanalysis, then divvies up blocks for
+       more involved (potentially parallel) processing.  Get a single
+       block for encoding now */
+    while(vorbis_analysis_blockout(&vd,&vb)==1){
+
+      /* analysis, assume we want to use bitrate management */
+      vorbis_analysis(&vb,NULL);
+      vorbis_bitrate_addblock(&vb);
+
+      while(vorbis_bitrate_flushpacket(&vd,&op)){
+	
+	/* weld the packet into the bitstream */
+	ogg_stream_packetin(&os,&op);
+	
+	/* write out pages (if any) */
+	while(!eos){
+	  int result=ogg_stream_pageout(&os,&og);
+	  if(result==0)break;
+	  fwrite(og.header,1,og.header_len,stdout);
+	  fwrite(og.body,1,og.body_len,stdout);
+	  
+	  /* this could be set above, but for illustrative purposes, I do
+	     it here (to show that vorbis does know where the stream ends) */
+	  
+	  if(ogg_page_eos(&og))eos=1;
+	}
+      }
+    }
+  }
+
+  /* clean up and exit.  vorbis_info_clear() must be called last */
+  
+  ogg_stream_clear(&os);
+  vorbis_block_clear(&vb);
+  vorbis_dsp_clear(&vd);
+  vorbis_comment_clear(&vc);
+  vorbis_info_clear(&vi);
+  
+  /* ogg_page and ogg_packet structs always point to storage in
+     libvorbis.  They're never freed or manipulated directly */
+  
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
Index: /libvorbis-1.2.0/examples/frameview.pl
===================================================================
--- /libvorbis-1.2.0/examples/frameview.pl	(revision 16)
+++ /libvorbis-1.2.0/examples/frameview.pl	(revision 16)
@@ -0,0 +1,630 @@
+#!/usr/bin/perl -w 
+use strict;
+use Tk;
+use Tk::Xrm;
+use Tk qw(exit); 
+
+my $version="Analyzer 20020429";
+
+my %bases;
+my $first_file=undef;
+my $last_file=undef;
+my $fileno=0;
+
+my @panel_labels;
+my @panel_ones;
+my @panel_twos;
+my @panel_onevars;
+my @panel_twovars;
+my @panel_keys;
+my $panel_count;
+
+# pop the toplevels
+
+my $toplevel=new MainWindow(-class=>'AnalyzerGraph');
+my $Xname=$toplevel->Class;
+$toplevel->optionAdd("$Xname.geometry",  "800x600",20);
+
+my $geometry=$toplevel->optionGet('geometry','');
+$geometry=~/^(\d+)x(\d+)/;
+
+$toplevel->configure(-width=>$1);
+$toplevel->configure(-height=>$2);
+
+
+
+
+
+$toplevel->optionAdd("$Xname.background",  "#4fc627",20);
+$toplevel->optionAdd("$Xname*highlightBackground",  "#80c0d3",20);
+$toplevel->optionAdd("$Xname.Panel.background",  "#4fc627",20);
+$toplevel->optionAdd("$Xname.Panel.foreground",  "#d0d0d0",20);
+$toplevel->optionAdd("$Xname.Panel.font",
+                     '-*-helvetica-bold-r-*-*-18-*-*-*-*-*-*-*',20);
+$toplevel->optionAdd("$Xname*Statuslabel.font",
+                     '-*-helvetica-bold-r-*-*-18-*-*-*-*-*-*-*',20);
+$toplevel->optionAdd("$Xname*Statuslabel.foreground", "#606060");
+$toplevel->optionAdd("$Xname*Status.font",
+                     '-*-helvetica-bold-r-*-*-18-*-*-*-*-*-*-*',20);
+
+$toplevel->optionAdd("$Xname*AlertDetail.font",
+                     '-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*',20);
+
+
+$toplevel->optionAdd("$Xname*background",  "#d0d0d0",20);
+$toplevel->optionAdd("$Xname*foreground",  '#000000',20);
+
+$toplevel->optionAdd("$Xname*Button*background",  "#f0d0b0",20);
+$toplevel->optionAdd("$Xname*Button*foreground",  '#000000',20);
+$toplevel->optionAdd("$Xname*Button*borderWidth",  '2',20);
+$toplevel->optionAdd("$Xname*Button*relief",  'groove',20);
+$toplevel->optionAdd("$Xname*Button*padY",  1,20);
+
+#$toplevel->optionAdd("$Xname*Scale*background",  "#f0d0b0",20);
+$toplevel->optionAdd("$Xname*Scale*foreground",  '#000000',20);
+$toplevel->optionAdd("$Xname*Scale*borderWidth",  '1',20);
+#$toplevel->optionAdd("$Xname*Scale*relief",  'groove',20);
+$toplevel->optionAdd("$Xname*Scale*padY",  1,20);
+
+$toplevel->optionAdd("$Xname*Checkbutton*background",  "#f0d0b0",20);
+$toplevel->optionAdd("$Xname*Checkbutton*foreground",  '#000000',20);
+$toplevel->optionAdd("$Xname*Checkbutton*borderWidth",  '2',20);
+$toplevel->optionAdd("$Xname*Checkbutton*relief",  'groove',20);
+
+$toplevel->optionAdd("$Xname*activeBackground",  "#ffffff",20);
+$toplevel->optionAdd("$Xname*activeForeground",  '#0000a0',20);
+$toplevel->optionAdd("$Xname*borderWidth",         0,20);
+$toplevel->optionAdd("$Xname*relief",         'flat',20);
+$toplevel->optionAdd("$Xname*activeBorderWidth",         1,20);
+$toplevel->optionAdd("$Xname*highlightThickness",         0,20);
+$toplevel->optionAdd("$Xname*padX",         2,20);
+$toplevel->optionAdd("$Xname*padY",         2,20);
+$toplevel->optionAdd("$Xname*font",    
+                     '-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*',20);
+$toplevel->optionAdd("$Xname*Entry.font",    
+                     '-*-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*',20);
+$toplevel->optionAdd("$Xname*Exit.font",    
+                     '-*-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*',20);
+$toplevel->optionAdd("$Xname*Exit.relief",          'groove',20);
+$toplevel->optionAdd("$Xname*Exit.padX",          1,20);
+$toplevel->optionAdd("$Xname*Exit.padY",          1,20);
+$toplevel->optionAdd("$Xname*Exit.borderWidth",          2,20);
+$toplevel->optionAdd("$Xname*Exit*background",  "#a0a0a0",20);
+$toplevel->optionAdd("$Xname*Exit*disabledForeground",  "#ffffff",20);
+
+#$toplevel->optionAdd("$Xname*Canvas.background",  "#c0c0c0",20);
+
+$toplevel->optionAdd("$Xname*Entry.background",  "#ffffff",20);
+$toplevel->optionAdd("$Xname*Entry.disabledForeground",  "#c0c0c0",20);
+$toplevel->optionAdd("$Xname*Entry.relief",  "sunken",20);
+$toplevel->optionAdd("$Xname*Entry.borderWidth",  1,20);
+
+$toplevel->optionAdd("$Xname*Field.background",  "#ffffff",20);
+$toplevel->optionAdd("$Xname*Field.disabledForeground",  "#c0c0c0",20);
+$toplevel->optionAdd("$Xname*Field.relief",  "flat",20);
+$toplevel->optionAdd("$Xname*Field.borderWidth",  1,20);
+
+$toplevel->optionAdd("$Xname*Label.disabledForeground",  "#c0c0c0",20);
+$toplevel->optionAdd("$Xname*Label.borderWidth",  1,20);
+
+$toplevel->configure(-background=>$toplevel->optionGet("background",""));
+
+#$toplevel->resizable(FALSE,FALSE);
+
+my $panel=new MainWindow(-class=>'AnalyzerPanel');
+my $X2name=$panel->Class;
+
+$panel->optionAdd("$X2name.background",  "#353535",20);
+$panel->optionAdd("$X2name*highlightBackground",  "#80c0d3",20);
+$panel->optionAdd("$X2name.Panel.background",  "#353535",20);
+$panel->optionAdd("$X2name.Panel.foreground",  "#4fc627",20);
+$panel->optionAdd("$X2name.Panel.font",
+                     '-*-helvetica-bold-o-*-*-18-*-*-*-*-*-*-*',20);
+$panel->optionAdd("$X2name*Statuslabel.font",
+                     '-*-helvetica-bold-r-*-*-18-*-*-*-*-*-*-*',20);
+$panel->optionAdd("$X2name*Statuslabel.foreground", "#4fc627",20);
+$panel->optionAdd("$X2name*Status.font",
+                     '-*-helvetica-bold-r-*-*-18-*-*-*-*-*-*-*',20);
+
+$panel->optionAdd("$X2name*AlertDetail.font",
+                     '-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*',20);
+
+
+$panel->optionAdd("$X2name*background",  "#d0d0d0",20);
+$panel->optionAdd("$X2name*foreground",  '#000000',20);
+
+$panel->optionAdd("$X2name*Button*background",  "#f0d0b0",20);
+$panel->optionAdd("$X2name*Button*foreground",  '#000000',20);
+$panel->optionAdd("$X2name*Button*borderWidth",  '2',20);
+$panel->optionAdd("$X2name*Button*relief",  'groove',20);
+$panel->optionAdd("$X2name*Button*padY",  1,20);
+
+$panel->optionAdd("$X2name*Checkbutton*background",  "#f0d0b0",20);
+$panel->optionAdd("$X2name*Checkbutton*foreground",  '#000000',20);
+$panel->optionAdd("$X2name*Checkbutton*borderWidth",  '2',20);
+#$panel->optionAdd("$X2name*Checkbutton*padX",  '0',20);
+#$panel->optionAdd("$X2name*Checkbutton*padY",  '0',20);
+#$panel->optionAdd("$X2name*Checkbutton*relief",  'groove',20);
+
+$panel->optionAdd("$X2name*activeBackground",  "#ffffff",20);
+$panel->optionAdd("$X2name*activeForeground",  '#0000a0',20);
+$panel->optionAdd("$X2name*borderWidth",         0,20);
+$panel->optionAdd("$X2name*relief",         'flat',20);
+$panel->optionAdd("$X2name*activeBorderWidth",         1,20);
+$panel->optionAdd("$X2name*highlightThickness",         0,20);
+$panel->optionAdd("$X2name*padX",         2,20);
+$panel->optionAdd("$X2name*padY",         2,20);
+$panel->optionAdd("$X2name*font",    
+                     '-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*',20);
+$panel->optionAdd("$X2name*Entry.font",    
+                     '-*-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*',20);
+
+$panel->optionAdd("$X2name*Exit.font",    
+                     '-*-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*',20);
+$panel->optionAdd("$X2name*Exit.relief",          'groove',20);
+$panel->optionAdd("$X2name*Exit.padX",          1,20);
+$panel->optionAdd("$X2name*Exit.padY",          1,20);
+$panel->optionAdd("$X2name*Exit.borderWidth",          2,20);
+$panel->optionAdd("$X2name*Exit*background",  "#a0a0a0",20);
+$panel->optionAdd("$X2name*Exit*disabledForeground",  "#ffffff",20);
+
+$panel->optionAdd("$X2name*Entry.background",  "#ffffff",20);
+$panel->optionAdd("$X2name*Entry.disabledForeground",  "#c0c0c0",20);
+$panel->optionAdd("$X2name*Entry.relief",  "sunken",20);
+$panel->optionAdd("$X2name*Entry.borderWidth",  1,20);
+
+$panel->optionAdd("$X2name*Field.background",  "#ffffff",20);
+$panel->optionAdd("$X2name*Field.disabledForeground",  "#c0c0c0",20);
+$panel->optionAdd("$X2name*Field.relief",  "flat",20);
+$panel->optionAdd("$X2name*Field.borderWidth",  1,20);
+
+$panel->optionAdd("$X2name*Label.disabledForeground",  "#c0c0c0",20);
+$panel->optionAdd("$X2name*Label.borderWidth",  1,20);
+
+$panel->configure(-background=>$panel->optionGet("background",""));
+
+#$panel->resizable("FALSE","FALSE");
+
+my $panel_shell=$panel->Label(Name=>"shell",borderwidth=>1,relief=>'raised')->
+    place(-x=>10,-y=>36,-relwidth=>1.0,-relheight=>1.0,
+          -width=>-20,-height=>-46,-anchor=>'nw');
+
+my $panel_quit=$panel_shell->Button(-class=>"Exit",text=>"quit",-command=>[sub{Shutdown()}])->
+    place(-x=>-1,-y=>-1,-relx=>1.0,-rely=>1.0,-anchor=>'se');
+
+$panel->Label(Name=>"logo text",-class=>"Panel",text=>$version)->
+    place(-x=>5,-y=>5,-anchor=>'nw');
+
+
+my $graph_shell=$toplevel->Label(Name=>"shell",borderwidth=>1,relief=>'raised')->
+    place(-x=>10,-y=>36,-relwidth=>1.0,-relheight=>1.0,
+          -width=>-20,-height=>-46,-anchor=>'nw');
+
+my $graph_status=$toplevel->Label(Name=>"logo text",-class=>"Panel",text=>"Starting up")->
+    place(-x=>5,-y=>5,-anchor=>'nw');
+
+
+my $panely=5;
+my $panel_rescan=$panel_shell->Button(text=>"rescan",command=>[sub{scan_directory()}])->
+    place(-x=>-5,-relx=>1.,-y=>$panely,-anchor=>'ne');
+$panely+=$panel_rescan->reqheight()+6;
+
+
+my$temp=$graph_shell->Button(-text=>"<<",
+		     -command=>[sub{$fileno-=10;$fileno=$first_file if($fileno<$first_file);
+				load_graph();}])->
+    place(-x=>5,-y=>-5,-rely=>1.,-relwidth=>.2,-width=>-5,-anchor=>'sw');
+$graph_shell->Button(-text=>">>",
+		     -command=>[sub{$fileno+=10;$fileno=$last_file if($fileno>$last_file);
+				load_graph();}])->
+    place(-x=>-5,-y=>-5,-relwidth=>.2,-rely=>1.,-width=>-5,-relx=>1.,-anchor=>'se');
+$graph_shell->Button(-text=>"<",
+		     -command=>[sub{$fileno-=1;$fileno=$first_file if($fileno<$first_file);
+				load_graph();}])->
+    place(-x=>5,-y=>-5,-relwidth=>.3,-width=>-7,-rely=>1.,-relx=>.2,-anchor=>'sw');
+$graph_shell->Button(-text=>">",
+		     -command=>[sub{$fileno+=1;$fileno=$last_file if($fileno>$last_file);
+				load_graph();}])->
+    place(-x=>-5,-y=>-5,-relwidth=>.3,-width=>-7,-rely=>1.,-relx=>.8,-anchor=>'se');
+my$graphy=-10-$temp->reqheight();
+my$graph_slider=$temp=$graph_shell->Scale(-bigincrement=>1,
+				    -resolution=>1,
+				    -showvalue=>'TRUE',-variable=>\$fileno,-orient=>'horizontal')->
+    place(-x=>5,-y=>$graphy,-relwidth=>1.,-rely=>1.,-width=>-10,-anchor=>'sw');
+$graphy-=$temp->reqheight()+5;
+
+my$onecrop;
+my$twocrop;
+
+my$oneresize=$temp=$graph_shell->Checkbutton(text=>"rescale",-variable=>\$onecrop,
+				-command=>[sub{draw_graph();}])->
+    place(-x=>5,-y=>5,-anchor=>'nw');
+
+my$one=$graph_shell->Canvas()->
+    place(-relwidth=>1.,-width=>-10,-relheight=>.5,-height=>($graphy/2)-5-$temp->reqheight(),
+				     -x=>5,-y=>5+$temp->reqheight,-anchor=>'nw');
+
+
+my$tworesize=$temp=$graph_shell->Checkbutton(text=>"rescale",-variable=>\$twocrop,
+				-command=>[sub{draw_graph();}])->
+    place(-rely=>1.,-y=>5,-anchor=>'nw',-in=>$one);
+my$two=$graph_shell->Canvas()->
+    place(-relwidth=>1.,-relheight=>1.,-rely=>1.,-y=>5+$temp->reqheight(),-anchor=>'nw',-in=>$one);
+
+scan_directory();
+
+my%onestate;
+my%twostate;
+my @data;
+
+$onestate{"canvas"}=$one;
+$onestate{"vars"}=\@panel_onevars;
+$twostate{"canvas"}=$two;
+$twostate{"vars"}=\@panel_twovars;
+
+$graph_slider->configure(-command=>[sub{load_graph()}]);
+load_graph();
+$toplevel->bind('MainWindow','<Configure>',[sub{$toplevel->update();
+						draw_graph()}]);
+
+Tk::MainLoop();
+
+sub load_graph{
+
+    scan_directory()if(!defined($panel_count));
+
+    @data=undef;
+    
+    for(my$i=0;$i<$panel_count;$i++){
+	my$filename=$panel_keys[$i]."_$fileno.m";
+	if(open F, "$filename"){
+	    $data[$i]=[(<F>)];
+	    close F;
+	}
+    }
+    draw_graph();
+}
+
+sub graphhelper{
+    my($graph)=@_;
+    my$count=0;
+    my@colors=("#ff0000","#00df00","#0000ff","#ffff00","#ff00ff","#00ffff","#ffffff",
+	       "#9f0000","#007f00","#00009f","#8f8f00","#8f008f","#008f8f","#000000");
+    
+    my$w=$graph->{"canvas"};
+    my$rescale=0;
+
+    Status("Plotting $fileno");
+    $w->delete('foo');
+    $w->delete('legend');
+    $w->delete('lines');
+
+    # count range 
+    for(my$i=0;$i<$panel_count;$i++){
+	if($graph->{"vars"}->[$i]){
+	    if(defined($data[$i])){
+		if(!defined($graph->{"minx"})){
+		    $data[$i]->[0]=~m/^\s*(-?[0-9\.]*)[ ,]+(-?[0-9\.]*)/;
+		    $graph->{"maxx"}=$1;
+		    $graph->{"minx"}=$1;
+		    $graph->{"maxy"}=$2;
+		    $graph->{"miny"}=$2;
+		    $rescale=1;
+		}
+		
+		for(my$j=0;$j<=$#{$data[$i]};$j++){
+		    $data[$i]->[$j]=~m/^\s*(-?[0-9\.]*)[ ,]+(-?[0-9\.]*)/;
+		    $rescale=1 if($1>$graph->{"maxx"});
+		    $rescale=1 if($1<$graph->{"minx"});
+		    $rescale=1 if($2>$graph->{"maxy"});
+		    $rescale=1 if($2<$graph->{"miny"});
+		    $graph->{"maxx"}=$1 if($1>$graph->{"maxx"});
+		    $graph->{"minx"}=$1 if($1<$graph->{"minx"});
+		    $graph->{"maxy"}=$2 if($2>$graph->{"maxy"});
+		    $graph->{"miny"}=$2 if($2<$graph->{"miny"});
+		}
+	    }
+	    $count++;
+	}
+    }
+
+    my$width=$w->width();
+    my$height=$w->height();
+
+    $rescale=1 if(!defined($graph->{"width"}) || 
+		  $width!=$graph->{"width"} || 
+		  $height!=$graph->{"height"});
+    
+    $graph->{"width"}=$width; 
+    $graph->{"height"}=$height; 
+
+    if(defined($graph->{"maxx"})){
+	# draw axes, labels
+	# look for appropriate axis scales
+
+	if($rescale){
+
+	    $w->delete('ylabel');
+	    $w->delete('xlabel');
+	    $w->delete('axes');
+	    
+	    my$yscale=1.;
+	    my$xscale=1.;
+	    my$iyscale=1.;
+	    my$ixscale=1.;
+	    while(($graph->{"maxx"}-$graph->{"minx"})*$xscale>15){$xscale*=.1;$ixscale*=10.;}
+	    while(($graph->{"maxy"}-$graph->{"miny"})*$yscale>15){$yscale*=.1;$iyscale*=10.;}
+	    
+	    while(($graph->{"maxx"}-$graph->{"minx"})*$xscale<3){$xscale*=10.;$ixscale*=.1;}
+	    while(($graph->{"maxy"}-$graph->{"miny"})*$yscale<3){$yscale*=10.;$iyscale*=.1;}
+	    
+	    # how tall are the x axis labels?
+	    $w->createText(-1,-1,-anchor=>'se',-tags=>['foo'],-text=>"0123456789.");
+	    my($x1,$y1,$x2,$y2)=$w->bbox('foo');
+	    $w->delete('foo');
+	    my$maxlabelheight=$y2-$y1;
+	    my$useabley=$height-$maxlabelheight-3;
+	    my$pixelpery=$useabley/($graph->{"maxy"}-$graph->{"miny"});
+	    
+	    # place y axis labels at proper spacing/height
+	    my$lasty=-$maxlabelheight/2;
+	    my$topyval=int($graph->{"maxy"}*$yscale+1.)*$iyscale;
+	    
+	    for(my$i=0;;$i++){
+		my$yval= $topyval-$i*$iyscale;
+		my$y= ($graph->{"maxy"}-$yval)*$pixelpery;
+		last if($y>$useabley);
+		if($y-$maxlabelheight>=$lasty){
+		    $w->createText(0,$y,-anchor=>'e',-tags=>['ylabel'],-text=>"$yval");
+		    $lasty=$y;
+		}
+	    }
+	    
+	    # get the max ylabel width and place them at proper x
+	    ($x1,$y1,$x2,$y2)=$w->bbox('ylabel');
+	    my$maxylabelwidth=$x2-$x1;
+	    $w->move('ylabel',$maxylabelwidth,0);
+	    
+	    my$beginx=$maxylabelwidth+3;
+	    my$useablex=$width-$beginx;
+	    
+	    # draw basic axes
+	    $w->createLine($beginx,0,$beginx,$useabley,$width,$useabley,
+			   -tags=>['axes'],-width=>2);
+	    # draw y tix
+	    $lasty=-$maxlabelheight/2;
+	    for(my$i=0;;$i++){
+		my$yval= $topyval-$i*$iyscale;
+		my$y= ($graph->{"maxy"}-$yval)*$pixelpery;
+		last if($y>$useabley);
+		if($yval==0){
+		    $w->createLine($beginx,$y,$width,$y,
+				   -tags=>['axes'],-width=>1);
+		}else{
+		    if($y-$maxlabelheight>=$lasty){
+			$w->createLine($beginx,$y,$width,$y,
+				       -tags=>['axes'],-width=>1,
+				       -stipple=>'gray50');
+			
+			$lasty=$y;
+		    }
+		}
+	    }
+	    
+	    # place x axis labels at proper spacing
+	    my$topxval=int($graph->{"maxx"}*$xscale+1.)*$ixscale;
+	    my$pixelperx=$useablex/($graph->{"maxx"}-$graph->{"minx"});
+	    
+	    for(my$i=0;;$i++){
+		my$xval= $topxval-$i*$ixscale;
+		my$x= $width-($graph->{"maxx"}-$xval)*$pixelperx;
+		
+		last if($x<$beginx);
+		# bounding boxen are hard.  place temp labels.
+		$w->createText(-1,-1,-anchor=>'e',-tags=>['foo'],-text=>"$xval");
+	    }
+	    
+	    ($x1,$y1,$x2,$y2)=$w->bbox('foo');
+	    my$maxxlabelwidth=$x2-$x1;
+	    $w->delete('foo');
+	    my$lastx=$width;
+	    
+	    for(my$i=0;;$i++){
+		my$xval= $topxval-$i*$ixscale;
+		my$x= $width-($graph->{"maxx"}-$xval)*$pixelperx;
+		
+		last if($x-$maxxlabelwidth/2<0 || $x<$beginx);
+		if($xval==0 && $x<$width){
+		    $w->createLine($x,0,$x,$useabley,-tags=>['axes'],-width=>1);
+		}
+	    
+		if($x+$maxxlabelwidth<=$lastx){
+		    $w->createText($x,$height-1,-anchor=>'s',-tags=>['xlabel'],-text=>"$xval");
+		    $w->createLine($x,0,$x,$useabley,-tags=>['axes'],-width=>1,-stipple=>"gray50");
+		    $lastx=$x;
+		}
+	    }
+	    $graph->{"labelheight"}=$maxlabelheight;
+	    $graph->{"xo"}=$beginx;
+	    $graph->{"ppx"}=$pixelperx;
+	    $graph->{"ppy"}=$pixelpery;
+	}
+
+	# plot the files
+	$count=0;
+	my$legendy=$graph->{"labelheight"}/2;
+	for(my$i=0;$i<$panel_count;$i++){
+	    if($graph->{"vars"}->[$i]){
+		$count++; # count here for legend color selection stability
+		if(defined($data[$i])){
+		    # place a legend placard;
+		    my$color=$colors[($count-1)%($#colors+1)];
+		    $w->createText($width,$legendy,-anchor=>'e',-tags=>['legend'],
+				   -fill=>$color,-text=>$panel_keys[$i]);
+		    $legendy+=$graph->{"labelheight"};
+
+		    # plot the lines
+		    my@pairs=map{if(/^\s*(-?[0-9\.]*)[ ,]+(-?[0-9\.]*)/){
+			(($1-$graph->{"minx"})*$graph->{"ppx"}+$graph->{"xo"},
+			 (-$2+$graph->{"maxy"})*$graph->{"ppy"})}} (@{$data[$i]});
+		    
+		    $w->createLine((@pairs),-fill=>$color,-tags=>['lines']);
+		}
+	    }
+	}
+    }
+}    
+
+sub draw_graph{
+
+    if($onecrop){
+	$onestate{"minx"}=undef;
+	$onestate{"miny"}=undef;
+	$onestate{"maxx"}=undef;
+	$onestate{"maxy"}=undef;
+    }
+    if($twocrop){
+	$twostate{"minx"}=undef;
+	$twostate{"miny"}=undef;
+	$twostate{"maxx"}=undef;
+	$twostate{"maxy"}=undef;
+    }
+
+    for(my$i=0;$i<$panel_count;$i++){
+	if($twostate{"vars"}->[$i]){
+	    
+	    #re-place the canvases
+	    
+	    $oneresize->place(-x=>5,-y=>5,-anchor=>'nw');
+
+	    $one->place(-relwidth=>1.,-width=>-10,-relheight=>.5,
+			 -height=>($graphy/2)-5-$oneresize->reqheight(),
+			 -x=>5,-y=>5+$oneresize->reqheight,-anchor=>'nw');
+	    
+	    $tworesize->place(-rely=>1.,-y=>5,-anchor=>'nw',-in=>$one);
+	    $two->place(-relwidth=>1.,-relheight=>1.,-rely=>1.,
+			-y=>5+$tworesize->reqheight(),-anchor=>'nw',-in=>$one);
+
+	    graphhelper(\%onestate);
+	    graphhelper(\%twostate);
+	    return;
+	}
+    }
+
+    $oneresize->place(-x=>5,-y=>5,-anchor=>'nw');
+    
+    $one->place(-relwidth=>1.,-width=>-10,-relheight=>1.,
+		 -height=>$graphy-5-$oneresize->reqheight(),
+		 -x=>5,-y=>5+$oneresize->reqheight,-anchor=>'nw');
+    
+    $tworesize->placeForget();
+    $two->placeForget();
+
+    graphhelper(\%onestate);
+}
+
+sub depopulate_panel{
+    my $win;
+    foreach $win (@panel_labels){
+	$win->destroy();
+    }
+    @panel_labels=();
+    foreach $win (@panel_ones){
+	$win->destroy();
+    }
+    @panel_ones=();
+    foreach $win (@panel_twos){
+	$win->destroy();
+    }
+    @panel_twos=();
+    @panel_keys=();
+}
+
+sub populate_panel{
+    my $localy=$panely;
+    my $key;
+    my $i=0;
+    foreach $key (sort (keys %bases)){
+	$panel_keys[$i]=$key;
+	if(!defined($panel_onevars[$i])){
+	    $panel_onevars[$i]=0;
+	    $panel_twovars[$i]=0;
+	}
+
+	my $temp=$panel_twos[$i]=$panel_shell->
+	    Checkbutton(-variable=>\$panel_twovars[$i],-command=>['main::draw_graph'],text=>'2')->
+	    place(-y=>$localy,-x=>-5,-anchor=>"ne",-relx=>1.);
+	my $oney=$temp->reqheight();
+	my $onex=$temp->reqwidth()+15;
+
+	$temp=$panel_ones[$i]=$panel_shell->
+	    Checkbutton(-variable=>\$panel_onevars[$i],-command=>['main::draw_graph'],text=>'1')->
+	    place(-y=>0,-x=>0,-anchor=>"ne",-in=>$temp,-bordermode=>'outside');
+	$oney=$temp->reqheight() if ($oney<$temp->reqheight());
+	$onex+=$temp->reqwidth();
+
+	$temp=$panel_labels[$i]=$panel_shell->Label(-text=>$key,-class=>'Field',justify=>'left')->
+	    place(-y=>$localy,-x=>5,-anchor=>"nw",-relwidth=>1.,-width=>-$onex,
+		  -bordermode=>'outside');
+	$oney=$temp->reqheight() if ($oney<$temp->reqheight());
+	
+	$localy+=$oney+2;
+	$i++;
+    }
+    $panel_count=$i;    
+
+    $localy+=$panel_quit->reqheight()+50;
+    my $geometry=$panel->geometry();
+    $geometry=~/^(\d+)/;
+
+    $panel->configure(-height=>$localy);
+    $panel->configure(-width=>$1);
+}
+
+sub Shutdown{
+  Tk::exit();
+}
+
+sub Status{
+    my$text=shift @_;
+    $graph_status->configure(text=>"$text");
+    $toplevel->update();
+}
+
+sub scan_directory{
+    
+    %bases=();
+    my$count=0;
+
+    $first_file=undef;
+    $last_file=undef;
+
+    if(opendir(D,".")){
+        my$file;
+        while(defined($file=readdir(D))){
+	    if($file=~m/^(\S*)_(\d+).m/){
+		$bases{"$1"}="0";
+		$first_file=$2 if(!defined($first_file) || $2<$first_file);
+		$last_file=$2 if(!defined($last_file) || $2>$last_file);
+		$count++;
+		
+		Status("Reading... $count")if($count%117==0);
+	    }
+        }	
+        closedir(D);
+    }
+    Status("Done Reading: $count files");
+    depopulate_panel();
+    populate_panel();
+    
+    $fileno=$first_file if($fileno<$first_file);
+    $fileno=$last_file if($fileno>$last_file);
+
+    $graph_slider->configure(-from=>$first_file,-to=>$last_file);
+
+}
+
+
+
+
+
Index: /libvorbis-1.2.0/examples/seeking_example.c
===================================================================
--- /libvorbis-1.2.0/examples/seeking_example.c	(revision 16)
+++ /libvorbis-1.2.0/examples/seeking_example.c	(revision 16)
@@ -0,0 +1,256 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: illustrate seeking, and test it too
+ last mod: $Id: seeking_example.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+
+#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
+# include <io.h>
+# include <fcntl.h>
+#endif
+
+void _verify(OggVorbis_File *ov,
+	     ogg_int64_t val,ogg_int64_t pcmval,double timeval,
+	     ogg_int64_t pcmlength,
+	     char *bigassbuffer){
+  int j;
+  long bread;
+  char buffer[4096];
+  int dummy;
+  ogg_int64_t pos;
+
+  /* verify the raw position, the pcm position and position decode */
+  if(val!=-1 && ov_raw_tell(ov)<val){
+    fprintf(stderr,"raw position out of tolerance: requested %ld, got %ld\n",
+	   (long)val,(long)ov_raw_tell(ov));
+    exit(1);
+  }
+  if(pcmval!=-1 && ov_pcm_tell(ov)>pcmval){
+    fprintf(stderr,"pcm position out of tolerance: requested %ld, got %ld\n",
+	   (long)pcmval,(long)ov_pcm_tell(ov));
+    exit(1);
+  }
+  if(timeval!=-1 && ov_time_tell(ov)>timeval){
+    fprintf(stderr,"time position out of tolerance: requested %f, got %f\n",
+	   timeval,ov_time_tell(ov));
+    exit(1);
+  }
+  pos=ov_pcm_tell(ov);
+  if(pos<0 || pos>pcmlength){
+    fprintf(stderr,"pcm position out of bounds: got %ld\n",(long)pos);
+    exit(1);
+  }
+  bread=ov_read(ov,buffer,4096,1,1,1,&dummy);
+  for(j=0;j<bread;j++){
+    if(buffer[j]!=bigassbuffer[j+pos*2]){
+      fprintf(stderr,"data position after seek doesn't match pcm position\n");
+
+      {
+	FILE *f=fopen("a.m","w");
+	for(j=0;j<bread;j++)fprintf(f,"%d\n",(int)buffer[j]);
+	fclose(f);
+	f=fopen("b.m","w");
+	for(j=0;j<bread;j++)fprintf(f,"%d\n",(int)bigassbuffer[j+pos*2]);
+	fclose(f);
+      }
+
+      exit(1);
+    }
+  }
+}
+
+int main(){
+  OggVorbis_File ov;
+  int i,ret;
+  ogg_int64_t pcmlength;
+  double timelength;
+  char *bigassbuffer;
+  int dummy;
+
+#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
+  _setmode( _fileno( stdin ), _O_BINARY );
+#endif
+
+
+  /* open the file/pipe on stdin */
+  if(ov_open_callbacks(stdin,&ov,NULL,-1,OV_CALLBACKS_NOCLOSE)<0){
+    fprintf(stderr,"Could not open input as an OggVorbis file.\n\n");
+    exit(1);
+  }
+
+  if(ov_seekable(&ov)){
+
+    /* to simplify our own lives, we want to assume the whole file is
+       stereo.  Verify this to avoid potentially mystifying users
+       (pissing them off is OK, just don't confuse them) */
+    for(i=0;i<ov.links;i++){
+      vorbis_info *vi=ov_info(&ov,i);
+      if(vi->channels!=2){
+	fprintf(stderr,"Sorry; right now seeking_test can only use Vorbis files\n"
+	       "that are entirely stereo.\n\n");
+	exit(1);
+      }
+    }
+    
+    /* because we want to do sample-level verification that the seek
+       does what it claimed, decode the entire file into memory */
+    pcmlength=ov_pcm_total(&ov,-1);
+    timelength=ov_time_total(&ov,-1);
+    bigassbuffer=malloc(pcmlength*2); /* w00t */
+    i=0;
+    while(i<pcmlength*2){
+      int ret=ov_read(&ov,bigassbuffer+i,pcmlength*2-i,1,1,1,&dummy);
+      if(ret<0)continue;
+      if(ret){
+	i+=ret;
+      }else{
+	pcmlength=i/2;
+      }
+      fprintf(stderr,"\rloading.... [%ld left]              ",
+	      (long)(pcmlength*2-i));
+    }
+    
+    {
+      ogg_int64_t length=ov.end;
+      fprintf(stderr,"\rtesting raw seeking to random places in %ld bytes....\n",
+	     (long)length);
+    
+      for(i=0;i<1000;i++){
+	ogg_int64_t val=(double)rand()/RAND_MAX*length;
+	fprintf(stderr,"\r\t%d [raw position %ld]...     ",i,(long)val);
+	ret=ov_raw_seek(&ov,val);
+	if(ret<0){
+	  fprintf(stderr,"seek failed: %d\n",ret);
+	  exit(1);
+	}
+
+	_verify(&ov,val,-1,-1.,pcmlength,bigassbuffer);
+
+      }
+    }
+
+    fprintf(stderr,"\r");
+    {
+      fprintf(stderr,"testing pcm page seeking to random places in %ld samples....\n",
+	     (long)pcmlength);
+    
+      for(i=0;i<1000;i++){
+	ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength;
+	fprintf(stderr,"\r\t%d [pcm position %ld]...     ",i,(long)val);
+	ret=ov_pcm_seek_page(&ov,val);
+	if(ret<0){
+	  fprintf(stderr,"seek failed: %d\n",ret);
+	  exit(1);
+	}
+
+	_verify(&ov,-1,val,-1.,pcmlength,bigassbuffer);
+
+      }
+    }
+    
+    fprintf(stderr,"\r");
+    {
+      fprintf(stderr,"testing pcm exact seeking to random places in %ld samples....\n",
+	     (long)pcmlength);
+    
+      for(i=0;i<1000;i++){
+	ogg_int64_t val=(double)rand()/RAND_MAX*pcmlength;
+	fprintf(stderr,"\r\t%d [pcm position %ld]...     ",i,(long)val);
+	ret=ov_pcm_seek(&ov,val);
+	if(ret<0){
+	  fprintf(stderr,"seek failed: %d\n",ret);
+	  exit(1);
+	}
+	if(ov_pcm_tell(&ov)!=val){
+	  fprintf(stderr,"Declared position didn't perfectly match request: %ld != %ld\n",
+		 (long)val,(long)ov_pcm_tell(&ov));
+	  exit(1);
+	}
+
+	_verify(&ov,-1,val,-1.,pcmlength,bigassbuffer);
+
+      }
+    }
+
+    fprintf(stderr,"\r");
+    {
+      fprintf(stderr,"testing time page seeking to random places in %f seconds....\n",
+	     timelength);
+    
+      for(i=0;i<1000;i++){
+	double val=(double)rand()/RAND_MAX*timelength;
+	fprintf(stderr,"\r\t%d [time position %f]...     ",i,val);
+	ret=ov_time_seek_page(&ov,val);
+	if(ret<0){
+	  fprintf(stderr,"seek failed: %d\n",ret);
+	  exit(1);
+	}
+
+	_verify(&ov,-1,-1,val,pcmlength,bigassbuffer);
+
+      }
+    }
+
+    fprintf(stderr,"\r");
+    {
+      fprintf(stderr,"testing time exact seeking to random places in %f seconds....\n",
+	     timelength);
+    
+      for(i=0;i<1000;i++){
+	double val=(double)rand()/RAND_MAX*timelength;
+	fprintf(stderr,"\r\t%d [time position %f]...     ",i,val);
+	ret=ov_time_seek(&ov,val);
+	if(ret<0){
+	  fprintf(stderr,"seek failed: %d\n",ret);
+	  exit(1);
+	}
+	if(ov_time_tell(&ov)<val-1 || ov_time_tell(&ov)>val+1){
+	  fprintf(stderr,"Declared position didn't perfectly match request: %f != %f\n",
+		 val,ov_time_tell(&ov));
+	  exit(1);
+	}
+
+	_verify(&ov,-1,-1,val,pcmlength,bigassbuffer);
+
+      }
+    }
+    
+    fprintf(stderr,"\r                                           \nOK.\n\n");
+
+
+  }else{
+    fprintf(stderr,"Standard input was not seekable.\n");
+  }
+
+  ov_clear(&ov);
+  return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: /libvorbis-1.2.0/examples/vorbisfile_example.c
===================================================================
--- /libvorbis-1.2.0/examples/vorbisfile_example.c	(revision 16)
+++ /libvorbis-1.2.0/examples/vorbisfile_example.c	(revision 16)
@@ -0,0 +1,87 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: simple example decoder using vorbisfile
+ last mod: $Id: vorbisfile_example.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* Takes a vorbis bitstream from stdin and writes raw stereo PCM to
+   stdout using vorbisfile. Using vorbisfile is much simpler than
+   dealing with libvorbis. */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <vorbis/codec.h>
+#include <vorbis/vorbisfile.h>
+
+#ifdef _WIN32 /* We need the following two to set stdin/stdout to binary */
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+char pcmout[4096]; /* take 4k out of the data segment, not the stack */
+
+int main(){
+  OggVorbis_File vf;
+  int eof=0;
+  int current_section;
+
+#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
+  /* Beware the evil ifdef. We avoid these where we can, but this one we 
+     cannot. Don't add any more, you'll probably go to hell if you do. */
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+  if(ov_open_callbacks(stdin, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE) < 0) {
+      fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+      exit(1);
+  }
+
+  /* Throw the comments plus a few lines about the bitstream we're
+     decoding */
+  {
+    char **ptr=ov_comment(&vf,-1)->user_comments;
+    vorbis_info *vi=ov_info(&vf,-1);
+    while(*ptr){
+      fprintf(stderr,"%s\n",*ptr);
+      ++ptr;
+    }
+    fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+    fprintf(stderr,"\nDecoded length: %ld samples\n",
+	    (long)ov_pcm_total(&vf,-1));
+    fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+  }
+  
+  while(!eof){
+    long ret=ov_read(&vf,pcmout,sizeof(pcmout),0,2,1,&current_section);
+    if (ret == 0) {
+      /* EOF */
+      eof=1;
+    } else if (ret < 0) {
+      /* error in the stream.  Not a problem, just reporting it in
+	 case we (the app) cares.  In this case, we don't. */
+    } else {
+      /* we don't bother dealing with sample rate changes, etc, but
+	 you'll have to*/
+      fwrite(pcmout,1,ret,stdout);
+    }
+  }
+
+  /* cleanup */
+  ov_clear(&vf);
+    
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
Index: /libvorbis-1.2.0/include/Makefile.am
===================================================================
--- /libvorbis-1.2.0/include/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/include/Makefile.am	(revision 16)
@@ -0,0 +1,3 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = vorbis
Index: /libvorbis-1.2.0/include/Makefile.in
===================================================================
--- /libvorbis-1.2.0/include/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/include/Makefile.in	(revision 16)
@@ -0,0 +1,506 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = include
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = vorbis
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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; } \
+	       END { 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; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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:
Index: /libvorbis-1.2.0/include/vorbis/Makefile.am
===================================================================
--- /libvorbis-1.2.0/include/vorbis/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/include/vorbis/Makefile.am	(revision 16)
@@ -0,0 +1,7 @@
+## Process this file with automake to produce Makefile.in
+
+vorbisincludedir = $(includedir)/vorbis
+
+vorbisinclude_HEADERS = codec.h vorbisfile.h vorbisenc.h
+
+
Index: /libvorbis-1.2.0/include/vorbis/Makefile.in
===================================================================
--- /libvorbis-1.2.0/include/vorbis/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/include/vorbis/Makefile.in	(revision 16)
@@ -0,0 +1,426 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = include/vorbis
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(vorbisinclude_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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)$(vorbisincludedir)"
+vorbisincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(vorbisinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+vorbisincludedir = $(includedir)/vorbis
+vorbisinclude_HEADERS = codec.h vorbisfile.h vorbisenc.h
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  include/vorbis/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  include/vorbis/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-vorbisincludeHEADERS: $(vorbisinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(vorbisincludedir)" || $(MKDIR_P) "$(DESTDIR)$(vorbisincludedir)"
+	@list='$(vorbisinclude_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(vorbisincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(vorbisincludedir)/$$f'"; \
+	  $(vorbisincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(vorbisincludedir)/$$f"; \
+	done
+
+uninstall-vorbisincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(vorbisinclude_HEADERS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(vorbisincludedir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(vorbisincludedir)/$$f"; \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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)$(vorbisincludedir)"; 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-vorbisincludeHEADERS
+
+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-vorbisincludeHEADERS
+
+.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-ps install-ps-am install-strip \
+	install-vorbisincludeHEADERS 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-vorbisincludeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/include/vorbis/codec.h
===================================================================
--- /libvorbis-1.2.0/include/vorbis/codec.h	(revision 16)
+++ /libvorbis-1.2.0/include/vorbis/codec.h	(revision 16)
@@ -0,0 +1,241 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+
+ ********************************************************************
+
+ function: libvorbis codec headers
+ last mod: $Id: codec.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _vorbis_codec_h_
+#define _vorbis_codec_h_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include <ogg/ogg.h>
+
+typedef struct vorbis_info{
+  int version;
+  int channels;
+  long rate;
+
+  /* The below bitrate declarations are *hints*.
+     Combinations of the three values carry the following implications:
+
+     all three set to the same value:
+       implies a fixed rate bitstream
+     only nominal set:
+       implies a VBR stream that averages the nominal bitrate.  No hard
+       upper/lower limit
+     upper and or lower set:
+       implies a VBR bitstream that obeys the bitrate limits. nominal
+       may also be set to give a nominal rate.
+     none set:
+       the coder does not care to speculate.
+  */
+
+  long bitrate_upper;
+  long bitrate_nominal;
+  long bitrate_lower;
+  long bitrate_window;
+
+  void *codec_setup;
+} vorbis_info;
+
+/* vorbis_dsp_state buffers the current vorbis audio
+   analysis/synthesis state.  The DSP state belongs to a specific
+   logical bitstream ****************************************************/
+typedef struct vorbis_dsp_state{
+  int analysisp;
+  vorbis_info *vi;
+
+  float **pcm;
+  float **pcmret;
+  int      pcm_storage;
+  int      pcm_current;
+  int      pcm_returned;
+
+  int  preextrapolate;
+  int  eofflag;
+
+  long lW;
+  long W;
+  long nW;
+  long centerW;
+
+  ogg_int64_t granulepos;
+  ogg_int64_t sequence;
+
+  ogg_int64_t glue_bits;
+  ogg_int64_t time_bits;
+  ogg_int64_t floor_bits;
+  ogg_int64_t res_bits;
+
+  void       *backend_state;
+} vorbis_dsp_state;
+
+typedef struct vorbis_block{
+  /* necessary stream state for linking to the framing abstraction */
+  float  **pcm;       /* this is a pointer into local storage */
+  oggpack_buffer opb;
+
+  long  lW;
+  long  W;
+  long  nW;
+  int   pcmend;
+  int   mode;
+
+  int         eofflag;
+  ogg_int64_t granulepos;
+  ogg_int64_t sequence;
+  vorbis_dsp_state *vd; /* For read-only access of configuration */
+
+  /* local storage to avoid remallocing; it's up to the mapping to
+     structure it */
+  void               *localstore;
+  long                localtop;
+  long                localalloc;
+  long                totaluse;
+  struct alloc_chain *reap;
+
+  /* bitmetrics for the frame */
+  long glue_bits;
+  long time_bits;
+  long floor_bits;
+  long res_bits;
+
+  void *internal;
+
+} vorbis_block;
+
+/* vorbis_block is a single block of data to be processed as part of
+the analysis/synthesis stream; it belongs to a specific logical
+bitstream, but is independant from other vorbis_blocks belonging to
+that logical bitstream. *************************************************/
+
+struct alloc_chain{
+  void *ptr;
+  struct alloc_chain *next;
+};
+
+/* vorbis_info contains all the setup information specific to the
+   specific compression/decompression mode in progress (eg,
+   psychoacoustic settings, channel setup, options, codebook
+   etc). vorbis_info and substructures are in backends.h.
+*********************************************************************/
+
+/* the comments are not part of vorbis_info so that vorbis_info can be
+   static storage */
+typedef struct vorbis_comment{
+  /* unlimited user comment fields.  libvorbis writes 'libvorbis'
+     whatever vendor is set to in encode */
+  char **user_comments;
+  int   *comment_lengths;
+  int    comments;
+  char  *vendor;
+
+} vorbis_comment;
+
+
+/* libvorbis encodes in two abstraction layers; first we perform DSP
+   and produce a packet (see docs/analysis.txt).  The packet is then
+   coded into a framed OggSquish bitstream by the second layer (see
+   docs/framing.txt).  Decode is the reverse process; we sync/frame
+   the bitstream and extract individual packets, then decode the
+   packet back into PCM audio.
+
+   The extra framing/packetizing is used in streaming formats, such as
+   files.  Over the net (such as with UDP), the framing and
+   packetization aren't necessary as they're provided by the transport
+   and the streaming layer is not used */
+
+/* Vorbis PRIMITIVES: general ***************************************/
+
+extern void     vorbis_info_init(vorbis_info *vi);
+extern void     vorbis_info_clear(vorbis_info *vi);
+extern int      vorbis_info_blocksize(vorbis_info *vi,int zo);
+extern void     vorbis_comment_init(vorbis_comment *vc);
+extern void     vorbis_comment_add(vorbis_comment *vc, char *comment);
+extern void     vorbis_comment_add_tag(vorbis_comment *vc,
+				       char *tag, char *contents);
+extern char    *vorbis_comment_query(vorbis_comment *vc, char *tag, int count);
+extern int      vorbis_comment_query_count(vorbis_comment *vc, char *tag);
+extern void     vorbis_comment_clear(vorbis_comment *vc);
+
+extern int      vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
+extern int      vorbis_block_clear(vorbis_block *vb);
+extern void     vorbis_dsp_clear(vorbis_dsp_state *v);
+extern double   vorbis_granule_time(vorbis_dsp_state *v,
+				    ogg_int64_t granulepos);
+
+/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
+
+extern int      vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
+extern int      vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
+extern int      vorbis_analysis_headerout(vorbis_dsp_state *v,
+					  vorbis_comment *vc,
+					  ogg_packet *op,
+					  ogg_packet *op_comm,
+					  ogg_packet *op_code);
+extern float  **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
+extern int      vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
+extern int      vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
+extern int      vorbis_analysis(vorbis_block *vb,ogg_packet *op);
+
+extern int      vorbis_bitrate_addblock(vorbis_block *vb);
+extern int      vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
+					   ogg_packet *op);
+
+/* Vorbis PRIMITIVES: synthesis layer *******************************/
+extern int      vorbis_synthesis_idheader(ogg_packet *op);
+extern int      vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
+					  ogg_packet *op);
+
+extern int      vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
+extern int      vorbis_synthesis_restart(vorbis_dsp_state *v);
+extern int      vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
+extern int      vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
+extern int      vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
+extern int      vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
+extern int      vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm);
+extern int      vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
+extern long     vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
+
+extern int      vorbis_synthesis_halfrate(vorbis_info *v,int flag);
+extern int      vorbis_synthesis_halfrate_p(vorbis_info *v);
+
+/* Vorbis ERRORS and return codes ***********************************/
+
+#define OV_FALSE      -1
+#define OV_EOF        -2
+#define OV_HOLE       -3
+
+#define OV_EREAD      -128
+#define OV_EFAULT     -129
+#define OV_EIMPL      -130
+#define OV_EINVAL     -131
+#define OV_ENOTVORBIS -132
+#define OV_EBADHEADER -133
+#define OV_EVERSION   -134
+#define OV_ENOTAUDIO  -135
+#define OV_EBADPACKET -136
+#define OV_EBADLINK   -137
+#define OV_ENOSEEK    -138
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
+
Index: /libvorbis-1.2.0/include/vorbis/vorbisenc.h
===================================================================
--- /libvorbis-1.2.0/include/vorbis/vorbisenc.h	(revision 16)
+++ /libvorbis-1.2.0/include/vorbis/vorbisenc.h	(revision 16)
@@ -0,0 +1,112 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: vorbis encode-engine setup
+ last mod: $Id: vorbisenc.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _OV_ENC_H_
+#define _OV_ENC_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include "codec.h"
+
+extern int vorbis_encode_init(vorbis_info *vi,
+			      long channels,
+			      long rate,
+
+			      long max_bitrate,
+			      long nominal_bitrate,
+			      long min_bitrate);
+
+extern int vorbis_encode_setup_managed(vorbis_info *vi,
+				       long channels,
+				       long rate,
+
+				       long max_bitrate,
+				       long nominal_bitrate,
+				       long min_bitrate);
+
+extern int vorbis_encode_setup_vbr(vorbis_info *vi,
+				  long channels,
+				  long rate,
+
+				  float quality /* quality level from 0. (lo) to 1. (hi) */
+				  );
+
+extern int vorbis_encode_init_vbr(vorbis_info *vi,
+				  long channels,
+				  long rate,
+
+				  float base_quality /* quality level from 0. (lo) to 1. (hi) */
+				  );
+
+extern int vorbis_encode_setup_init(vorbis_info *vi);
+
+extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
+
+  /* deprecated rate management supported only for compatability */
+#define OV_ECTL_RATEMANAGE_GET       0x10
+#define OV_ECTL_RATEMANAGE_SET       0x11
+#define OV_ECTL_RATEMANAGE_AVG       0x12
+#define OV_ECTL_RATEMANAGE_HARD      0x13
+
+struct ovectl_ratemanage_arg {
+  int    management_active;
+
+  long   bitrate_hard_min;
+  long   bitrate_hard_max;
+  double bitrate_hard_window;
+
+  long   bitrate_av_lo;
+  long   bitrate_av_hi;
+  double bitrate_av_window;
+  double bitrate_av_window_center;
+};
+
+
+  /* new rate setup */
+#define OV_ECTL_RATEMANAGE2_GET      0x14
+#define OV_ECTL_RATEMANAGE2_SET      0x15
+
+struct ovectl_ratemanage2_arg {
+  int    management_active;
+
+  long   bitrate_limit_min_kbps;
+  long   bitrate_limit_max_kbps;
+  long   bitrate_limit_reservoir_bits;
+  double bitrate_limit_reservoir_bias;
+
+  long   bitrate_average_kbps;
+  double bitrate_average_damping;
+};
+
+
+
+#define OV_ECTL_LOWPASS_GET          0x20
+#define OV_ECTL_LOWPASS_SET          0x21
+
+#define OV_ECTL_IBLOCK_GET           0x30
+#define OV_ECTL_IBLOCK_SET           0x31
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
+
+
Index: /libvorbis-1.2.0/include/vorbis/vorbisfile.h
===================================================================
--- /libvorbis-1.2.0/include/vorbis/vorbisfile.h	(revision 16)
+++ /libvorbis-1.2.0/include/vorbis/vorbisfile.h	(revision 16)
@@ -0,0 +1,183 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: stdio-based convenience library for opening/seeking/decoding
+ last mod: $Id: vorbisfile.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _OV_FILE_H_
+#define _OV_FILE_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include <stdio.h>
+#include "codec.h"
+
+/* The function prototypes for the callbacks are basically the same as for
+ * the stdio functions fread, fseek, fclose, ftell.
+ * The one difference is that the FILE * arguments have been replaced with
+ * a void * - this is to be used as a pointer to whatever internal data these
+ * functions might need. In the stdio case, it's just a FILE * cast to a void *
+ *
+ * If you use other functions, check the docs for these functions and return
+ * the right values. For seek_func(), you *MUST* return -1 if the stream is
+ * unseekable
+ */
+typedef struct {
+  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
+  int    (*seek_func)  (void *datasource, ogg_int64_t offset, int whence);
+  int    (*close_func) (void *datasource);
+  long   (*tell_func)  (void *datasource);
+} ov_callbacks;
+
+/* a few sets of convenient callbacks, especially for use under
+ * Windows where ov_open_callbacks() should always be used instead of
+ * ov_open() to avoid problems with incompatable crt.o version linking
+ * issues. */
+
+static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){
+  if(f==NULL)return(-1);
+  return fseek(f,off,whence);
+}
+
+static ov_callbacks OV_CALLBACKS_DEFAULT = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           _ov_header_fseek_wrap,
+  (int (*)(void *))                             fclose,
+  (long (*)(void *))                            ftell
+};
+
+static ov_callbacks OV_CALLBACKS_NOCLOSE = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           _ov_header_fseek_wrap,
+  (int (*)(void *))                             NULL,
+  (long (*)(void *))                            ftell
+};
+
+static ov_callbacks OV_CALLBACKS_STREAMONLY = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           NULL,
+  (int (*)(void *))                             fclose,
+  (long (*)(void *))                            NULL
+};
+
+static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = {
+  (size_t (*)(void *, size_t, size_t, void *))  fread,
+  (int (*)(void *, ogg_int64_t, int))           NULL,
+  (int (*)(void *))                             NULL,
+  (long (*)(void *))                            NULL
+};
+
+#define  NOTOPEN   0
+#define  PARTOPEN  1
+#define  OPENED    2
+#define  STREAMSET 3
+#define  INITSET   4
+
+typedef struct OggVorbis_File {
+  void            *datasource; /* Pointer to a FILE *, etc. */
+  int              seekable;
+  ogg_int64_t      offset;
+  ogg_int64_t      end;
+  ogg_sync_state   oy;
+
+  /* If the FILE handle isn't seekable (eg, a pipe), only the current
+     stream appears */
+  int              links;
+  ogg_int64_t     *offsets;
+  ogg_int64_t     *dataoffsets;
+  long            *serialnos;
+  ogg_int64_t     *pcmlengths; /* overloaded to maintain binary
+				  compatability; x2 size, stores both
+				  beginning and end values */
+  vorbis_info     *vi;
+  vorbis_comment  *vc;
+
+  /* Decoding working state local storage */
+  ogg_int64_t      pcm_offset;
+  int              ready_state;
+  long             current_serialno;
+  int              current_link;
+
+  double           bittrack;
+  double           samptrack;
+
+  ogg_stream_state os; /* take physical pages, weld into a logical
+                          stream of packets */
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+
+  ov_callbacks callbacks;
+
+} OggVorbis_File;
+
+
+extern int ov_clear(OggVorbis_File *vf);
+extern int ov_fopen(char *path,OggVorbis_File *vf);
+extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
+extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
+		char *initial, long ibytes, ov_callbacks callbacks);
+
+extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
+extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
+		char *initial, long ibytes, ov_callbacks callbacks);
+extern int ov_test_open(OggVorbis_File *vf);
+
+extern long ov_bitrate(OggVorbis_File *vf,int i);
+extern long ov_bitrate_instant(OggVorbis_File *vf);
+extern long ov_streams(OggVorbis_File *vf);
+extern long ov_seekable(OggVorbis_File *vf);
+extern long ov_serialnumber(OggVorbis_File *vf,int i);
+
+extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
+extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
+extern double ov_time_total(OggVorbis_File *vf,int i);
+
+extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_time_seek(OggVorbis_File *vf,double pos);
+extern int ov_time_seek_page(OggVorbis_File *vf,double pos);
+
+extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
+extern int ov_time_seek_lap(OggVorbis_File *vf,double pos);
+extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
+
+extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
+extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
+extern double ov_time_tell(OggVorbis_File *vf);
+
+extern vorbis_info *ov_info(OggVorbis_File *vf,int link);
+extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
+
+extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples,
+			  int *bitstream);
+extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
+		    int bigendianp,int word,int sgned,int *bitstream);
+extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
+
+extern int ov_halfrate(OggVorbis_File *vf,int flag);
+extern int ov_halfrate_p(OggVorbis_File *vf);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
+
+
Index: /libvorbis-1.2.0/install-sh
===================================================================
--- /libvorbis-1.2.0/install-sh	(revision 16)
+++ /libvorbis-1.2.0/install-sh	(revision 16)
@@ -0,0 +1,507 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-10-14.15
+
+# 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.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+posix_glob=
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chmodcmd=$chmodprog
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c         (ignored)
+-d         create directories instead of installing files.
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
+--help     display this help and exit.
+--version  display version info and exit.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+        shift
+        shift
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t) dstarg=$2
+	shift
+	shift
+	continue;;
+
+    -T) no_target_directory=true
+	shift
+	continue;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dstarg"; 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 "$dstarg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dstarg"
+      shift # fnord
+    fi
+    shift # arg
+    dstarg=$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 "$dstarg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dstarg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst ;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dstarg: Is a directory" >&2
+	exit 1
+      fi
+      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
+
+      case $posix_glob in
+        '')
+	  if (set -f) 2>/dev/null; then
+	    posix_glob=true
+	  else
+	    posix_glob=false
+	  fi ;;
+      esac
+
+      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"; } &&
+
+    # Now 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.
+	   {
+	     if test -f "$dst"; then
+	       $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
+	       }
+	     else
+	       :
+	     fi
+	   } &&
+
+	   # Now rename the file to the real destination.
+	   $doit $mvcmd "$dsttmp" "$dst"
+	 }
+    } || 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:
Index: /libvorbis-1.2.0/lib/Makefile.am
===================================================================
--- /libvorbis-1.2.0/lib/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/lib/Makefile.am	(revision 16)
@@ -0,0 +1,44 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = modes books
+
+INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@
+
+lib_LTLIBRARIES = libvorbis.la libvorbisfile.la libvorbisenc.la
+
+libvorbis_la_SOURCES = mdct.c smallft.c block.c envelope.c window.c lsp.c \
+			lpc.c analysis.c synthesis.c psy.c info.c \
+			floor1.c floor0.c\
+			res0.c mapping0.c registry.c codebook.c sharedbook.c\
+			lookup.c bitrate.c\
+			envelope.h lpc.h lsp.h codebook.h misc.h psy.h\
+			masking.h os.h mdct.h smallft.h highlevel.h\
+			registry.h scales.h window.h lookup.h lookup_data.h\
+			codec_internal.h backends.h bitrate.h 
+libvorbis_la_LDFLAGS = -no-undefined -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
+libvorbis_la_LIBADD = @OGG_LIBS@ @VORBIS_LIBS@
+
+libvorbisfile_la_SOURCES = vorbisfile.c
+libvorbisfile_la_LDFLAGS = -no-undefined -version-info @VF_LIB_CURRENT@:@VF_LIB_REVISION@:@VF_LIB_AGE@
+libvorbisfile_la_LIBADD = libvorbis.la
+
+libvorbisenc_la_SOURCES = vorbisenc.c 
+libvorbisenc_la_LDFLAGS = -no-undefined -version-info @VE_LIB_CURRENT@:@VE_LIB_REVISION@:@VE_LIB_AGE@
+libvorbisenc_la_LIBADD = libvorbis.la
+
+EXTRA_PROGRAMS = barkmel tone psytune
+CLEANFILES = $(EXTRA_PROGRAMS)
+
+barkmel_SOURCES = barkmel.c
+tone_SOURCES = tone.c
+psytune_SOURCES = psytune.c
+psytune_LDFLAGS = -static
+psytune_LDADD = libvorbis.la
+
+EXTRA_DIST = lookups.pl 
+
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
Index: /libvorbis-1.2.0/lib/Makefile.in
===================================================================
--- /libvorbis-1.2.0/lib/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/lib/Makefile.in	(revision 16)
@@ -0,0 +1,706 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+EXTRA_PROGRAMS = barkmel$(EXEEXT) tone$(EXEEXT) psytune$(EXEEXT)
+subdir = lib
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libvorbis_la_DEPENDENCIES =
+am_libvorbis_la_OBJECTS = mdct.lo smallft.lo block.lo envelope.lo \
+	window.lo lsp.lo lpc.lo analysis.lo synthesis.lo psy.lo \
+	info.lo floor1.lo floor0.lo res0.lo mapping0.lo registry.lo \
+	codebook.lo sharedbook.lo lookup.lo bitrate.lo
+libvorbis_la_OBJECTS = $(am_libvorbis_la_OBJECTS)
+libvorbis_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libvorbis_la_LDFLAGS) $(LDFLAGS) -o $@
+libvorbisenc_la_DEPENDENCIES = libvorbis.la
+am_libvorbisenc_la_OBJECTS = vorbisenc.lo
+libvorbisenc_la_OBJECTS = $(am_libvorbisenc_la_OBJECTS)
+libvorbisenc_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libvorbisenc_la_LDFLAGS) $(LDFLAGS) -o $@
+libvorbisfile_la_DEPENDENCIES = libvorbis.la
+am_libvorbisfile_la_OBJECTS = vorbisfile.lo
+libvorbisfile_la_OBJECTS = $(am_libvorbisfile_la_OBJECTS)
+libvorbisfile_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(libvorbisfile_la_LDFLAGS) $(LDFLAGS) -o $@
+am_barkmel_OBJECTS = barkmel.$(OBJEXT)
+barkmel_OBJECTS = $(am_barkmel_OBJECTS)
+barkmel_LDADD = $(LDADD)
+am_psytune_OBJECTS = psytune.$(OBJEXT)
+psytune_OBJECTS = $(am_psytune_OBJECTS)
+psytune_DEPENDENCIES = libvorbis.la
+psytune_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(psytune_LDFLAGS) \
+	$(LDFLAGS) -o $@
+am_tone_OBJECTS = tone.$(OBJEXT)
+tone_OBJECTS = $(am_tone_OBJECTS)
+tone_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
+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 = $(libvorbis_la_SOURCES) $(libvorbisenc_la_SOURCES) \
+	$(libvorbisfile_la_SOURCES) $(barkmel_SOURCES) \
+	$(psytune_SOURCES) $(tone_SOURCES)
+DIST_SOURCES = $(libvorbis_la_SOURCES) $(libvorbisenc_la_SOURCES) \
+	$(libvorbisfile_la_SOURCES) $(barkmel_SOURCES) \
+	$(psytune_SOURCES) $(tone_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@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = modes books
+INCLUDES = -I$(top_srcdir)/include @OGG_CFLAGS@
+lib_LTLIBRARIES = libvorbis.la libvorbisfile.la libvorbisenc.la
+libvorbis_la_SOURCES = mdct.c smallft.c block.c envelope.c window.c lsp.c \
+			lpc.c analysis.c synthesis.c psy.c info.c \
+			floor1.c floor0.c\
+			res0.c mapping0.c registry.c codebook.c sharedbook.c\
+			lookup.c bitrate.c\
+			envelope.h lpc.h lsp.h codebook.h misc.h psy.h\
+			masking.h os.h mdct.h smallft.h highlevel.h\
+			registry.h scales.h window.h lookup.h lookup_data.h\
+			codec_internal.h backends.h bitrate.h 
+
+libvorbis_la_LDFLAGS = -no-undefined -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
+libvorbis_la_LIBADD = @OGG_LIBS@ @VORBIS_LIBS@
+libvorbisfile_la_SOURCES = vorbisfile.c
+libvorbisfile_la_LDFLAGS = -no-undefined -version-info @VF_LIB_CURRENT@:@VF_LIB_REVISION@:@VF_LIB_AGE@
+libvorbisfile_la_LIBADD = libvorbis.la
+libvorbisenc_la_SOURCES = vorbisenc.c 
+libvorbisenc_la_LDFLAGS = -no-undefined -version-info @VE_LIB_CURRENT@:@VE_LIB_REVISION@:@VE_LIB_AGE@
+libvorbisenc_la_LIBADD = libvorbis.la
+CLEANFILES = $(EXTRA_PROGRAMS)
+barkmel_SOURCES = barkmel.c
+tone_SOURCES = tone.c
+psytune_SOURCES = psytune.c
+psytune_LDFLAGS = -static
+psytune_LDADD = libvorbis.la
+EXTRA_DIST = lookups.pl 
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  lib/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+	    $(LIBTOOL) --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) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+	  $(LIBTOOL) --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
+libvorbis.la: $(libvorbis_la_OBJECTS) $(libvorbis_la_DEPENDENCIES) 
+	$(libvorbis_la_LINK) -rpath $(libdir) $(libvorbis_la_OBJECTS) $(libvorbis_la_LIBADD) $(LIBS)
+libvorbisenc.la: $(libvorbisenc_la_OBJECTS) $(libvorbisenc_la_DEPENDENCIES) 
+	$(libvorbisenc_la_LINK) -rpath $(libdir) $(libvorbisenc_la_OBJECTS) $(libvorbisenc_la_LIBADD) $(LIBS)
+libvorbisfile.la: $(libvorbisfile_la_OBJECTS) $(libvorbisfile_la_DEPENDENCIES) 
+	$(libvorbisfile_la_LINK) -rpath $(libdir) $(libvorbisfile_la_OBJECTS) $(libvorbisfile_la_LIBADD) $(LIBS)
+barkmel$(EXEEXT): $(barkmel_OBJECTS) $(barkmel_DEPENDENCIES) 
+	@rm -f barkmel$(EXEEXT)
+	$(LINK) $(barkmel_OBJECTS) $(barkmel_LDADD) $(LIBS)
+psytune$(EXEEXT): $(psytune_OBJECTS) $(psytune_DEPENDENCIES) 
+	@rm -f psytune$(EXEEXT)
+	$(psytune_LINK) $(psytune_OBJECTS) $(psytune_LDADD) $(LIBS)
+tone$(EXEEXT): $(tone_OBJECTS) $(tone_DEPENDENCIES) 
+	@rm -f tone$(EXEEXT)
+	$(LINK) $(tone_OBJECTS) $(tone_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analysis.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/barkmel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitrate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/block.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/codebook.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/envelope.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floor0.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/floor1.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lpc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapping0.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdct.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psytune.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/registry.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/res0.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sharedbook.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smallft.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/synthesis.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tone.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vorbisenc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vorbisfile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.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
+
+# 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; } \
+	       END { 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; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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:
+	-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-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-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 -rf ./$(DEPDIR)
+	-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
+
+
+debug:
+	$(MAKE) all CFLAGS="@DEBUG@"
+
+profile:
+	$(MAKE) all CFLAGS="@PROFILE@"
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/lib/analysis.c
===================================================================
--- /libvorbis-1.2.0/lib/analysis.c	(revision 16)
+++ /libvorbis-1.2.0/lib/analysis.c	(revision 16)
@@ -0,0 +1,121 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: single-block PCM analysis mode dispatch
+ last mod: $Id: analysis.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "scales.h"
+#include "os.h"
+#include "misc.h"
+
+int analysis_noisy=1;
+
+/* decides between modes, dispatches to the appropriate mapping. */
+int vorbis_analysis(vorbis_block *vb, ogg_packet *op){
+  int ret,i;
+  vorbis_block_internal *vbi=vb->internal;
+
+  vb->glue_bits=0;
+  vb->time_bits=0;
+  vb->floor_bits=0;
+  vb->res_bits=0;
+
+  /* first things first.  Make sure encode is ready */
+  for(i=0;i<PACKETBLOBS;i++)
+    oggpack_reset(vbi->packetblob[i]);
+  
+  /* we only have one mapping type (0), and we let the mapping code
+     itself figure out what soft mode to use.  This allows easier
+     bitrate management */
+
+  if((ret=_mapping_P[0]->forward(vb)))
+    return(ret);
+
+  if(op){
+    if(vorbis_bitrate_managed(vb))
+      /* The app is using a bitmanaged mode... but not using the
+         bitrate management interface. */
+      return(OV_EINVAL);
+    
+    op->packet=oggpack_get_buffer(&vb->opb);
+    op->bytes=oggpack_bytes(&vb->opb);
+    op->b_o_s=0;
+    op->e_o_s=vb->eofflag;
+    op->granulepos=vb->granulepos;
+    op->packetno=vb->sequence; /* for sake of completeness */
+  }
+  return(0);
+}
+
+/* there was no great place to put this.... */
+void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,ogg_int64_t off){
+  int j;
+  FILE *of;
+  char buffer[80];
+
+  /*  if(i==5870){*/
+    sprintf(buffer,"%s_%d.m",base,i);
+    of=fopen(buffer,"w");
+    
+    if(!of)perror("failed to open data dump file");
+    
+    for(j=0;j<n;j++){
+      if(bark){
+	float b=toBARK((4000.f*j/n)+.25);
+	fprintf(of,"%f ",b);
+      }else
+	if(off!=0)
+	  fprintf(of,"%f ",(double)(j+off)/8000.);
+	else
+	  fprintf(of,"%f ",(double)j);
+      
+      if(dB){
+	float val;
+	if(v[j]==0.)
+	  val=-140.;
+	else
+	  val=todB(v+j);
+	fprintf(of,"%f\n",val);
+      }else{
+	fprintf(of,"%f\n",v[j]);
+      }
+    }
+    fclose(of);
+    /*  } */
+}
+
+void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
+		      ogg_int64_t off){
+  if(analysis_noisy)_analysis_output_always(base,i,v,n,bark,dB,off);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: /libvorbis-1.2.0/lib/backends.h
===================================================================
--- /libvorbis-1.2.0/lib/backends.h	(revision 16)
+++ /libvorbis-1.2.0/lib/backends.h	(revision 16)
@@ -0,0 +1,146 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: libvorbis backend and mapping structures; needed for 
+           static mode headers
+ last mod: $Id: backends.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* this is exposed up here because we need it for static modes.
+   Lookups for each backend aren't exposed because there's no reason
+   to do so */
+
+#ifndef _vorbis_backend_h_
+#define _vorbis_backend_h_
+
+#include "codec_internal.h"
+
+/* this would all be simpler/shorter with templates, but.... */
+/* Floor backend generic *****************************************/
+typedef struct{
+  void                   (*pack)  (vorbis_info_floor *,oggpack_buffer *);
+  vorbis_info_floor     *(*unpack)(vorbis_info *,oggpack_buffer *);
+  vorbis_look_floor     *(*look)  (vorbis_dsp_state *,vorbis_info_floor *);
+  void (*free_info) (vorbis_info_floor *);
+  void (*free_look) (vorbis_look_floor *);
+  void *(*inverse1)  (struct vorbis_block *,vorbis_look_floor *);
+  int   (*inverse2)  (struct vorbis_block *,vorbis_look_floor *,
+		     void *buffer,float *);
+} vorbis_func_floor;
+
+typedef struct{
+  int   order;
+  long  rate;
+  long  barkmap;
+
+  int   ampbits;
+  int   ampdB;
+
+  int   numbooks; /* <= 16 */
+  int   books[16];
+
+  float lessthan;     /* encode-only config setting hacks for libvorbis */
+  float greaterthan;  /* encode-only config setting hacks for libvorbis */
+
+} vorbis_info_floor0;
+
+
+#define VIF_POSIT 63
+#define VIF_CLASS 16
+#define VIF_PARTS 31
+typedef struct{
+  int   partitions;                /* 0 to 31 */
+  int   partitionclass[VIF_PARTS]; /* 0 to 15 */
+
+  int   class_dim[VIF_CLASS];        /* 1 to 8 */
+  int   class_subs[VIF_CLASS];       /* 0,1,2,3 (bits: 1<<n poss) */
+  int   class_book[VIF_CLASS];       /* subs ^ dim entries */
+  int   class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
+
+
+  int   mult;                      /* 1 2 3 or 4 */ 
+  int   postlist[VIF_POSIT+2];    /* first two implicit */ 
+
+
+  /* encode side analysis parameters */
+  float maxover;     
+  float maxunder;  
+  float maxerr;    
+
+  float twofitweight;  
+  float twofitatten;
+
+  int   n;
+
+} vorbis_info_floor1;
+
+/* Residue backend generic *****************************************/
+typedef struct{
+  void                 (*pack)  (vorbis_info_residue *,oggpack_buffer *);
+  vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
+  vorbis_look_residue *(*look)  (vorbis_dsp_state *,
+				 vorbis_info_residue *);
+  void (*free_info)    (vorbis_info_residue *);
+  void (*free_look)    (vorbis_look_residue *);
+  long **(*class)      (struct vorbis_block *,vorbis_look_residue *,
+			float **,int *,int);
+  int  (*forward)      (oggpack_buffer *,struct vorbis_block *,
+			vorbis_look_residue *,
+			float **,float **,int *,int,long **);
+  int  (*inverse)      (struct vorbis_block *,vorbis_look_residue *,
+			float **,int *,int);
+} vorbis_func_residue;
+
+typedef struct vorbis_info_residue0{
+/* block-partitioned VQ coded straight residue */
+  long  begin;
+  long  end;
+
+  /* first stage (lossless partitioning) */
+  int    grouping;         /* group n vectors per partition */
+  int    partitions;       /* possible codebooks for a partition */
+  int    groupbook;        /* huffbook for partitioning */
+  int    secondstages[64]; /* expanded out to pointers in lookup */
+  int    booklist[256];    /* list of second stage books */
+
+  float  classmetric1[64];  
+  float  classmetric2[64];  
+
+} vorbis_info_residue0;
+
+/* Mapping backend generic *****************************************/
+typedef struct{
+  void                 (*pack)  (vorbis_info *,vorbis_info_mapping *,
+				 oggpack_buffer *);
+  vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
+  void (*free_info)    (vorbis_info_mapping *);
+  int  (*forward)      (struct vorbis_block *vb);
+  int  (*inverse)      (struct vorbis_block *vb,vorbis_info_mapping *);
+} vorbis_func_mapping;
+
+typedef struct vorbis_info_mapping0{
+  int   submaps;  /* <= 16 */
+  int   chmuxlist[256];   /* up to 256 channels in a Vorbis stream */
+  
+  int   floorsubmap[16];   /* [mux] submap to floors */
+  int   residuesubmap[16]; /* [mux] submap to residue */
+
+  int   coupling_steps;
+  int   coupling_mag[256];
+  int   coupling_ang[256];
+
+} vorbis_info_mapping0;
+
+#endif
+
+
Index: /libvorbis-1.2.0/lib/barkmel.c
===================================================================
--- /libvorbis-1.2.0/lib/barkmel.c	(revision 16)
+++ /libvorbis-1.2.0/lib/barkmel.c	(revision 16)
@@ -0,0 +1,64 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: bark scale utility
+ last mod: $Id: barkmel.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdio.h>
+#include "scales.h"
+int main(){
+  int i;
+  double rate;
+  for(i=64;i<32000;i*=2){
+    rate=48000.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+    rate=44100.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+    rate=32000.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+    rate=22050.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+    rate=16000.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+    rate=11025.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+    rate=8000.f;
+    fprintf(stderr,"rate=%gHz, block=%d, f(1)=%.2gHz bark(1)=%.2g (of %.2g)\n\n",
+	    rate,i,rate/2 / (i/2),toBARK(rate/2 /(i/2)),toBARK(rate/2));
+
+
+  }
+  {
+    float i;
+    int j;
+    for(i=0.,j=0;i<28;i+=1,j++){
+      fprintf(stderr,"(%d) bark=%f %gHz (%d of 128)\n",
+              j,i,fromBARK(i),(int)(fromBARK(i)/22050.*128.));
+    }
+  }
+  return(0);
+}
+
Index: /libvorbis-1.2.0/lib/bitrate.c
===================================================================
--- /libvorbis-1.2.0/lib/bitrate.c	(revision 16)
+++ /libvorbis-1.2.0/lib/bitrate.c	(revision 16)
@@ -0,0 +1,253 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: bitrate tracking and management
+ last mod: $Id: bitrate.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "os.h"
+#include "misc.h"
+#include "bitrate.h"
+
+/* compute bitrate tracking setup  */
+void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bm){
+  codec_setup_info *ci=vi->codec_setup;
+  bitrate_manager_info *bi=&ci->bi;
+
+  memset(bm,0,sizeof(*bm));
+  
+  if(bi && (bi->reservoir_bits>0)){
+    long ratesamples=vi->rate;
+    int  halfsamples=ci->blocksizes[0]>>1;
+
+    bm->short_per_long=ci->blocksizes[1]/ci->blocksizes[0];
+    bm->managed=1;
+
+    bm->avg_bitsper= rint(1.*bi->avg_rate*halfsamples/ratesamples);
+    bm->min_bitsper= rint(1.*bi->min_rate*halfsamples/ratesamples);
+    bm->max_bitsper= rint(1.*bi->max_rate*halfsamples/ratesamples);
+    
+    bm->avgfloat=PACKETBLOBS/2;    
+
+    /* not a necessary fix, but one that leads to a more balanced
+       typical initialization */
+    {
+      long desired_fill=bi->reservoir_bits*bi->reservoir_bias;
+      bm->minmax_reservoir=desired_fill;
+      bm->avg_reservoir=desired_fill;
+    }
+
+  }    
+}
+
+void vorbis_bitrate_clear(bitrate_manager_state *bm){
+  memset(bm,0,sizeof(*bm));
+  return;
+}
+
+int vorbis_bitrate_managed(vorbis_block *vb){
+  vorbis_dsp_state      *vd=vb->vd;
+  private_state         *b=vd->backend_state; 
+  bitrate_manager_state *bm=&b->bms;
+
+  if(bm && bm->managed)return(1);
+  return(0);
+}
+
+/* finish taking in the block we just processed */
+int vorbis_bitrate_addblock(vorbis_block *vb){
+  vorbis_block_internal *vbi=vb->internal;
+  vorbis_dsp_state      *vd=vb->vd;
+  private_state         *b=vd->backend_state; 
+  bitrate_manager_state *bm=&b->bms;
+  vorbis_info           *vi=vd->vi;
+  codec_setup_info      *ci=vi->codec_setup;
+  bitrate_manager_info  *bi=&ci->bi;
+
+  int  choice=rint(bm->avgfloat);
+  long this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+  long min_target_bits=(vb->W?bm->min_bitsper*bm->short_per_long:bm->min_bitsper);
+  long max_target_bits=(vb->W?bm->max_bitsper*bm->short_per_long:bm->max_bitsper);
+  int  samples=ci->blocksizes[vb->W]>>1;
+  long desired_fill=bi->reservoir_bits*bi->reservoir_bias;
+  if(!bm->managed){
+    /* not a bitrate managed stream, but for API simplicity, we'll
+       buffer the packet to keep the code path clean */
+    
+    if(bm->vb)return(-1); /* one has been submitted without
+			     being claimed */
+    bm->vb=vb;
+    return(0);
+  }
+
+  bm->vb=vb;
+  
+  /* look ahead for avg floater */
+  if(bm->avg_bitsper>0){
+    double slew=0.;
+    long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);
+    double slewlimit= 15./bi->slew_damp;
+
+    /* choosing a new floater:
+       if we're over target, we slew down
+       if we're under target, we slew up
+
+       choose slew as follows: look through packetblobs of this frame
+       and set slew as the first in the appropriate direction that
+       gives us the slew we want.  This may mean no slew if delta is
+       already favorable.
+
+       Then limit slew to slew max */
+
+    if(bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
+      while(choice>0 && this_bits>avg_target_bits &&
+	    bm->avg_reservoir+(this_bits-avg_target_bits)>desired_fill){
+	choice--;
+	this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+      }
+    }else if(bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
+      while(choice+1<PACKETBLOBS && this_bits<avg_target_bits &&
+	    bm->avg_reservoir+(this_bits-avg_target_bits)<desired_fill){
+	choice++;
+	this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+      }
+    }
+
+    slew=rint(choice-bm->avgfloat)/samples*vi->rate;
+    if(slew<-slewlimit)slew=-slewlimit;
+    if(slew>slewlimit)slew=slewlimit;
+    choice=rint(bm->avgfloat+= slew/vi->rate*samples);
+    this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+  }
+
+
+
+  /* enforce min(if used) on the current floater (if used) */
+  if(bm->min_bitsper>0){
+    /* do we need to force the bitrate up? */
+    if(this_bits<min_target_bits){
+      while(bm->minmax_reservoir-(min_target_bits-this_bits)<0){
+	choice++;
+	if(choice>=PACKETBLOBS)break;
+	this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+      }
+    }
+  }
+  
+  /* enforce max (if used) on the current floater (if used) */
+  if(bm->max_bitsper>0){
+    /* do we need to force the bitrate down? */
+    if(this_bits>max_target_bits){
+      while(bm->minmax_reservoir+(this_bits-max_target_bits)>bi->reservoir_bits){
+	choice--;
+	if(choice<0)break;
+	this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+      }
+    }
+  }
+
+  /* Choice of packetblobs now made based on floater, and min/max
+     requirements. Now boundary check extreme choices */
+
+  if(choice<0){
+    /* choosing a smaller packetblob is insufficient to trim bitrate.
+       frame will need to be truncated */
+    long maxsize=(max_target_bits+(bi->reservoir_bits-bm->minmax_reservoir))/8;
+    bm->choice=choice=0;
+    
+    if(oggpack_bytes(vbi->packetblob[choice])>maxsize){
+      
+      oggpack_writetrunc(vbi->packetblob[choice],maxsize*8);
+      this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+    }
+  }else{
+    long minsize=(min_target_bits-bm->minmax_reservoir+7)/8;
+    if(choice>=PACKETBLOBS)
+      choice=PACKETBLOBS-1;
+
+    bm->choice=choice;
+
+    /* prop up bitrate according to demand. pad this frame out with zeroes */
+    minsize-=oggpack_bytes(vbi->packetblob[choice]);
+    while(minsize-->0)oggpack_write(vbi->packetblob[choice],0,8);
+    this_bits=oggpack_bytes(vbi->packetblob[choice])*8;
+
+  }
+
+  /* now we have the final packet and the final packet size.  Update statistics */
+  /* min and max reservoir */
+  if(bm->min_bitsper>0 || bm->max_bitsper>0){
+
+    if(max_target_bits>0 && this_bits>max_target_bits){
+      bm->minmax_reservoir+=(this_bits-max_target_bits);
+    }else if(min_target_bits>0 && this_bits<min_target_bits){
+      bm->minmax_reservoir+=(this_bits-min_target_bits);
+    }else{
+      /* inbetween; we want to take reservoir toward but not past desired_fill */
+      if(bm->minmax_reservoir>desired_fill){
+	if(max_target_bits>0){ /* logical bulletproofing against initialization state */
+	  bm->minmax_reservoir+=(this_bits-max_target_bits);
+	  if(bm->minmax_reservoir<desired_fill)bm->minmax_reservoir=desired_fill;
+	}else{
+	  bm->minmax_reservoir=desired_fill;
+	}
+      }else{
+	if(min_target_bits>0){ /* logical bulletproofing against initialization state */
+	  bm->minmax_reservoir+=(this_bits-min_target_bits);
+	  if(bm->minmax_reservoir>desired_fill)bm->minmax_reservoir=desired_fill;
+	}else{
+	  bm->minmax_reservoir=desired_fill;
+	}
+      }
+    }
+  }
+
+  /* avg reservoir */
+  if(bm->avg_bitsper>0){
+    long avg_target_bits=(vb->W?bm->avg_bitsper*bm->short_per_long:bm->avg_bitsper);    
+    bm->avg_reservoir+=this_bits-avg_target_bits;
+  }
+
+  return(0);
+}
+
+int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,ogg_packet *op){
+  private_state         *b=vd->backend_state;
+  bitrate_manager_state *bm=&b->bms;
+  vorbis_block          *vb=bm->vb;
+  int                    choice=PACKETBLOBS/2;
+  if(!vb)return 0;
+
+  if(op){
+    vorbis_block_internal *vbi=vb->internal;
+    
+    if(vorbis_bitrate_managed(vb))
+      choice=bm->choice;
+
+    op->packet=oggpack_get_buffer(vbi->packetblob[choice]);
+    op->bytes=oggpack_bytes(vbi->packetblob[choice]);
+    op->b_o_s=0;
+    op->e_o_s=vb->eofflag;
+    op->granulepos=vb->granulepos;
+    op->packetno=vb->sequence; /* for sake of completeness */
+  }
+  
+  bm->vb=0;
+  return(1);
+}
Index: /libvorbis-1.2.0/lib/bitrate.h
===================================================================
--- /libvorbis-1.2.0/lib/bitrate.h	(revision 16)
+++ /libvorbis-1.2.0/lib/bitrate.h	(revision 16)
@@ -0,0 +1,59 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: bitrate tracking and management
+ last mod: $Id: bitrate.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_BITRATE_H_
+#define _V_BITRATE_H_
+
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "os.h"
+
+/* encode side bitrate tracking */
+typedef struct bitrate_manager_state {
+  int            managed;
+
+  long           avg_reservoir;
+  long           minmax_reservoir;
+  long           avg_bitsper;
+  long           min_bitsper;
+  long           max_bitsper;
+
+  long           short_per_long;
+  double         avgfloat;
+
+  vorbis_block  *vb;
+  int            choice;
+} bitrate_manager_state;
+
+typedef struct bitrate_manager_info{
+  long           avg_rate;
+  long           min_rate;
+  long           max_rate;
+  long           reservoir_bits;
+  double         reservoir_bias;
+
+  double         slew_damp;
+
+} bitrate_manager_info;
+
+extern void vorbis_bitrate_init(vorbis_info *vi,bitrate_manager_state *bs);
+extern void vorbis_bitrate_clear(bitrate_manager_state *bs);
+extern int vorbis_bitrate_managed(vorbis_block *vb);
+extern int vorbis_bitrate_addblock(vorbis_block *vb);
+extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, ogg_packet *op);
+
+#endif
Index: /libvorbis-1.2.0/lib/block.c
===================================================================
--- /libvorbis-1.2.0/lib/block.c	(revision 16)
+++ /libvorbis-1.2.0/lib/block.c	(revision 16)
@@ -0,0 +1,993 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: PCM data vector blocking, windowing and dis/reassembly
+ last mod: $Id: block.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ Handle windowing, overlap-add, etc of the PCM vectors.  This is made
+ more amusing by Vorbis' current two allowed block sizes.
+ 
+ ********************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+
+#include "window.h"
+#include "mdct.h"
+#include "lpc.h"
+#include "registry.h"
+#include "misc.h"
+
+static int ilog2(unsigned int v){
+  int ret=0;
+  if(v)--v;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+/* pcm accumulator examples (not exhaustive):
+
+ <-------------- lW ---------------->
+                   <--------------- W ---------------->
+:            .....|.....       _______________         |
+:        .'''     |     '''_---      |       |\        |
+:.....'''         |_____--- '''......|       | \_______|
+:.................|__________________|_______|__|______|
+                  |<------ Sl ------>|      > Sr <     |endW
+                  |beginSl           |endSl  |  |endSr   
+                  |beginW            |endlW  |beginSr
+
+
+                      |< lW >|       
+                   <--------------- W ---------------->
+                  |   |  ..  ______________            |
+                  |   | '  `/        |     ---_        |
+                  |___.'___/`.       |         ---_____| 
+                  |_______|__|_______|_________________|
+                  |      >|Sl|<      |<------ Sr ----->|endW
+                  |       |  |endSl  |beginSr          |endSr
+                  |beginW |  |endlW                     
+                  mult[0] |beginSl                     mult[n]
+
+ <-------------- lW ----------------->
+                          |<--W-->|                               
+:            ..............  ___  |   |                    
+:        .'''             |`/   \ |   |                       
+:.....'''                 |/`....\|...|                    
+:.........................|___|___|___|                  
+                          |Sl |Sr |endW    
+                          |   |   |endSr
+                          |   |beginSr
+                          |   |endSl
+			  |beginSl
+			  |beginW
+*/
+
+/* block abstraction setup *********************************************/
+
+#ifndef WORD_ALIGN
+#define WORD_ALIGN 8
+#endif
+
+int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){
+  int i;
+  memset(vb,0,sizeof(*vb));
+  vb->vd=v;
+  vb->localalloc=0;
+  vb->localstore=NULL;
+  if(v->analysisp){
+    vorbis_block_internal *vbi=
+      vb->internal=_ogg_calloc(1,sizeof(vorbis_block_internal));
+    vbi->ampmax=-9999;
+
+    for(i=0;i<PACKETBLOBS;i++){
+      if(i==PACKETBLOBS/2){
+	vbi->packetblob[i]=&vb->opb;
+      }else{
+	vbi->packetblob[i]=
+	  _ogg_calloc(1,sizeof(oggpack_buffer));
+      }
+      oggpack_writeinit(vbi->packetblob[i]);
+    }    
+  }
+
+  return(0);
+}
+
+void *_vorbis_block_alloc(vorbis_block *vb,long bytes){
+  bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1);
+  if(bytes+vb->localtop>vb->localalloc){
+    /* can't just _ogg_realloc... there are outstanding pointers */
+    if(vb->localstore){
+      struct alloc_chain *link=_ogg_malloc(sizeof(*link));
+      vb->totaluse+=vb->localtop;
+      link->next=vb->reap;
+      link->ptr=vb->localstore;
+      vb->reap=link;
+    }
+    /* highly conservative */
+    vb->localalloc=bytes;
+    vb->localstore=_ogg_malloc(vb->localalloc);
+    vb->localtop=0;
+  }
+  {
+    void *ret=(void *)(((char *)vb->localstore)+vb->localtop);
+    vb->localtop+=bytes;
+    return ret;
+  }
+}
+
+/* reap the chain, pull the ripcord */
+void _vorbis_block_ripcord(vorbis_block *vb){
+  /* reap the chain */
+  struct alloc_chain *reap=vb->reap;
+  while(reap){
+    struct alloc_chain *next=reap->next;
+    _ogg_free(reap->ptr);
+    memset(reap,0,sizeof(*reap));
+    _ogg_free(reap);
+    reap=next;
+  }
+  /* consolidate storage */
+  if(vb->totaluse){
+    vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc);
+    vb->localalloc+=vb->totaluse;
+    vb->totaluse=0;
+  }
+
+  /* pull the ripcord */
+  vb->localtop=0;
+  vb->reap=NULL;
+}
+
+int vorbis_block_clear(vorbis_block *vb){
+  int i;
+  vorbis_block_internal *vbi=vb->internal;
+
+  _vorbis_block_ripcord(vb);
+  if(vb->localstore)_ogg_free(vb->localstore);
+
+  if(vbi){
+    for(i=0;i<PACKETBLOBS;i++){
+      oggpack_writeclear(vbi->packetblob[i]);
+      if(i!=PACKETBLOBS/2)_ogg_free(vbi->packetblob[i]);
+    }
+    _ogg_free(vbi);
+  }
+  memset(vb,0,sizeof(*vb));
+  return(0);
+}
+
+/* Analysis side code, but directly related to blocking.  Thus it's
+   here and not in analysis.c (which is for analysis transforms only).
+   The init is here because some of it is shared */
+
+static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){
+  int i;
+  codec_setup_info *ci=vi->codec_setup;
+  private_state *b=NULL;
+  int hs;
+
+  if(ci==NULL) return 1;
+  hs=ci->halfrate_flag; 
+
+  memset(v,0,sizeof(*v));
+  b=v->backend_state=_ogg_calloc(1,sizeof(*b));
+
+  v->vi=vi;
+  b->modebits=ilog2(ci->modes);
+
+  b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[0]));
+  b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[1]));
+
+  /* MDCT is tranform 0 */
+
+  b->transform[0][0]=_ogg_calloc(1,sizeof(mdct_lookup));
+  b->transform[1][0]=_ogg_calloc(1,sizeof(mdct_lookup));
+  mdct_init(b->transform[0][0],ci->blocksizes[0]>>hs);
+  mdct_init(b->transform[1][0],ci->blocksizes[1]>>hs);
+
+  /* Vorbis I uses only window type 0 */
+  b->window[0]=ilog2(ci->blocksizes[0])-6;
+  b->window[1]=ilog2(ci->blocksizes[1])-6;
+
+  if(encp){ /* encode/decode differ here */
+
+    /* analysis always needs an fft */
+    drft_init(&b->fft_look[0],ci->blocksizes[0]);
+    drft_init(&b->fft_look[1],ci->blocksizes[1]);
+
+    /* finish the codebooks */
+    if(!ci->fullbooks){
+      ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
+      for(i=0;i<ci->books;i++)
+	vorbis_book_init_encode(ci->fullbooks+i,ci->book_param[i]);
+    }
+
+    b->psy=_ogg_calloc(ci->psys,sizeof(*b->psy));
+    for(i=0;i<ci->psys;i++){
+      _vp_psy_init(b->psy+i,
+		   ci->psy_param[i],
+		   &ci->psy_g_param,
+		   ci->blocksizes[ci->psy_param[i]->blockflag]/2,
+		   vi->rate);
+    }
+
+    v->analysisp=1;
+  }else{
+    /* finish the codebooks */
+    if(!ci->fullbooks){
+      ci->fullbooks=_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
+      for(i=0;i<ci->books;i++){
+	vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]);
+	/* decode codebooks are now standalone after init */
+	vorbis_staticbook_destroy(ci->book_param[i]);
+	ci->book_param[i]=NULL;
+      }
+    }
+  }
+
+  /* initialize the storage vectors. blocksize[1] is small for encode,
+     but the correct size for decode */
+  v->pcm_storage=ci->blocksizes[1];
+  v->pcm=_ogg_malloc(vi->channels*sizeof(*v->pcm));
+  v->pcmret=_ogg_malloc(vi->channels*sizeof(*v->pcmret));
+  {
+    int i;
+    for(i=0;i<vi->channels;i++)
+      v->pcm[i]=_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i]));
+  }
+
+  /* all 1 (large block) or 0 (small block) */
+  /* explicitly set for the sake of clarity */
+  v->lW=0; /* previous window size */
+  v->W=0;  /* current window size */
+
+  /* all vector indexes */
+  v->centerW=ci->blocksizes[1]/2;
+
+  v->pcm_current=v->centerW;
+
+  /* initialize all the backend lookups */
+  b->flr=_ogg_calloc(ci->floors,sizeof(*b->flr));
+  b->residue=_ogg_calloc(ci->residues,sizeof(*b->residue));
+
+  for(i=0;i<ci->floors;i++)
+    b->flr[i]=_floor_P[ci->floor_type[i]]->
+      look(v,ci->floor_param[i]);
+
+  for(i=0;i<ci->residues;i++)
+    b->residue[i]=_residue_P[ci->residue_type[i]]->
+      look(v,ci->residue_param[i]);    
+
+  return 0;
+}
+
+/* arbitrary settings and spec-mandated numbers get filled in here */
+int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi){
+  private_state *b=NULL;
+
+  if(_vds_shared_init(v,vi,1))return 1;
+  b=v->backend_state;
+  b->psy_g_look=_vp_global_look(vi);
+
+  /* Initialize the envelope state storage */
+  b->ve=_ogg_calloc(1,sizeof(*b->ve));
+  _ve_envelope_init(b->ve,vi);
+
+  vorbis_bitrate_init(vi,&b->bms);
+
+  /* compressed audio packets start after the headers
+     with sequence number 3 */
+  v->sequence=3;
+
+  return(0);
+}
+
+void vorbis_dsp_clear(vorbis_dsp_state *v){
+  int i;
+  if(v){
+    vorbis_info *vi=v->vi;
+    codec_setup_info *ci=(vi?vi->codec_setup:NULL);
+    private_state *b=v->backend_state;
+
+    if(b){
+	
+      if(b->ve){
+	_ve_envelope_clear(b->ve);
+	_ogg_free(b->ve);
+      }
+
+      if(b->transform[0]){
+	mdct_clear(b->transform[0][0]);
+	_ogg_free(b->transform[0][0]);
+	_ogg_free(b->transform[0]);
+      }
+      if(b->transform[1]){
+	mdct_clear(b->transform[1][0]);
+	_ogg_free(b->transform[1][0]);
+	_ogg_free(b->transform[1]);
+      }
+
+      if(b->flr){
+	if(ci)
+	  for(i=0;i<ci->floors;i++)
+	    _floor_P[ci->floor_type[i]]->
+	      free_look(b->flr[i]);
+	_ogg_free(b->flr);
+      }
+      if(b->residue){
+	if(ci)
+	  for(i=0;i<ci->residues;i++)
+	    _residue_P[ci->residue_type[i]]->
+	      free_look(b->residue[i]);
+	_ogg_free(b->residue);
+      }
+      if(b->psy){
+	if(ci)
+	  for(i=0;i<ci->psys;i++)
+	    _vp_psy_clear(b->psy+i);
+	_ogg_free(b->psy);
+      }
+
+      if(b->psy_g_look)_vp_global_free(b->psy_g_look);
+      vorbis_bitrate_clear(&b->bms);
+
+      drft_clear(&b->fft_look[0]);
+      drft_clear(&b->fft_look[1]);
+
+    }
+    
+    if(v->pcm){
+      if(vi)
+	for(i=0;i<vi->channels;i++)
+	  if(v->pcm[i])_ogg_free(v->pcm[i]);
+      _ogg_free(v->pcm);
+      if(v->pcmret)_ogg_free(v->pcmret);
+    }
+
+    if(b){
+      /* free header, header1, header2 */
+      if(b->header)_ogg_free(b->header);
+      if(b->header1)_ogg_free(b->header1);
+      if(b->header2)_ogg_free(b->header2);
+      _ogg_free(b);
+    }
+    
+    memset(v,0,sizeof(*v));
+  }
+}
+
+float **vorbis_analysis_buffer(vorbis_dsp_state *v, int vals){
+  int i;
+  vorbis_info *vi=v->vi;
+  private_state *b=v->backend_state;
+
+  /* free header, header1, header2 */
+  if(b->header)_ogg_free(b->header);b->header=NULL;
+  if(b->header1)_ogg_free(b->header1);b->header1=NULL;
+  if(b->header2)_ogg_free(b->header2);b->header2=NULL;
+
+  /* Do we have enough storage space for the requested buffer? If not,
+     expand the PCM (and envelope) storage */
+    
+  if(v->pcm_current+vals>=v->pcm_storage){
+    v->pcm_storage=v->pcm_current+vals*2;
+   
+    for(i=0;i<vi->channels;i++){
+      v->pcm[i]=_ogg_realloc(v->pcm[i],v->pcm_storage*sizeof(*v->pcm[i]));
+    }
+  }
+
+  for(i=0;i<vi->channels;i++)
+    v->pcmret[i]=v->pcm[i]+v->pcm_current;
+    
+  return(v->pcmret);
+}
+
+static void _preextrapolate_helper(vorbis_dsp_state *v){
+  int i;
+  int order=32;
+  float *lpc=alloca(order*sizeof(*lpc));
+  float *work=alloca(v->pcm_current*sizeof(*work));
+  long j;
+  v->preextrapolate=1;
+
+  if(v->pcm_current-v->centerW>order*2){ /* safety */
+    for(i=0;i<v->vi->channels;i++){
+      /* need to run the extrapolation in reverse! */
+      for(j=0;j<v->pcm_current;j++)
+	work[j]=v->pcm[i][v->pcm_current-j-1];
+      
+      /* prime as above */
+      vorbis_lpc_from_data(work,lpc,v->pcm_current-v->centerW,order);
+      
+      /* run the predictor filter */
+      vorbis_lpc_predict(lpc,work+v->pcm_current-v->centerW-order,
+			 order,
+			 work+v->pcm_current-v->centerW,
+			 v->centerW);
+
+      for(j=0;j<v->pcm_current;j++)
+	v->pcm[i][v->pcm_current-j-1]=work[j];
+
+    }
+  }
+}
+
+
+/* call with val<=0 to set eof */
+
+int vorbis_analysis_wrote(vorbis_dsp_state *v, int vals){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+
+  if(vals<=0){
+    int order=32;
+    int i;
+    float *lpc=alloca(order*sizeof(*lpc));
+
+    /* if it wasn't done earlier (very short sample) */
+    if(!v->preextrapolate)
+      _preextrapolate_helper(v);
+
+    /* We're encoding the end of the stream.  Just make sure we have
+       [at least] a few full blocks of zeroes at the end. */
+    /* actually, we don't want zeroes; that could drop a large
+       amplitude off a cliff, creating spread spectrum noise that will
+       suck to encode.  Extrapolate for the sake of cleanliness. */
+
+    vorbis_analysis_buffer(v,ci->blocksizes[1]*3); 
+    v->eofflag=v->pcm_current;
+    v->pcm_current+=ci->blocksizes[1]*3;
+
+    for(i=0;i<vi->channels;i++){
+      if(v->eofflag>order*2){
+	/* extrapolate with LPC to fill in */
+	long n;
+
+	/* make a predictor filter */
+	n=v->eofflag;
+	if(n>ci->blocksizes[1])n=ci->blocksizes[1];
+	vorbis_lpc_from_data(v->pcm[i]+v->eofflag-n,lpc,n,order);
+
+	/* run the predictor filter */
+	vorbis_lpc_predict(lpc,v->pcm[i]+v->eofflag-order,order,
+			   v->pcm[i]+v->eofflag,v->pcm_current-v->eofflag);
+      }else{
+	/* not enough data to extrapolate (unlikely to happen due to
+           guarding the overlap, but bulletproof in case that
+           assumtion goes away). zeroes will do. */
+	memset(v->pcm[i]+v->eofflag,0,
+	       (v->pcm_current-v->eofflag)*sizeof(*v->pcm[i]));
+
+      }
+    }
+  }else{
+
+    if(v->pcm_current+vals>v->pcm_storage)
+      return(OV_EINVAL);
+
+    v->pcm_current+=vals;
+
+    /* we may want to reverse extrapolate the beginning of a stream
+       too... in case we're beginning on a cliff! */
+    /* clumsy, but simple.  It only runs once, so simple is good. */
+    if(!v->preextrapolate && v->pcm_current-v->centerW>ci->blocksizes[1])
+      _preextrapolate_helper(v);
+
+  }
+  return(0);
+}
+
+/* do the deltas, envelope shaping, pre-echo and determine the size of
+   the next block on which to continue analysis */
+int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb){
+  int i;
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  private_state *b=v->backend_state;
+  vorbis_look_psy_global *g=b->psy_g_look;
+  long beginW=v->centerW-ci->blocksizes[v->W]/2,centerNext;
+  vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
+
+  /* check to see if we're started... */
+  if(!v->preextrapolate)return(0);
+
+  /* check to see if we're done... */
+  if(v->eofflag==-1)return(0);
+
+  /* By our invariant, we have lW, W and centerW set.  Search for
+     the next boundary so we can determine nW (the next window size)
+     which lets us compute the shape of the current block's window */
+
+  /* we do an envelope search even on a single blocksize; we may still
+     be throwing more bits at impulses, and envelope search handles
+     marking impulses too. */
+  {  
+    long bp=_ve_envelope_search(v);
+    if(bp==-1){
+
+      if(v->eofflag==0)return(0); /* not enough data currently to search for a
+				     full long block */
+      v->nW=0;
+    }else{
+
+      if(ci->blocksizes[0]==ci->blocksizes[1])
+	v->nW=0;
+      else
+	v->nW=bp;
+    }
+  }
+
+  centerNext=v->centerW+ci->blocksizes[v->W]/4+ci->blocksizes[v->nW]/4;
+
+  {
+    /* center of next block + next block maximum right side. */
+
+    long blockbound=centerNext+ci->blocksizes[v->nW]/2;
+    if(v->pcm_current<blockbound)return(0); /* not enough data yet;
+                                               although this check is
+                                               less strict that the
+                                               _ve_envelope_search,
+                                               the search is not run
+                                               if we only use one
+                                               block size */
+
+
+  }
+  
+  /* fill in the block.  Note that for a short window, lW and nW are *short*
+     regardless of actual settings in the stream */
+
+  _vorbis_block_ripcord(vb);
+  vb->lW=v->lW;
+  vb->W=v->W;
+  vb->nW=v->nW;
+
+  if(v->W){
+    if(!v->lW || !v->nW){
+      vbi->blocktype=BLOCKTYPE_TRANSITION;
+      /*fprintf(stderr,"-");*/
+    }else{
+      vbi->blocktype=BLOCKTYPE_LONG;
+      /*fprintf(stderr,"_");*/
+    }
+  }else{
+    if(_ve_envelope_mark(v)){
+      vbi->blocktype=BLOCKTYPE_IMPULSE;
+      /*fprintf(stderr,"|");*/
+
+    }else{
+      vbi->blocktype=BLOCKTYPE_PADDING;
+      /*fprintf(stderr,".");*/
+
+    }
+  }
+ 
+  vb->vd=v;
+  vb->sequence=v->sequence++;
+  vb->granulepos=v->granulepos;
+  vb->pcmend=ci->blocksizes[v->W];
+  
+  /* copy the vectors; this uses the local storage in vb */
+
+  /* this tracks 'strongest peak' for later psychoacoustics */
+  /* moved to the global psy state; clean this mess up */
+  if(vbi->ampmax>g->ampmax)g->ampmax=vbi->ampmax;
+  g->ampmax=_vp_ampmax_decay(g->ampmax,v);
+  vbi->ampmax=g->ampmax;
+  
+  vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
+  vbi->pcmdelay=_vorbis_block_alloc(vb,sizeof(*vbi->pcmdelay)*vi->channels);
+  for(i=0;i<vi->channels;i++){
+    vbi->pcmdelay[i]=
+      _vorbis_block_alloc(vb,(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
+    memcpy(vbi->pcmdelay[i],v->pcm[i],(vb->pcmend+beginW)*sizeof(*vbi->pcmdelay[i]));
+    vb->pcm[i]=vbi->pcmdelay[i]+beginW;
+    
+    /* before we added the delay 
+       vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
+       memcpy(vb->pcm[i],v->pcm[i]+beginW,ci->blocksizes[v->W]*sizeof(*vb->pcm[i]));
+    */
+    
+  }
+  
+  /* handle eof detection: eof==0 means that we've not yet received EOF
+                           eof>0  marks the last 'real' sample in pcm[]
+                           eof<0  'no more to do'; doesn't get here */
+
+  if(v->eofflag){
+    if(v->centerW>=v->eofflag){
+      v->eofflag=-1;
+      vb->eofflag=1;
+      return(1);
+    }
+  }
+
+  /* advance storage vectors and clean up */
+  {
+    int new_centerNext=ci->blocksizes[1]/2;
+    int movementW=centerNext-new_centerNext;
+
+    if(movementW>0){
+
+      _ve_envelope_shift(b->ve,movementW);
+      v->pcm_current-=movementW;
+      
+      for(i=0;i<vi->channels;i++)
+	memmove(v->pcm[i],v->pcm[i]+movementW,
+		v->pcm_current*sizeof(*v->pcm[i]));
+      
+      
+      v->lW=v->W;
+      v->W=v->nW;
+      v->centerW=new_centerNext;
+      
+      if(v->eofflag){
+	v->eofflag-=movementW;
+	if(v->eofflag<=0)v->eofflag=-1;
+	/* do not add padding to end of stream! */
+	if(v->centerW>=v->eofflag){
+	  v->granulepos+=movementW-(v->centerW-v->eofflag);
+	}else{
+	  v->granulepos+=movementW;
+	}
+      }else{
+	v->granulepos+=movementW;
+      }
+    }
+  }
+
+  /* done */
+  return(1);
+}
+
+int vorbis_synthesis_restart(vorbis_dsp_state *v){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci;
+  int hs;
+
+  if(!v->backend_state)return -1;
+  if(!vi)return -1;
+  ci=vi->codec_setup;
+  if(!ci)return -1;
+  hs=ci->halfrate_flag; 
+
+  v->centerW=ci->blocksizes[1]>>(hs+1);
+  v->pcm_current=v->centerW>>hs;
+  
+  v->pcm_returned=-1;
+  v->granulepos=-1;
+  v->sequence=-1;
+  v->eofflag=0;
+  ((private_state *)(v->backend_state))->sample_count=-1;
+
+  return(0);
+}
+
+int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
+  if(_vds_shared_init(v,vi,0)) return 1;
+  vorbis_synthesis_restart(v);
+
+  return 0;
+}
+
+/* Unlike in analysis, the window is only partially applied for each
+   block.  The time domain envelope is not yet handled at the point of
+   calling (as it relies on the previous block). */
+
+int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  private_state *b=v->backend_state;
+  int hs=ci->halfrate_flag; 
+  int i,j;
+
+  if(!vb)return(OV_EINVAL);
+  if(v->pcm_current>v->pcm_returned  && v->pcm_returned!=-1)return(OV_EINVAL);
+    
+  v->lW=v->W;
+  v->W=vb->W;
+  v->nW=-1;
+  
+  if((v->sequence==-1)||
+     (v->sequence+1 != vb->sequence)){
+    v->granulepos=-1; /* out of sequence; lose count */
+    b->sample_count=-1;
+  }
+
+  v->sequence=vb->sequence;
+  
+  if(vb->pcm){  /* no pcm to process if vorbis_synthesis_trackonly 
+		   was called on block */
+    int n=ci->blocksizes[v->W]>>(hs+1);
+    int n0=ci->blocksizes[0]>>(hs+1);
+    int n1=ci->blocksizes[1]>>(hs+1);
+
+    int thisCenter;
+    int prevCenter;
+    
+    v->glue_bits+=vb->glue_bits;
+    v->time_bits+=vb->time_bits;
+    v->floor_bits+=vb->floor_bits;
+    v->res_bits+=vb->res_bits;
+    
+    if(v->centerW){
+      thisCenter=n1;
+      prevCenter=0;
+    }else{
+      thisCenter=0;
+      prevCenter=n1;
+    }
+    
+    /* v->pcm is now used like a two-stage double buffer.  We don't want
+       to have to constantly shift *or* adjust memory usage.  Don't
+       accept a new block until the old is shifted out */
+    
+    for(j=0;j<vi->channels;j++){
+      /* the overlap/add section */
+      if(v->lW){
+	if(v->W){
+	  /* large/large */
+	  float *w=_vorbis_window_get(b->window[1]-hs);
+	  float *pcm=v->pcm[j]+prevCenter;
+	  float *p=vb->pcm[j];
+	  for(i=0;i<n1;i++)
+	    pcm[i]=pcm[i]*w[n1-i-1] + p[i]*w[i];
+	}else{
+	  /* large/small */
+	  float *w=_vorbis_window_get(b->window[0]-hs);
+	  float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
+	  float *p=vb->pcm[j];
+	  for(i=0;i<n0;i++)
+	    pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+	}
+      }else{
+	if(v->W){
+	  /* small/large */
+	  float *w=_vorbis_window_get(b->window[0]-hs);
+	  float *pcm=v->pcm[j]+prevCenter;
+	  float *p=vb->pcm[j]+n1/2-n0/2;
+	  for(i=0;i<n0;i++)
+	    pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+	  for(;i<n1/2+n0/2;i++)
+	    pcm[i]=p[i];
+	}else{
+	  /* small/small */
+	  float *w=_vorbis_window_get(b->window[0]-hs);
+	  float *pcm=v->pcm[j]+prevCenter;
+	  float *p=vb->pcm[j];
+	  for(i=0;i<n0;i++)
+	    pcm[i]=pcm[i]*w[n0-i-1] +p[i]*w[i];
+	}
+      }
+      
+      /* the copy section */
+      {
+	float *pcm=v->pcm[j]+thisCenter;
+	float *p=vb->pcm[j]+n;
+	for(i=0;i<n;i++)
+	  pcm[i]=p[i];
+      }
+    }
+    
+    if(v->centerW)
+      v->centerW=0;
+    else
+      v->centerW=n1;
+    
+    /* deal with initial packet state; we do this using the explicit
+       pcm_returned==-1 flag otherwise we're sensitive to first block
+       being short or long */
+    
+    if(v->pcm_returned==-1){
+      v->pcm_returned=thisCenter;
+      v->pcm_current=thisCenter;
+    }else{
+      v->pcm_returned=prevCenter;
+      v->pcm_current=prevCenter+
+	((ci->blocksizes[v->lW]/4+
+	ci->blocksizes[v->W]/4)>>hs);
+    }
+    
+  }
+
+  /* track the frame number... This is for convenience, but also
+     making sure our last packet doesn't end with added padding.  If
+     the last packet is partial, the number of samples we'll have to
+     return will be past the vb->granulepos.
+     
+     This is not foolproof!  It will be confused if we begin
+     decoding at the last page after a seek or hole.  In that case,
+     we don't have a starting point to judge where the last frame
+     is.  For this reason, vorbisfile will always try to make sure
+     it reads the last two marked pages in proper sequence */
+
+  if(b->sample_count==-1){
+    b->sample_count=0;
+  }else{
+    b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
+  }
+  
+  if(v->granulepos==-1){
+    if(vb->granulepos!=-1){ /* only set if we have a position to set to */
+
+      v->granulepos=vb->granulepos;
+
+      /* is this a short page? */
+      if(b->sample_count>v->granulepos){
+	/* corner case; if this is both the first and last audio page,
+	   then spec says the end is cut, not beginning */
+	if(vb->eofflag){
+	  /* trim the end */
+	  /* no preceeding granulepos; assume we started at zero (we'd
+	     have to in a short single-page stream) */
+	  /* granulepos could be -1 due to a seek, but that would result
+	     in a long count, not short count */
+	  
+	  v->pcm_current-=(b->sample_count-v->granulepos)>>hs;
+	}else{
+	  /* trim the beginning */
+	  v->pcm_returned+=(b->sample_count-v->granulepos)>>hs;
+	  if(v->pcm_returned>v->pcm_current)
+	    v->pcm_returned=v->pcm_current;
+	}
+
+      }
+
+    }
+  }else{
+    v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
+    if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){
+      
+      if(v->granulepos>vb->granulepos){
+	long extra=v->granulepos-vb->granulepos;
+
+	if(extra)
+	  if(vb->eofflag){
+	    /* partial last frame.  Strip the extra samples off */
+	    v->pcm_current-=extra>>hs;
+	  } /* else {Shouldn't happen *unless* the bitstream is out of
+	       spec.  Either way, believe the bitstream } */
+      } /* else {Shouldn't happen *unless* the bitstream is out of
+	   spec.  Either way, believe the bitstream } */
+      v->granulepos=vb->granulepos;
+    }
+  }
+  
+  /* Update, cleanup */
+  
+  if(vb->eofflag)v->eofflag=1;
+  return(0);
+  
+}
+
+/* pcm==NULL indicates we just want the pending samples, no more */
+int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm){
+  vorbis_info *vi=v->vi;
+
+  if(v->pcm_returned>-1 && v->pcm_returned<v->pcm_current){
+    if(pcm){
+      int i;
+      for(i=0;i<vi->channels;i++)
+	v->pcmret[i]=v->pcm[i]+v->pcm_returned;
+      *pcm=v->pcmret;
+    }
+    return(v->pcm_current-v->pcm_returned);
+  }
+  return(0);
+}
+
+int vorbis_synthesis_read(vorbis_dsp_state *v,int n){
+  if(n && v->pcm_returned+n>v->pcm_current)return(OV_EINVAL);
+  v->pcm_returned+=n;
+  return(0);
+}
+
+/* intended for use with a specific vorbisfile feature; we want access
+   to the [usually synthetic/postextrapolated] buffer and lapping at
+   the end of a decode cycle, specifically, a half-short-block worth.
+   This funtion works like pcmout above, except it will also expose
+   this implicit buffer data not normally decoded. */
+int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  int hs=ci->halfrate_flag; 
+  
+  int n=ci->blocksizes[v->W]>>(hs+1);
+  int n0=ci->blocksizes[0]>>(hs+1);
+  int n1=ci->blocksizes[1]>>(hs+1);
+  int i,j;
+
+  if(v->pcm_returned<0)return 0;
+
+  /* our returned data ends at pcm_returned; because the synthesis pcm
+     buffer is a two-fragment ring, that means our data block may be
+     fragmented by buffering, wrapping or a short block not filling
+     out a buffer.  To simplify things, we unfragment if it's at all
+     possibly needed. Otherwise, we'd need to call lapout more than
+     once as well as hold additional dsp state.  Opt for
+     simplicity. */
+
+  /* centerW was advanced by blockin; it would be the center of the
+     *next* block */
+  if(v->centerW==n1){
+    /* the data buffer wraps; swap the halves */
+    /* slow, sure, small */
+    for(j=0;j<vi->channels;j++){
+      float *p=v->pcm[j];
+      for(i=0;i<n1;i++){
+	float temp=p[i];
+	p[i]=p[i+n1];
+	p[i+n1]=temp;
+      }
+    }
+
+    v->pcm_current-=n1;
+    v->pcm_returned-=n1;
+    v->centerW=0;
+  }
+  
+  /* solidify buffer into contiguous space */
+  if((v->lW^v->W)==1){
+    /* long/short or short/long */
+    for(j=0;j<vi->channels;j++){
+      float *s=v->pcm[j];
+      float *d=v->pcm[j]+(n1-n0)/2;
+      for(i=(n1+n0)/2-1;i>=0;--i)
+	d[i]=s[i];
+    }
+    v->pcm_returned+=(n1-n0)/2;
+    v->pcm_current+=(n1-n0)/2;
+  }else{
+    if(v->lW==0){
+      /* short/short */
+      for(j=0;j<vi->channels;j++){
+	float *s=v->pcm[j];
+	float *d=v->pcm[j]+n1-n0;
+	for(i=n0-1;i>=0;--i)
+	  d[i]=s[i];
+      }
+      v->pcm_returned+=n1-n0;
+      v->pcm_current+=n1-n0;
+    }
+  }
+    
+  if(pcm){
+    int i;
+    for(i=0;i<vi->channels;i++)
+      v->pcmret[i]=v->pcm[i]+v->pcm_returned;
+    *pcm=v->pcmret;
+  }
+
+  return(n1+n-v->pcm_returned);
+
+}
+
+float *vorbis_window(vorbis_dsp_state *v,int W){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  int hs=ci->halfrate_flag; 
+  private_state *b=v->backend_state;
+
+  if(b->window[W]-1<0)return NULL;
+  return _vorbis_window_get(b->window[W]-hs);
+}
+	
Index: /libvorbis-1.2.0/lib/books/Makefile.am
===================================================================
--- /libvorbis-1.2.0/lib/books/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/lib/books/Makefile.am	(revision 16)
@@ -0,0 +1,3 @@
+## Process this file with automake to produce Makefile.in
+
+SUBDIRS = coupled uncoupled floor
Index: /libvorbis-1.2.0/lib/books/Makefile.in
===================================================================
--- /libvorbis-1.2.0/lib/books/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/lib/books/Makefile.in	(revision 16)
@@ -0,0 +1,506 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = lib/books
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/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@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = coupled uncoupled floor
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/books/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  lib/books/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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; } \
+	       END { 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; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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:
Index: /libvorbis-1.2.0/lib/books/coupled/Makefile.am
===================================================================
--- /libvorbis-1.2.0/lib/books/coupled/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/lib/books/coupled/Makefile.am	(revision 16)
@@ -0,0 +1,3 @@
+## Process this file with automake to produce Makefile.in
+
+EXTRA_DIST = res_books_stereo.h
Index: /libvorbis-1.2.0/lib/books/coupled/Makefile.in
===================================================================
--- /libvorbis-1.2.0/lib/books/coupled/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/lib/books/coupled/Makefile.in	(revision 16)
@@ -0,0 +1,347 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = lib/books/coupled
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = res_books_stereo.h
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/books/coupled/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  lib/books/coupled/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+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
+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-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-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:
Index: /libvorbis-1.2.0/lib/books/coupled/res_books_stereo.h
===================================================================
--- /libvorbis-1.2.0/lib/books/coupled/res_books_stereo.h	(revision 16)
+++ /libvorbis-1.2.0/lib/books/coupled/res_books_stereo.h	(revision 16)
@@ -0,0 +1,20681 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: static codebooks autogenerated by huff/huffbuld
+ last modified: $Id: res_books_stereo.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "codebook.h"
+static long _vq_quantlist__16c0_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c0_s_p1_0[] = {
+	 1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0,
+	 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+	 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
+	 0, 0, 0, 9, 9,12, 0, 0, 0, 0, 0, 0,10,12,11, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
+	 0, 0, 0, 0, 9,12,10, 0, 0, 0, 0, 0, 0,10,11,12,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
+	 0, 0, 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,12,11, 0,
+	 0, 0, 0, 0, 0, 9,10,12, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,12,
+	 0, 0, 0, 0, 0, 0, 9,12, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c0_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16c0_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p1_0 = {
+	_vq_quantthresh__16c0_s_p1_0,
+	_vq_quantmap__16c0_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _16c0_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__16c0_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16c0_s_p1_0,
+	NULL,
+	&_vq_auxt__16c0_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16c0_s_p3_0[] = {
+	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 7, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 6, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c0_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16c0_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p3_0 = {
+	_vq_quantthresh__16c0_s_p3_0,
+	_vq_quantmap__16c0_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _16c0_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__16c0_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16c0_s_p3_0,
+	NULL,
+	&_vq_auxt__16c0_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16c0_s_p4_0[] = {
+	 1, 3, 2, 7, 8, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c0_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16c0_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p4_0 = {
+	_vq_quantthresh__16c0_s_p4_0,
+	_vq_quantmap__16c0_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _16c0_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__16c0_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16c0_s_p4_0,
+	NULL,
+	&_vq_auxt__16c0_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16c0_s_p5_0[] = {
+	 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+	 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7,
+	 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0,
+	 8, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__16c0_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16c0_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p5_0 = {
+	_vq_quantthresh__16c0_s_p5_0,
+	_vq_quantmap__16c0_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _16c0_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__16c0_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16c0_s_p5_0,
+	NULL,
+	&_vq_auxt__16c0_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__16c0_s_p6_0[] = {
+	 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
+	11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+	11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+	10,11,11,12,12,12,13, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10,10,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,11,11,12,12,13,13,13,14, 0, 0, 0, 0, 0,
+	10,10,10,11,11,11,12,12,13,13,13,14, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,13,13,14,14, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,12,12,13,13,14,15,14, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,14,14,15,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,13,14,
+	14,
+};
+
+static float _vq_quantthresh__16c0_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__16c0_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p6_0 = {
+	_vq_quantthresh__16c0_s_p6_0,
+	_vq_quantmap__16c0_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _16c0_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__16c0_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__16c0_s_p6_0,
+	NULL,
+	&_vq_auxt__16c0_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c0_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,11,10,10,11,
+	11,10, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
+	11,11,11,10, 6, 9, 9,11,12,12,11, 9, 9, 6, 9,10,
+	11,12,12,11, 9,10, 7,11,11,11,11,11,12,13,12, 6,
+	 9,10,11,10,10,12,13,13, 6,10, 9,11,10,10,11,12,
+	13,
+};
+
+static float _vq_quantthresh__16c0_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__16c0_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p7_0 = {
+	_vq_quantthresh__16c0_s_p7_0,
+	_vq_quantmap__16c0_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _16c0_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__16c0_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__16c0_s_p7_0,
+	NULL,
+	&_vq_auxt__16c0_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16c0_s_p7_1[] = {
+	 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7,
+	 8, 8, 8, 9, 9, 9,10,10,10, 6, 7, 8, 8, 8, 8, 9,
+	 8,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 7,
+	 7, 8, 8, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9, 9,
+	 9, 9,11,11,11, 8, 8, 9, 9, 9, 9, 9,10,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9,10,11,11,11,10,11, 9, 9, 9,
+	 9,10, 9,11,11,11,10,11,10,10, 9, 9,10,10,11,11,
+	11,11,11, 9, 9, 9, 9,10,10,
+};
+
+static float _vq_quantthresh__16c0_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16c0_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p7_1 = {
+	_vq_quantthresh__16c0_s_p7_1,
+	_vq_quantmap__16c0_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _16c0_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__16c0_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16c0_s_p7_1,
+	NULL,
+	&_vq_auxt__16c0_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16c0_s_p8_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8,10,10, 6, 5, 6,
+	 8, 8, 8, 8, 8, 8, 8, 9,10,10, 7, 6, 6, 8, 8, 8,
+	 8, 8, 8, 8, 8,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9,
+	 9,10,10,10, 0, 9, 8, 8, 8, 9, 9, 8, 8, 9, 9,10,
+	10, 0,12,11, 8, 8, 9, 9, 9, 9,10,10,11,10, 0,12,
+	13, 8, 8, 9,10, 9, 9,11,11,11,12, 0, 0, 0, 8, 8,
+	 8, 8,10, 9,12,13,12,14, 0, 0, 0, 8, 8, 8, 9,10,
+	10,12,12,13,14, 0, 0, 0,13,13, 9, 9,11,11, 0, 0,
+	14, 0, 0, 0, 0,14,14,10,10,12,11,12,14,14,14, 0,
+	 0, 0, 0, 0,11,11,13,13,14,13,14,14, 0, 0, 0, 0,
+	 0,12,13,13,12,13,14,14,14,
+};
+
+static float _vq_quantthresh__16c0_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__16c0_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p8_0 = {
+	_vq_quantthresh__16c0_s_p8_0,
+	_vq_quantmap__16c0_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _16c0_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__16c0_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__16c0_s_p8_0,
+	NULL,
+	&_vq_auxt__16c0_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16c0_s_p8_1[] = {
+	 1, 4, 3, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 5, 5, 7,
+	 7, 7, 6, 6, 7, 7, 7, 6, 6,
+};
+
+static float _vq_quantthresh__16c0_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16c0_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p8_1 = {
+	_vq_quantthresh__16c0_s_p8_1,
+	_vq_quantmap__16c0_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _16c0_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__16c0_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16c0_s_p8_1,
+	NULL,
+	&_vq_auxt__16c0_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p9_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c0_s_p9_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 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, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7,
+};
+
+static float _vq_quantthresh__16c0_s_p9_0[] = {
+	-157.5, 157.5, 
+};
+
+static long _vq_quantmap__16c0_s_p9_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p9_0 = {
+	_vq_quantthresh__16c0_s_p9_0,
+	_vq_quantmap__16c0_s_p9_0,
+	3,
+	3
+};
+
+static static_codebook _16c0_s_p9_0 = {
+	4, 81,
+	_vq_lengthlist__16c0_s_p9_0,
+	1, -518803456, 1628680192, 2, 0,
+	_vq_quantlist__16c0_s_p9_0,
+	NULL,
+	&_vq_auxt__16c0_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16c0_s_p9_1[] = {
+	 1, 5, 5, 5, 5, 9,11,11,10,10,10,10,10,10,10, 7,
+	 6, 6, 6, 6,10,10,10,10,10,10,10,10,10,10, 7, 6,
+	 6, 6, 6,10, 9,10,10,10,10,10,10,10,10,10, 7, 7,
+	 8, 9,10,10,10,10,10,10,10,10,10,10,10, 8, 7,10,
+	10,10, 9,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,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,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,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,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,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,10,
+	10,
+};
+
+static float _vq_quantthresh__16c0_s_p9_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__16c0_s_p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p9_1 = {
+	_vq_quantthresh__16c0_s_p9_1,
+	_vq_quantmap__16c0_s_p9_1,
+	15,
+	15
+};
+
+static static_codebook _16c0_s_p9_1 = {
+	2, 225,
+	_vq_lengthlist__16c0_s_p9_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__16c0_s_p9_1,
+	NULL,
+	&_vq_auxt__16c0_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c0_s_p9_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__16c0_s_p9_2[] = {
+	 1, 5, 5, 7, 8, 8, 7, 9, 9, 9,12,12,11,12,12,10,
+	10,11,12,12,12,11,12,12, 8, 9, 8, 7, 9,10,10,11,
+	11,10,11,12,10,12,10,12,12,12,11,12,11, 9, 8, 8,
+	 9,10, 9, 8, 9,10,12,12,11,11,12,11,10,11,12,11,
+	12,12, 8, 9, 9, 9,10,11,12,11,12,11,11,11,11,12,
+	12,11,11,12,12,11,11, 9, 9, 8, 9, 9,11, 9, 9,10,
+	 9,11,11,11,11,12,11,11,10,12,12,12, 9,12,11,10,
+	11,11,11,11,12,12,12,11,11,11,12,10,12,12,12,10,
+	10, 9,10, 9,10,10, 9, 9, 9,10,10,12,10,11,11, 9,
+	11,11,10,11,11,11,10,10,10, 9, 9,10,10, 9, 9,10,
+	11,11,10,11,10,11,10,11,11,10,11,11,11,10, 9,10,
+	10, 9,10, 9, 9,11, 9, 9,11,10,10,11,11,10,10,11,
+	10,11, 8, 9,11,11,10, 9,10,11,11,10,11,11,10,10,
+	10,11,10, 9,10,10,11, 9,10,10, 9,11,10,10,10,10,
+	11,10,11,11, 9,11,10,11,10,10,11,11,10,10,10, 9,
+	10,10,11,11,11, 9,10,10,10,10,10,11,10,10,10, 9,
+	10,10,11,10,10,10,10,10, 9,10,11,10,10,10,10,11,
+	11,11,10,10,10,10,10,11,10,11,10,11,10,10,10, 9,
+	11,11,10,10,10,11,11,10,10,10,10,10,10,10,10,11,
+	11, 9,10,10,10,11,10,11,10,10,10,11, 9,10,11,10,
+	11,10,10, 9,10,10,10,11,10,11,10,10,10,10,10,11,
+	11,10,11,11,10,10,11,11,10, 9, 9,10,10,10,10,10,
+	 9,11, 9,10,10,10,11,11,10,10,10,10,11,11,11,10,
+	 9, 9,10,10,11,10,10,10,10,10,11,11,11,10,10,10,
+	11,11,11, 9,10,10,10,10, 9,10, 9,10,11,10,11,10,
+	10,11,11,10,11,11,11,11,11,10,11,10,10,10, 9,11,
+	11,10,11,11,11,11,11,11,11,11,11,10,11,10,10,10,
+	10,11,10,10,11, 9,10,10,10,
+};
+
+static float _vq_quantthresh__16c0_s_p9_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__16c0_s_p9_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c0_s_p9_2 = {
+	_vq_quantthresh__16c0_s_p9_2,
+	_vq_quantmap__16c0_s_p9_2,
+	21,
+	21
+};
+
+static static_codebook _16c0_s_p9_2 = {
+	2, 441,
+	_vq_lengthlist__16c0_s_p9_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__16c0_s_p9_2,
+	NULL,
+	&_vq_auxt__16c0_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16c0_s_single[] = {
+	 3, 4,19, 7, 9, 7, 8,11, 9,12, 4, 1,19, 6, 7, 7,
+	 8,10,11,13,18,18,18,18,18,18,18,18,18,18, 8, 6,
+	18, 8, 9, 9,11,12,14,18, 9, 6,18, 9, 7, 8, 9,11,
+	12,18, 7, 6,18, 8, 7, 7, 7, 9,11,17, 8, 8,18, 9,
+	 7, 6, 6, 8,11,17,10,10,18,12, 9, 8, 7, 9,12,18,
+	13,15,18,15,13,11,10,11,15,18,14,18,18,18,18,18,
+	16,16,18,18,
+};
+
+static static_codebook _huff_book__16c0_s_single = {
+	2, 100,
+	_huff_lengthlist__16c0_s_single,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16c1_s_long[] = {
+	 2, 5,20, 7,10, 7, 8,10,11,11, 4, 2,20, 5, 8, 6,
+	 7, 9,10,10,20,20,20,20,19,19,19,19,19,19, 7, 5,
+	19, 6,10, 7, 9,11,13,17,11, 8,19,10, 7, 7, 8,10,
+	11,15, 7, 5,19, 7, 7, 5, 6, 9,11,16, 7, 6,19, 8,
+	 7, 6, 6, 7, 9,13, 9, 9,19,11, 9, 8, 6, 7, 8,13,
+	12,14,19,16,13,10, 9, 8, 9,13,14,17,19,18,18,17,
+	12,11,11,13,
+};
+
+static static_codebook _huff_book__16c1_s_long = {
+	2, 100,
+	_huff_lengthlist__16c1_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c1_s_p1_0[] = {
+	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
+	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+	 0, 0, 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+	 0, 0, 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c1_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16c1_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p1_0 = {
+	_vq_quantthresh__16c1_s_p1_0,
+	_vq_quantmap__16c1_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _16c1_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__16c1_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16c1_s_p1_0,
+	NULL,
+	&_vq_auxt__16c1_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16c1_s_p3_0[] = {
+	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c1_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16c1_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p3_0 = {
+	_vq_quantthresh__16c1_s_p3_0,
+	_vq_quantmap__16c1_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _16c1_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__16c1_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16c1_s_p3_0,
+	NULL,
+	&_vq_auxt__16c1_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16c1_s_p4_0[] = {
+	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c1_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16c1_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p4_0 = {
+	_vq_quantthresh__16c1_s_p4_0,
+	_vq_quantmap__16c1_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _16c1_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__16c1_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16c1_s_p4_0,
+	NULL,
+	&_vq_auxt__16c1_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16c1_s_p5_0[] = {
+	 1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+	 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 8, 8,
+	 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__16c1_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16c1_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p5_0 = {
+	_vq_quantthresh__16c1_s_p5_0,
+	_vq_quantmap__16c1_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _16c1_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__16c1_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16c1_s_p5_0,
+	NULL,
+	&_vq_auxt__16c1_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__16c1_s_p6_0[] = {
+	 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12,
+	12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,12,12, 0, 0, 0, 8, 8, 8, 9,10, 9,10,10,10,10,
+	11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,11,
+	11,11,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+	11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+	10,11,11,12,12,13,13, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,11,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__16c1_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__16c1_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p6_0 = {
+	_vq_quantthresh__16c1_s_p6_0,
+	_vq_quantmap__16c1_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _16c1_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__16c1_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__16c1_s_p6_0,
+	NULL,
+	&_vq_auxt__16c1_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c1_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9,10,10,
+	10, 9, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11,
+	11,11,10,10, 6,10, 9,11,11,11,11,10,10, 6,10,10,
+	11,11,11,11,10,10, 7,11,11,11,11,11,12,12,11, 6,
+	10,10,11,10,10,11,11,11, 6,10,10,10,11,10,11,11,
+	11,
+};
+
+static float _vq_quantthresh__16c1_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__16c1_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p7_0 = {
+	_vq_quantthresh__16c1_s_p7_0,
+	_vq_quantmap__16c1_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _16c1_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__16c1_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__16c1_s_p7_0,
+	NULL,
+	&_vq_auxt__16c1_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16c1_s_p7_1[] = {
+	 2, 3, 3, 5, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
+	 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
+	 8, 9, 9,10,10,10,10,10, 9, 9, 8, 8, 9, 9,10,10,
+	10,10,10, 8, 8, 8, 8, 9, 9,
+};
+
+static float _vq_quantthresh__16c1_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16c1_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p7_1 = {
+	_vq_quantthresh__16c1_s_p7_1,
+	_vq_quantmap__16c1_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _16c1_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__16c1_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16c1_s_p7_1,
+	NULL,
+	&_vq_auxt__16c1_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16c1_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
+	 7, 8, 8, 9, 8, 8, 9, 9,10,11, 6, 5, 5, 8, 8, 9,
+	 9, 8, 8, 9,10,10,11, 0, 8, 8, 8, 9, 9, 9, 9, 9,
+	10,10,11,11, 0, 9, 9, 9, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,13,13, 9, 9,10,10,10,10,11,11,12,12, 0,14,
+	13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
+	 9, 9,11,11,12,12,13,12, 0, 0, 0,10,10, 9, 9,10,
+	10,12,12,13,13, 0, 0, 0,13,14,11,10,11,11,12,12,
+	13,14, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,12,12,12,12,13,13,14,15, 0, 0, 0, 0,
+	 0,12,12,12,12,13,13,14,15,
+};
+
+static float _vq_quantthresh__16c1_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__16c1_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p8_0 = {
+	_vq_quantthresh__16c1_s_p8_0,
+	_vq_quantmap__16c1_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _16c1_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__16c1_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__16c1_s_p8_0,
+	NULL,
+	&_vq_auxt__16c1_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16c1_s_p8_1[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__16c1_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16c1_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p8_1 = {
+	_vq_quantthresh__16c1_s_p8_1,
+	_vq_quantmap__16c1_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _16c1_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__16c1_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16c1_s_p8_1,
+	NULL,
+	&_vq_auxt__16c1_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16c1_s_p9_0[] = {
+	 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__16c1_s_p9_0[] = {
+	-1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5, 
+	787.5, 1102.5, 1417.5, 1732.5, 
+};
+
+static long _vq_quantmap__16c1_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p9_0 = {
+	_vq_quantthresh__16c1_s_p9_0,
+	_vq_quantmap__16c1_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _16c1_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__16c1_s_p9_0,
+	1, -513964032, 1628680192, 4, 0,
+	_vq_quantlist__16c1_s_p9_0,
+	NULL,
+	&_vq_auxt__16c1_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16c1_s_p9_1[] = {
+	 1, 4, 4, 4, 4, 8, 8,12,13,14,14,14,14,14,14, 6,
+	 6, 6, 6, 6,10, 9,14,14,14,14,14,14,14,14, 7, 6,
+	 5, 6, 6,10, 9,12,13,13,13,13,13,13,13,13, 7, 7,
+	 9, 9,11,11,12,13,13,13,13,13,13,13,13, 7, 7, 8,
+	 8,11,12,13,13,13,13,13,13,13,13,13,12,12,10,10,
+	13,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,12,
+	13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,
+};
+
+static float _vq_quantthresh__16c1_s_p9_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__16c1_s_p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p9_1 = {
+	_vq_quantthresh__16c1_s_p9_1,
+	_vq_quantmap__16c1_s_p9_1,
+	15,
+	15
+};
+
+static static_codebook _16c1_s_p9_1 = {
+	2, 225,
+	_vq_lengthlist__16c1_s_p9_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__16c1_s_p9_1,
+	NULL,
+	&_vq_auxt__16c1_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c1_s_p9_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__16c1_s_p9_2[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9,10,
+	10,10, 9,10,10,11,12,12, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,10,10,10,11,11,10,12,11,11,13,11, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9,10,10,10,10, 9,10,10,11,11,12,
+	11,11, 8, 8, 8, 8, 9, 9,10,10,10,10,11,11,11,11,
+	11,11,11,12,11,12,12, 8, 8, 9, 9, 9, 9, 9,10,10,
+	10,10,10,10,11,11,11,11,11,11,12,11, 9, 9, 9, 9,
+	10,10,10,10,11,10,11,11,11,11,11,11,12,12,12,12,
+	11, 9, 9, 9, 9,10,10,10,10,11,11,11,11,11,11,11,
+	11,11,12,12,12,13, 9,10,10, 9,11,10,10,10,10,11,
+	11,11,11,11,10,11,12,11,12,12,11,12,11,10, 9,10,
+	10,11,10,11,11,11,11,11,11,11,11,11,12,12,11,12,
+	12,12,10,10,10,11,10,11,11,11,11,11,11,11,11,11,
+	11,11,12,13,12,12,11, 9,10,10,11,11,10,11,11,11,
+	12,11,11,11,11,11,12,12,13,13,12,13,10,10,12,10,
+	11,11,11,11,11,11,11,11,11,12,12,11,13,12,12,12,
+	12,13,12,11,11,11,11,11,11,12,11,12,11,11,11,11,
+	12,12,13,12,11,12,12,11,11,11,11,11,12,11,11,11,
+	11,12,11,11,12,11,12,13,13,12,12,12,12,11,11,11,
+	11,11,12,11,11,12,11,12,11,11,11,11,13,12,12,12,
+	12,13,11,11,11,12,12,11,11,11,12,11,12,12,12,11,
+	12,13,12,11,11,12,12,11,12,11,11,11,12,12,11,12,
+	11,11,11,12,12,12,12,13,12,13,12,12,12,12,11,11,
+	12,11,11,11,11,11,11,12,12,12,13,12,11,13,13,12,
+	12,11,12,10,11,11,11,11,12,11,12,12,11,12,12,13,
+	12,12,13,12,12,12,12,12,11,12,12,12,11,12,11,11,
+	11,12,13,12,13,13,13,13,13,12,13,13,12,12,13,11,
+	11,11,11,11,12,11,11,12,11,
+};
+
+static float _vq_quantthresh__16c1_s_p9_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__16c1_s_p9_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c1_s_p9_2 = {
+	_vq_quantthresh__16c1_s_p9_2,
+	_vq_quantmap__16c1_s_p9_2,
+	21,
+	21
+};
+
+static static_codebook _16c1_s_p9_2 = {
+	2, 441,
+	_vq_lengthlist__16c1_s_p9_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__16c1_s_p9_2,
+	NULL,
+	&_vq_auxt__16c1_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16c1_s_short[] = {
+	 5, 6,17, 8,12, 9,10,10,12,13, 5, 2,17, 4, 9, 5,
+	 7, 8,11,13,16,16,16,16,16,16,16,16,16,16, 6, 4,
+	16, 5,10, 5, 7,10,14,16,13, 9,16,11, 8, 7, 8, 9,
+	13,16, 7, 4,16, 5, 7, 4, 6, 8,11,13, 8, 6,16, 7,
+	 8, 5, 5, 7, 9,13, 9, 8,16, 9, 8, 6, 6, 7, 9,13,
+	11,11,16,10,10, 7, 7, 7, 9,13,13,13,16,13,13, 9,
+	 9, 9,10,13,
+};
+
+static static_codebook _huff_book__16c1_s_short = {
+	2, 100,
+	_huff_lengthlist__16c1_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16c2_s_long[] = {
+	 4, 7, 9, 9, 9, 8, 9,10,15,19, 5, 4, 5, 6, 7, 7,
+	 8, 9,14,16, 6, 5, 4, 5, 6, 7, 8,10,12,19, 7, 6,
+	 5, 4, 5, 6, 7, 9,11,18, 8, 7, 6, 5, 5, 5, 7, 9,
+	10,17, 8, 7, 7, 5, 5, 5, 6, 7,12,18, 8, 8, 8, 7,
+	 7, 5, 5, 7,12,18, 8, 9,10, 9, 9, 7, 6, 7,12,17,
+	14,18,16,16,15,12,11,10,12,18,15,17,18,18,18,15,
+	14,14,16,18,
+};
+
+static static_codebook _huff_book__16c2_s_long = {
+	2, 100,
+	_huff_lengthlist__16c2_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c2_s_p1_0[] = {
+	 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0,
+	 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c2_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16c2_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p1_0 = {
+	_vq_quantthresh__16c2_s_p1_0,
+	_vq_quantmap__16c2_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _16c2_s_p1_0 = {
+	4, 81,
+	_vq_lengthlist__16c2_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16c2_s_p1_0,
+	NULL,
+	&_vq_auxt__16c2_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16c2_s_p2_0[] = {
+	 2, 4, 3, 7, 7, 0, 0, 0, 7, 8, 0, 0, 0, 8, 8, 0,
+	 0, 0, 8, 8, 0, 0, 0, 8, 8, 4, 5, 4, 8, 8, 0, 0,
+	 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0,
+	 9, 9, 4, 4, 5, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8,
+	 8, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 7, 8, 8,10,10,
+	 0, 0, 0,12,11, 0, 0, 0,11,11, 0, 0, 0,14,13, 0,
+	 0, 0,14,13, 7, 8, 8, 9,10, 0, 0, 0,11,12, 0, 0,
+	 0,11,11, 0, 0, 0,14,14, 0, 0, 0,13,14, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8,11,11, 0, 0, 0,
+	11,11, 0, 0, 0,12,11, 0, 0, 0,12,12, 0, 0, 0,13,
+	13, 8, 8, 8,11,11, 0, 0, 0,11,11, 0, 0, 0,11,12,
+	 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 8, 8, 8,12,11, 0, 0, 0,12,11, 0,
+	 0, 0,11,11, 0, 0, 0,13,13, 0, 0, 0,13,12, 8, 8,
+	 8,11,12, 0, 0, 0,11,12, 0, 0, 0,11,11, 0, 0, 0,
+	13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 8, 9, 9,14,13, 0, 0, 0,13,12, 0, 0, 0,13,
+	13, 0, 0, 0,13,12, 0, 0, 0,13,13, 8, 9, 9,13,14,
+	 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0,12,13, 0,
+	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+	 9, 9,14,13, 0, 0, 0,13,13, 0, 0, 0,13,12, 0, 0,
+	 0,13,13, 0, 0, 0,13,12, 8, 9, 9,14,14, 0, 0, 0,
+	13,13, 0, 0, 0,12,13, 0, 0, 0,13,13, 0, 0, 0,12,
+	13,
+};
+
+static float _vq_quantthresh__16c2_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16c2_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p2_0 = {
+	_vq_quantthresh__16c2_s_p2_0,
+	_vq_quantmap__16c2_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _16c2_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__16c2_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16c2_s_p2_0,
+	NULL,
+	&_vq_auxt__16c2_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16c2_s_p3_0[] = {
+	 1, 3, 3, 6, 6, 7, 7, 8, 8, 0, 0, 0, 6, 6, 7, 7,
+	 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+	 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c2_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16c2_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p3_0 = {
+	_vq_quantthresh__16c2_s_p3_0,
+	_vq_quantmap__16c2_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _16c2_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__16c2_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16c2_s_p3_0,
+	NULL,
+	&_vq_auxt__16c2_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__16c2_s_p4_0[] = {
+	 2, 3, 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,
+	10, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
+	11,11, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
+	10,10,11, 0, 0, 0, 6, 6, 8, 8, 8, 8, 9, 9,10,10,
+	10,11,11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,
+	10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9,
+	 9,10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8, 9,
+	 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__16c2_s_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__16c2_s_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p4_0 = {
+	_vq_quantthresh__16c2_s_p4_0,
+	_vq_quantmap__16c2_s_p4_0,
+	17,
+	17
+};
+
+static static_codebook _16c2_s_p4_0 = {
+	2, 289,
+	_vq_lengthlist__16c2_s_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__16c2_s_p4_0,
+	NULL,
+	&_vq_auxt__16c2_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16c2_s_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,10,10,10,
+	10,10, 4, 7, 6,10,10,10,10,10,10, 5, 9, 9, 9,12,
+	11,10,11,12, 7,10,10,12,12,12,12,12,12, 7,10,10,
+	11,12,12,12,12,13, 6,10,10,10,12,12,10,12,12, 7,
+	10,10,11,13,12,12,12,12, 7,10,10,11,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__16c2_s_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__16c2_s_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p5_0 = {
+	_vq_quantthresh__16c2_s_p5_0,
+	_vq_quantmap__16c2_s_p5_0,
+	3,
+	3
+};
+
+static static_codebook _16c2_s_p5_0 = {
+	4, 81,
+	_vq_lengthlist__16c2_s_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__16c2_s_p5_0,
+	NULL,
+	&_vq_auxt__16c2_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16c2_s_p5_1[] = {
+	 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11, 6, 6,
+	 7, 7, 8, 8, 8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8,
+	 8,11,11,11, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6,
+	 6, 8, 8, 8, 8, 9, 9,11,11,11, 7, 7, 8, 8, 8, 8,
+	 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 8, 9,11,11,11,
+	 8, 8, 8, 8, 8, 8, 8, 8,11,11,11,11,11, 8, 8, 8,
+	 8, 8, 8,11,11,11,11,11, 8, 8, 8, 8, 8, 8,11,11,
+	11,11,11, 7, 7, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__16c2_s_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16c2_s_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p5_1 = {
+	_vq_quantthresh__16c2_s_p5_1,
+	_vq_quantmap__16c2_s_p5_1,
+	11,
+	11
+};
+
+static static_codebook _16c2_s_p5_1 = {
+	2, 121,
+	_vq_lengthlist__16c2_s_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16c2_s_p5_1,
+	NULL,
+	&_vq_auxt__16c2_s_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16c2_s_p6_0[] = {
+	 1, 4, 4, 7, 6, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
+	 7, 7, 9, 9, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9,
+	 9,10,10,11,11,12,12, 0, 6, 6, 7, 7, 9, 9,10,10,
+	11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,12,12,
+	12, 0,11,11, 8, 8,10,10,11,11,12,12,13,13, 0,11,
+	12, 8, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__16c2_s_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__16c2_s_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p6_0 = {
+	_vq_quantthresh__16c2_s_p6_0,
+	_vq_quantmap__16c2_s_p6_0,
+	13,
+	13
+};
+
+static static_codebook _16c2_s_p6_0 = {
+	2, 169,
+	_vq_lengthlist__16c2_s_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__16c2_s_p6_0,
+	NULL,
+	&_vq_auxt__16c2_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16c2_s_p6_1[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__16c2_s_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16c2_s_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p6_1 = {
+	_vq_quantthresh__16c2_s_p6_1,
+	_vq_quantmap__16c2_s_p6_1,
+	5,
+	5
+};
+
+static static_codebook _16c2_s_p6_1 = {
+	2, 25,
+	_vq_lengthlist__16c2_s_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16c2_s_p6_1,
+	NULL,
+	&_vq_auxt__16c2_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16c2_s_p7_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 5, 5,
+	 8, 8, 9, 9,10,10,11,11,12,12, 6, 5, 5, 8, 8, 9,
+	 9,10,10,11,11,12,13,18, 6, 6, 7, 7, 9, 9,10,10,
+	12,12,13,13,18, 6, 6, 7, 7, 9, 9,10,10,12,12,13,
+	13,18,11,10, 8, 8,10,10,11,11,12,12,13,13,18,11,
+	11, 8, 8,10,10,11,11,12,13,13,13,18,18,18,10,11,
+	11,11,12,12,13,13,14,14,18,18,18,11,11,11,11,12,
+	12,13,13,14,14,18,18,18,14,14,12,12,12,12,14,14,
+	15,14,18,18,18,15,15,11,12,12,12,13,13,15,15,18,
+	18,18,18,18,13,13,13,13,13,14,17,16,18,18,18,18,
+	18,13,14,13,13,14,13,15,14,
+};
+
+static float _vq_quantthresh__16c2_s_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__16c2_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p7_0 = {
+	_vq_quantthresh__16c2_s_p7_0,
+	_vq_quantmap__16c2_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _16c2_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__16c2_s_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__16c2_s_p7_0,
+	NULL,
+	&_vq_auxt__16c2_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16c2_s_p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 9, 9, 6, 6,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 6, 6, 7, 7, 8, 8, 8,
+	 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7,
+	 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
+	 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
+	 7, 7, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 9, 7, 7, 7,
+	 7, 8, 8, 9, 9, 9, 9, 9, 8, 8, 7, 7, 8, 8, 9, 9,
+	 9, 9, 9, 7, 7, 7, 7, 8, 8,
+};
+
+static float _vq_quantthresh__16c2_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16c2_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p7_1 = {
+	_vq_quantthresh__16c2_s_p7_1,
+	_vq_quantmap__16c2_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _16c2_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__16c2_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16c2_s_p7_1,
+	NULL,
+	&_vq_auxt__16c2_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16c2_s_p8_0[] = {
+	 1, 4, 4, 7, 6, 7, 7, 6, 6, 8, 8, 9, 9,10,10, 6,
+	 6, 6, 8, 8, 9, 8, 8, 8, 9, 9,11,10,11,11, 7, 6,
+	 6, 8, 8, 9, 8, 7, 7, 9, 9,10,10,12,11,14, 8, 8,
+	 8, 9, 9, 9, 9, 9,10, 9,10,10,11,13,14, 8, 8, 8,
+	 8, 9, 9, 8, 8, 9, 9,10,10,11,12,14,13,11, 9, 9,
+	 9, 9, 9, 9, 9,10,11,10,13,12,14,11,13, 8, 9, 9,
+	 9, 9, 9,10,10,11,10,13,12,14,14,14, 8, 9, 9, 9,
+	11,11,11,11,11,12,13,13,14,14,14, 9, 8, 9, 9,10,
+	10,12,10,11,12,12,14,14,14,14,11,12,10,10,12,12,
+	12,12,13,14,12,12,14,14,14,12,12, 9,10,11,11,12,
+	14,12,14,14,14,14,14,14,14,14,11,11,12,11,12,14,
+	14,14,14,14,14,14,14,14,14,12,11,11,11,11,14,14,
+	14,14,14,14,14,14,14,14,14,14,13,12,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,12,12,12,13,14,14,13,
+	13,
+};
+
+static float _vq_quantthresh__16c2_s_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__16c2_s_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p8_0 = {
+	_vq_quantthresh__16c2_s_p8_0,
+	_vq_quantmap__16c2_s_p8_0,
+	15,
+	15
+};
+
+static static_codebook _16c2_s_p8_0 = {
+	2, 225,
+	_vq_lengthlist__16c2_s_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__16c2_s_p8_0,
+	NULL,
+	&_vq_auxt__16c2_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__16c2_s_p8_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8,11,12,11, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10, 9, 9,11,11,10, 7, 7, 8,
+	 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+	11,11, 8, 7, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 9,10,
+	10, 9,10,10,11,11,12, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9,10, 9,10,10,10,10,11,11,11, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,
+	11, 8, 8, 9, 8, 9, 9, 9, 9,10, 9, 9, 9,10,10,10,
+	10, 9,10,11,11,11, 9, 9, 9, 9,10, 9, 9, 9,10,10,
+	 9,10, 9,10,10,10,10,10,11,12,11,11,11, 9, 9, 9,
+	 9, 9,10,10, 9,10,10,10,10,10,10,10,10,12,11,13,
+	13,11, 9, 9, 9, 9,10,10, 9,10,10,10,10,11,10,10,
+	10,10,11,12,11,12,11, 9, 9, 9,10,10, 9,10,10,10,
+	10,10,10,10,10,10,10,11,11,11,12,11, 9,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,11,12,12,12,
+	11,11,11,10, 9,10,10,10,10,10,10,10,10,11,10,10,
+	10,11,11,11,11,11,11,11,10,10,10,11,10,10,10,10,
+	10,10,10,10,10,10,11,11,11,11,12,12,11,10,10,10,
+	10,10,10,10,10,11,10,10,10,11,10,12,11,11,12,11,
+	11,11,10,10,10,10,10,11,10,10,10,10,10,11,10,10,
+	11,11,11,12,11,12,11,11,12,10,10,10,10,10,10,10,
+	11,10,10,11,10,12,11,11,11,12,11,11,11,11,10,10,
+	10,10,10,10,10,11,11,11,10,11,12,11,11,11,12,11,
+	12,11,12,10,11,10,10,10,10,11,10,10,10,10,10,10,
+	12,11,11,11,11,11,12,12,10,10,10,10,10,11,10,10,
+	11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,
+	10,11,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__16c2_s_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__16c2_s_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p8_1 = {
+	_vq_quantthresh__16c2_s_p8_1,
+	_vq_quantmap__16c2_s_p8_1,
+	21,
+	21
+};
+
+static static_codebook _16c2_s_p8_1 = {
+	2, 441,
+	_vq_lengthlist__16c2_s_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__16c2_s_p8_1,
+	NULL,
+	&_vq_auxt__16c2_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16c2_s_p9_0[] = {
+	 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__16c2_s_p9_0[] = {
+	-5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 465.5, 1396.5, 
+	2327.5, 3258.5, 4189.5, 5120.5, 
+};
+
+static long _vq_quantmap__16c2_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p9_0 = {
+	_vq_quantthresh__16c2_s_p9_0,
+	_vq_quantmap__16c2_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _16c2_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__16c2_s_p9_0,
+	1, -510275072, 1631393792, 4, 0,
+	_vq_quantlist__16c2_s_p9_0,
+	NULL,
+	&_vq_auxt__16c2_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p9_1[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__16c2_s_p9_1[] = {
+	 1, 5, 5, 9, 8, 7, 7, 7, 6,10,11,11,11,11,11,11,
+	11, 8, 7, 6, 8, 8,10, 9,10,10,10, 9,11,10,10,10,
+	10,10, 8, 6, 6, 8, 8, 9, 8, 9, 8, 9,10,10,10,10,
+	10,10,10,10, 8,10, 9, 9, 9, 9,10,10,10,10,10,10,
+	10,10,10,10,10, 8, 9, 9, 9,10,10, 9,10,10,10,10,
+	10,10,10,10,10,10,10,10, 9, 8, 9, 9,10,10,10,10,
+	10,10,10,10,10,10,10,10, 9, 8, 8, 9, 9,10,10,10,
+	10,10,10,10,10,10,10,10,10,10, 9,10, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9, 8, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 8,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,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,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10, 9,10, 9,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10, 9,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__16c2_s_p9_1[] = {
+	-367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 
+	24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 367.5, 
+};
+
+static long _vq_quantmap__16c2_s_p9_1[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p9_1 = {
+	_vq_quantthresh__16c2_s_p9_1,
+	_vq_quantmap__16c2_s_p9_1,
+	17,
+	17
+};
+
+static static_codebook _16c2_s_p9_1 = {
+	2, 289,
+	_vq_lengthlist__16c2_s_p9_1,
+	1, -518488064, 1622704128, 5, 0,
+	_vq_quantlist__16c2_s_p9_1,
+	NULL,
+	&_vq_auxt__16c2_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16c2_s_p9_2[] = {
+	13,
+	12,
+	14,
+	11,
+	15,
+	10,
+	16,
+	9,
+	17,
+	8,
+	18,
+	7,
+	19,
+	6,
+	20,
+	5,
+	21,
+	4,
+	22,
+	3,
+	23,
+	2,
+	24,
+	1,
+	25,
+	0,
+	26,
+};
+
+static long _vq_lengthlist__16c2_s_p9_2[] = {
+	 1, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 8, 7, 8, 7, 7, 4, 4,
+};
+
+static float _vq_quantthresh__16c2_s_p9_2[] = {
+	-12.5, -11.5, -10.5, -9.5, -8.5, -7.5, -6.5, -5.5, 
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 
+	11.5, 12.5, 
+};
+
+static long _vq_quantmap__16c2_s_p9_2[] = {
+	   25,   23,   21,   19,   17,   15,   13,   11,
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,   12,   14,   16,   18,   20,
+	   22,   24,   26,
+};
+
+static encode_aux_threshmatch _vq_auxt__16c2_s_p9_2 = {
+	_vq_quantthresh__16c2_s_p9_2,
+	_vq_quantmap__16c2_s_p9_2,
+	27,
+	27
+};
+
+static static_codebook _16c2_s_p9_2 = {
+	1, 27,
+	_vq_lengthlist__16c2_s_p9_2,
+	1, -528875520, 1611661312, 5, 0,
+	_vq_quantlist__16c2_s_p9_2,
+	NULL,
+	&_vq_auxt__16c2_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16c2_s_short[] = {
+	 7,10,11,11,11,14,15,15,17,14, 8, 6, 7, 7, 8, 9,
+	11,11,14,17, 9, 6, 6, 6, 7, 7,10,11,15,16, 9, 6,
+	 6, 4, 4, 5, 8, 9,12,16,10, 6, 6, 4, 4, 4, 6, 9,
+	13,16,10, 7, 6, 5, 4, 3, 5, 7,13,16,11, 9, 8, 7,
+	 6, 5, 5, 6,12,15,10,10,10, 9, 7, 6, 6, 7,11,15,
+	13,13,13,13,11,10,10, 9,12,16,16,16,16,14,16,15,
+	15,12,14,14,
+};
+
+static static_codebook _huff_book__16c2_s_short = {
+	2, 100,
+	_huff_lengthlist__16c2_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8c0_s_p1_0[] = {
+	 1, 5, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+	 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
+	 0, 0, 0, 8, 9,11, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9,10, 0, 0,
+	 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 9,11,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,11, 0,
+	 0, 0, 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,11,11,
+	 0, 0, 0, 0, 0, 0, 8,11, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__8c0_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__8c0_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p1_0 = {
+	_vq_quantthresh__8c0_s_p1_0,
+	_vq_quantmap__8c0_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _8c0_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__8c0_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__8c0_s_p1_0,
+	NULL,
+	&_vq_auxt__8c0_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8c0_s_p3_0[] = {
+	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 8, 8,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 7, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__8c0_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8c0_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p3_0 = {
+	_vq_quantthresh__8c0_s_p3_0,
+	_vq_quantmap__8c0_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _8c0_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__8c0_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8c0_s_p3_0,
+	NULL,
+	&_vq_auxt__8c0_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8c0_s_p4_0[] = {
+	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__8c0_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8c0_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p4_0 = {
+	_vq_quantthresh__8c0_s_p4_0,
+	_vq_quantmap__8c0_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _8c0_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__8c0_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8c0_s_p4_0,
+	NULL,
+	&_vq_auxt__8c0_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8c0_s_p5_0[] = {
+	 1, 3, 3, 5, 5, 7, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+	 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 9, 0, 0, 0, 8, 8,
+	 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0,
+	 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__8c0_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8c0_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p5_0 = {
+	_vq_quantthresh__8c0_s_p5_0,
+	_vq_quantmap__8c0_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _8c0_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__8c0_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8c0_s_p5_0,
+	NULL,
+	&_vq_auxt__8c0_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__8c0_s_p6_0[] = {
+	 1, 3, 3, 6, 6, 8, 8, 9, 9, 8, 8,10, 9,10,10,11,
+	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,12,11, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10, 9, 9,11,
+	10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,10,
+	11,11,11,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,10,
+	10,11,11,12,12,13,13, 0, 0, 0,10,10,10,10,11,11,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,10, 9,10,
+	11,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10, 9,10,11,12,12,13,13,14,13, 0, 0, 0, 0, 0, 9,
+	 9, 9,10,10,10,11,11,13,12,13,13, 0, 0, 0, 0, 0,
+	10,10,10,10,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,13,13,13,14, 0, 0, 0,
+	 0, 0, 0, 0,11,11,11,11,12,12,13,14,14,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,14,13, 0,
+	 0, 0, 0, 0, 0, 0,11,11,12,12,13,13,14,14,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__8c0_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__8c0_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p6_0 = {
+	_vq_quantthresh__8c0_s_p6_0,
+	_vq_quantmap__8c0_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _8c0_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__8c0_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__8c0_s_p6_0,
+	NULL,
+	&_vq_auxt__8c0_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8c0_s_p7_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,11, 9,10,12,
+	 9,10, 4, 7, 7,10,10,10,11, 9, 9, 6,11,10,11,11,
+	12,11,11,11, 6,10,10,11,11,12,11,10,10, 6, 9,10,
+	11,11,11,11,10,10, 7,10,11,12,11,11,12,11,12, 6,
+	 9, 9,10, 9, 9,11,10,10, 6, 9, 9,10,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__8c0_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__8c0_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p7_0 = {
+	_vq_quantthresh__8c0_s_p7_0,
+	_vq_quantmap__8c0_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _8c0_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__8c0_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__8c0_s_p7_0,
+	NULL,
+	&_vq_auxt__8c0_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__8c0_s_p7_1[] = {
+	 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7,
+	 8, 8, 9, 9, 9, 9,10,10, 9, 7, 7, 8, 8, 9, 9, 9,
+	 9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10, 8,
+	 8, 9, 9, 9, 9, 8, 9,10,10,10, 8, 8, 9, 9, 9,10,
+	10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,11,10,11,
+	 9, 9, 9, 9,10,10,10,10,11,11,11,10,10, 9, 9,10,
+	10,10, 9,11,10,10,10,10,10,10, 9, 9,10,10,11,11,
+	10,10,10, 9, 9, 9,10,10,10,
+};
+
+static float _vq_quantthresh__8c0_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__8c0_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p7_1 = {
+	_vq_quantthresh__8c0_s_p7_1,
+	_vq_quantmap__8c0_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _8c0_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__8c0_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__8c0_s_p7_1,
+	NULL,
+	&_vq_auxt__8c0_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__8c0_s_p8_0[] = {
+	 1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, 6,
+	 7, 7, 8, 8, 7, 7, 8, 9,10,10, 7, 6, 6, 7, 7, 8,
+	 7, 7, 7, 9, 9,10,12, 0, 8, 8, 8, 8, 8, 9, 8, 8,
+	 9, 9,10,10, 0, 8, 8, 8, 8, 8, 9, 8, 9, 9, 9,11,
+	10, 0, 0,13, 9, 8, 9, 9, 9, 9,10,10,11,11, 0,13,
+	 0, 9, 9, 9, 9, 9, 9,11,10,11,11, 0, 0, 0, 8, 9,
+	10, 9,10,10,13,11,12,12, 0, 0, 0, 8, 9, 9, 9,10,
+	10,13,12,12,13, 0, 0, 0,12, 0,10,10,12,11,10,11,
+	12,12, 0, 0, 0,13,13,10,10,10,11,12, 0,13, 0, 0,
+	 0, 0, 0, 0,13,11, 0,12,12,12,13,12, 0, 0, 0, 0,
+	 0, 0,13,13,11,13,13,11,12,
+};
+
+static float _vq_quantthresh__8c0_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__8c0_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p8_0 = {
+	_vq_quantthresh__8c0_s_p8_0,
+	_vq_quantmap__8c0_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _8c0_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__8c0_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__8c0_s_p8_0,
+	NULL,
+	&_vq_auxt__8c0_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8c0_s_p8_1[] = {
+	 1, 3, 4, 5, 5, 7, 6, 6, 6, 5, 7, 7, 7, 6, 6, 7,
+	 7, 7, 6, 6, 7, 7, 7, 6, 6,
+};
+
+static float _vq_quantthresh__8c0_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8c0_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p8_1 = {
+	_vq_quantthresh__8c0_s_p8_1,
+	_vq_quantmap__8c0_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _8c0_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__8c0_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8c0_s_p8_1,
+	NULL,
+	&_vq_auxt__8c0_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p9_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8c0_s_p9_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 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, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7,
+};
+
+static float _vq_quantthresh__8c0_s_p9_0[] = {
+	-157.5, 157.5, 
+};
+
+static long _vq_quantmap__8c0_s_p9_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p9_0 = {
+	_vq_quantthresh__8c0_s_p9_0,
+	_vq_quantmap__8c0_s_p9_0,
+	3,
+	3
+};
+
+static static_codebook _8c0_s_p9_0 = {
+	4, 81,
+	_vq_lengthlist__8c0_s_p9_0,
+	1, -518803456, 1628680192, 2, 0,
+	_vq_quantlist__8c0_s_p9_0,
+	NULL,
+	&_vq_auxt__8c0_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__8c0_s_p9_1[] = {
+	 1, 4, 4, 5, 5,10, 8,11,11,11,11,11,11,11,11, 6,
+	 6, 6, 7, 6,11,10,11,11,11,11,11,11,11,11, 7, 5,
+	 6, 6, 6, 8, 7,11,11,11,11,11,11,11,11,11, 7, 8,
+	 8, 8, 9, 9,11,11,11,11,11,11,11,11,11, 9, 8, 7,
+	 8, 9,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,
+};
+
+static float _vq_quantthresh__8c0_s_p9_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__8c0_s_p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p9_1 = {
+	_vq_quantthresh__8c0_s_p9_1,
+	_vq_quantmap__8c0_s_p9_1,
+	15,
+	15
+};
+
+static static_codebook _8c0_s_p9_1 = {
+	2, 225,
+	_vq_lengthlist__8c0_s_p9_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__8c0_s_p9_1,
+	NULL,
+	&_vq_auxt__8c0_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c0_s_p9_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__8c0_s_p9_2[] = {
+	 1, 5, 5, 7, 7, 8, 7, 8, 8,10,10, 9, 9,10,10,10,
+	11,11,10,12,11,12,12,12, 9, 8, 8, 8, 8, 8, 9,10,
+	10,10,10,11,11,11,10,11,11,12,12,11,12, 8, 8, 7,
+	 7, 8, 9,10,10,10, 9,10,10, 9,10,10,11,11,11,11,
+	11,11, 9, 9, 9, 9, 8, 9,10,10,11,10,10,11,11,12,
+	10,10,12,12,11,11,10, 9, 9,10, 8, 9,10,10,10, 9,
+	10,10,11,11,10,11,10,10,10,12,12,12, 9,10, 9,10,
+	 9, 9,10,10,11,11,11,11,10,10,10,11,12,11,12,11,
+	12,10,11,10,11, 9,10, 9,10, 9,10,10, 9,10,10,11,
+	10,11,11,11,11,12,11, 9,10,10,10,10,11,11,11,11,
+	11,10,11,11,11,11,10,12,10,12,12,11,12,10,10,11,
+	10, 9,11,10,11, 9,10,11,10,10,10,11,11,11,11,12,
+	12,10, 9, 9,11,10, 9,12,11,10,12,12,11,11,11,11,
+	10,11,11,12,11,10,12, 9,11,10,11,10,10,11,10,11,
+	 9,10,10,10,11,12,11,11,12,11,10,10,11,11, 9,10,
+	10,12,10,11,10,10,10, 9,10,10,10,10, 9,10,10,11,
+	11,11,11,12,11,10,10,10,10,11,11,10,11,11, 9,11,
+	10,12,10,12,11,10,11,10,10,10,11,10,10,11,11,10,
+	11,10,10,10,10,11,11,12,10,10,10,11,10,11,12,11,
+	10,11,10,10,11,11,10,12,10, 9,10,10,11,11,11,10,
+	12,10,10,11,11,11,10,10,11,10,10,10,11,10,11,10,
+	12,11,11,10,10,10,12,10,10,11, 9,10,11,11,11,10,
+	10,11,10,10, 9,11,11,12,12,11,12,11,11,11,11,11,
+	11, 9,10,11,10,12,10,10,10,10,11,10,10,11,10,10,
+	12,10,10,10,10,10, 9,12,10,10,10,10,12, 9,11,10,
+	10,11,10,12,12,10,12,12,12,10,10,10,10, 9,10,11,
+	10,10,12,10,10,12,11,10,11,10,10,12,11,10,12,10,
+	10,11, 9,11,10, 9,10, 9,10,
+};
+
+static float _vq_quantthresh__8c0_s_p9_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__8c0_s_p9_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c0_s_p9_2 = {
+	_vq_quantthresh__8c0_s_p9_2,
+	_vq_quantmap__8c0_s_p9_2,
+	21,
+	21
+};
+
+static static_codebook _8c0_s_p9_2 = {
+	2, 441,
+	_vq_lengthlist__8c0_s_p9_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__8c0_s_p9_2,
+	NULL,
+	&_vq_auxt__8c0_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__8c0_s_single[] = {
+	 4, 5,18, 7,10, 6, 7, 8, 9,10, 5, 2,18, 5, 7, 5,
+	 6, 7, 8,11,17,17,17,17,17,17,17,17,17,17, 7, 4,
+	17, 6, 9, 6, 8,10,12,15,11, 7,17, 9, 6, 6, 7, 9,
+	11,15, 6, 4,17, 6, 6, 4, 5, 8,11,16, 6, 6,17, 8,
+	 6, 5, 6, 9,13,16, 8, 9,17,11, 9, 8, 8,11,13,17,
+	 9,12,17,15,14,13,12,13,14,17,12,15,17,17,17,17,
+	17,16,17,17,
+};
+
+static static_codebook _huff_book__8c0_s_single = {
+	2, 100,
+	_huff_lengthlist__8c0_s_single,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8c1_s_p1_0[] = {
+	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+	 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 8, 8,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 8,10, 8, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__8c1_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__8c1_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p1_0 = {
+	_vq_quantthresh__8c1_s_p1_0,
+	_vq_quantmap__8c1_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _8c1_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__8c1_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__8c1_s_p1_0,
+	NULL,
+	&_vq_auxt__8c1_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8c1_s_p3_0[] = {
+	 2, 4, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__8c1_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8c1_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p3_0 = {
+	_vq_quantthresh__8c1_s_p3_0,
+	_vq_quantmap__8c1_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _8c1_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__8c1_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8c1_s_p3_0,
+	NULL,
+	&_vq_auxt__8c1_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8c1_s_p4_0[] = {
+	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__8c1_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8c1_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p4_0 = {
+	_vq_quantthresh__8c1_s_p4_0,
+	_vq_quantmap__8c1_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _8c1_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__8c1_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8c1_s_p4_0,
+	NULL,
+	&_vq_auxt__8c1_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8c1_s_p5_0[] = {
+	 1, 3, 3, 4, 5, 6, 6, 8, 8, 0, 0, 0, 8, 8, 7, 7,
+	 9, 9, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 9,10,
+	 8, 8, 9, 9, 0, 0, 0,10,10, 8, 8, 9, 9, 0, 0, 0,
+	11,10, 8, 8,10,10, 0, 0, 0,11,11, 8, 8,10,10, 0,
+	 0, 0,12,12, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__8c1_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8c1_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p5_0 = {
+	_vq_quantthresh__8c1_s_p5_0,
+	_vq_quantmap__8c1_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _8c1_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__8c1_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8c1_s_p5_0,
+	NULL,
+	&_vq_auxt__8c1_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__8c1_s_p6_0[] = {
+	 1, 3, 3, 5, 5, 8, 8, 8, 8, 9, 9,10,10,11,11,11,
+	11, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,11,
+	12,12,12,12, 0, 0, 0, 9, 9, 8, 8,10,10,10,10,11,
+	11,12,12,12,12, 0, 0, 0,10,10, 9, 9,10,10,10,10,
+	11,11,12,12,13,13, 0, 0, 0,10,10, 9, 9,10,10,10,
+	10,11,11,12,12,13,13, 0, 0, 0,11,11, 9, 9,10,10,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,11,11,12,11,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,11,11,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,11,10,11,11,12,12,13,13,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,13, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__8c1_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__8c1_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p6_0 = {
+	_vq_quantthresh__8c1_s_p6_0,
+	_vq_quantmap__8c1_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _8c1_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__8c1_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__8c1_s_p6_0,
+	NULL,
+	&_vq_auxt__8c1_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8c1_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
+	 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10,
+	10,11,10,10, 6, 9, 9,10, 9,10,11,10,10, 6, 9, 9,
+	10, 9, 9,11, 9,10, 7,10,10,11,11,11,11,10,10, 6,
+	 9, 9,10,10,10,11, 9, 9, 6, 9, 9,10,10,10,10, 9,
+	 9,
+};
+
+static float _vq_quantthresh__8c1_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__8c1_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p7_0 = {
+	_vq_quantthresh__8c1_s_p7_0,
+	_vq_quantmap__8c1_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _8c1_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__8c1_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__8c1_s_p7_0,
+	NULL,
+	&_vq_auxt__8c1_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__8c1_s_p7_1[] = {
+	 2, 3, 3, 5, 5, 7, 7, 7, 7, 7, 7,10,10, 9, 7, 7,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8,
+	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+	 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 8, 8, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__8c1_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__8c1_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p7_1 = {
+	_vq_quantthresh__8c1_s_p7_1,
+	_vq_quantmap__8c1_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _8c1_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__8c1_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__8c1_s_p7_1,
+	NULL,
+	&_vq_auxt__8c1_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__8c1_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
+	 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9, 9, 9,10, 9,10,11,11,11, 0,13,
+	12, 9, 8, 9, 9,10,10,11,11,12,11, 0, 0, 0, 9, 9,
+	 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0,13,13,10,10,11,11,12,11,
+	13,12, 0, 0, 0,14,14,10,10,11,10,11,11,12,12, 0,
+	 0, 0, 0, 0,12,12,11,11,12,12,13,13, 0, 0, 0, 0,
+	 0,12,12,11,10,12,11,13,12,
+};
+
+static float _vq_quantthresh__8c1_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__8c1_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p8_0 = {
+	_vq_quantthresh__8c1_s_p8_0,
+	_vq_quantmap__8c1_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _8c1_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__8c1_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__8c1_s_p8_0,
+	NULL,
+	&_vq_auxt__8c1_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8c1_s_p8_1[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__8c1_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8c1_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p8_1 = {
+	_vq_quantthresh__8c1_s_p8_1,
+	_vq_quantmap__8c1_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _8c1_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__8c1_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8c1_s_p8_1,
+	NULL,
+	&_vq_auxt__8c1_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__8c1_s_p9_0[] = {
+	 1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 6, 6,
+	10,10,10,10,10,10,10,10,10,10, 6, 7, 8,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,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,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,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,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,10,
+	10,10,10,10,10, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__8c1_s_p9_0[] = {
+	-1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5, 
+	787.5, 1102.5, 1417.5, 1732.5, 
+};
+
+static long _vq_quantmap__8c1_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p9_0 = {
+	_vq_quantthresh__8c1_s_p9_0,
+	_vq_quantmap__8c1_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _8c1_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__8c1_s_p9_0,
+	1, -513964032, 1628680192, 4, 0,
+	_vq_quantlist__8c1_s_p9_0,
+	NULL,
+	&_vq_auxt__8c1_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__8c1_s_p9_1[] = {
+	 1, 4, 4, 5, 5, 7, 7, 9, 9,11,11,12,12,13,13, 6,
+	 5, 5, 6, 6, 9, 9,10,10,12,12,12,13,15,14, 6, 5,
+	 5, 7, 7, 9, 9,10,10,12,12,12,13,14,13,17, 7, 7,
+	 8, 8,10,10,11,11,12,13,13,13,13,13,17, 7, 7, 8,
+	 8,10,10,11,11,13,13,13,13,14,14,17,11,11, 9, 9,
+	11,11,12,12,12,13,13,14,15,13,17,12,12, 9, 9,11,
+	11,12,12,13,13,13,13,14,16,17,17,17,11,12,12,12,
+	13,13,13,14,15,14,15,15,17,17,17,12,12,11,11,13,
+	13,14,14,15,14,15,15,17,17,17,15,15,13,13,14,14,
+	15,14,15,15,16,15,17,17,17,15,15,13,13,13,14,14,
+	15,15,15,15,16,17,17,17,17,16,14,15,14,14,15,14,
+	14,15,15,15,17,17,17,17,17,14,14,16,14,15,15,15,
+	15,15,15,17,17,17,17,17,17,16,16,15,17,15,15,14,
+	17,15,17,16,17,17,17,17,16,15,14,15,15,15,15,15,
+	15,
+};
+
+static float _vq_quantthresh__8c1_s_p9_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__8c1_s_p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p9_1 = {
+	_vq_quantthresh__8c1_s_p9_1,
+	_vq_quantmap__8c1_s_p9_1,
+	15,
+	15
+};
+
+static static_codebook _8c1_s_p9_1 = {
+	2, 225,
+	_vq_lengthlist__8c1_s_p9_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__8c1_s_p9_1,
+	NULL,
+	&_vq_auxt__8c1_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8c1_s_p9_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__8c1_s_p9_2[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9,11,11,12, 7, 7, 7, 7, 8, 8, 9, 9,
+	 9, 9,10,10,10,10,10,10,10,10,11,11,11, 7, 7, 7,
+	 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,11,
+	11,12, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,
+	10,10,10,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,
+	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
+	10,10,10,11,12,11, 9, 9, 8, 9, 9, 9, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,11,11,11,11,11, 8, 8, 9,
+	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,11,12,11,
+	12,11, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+	10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
+	10,10,10,10,10,10,10,12,11,12,11,11, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	11,11,11,12,11,11,12,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,11,10,11,11,11,11,11,11,11,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,
+	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	11,11,12,11,12,11,11,11,11,10,10,10,10,10,10,10,
+	10,10,10,10,10,11,11,12,11,11,12,11,11,12,10,10,
+	11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,
+	12,11,12,11,11,12,12,12,11,11,10,10,10,10,10,10,
+	10,10,10,11,12,12,11,12,12,11,12,11,11,11,11,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__8c1_s_p9_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__8c1_s_p9_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__8c1_s_p9_2 = {
+	_vq_quantthresh__8c1_s_p9_2,
+	_vq_quantmap__8c1_s_p9_2,
+	21,
+	21
+};
+
+static static_codebook _8c1_s_p9_2 = {
+	2, 441,
+	_vq_lengthlist__8c1_s_p9_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__8c1_s_p9_2,
+	NULL,
+	&_vq_auxt__8c1_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__8c1_s_single[] = {
+	 4, 6,18, 8,11, 8, 8, 9, 9,10, 4, 4,18, 5, 9, 5,
+	 6, 7, 8,10,18,18,18,18,17,17,17,17,17,17, 7, 5,
+	17, 6,11, 6, 7, 8, 9,12,12, 9,17,12, 8, 8, 9,10,
+	10,13, 7, 5,17, 6, 8, 4, 5, 6, 8,10, 6, 5,17, 6,
+	 8, 5, 4, 5, 7, 9, 7, 7,17, 8, 9, 6, 5, 5, 6, 8,
+	 8, 8,17, 9,11, 8, 6, 6, 6, 7, 9,10,17,12,12,10,
+	 9, 7, 7, 8,
+};
+
+static static_codebook _huff_book__8c1_s_single = {
+	2, 100,
+	_huff_lengthlist__8c1_s_single,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c2_s_long[] = {
+	 6, 6,12,10,10,10, 9,10,12,12, 6, 1,10, 5, 6, 6,
+	 7, 9,11,14,12, 9, 8,11, 7, 8, 9,11,13,15,10, 5,
+	12, 7, 8, 7, 9,12,14,15,10, 6, 7, 8, 5, 6, 7, 9,
+	12,14, 9, 6, 8, 7, 6, 6, 7, 9,12,12, 9, 7, 9, 9,
+	 7, 6, 6, 7,10,10,10, 9,10,11, 8, 7, 6, 6, 8,10,
+	12,11,13,13,11,10, 8, 8, 8,10,11,13,15,15,14,13,
+	10, 8, 8, 9,
+};
+
+static static_codebook _huff_book__44c2_s_long = {
+	2, 100,
+	_huff_lengthlist__44c2_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c2_s_p1_0[] = {
+	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
+	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+	 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c2_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c2_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p1_0 = {
+	_vq_quantthresh__44c2_s_p1_0,
+	_vq_quantmap__44c2_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c2_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c2_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c2_s_p1_0,
+	NULL,
+	&_vq_auxt__44c2_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c2_s_p2_0[] = {
+	 1, 4, 4, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,
+	 8, 8, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
+	 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
+	 0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,11,11, 0, 0,
+	 0,11,11, 0, 0, 0,12,11, 0, 0, 0, 0, 0, 0, 0, 7,
+	 8, 8, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0, 0,11,
+	12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0,11,11, 0, 0, 0,11,11,
+	 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0,
+	 0, 0,10,11, 0, 0, 0,10,11, 0, 0, 0,11,11, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 8, 9, 9, 0, 0, 0,11,12, 0, 0, 0,11,12, 0, 0, 0,
+	12,11, 0, 0, 0, 0, 0, 0, 0, 8,10, 9, 0, 0, 0,12,
+	11, 0, 0, 0,12,11, 0, 0, 0,11,12, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c2_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c2_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p2_0 = {
+	_vq_quantthresh__44c2_s_p2_0,
+	_vq_quantmap__44c2_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c2_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c2_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c2_s_p2_0,
+	NULL,
+	&_vq_auxt__44c2_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c2_s_p3_0[] = {
+	 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c2_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c2_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p3_0 = {
+	_vq_quantthresh__44c2_s_p3_0,
+	_vq_quantmap__44c2_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _44c2_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__44c2_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c2_s_p3_0,
+	NULL,
+	&_vq_auxt__44c2_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c2_s_p4_0[] = {
+	 1, 3, 3, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0,
+	 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 7, 7, 6, 6,
+	 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0,
+	 7, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c2_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c2_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p4_0 = {
+	_vq_quantthresh__44c2_s_p4_0,
+	_vq_quantmap__44c2_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c2_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c2_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c2_s_p4_0,
+	NULL,
+	&_vq_auxt__44c2_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c2_s_p5_0[] = {
+	 1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 7, 7, 7, 7, 7, 7,
+	 9, 9, 0, 7, 7, 7, 7, 7, 7, 9, 9, 0, 8, 8, 7, 7,
+	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 8, 8,10,10, 0, 0, 0, 9, 9, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+	11,
+};
+
+static float _vq_quantthresh__44c2_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c2_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p5_0 = {
+	_vq_quantthresh__44c2_s_p5_0,
+	_vq_quantmap__44c2_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _44c2_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__44c2_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c2_s_p5_0,
+	NULL,
+	&_vq_auxt__44c2_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c2_s_p6_0[] = {
+	 1, 4, 3, 6, 6, 8, 8, 9, 9, 9, 9, 9, 9,10,10,11,
+	11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	12,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,11,12, 0, 8, 8, 7, 7, 9, 9,10,10, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10, 9,10,
+	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+	11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+	10,11,11,12,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,10,10,11,11,12,12,13,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,13,13,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44c2_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c2_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p6_0 = {
+	_vq_quantthresh__44c2_s_p6_0,
+	_vq_quantmap__44c2_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _44c2_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__44c2_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c2_s_p6_0,
+	NULL,
+	&_vq_auxt__44c2_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c2_s_p7_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,10, 9, 9, 7,10,10,11,10,
+	11,11,10,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+	11,10,11,11,10,10, 7,11,10,11,11,11,12,11,11, 6,
+	 9, 9,11,10,10,11,11,10, 6, 9, 9,11,10,10,12,10,
+	11,
+};
+
+static float _vq_quantthresh__44c2_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c2_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p7_0 = {
+	_vq_quantthresh__44c2_s_p7_0,
+	_vq_quantmap__44c2_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _44c2_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__44c2_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c2_s_p7_0,
+	NULL,
+	&_vq_auxt__44c2_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c2_s_p7_1[] = {
+	 2, 3, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 7, 7, 6, 6,
+	 7, 7, 8, 8, 8, 8, 9, 6, 6, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c2_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c2_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p7_1 = {
+	_vq_quantthresh__44c2_s_p7_1,
+	_vq_quantmap__44c2_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c2_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c2_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c2_s_p7_1,
+	NULL,
+	&_vq_auxt__44c2_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c2_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8,
+	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+	13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
+	10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
+	11,12,12,12,12, 0, 0, 0,14,14,10,11,11,11,12,12,
+	13,13, 0, 0, 0,14,14,11,10,11,11,13,12,13,13, 0,
+	 0, 0, 0, 0,12,12,11,12,13,12,14,14, 0, 0, 0, 0,
+	 0,12,12,12,12,13,12,14,14,
+};
+
+static float _vq_quantthresh__44c2_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c2_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p8_0 = {
+	_vq_quantthresh__44c2_s_p8_0,
+	_vq_quantmap__44c2_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _44c2_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__44c2_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c2_s_p8_0,
+	NULL,
+	&_vq_auxt__44c2_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c2_s_p8_1[] = {
+	 2, 4, 4, 5, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c2_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c2_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p8_1 = {
+	_vq_quantthresh__44c2_s_p8_1,
+	_vq_quantmap__44c2_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _44c2_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__44c2_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c2_s_p8_1,
+	NULL,
+	&_vq_auxt__44c2_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c2_s_p9_0[] = {
+	 1, 5, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8,
+	11,11,11,11,11,11,11,11,11,11, 2, 8, 7,11,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,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,
+};
+
+static float _vq_quantthresh__44c2_s_p9_0[] = {
+	-1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 
+	552.5, 773.5, 994.5, 1215.5, 
+};
+
+static long _vq_quantmap__44c2_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p9_0 = {
+	_vq_quantthresh__44c2_s_p9_0,
+	_vq_quantmap__44c2_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _44c2_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__44c2_s_p9_0,
+	1, -514541568, 1627103232, 4, 0,
+	_vq_quantlist__44c2_s_p9_0,
+	NULL,
+	&_vq_auxt__44c2_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p9_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c2_s_p9_1[] = {
+	 1, 4, 4, 6, 6, 7, 6, 8, 8,10, 9,10,10, 6, 5, 5,
+	 7, 7, 8, 7,10, 9,11,11,12,13, 6, 5, 5, 7, 7, 8,
+	 8,10,10,11,11,13,13,18, 8, 8, 8, 8, 9, 9,10,10,
+	12,12,12,13,18, 8, 8, 8, 8, 9, 9,10,10,12,12,13,
+	13,18,11,11, 8, 8,10,10,11,11,12,11,13,12,18,11,
+	11, 9, 7,10,10,11,11,11,12,12,13,17,17,17,10,10,
+	11,11,12,12,12,10,12,12,17,17,17,11,10,11,10,13,
+	12,11,12,12,12,17,17,17,15,14,11,11,12,11,13,10,
+	13,12,17,17,17,14,14,12,10,11,11,13,13,13,13,17,
+	17,16,17,16,13,13,12,10,13,10,14,13,17,16,17,16,
+	17,13,12,12,10,13,11,14,14,
+};
+
+static float _vq_quantthresh__44c2_s_p9_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44c2_s_p9_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p9_1 = {
+	_vq_quantthresh__44c2_s_p9_1,
+	_vq_quantmap__44c2_s_p9_1,
+	13,
+	13
+};
+
+static static_codebook _44c2_s_p9_1 = {
+	2, 169,
+	_vq_lengthlist__44c2_s_p9_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44c2_s_p9_1,
+	NULL,
+	&_vq_auxt__44c2_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c2_s_p9_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c2_s_p9_2[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+	 8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9,10, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 8, 7, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9,10, 9, 9, 9,10,11,10, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10,10,11,10, 8, 8, 9, 9, 9, 9,
+	 9, 9,10, 9, 9,10, 9,10,11,10,11,11,11, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,11,11,11,11,11, 9, 9,
+	 9, 9, 9, 9,10, 9, 9, 9,10,10,11,11,11,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,11,11,11,11,11,
+	 9, 9, 9, 9,10,10, 9, 9, 9,10,10,10,11,11,11,11,
+	11,11,11, 9, 9, 9,10, 9, 9,10,10,10,10,11,11,10,
+	11,11,11,11,10, 9,10,10, 9, 9, 9, 9,10,10,11,10,
+	11,11,11,11,11, 9, 9, 9, 9,10, 9,10,10,10,10,11,
+	10,11,11,11,11,11,10,10, 9, 9,10, 9,10,10,10,10,
+	10,10,10,11,11,11,11,11,11, 9, 9,10, 9,10, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__44c2_s_p9_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c2_s_p9_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c2_s_p9_2 = {
+	_vq_quantthresh__44c2_s_p9_2,
+	_vq_quantmap__44c2_s_p9_2,
+	17,
+	17
+};
+
+static static_codebook _44c2_s_p9_2 = {
+	2, 289,
+	_vq_lengthlist__44c2_s_p9_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c2_s_p9_2,
+	NULL,
+	&_vq_auxt__44c2_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c2_s_short[] = {
+	11, 9,13,12,12,11,12,12,13,15, 8, 2,11, 4, 8, 5,
+	 7,10,12,15,13, 7,10, 9, 8, 8,10,13,17,17,11, 4,
+	12, 5, 9, 5, 8,11,14,16,12, 6, 8, 7, 6, 6, 8,11,
+	13,16,11, 4, 9, 5, 6, 4, 6,10,13,16,11, 6,11, 7,
+	 7, 6, 7,10,13,15,13, 9,12, 9, 8, 6, 8,10,12,14,
+	14,10,10, 8, 6, 5, 6, 9,11,13,15,11,11, 9, 6, 5,
+	 6, 8, 9,12,
+};
+
+static static_codebook _huff_book__44c2_s_short = {
+	2, 100,
+	_huff_lengthlist__44c2_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c3_s_long[] = {
+	 5, 6,11,11,11,11,10,10,12,11, 5, 2,11, 5, 6, 6,
+	 7, 9,11,13,13,10, 7,11, 6, 7, 8, 9,10,12,11, 5,
+	11, 6, 8, 7, 9,11,14,15,11, 6, 6, 8, 4, 5, 7, 8,
+	10,13,10, 5, 7, 7, 5, 5, 6, 8,10,11,10, 7, 7, 8,
+	 6, 5, 5, 7, 9, 9,11, 8, 8,11, 8, 7, 6, 6, 7, 9,
+	12,11,10,13, 9, 9, 7, 7, 7, 9,11,13,12,15,12,11,
+	 9, 8, 8, 8,
+};
+
+static static_codebook _huff_book__44c3_s_long = {
+	2, 100,
+	_huff_lengthlist__44c3_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c3_s_p1_0[] = {
+	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
+	 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+	 0, 0, 0, 0, 7, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c3_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c3_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p1_0 = {
+	_vq_quantthresh__44c3_s_p1_0,
+	_vq_quantmap__44c3_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c3_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c3_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c3_s_p1_0,
+	NULL,
+	&_vq_auxt__44c3_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c3_s_p2_0[] = {
+	 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
+	 7, 8, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7,
+	 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0,
+	 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
+	 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
+	 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0,
+	 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 8,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
+	10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0, 9,
+	 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c3_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c3_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p2_0 = {
+	_vq_quantthresh__44c3_s_p2_0,
+	_vq_quantmap__44c3_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c3_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c3_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c3_s_p2_0,
+	NULL,
+	&_vq_auxt__44c3_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c3_s_p3_0[] = {
+	 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c3_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c3_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p3_0 = {
+	_vq_quantthresh__44c3_s_p3_0,
+	_vq_quantmap__44c3_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _44c3_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__44c3_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c3_s_p3_0,
+	NULL,
+	&_vq_auxt__44c3_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c3_s_p4_0[] = {
+	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
+	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
+	 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c3_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c3_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p4_0 = {
+	_vq_quantthresh__44c3_s_p4_0,
+	_vq_quantmap__44c3_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c3_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c3_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c3_s_p4_0,
+	NULL,
+	&_vq_auxt__44c3_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c3_s_p5_0[] = {
+	 1, 3, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 7, 8,
+	 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+	 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
+	 0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
+	11,
+};
+
+static float _vq_quantthresh__44c3_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c3_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p5_0 = {
+	_vq_quantthresh__44c3_s_p5_0,
+	_vq_quantmap__44c3_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _44c3_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__44c3_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c3_s_p5_0,
+	NULL,
+	&_vq_auxt__44c3_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c3_s_p6_0[] = {
+	 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	10, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
+	11,11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+	10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9,
+	 9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,10,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 8,
+	 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8,
+	 8, 9, 9,10,10,11,11,12,11,12,12, 0, 0, 0, 0, 0,
+	 9,10,10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,10,10,11,11,12,12,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
+	 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
+	13,
+};
+
+static float _vq_quantthresh__44c3_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c3_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p6_0 = {
+	_vq_quantthresh__44c3_s_p6_0,
+	_vq_quantmap__44c3_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _44c3_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__44c3_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c3_s_p6_0,
+	NULL,
+	&_vq_auxt__44c3_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c3_s_p7_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+	10,12,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+	11,10,10,11,10,10, 7,11,11,11,11,11,12,11,11, 6,
+	 9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__44c3_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c3_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p7_0 = {
+	_vq_quantthresh__44c3_s_p7_0,
+	_vq_quantmap__44c3_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _44c3_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__44c3_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c3_s_p7_0,
+	NULL,
+	&_vq_auxt__44c3_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c3_s_p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+	 7, 8, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c3_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c3_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p7_1 = {
+	_vq_quantthresh__44c3_s_p7_1,
+	_vq_quantmap__44c3_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c3_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c3_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c3_s_p7_1,
+	NULL,
+	&_vq_auxt__44c3_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c3_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
+	 8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9,10,10,10,10,11,11,11,12, 0,13,
+	13, 9, 9,10,10,10,10,11,11,12,12, 0, 0, 0,10,10,
+	10,10,11,11,12,12,12,12, 0, 0, 0,10,10,10,10,11,
+	11,12,12,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
+	13,13, 0, 0, 0,14,14,11,11,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,12,12,12,12,13,13,14,13, 0, 0, 0, 0,
+	 0,13,13,12,12,13,12,14,13,
+};
+
+static float _vq_quantthresh__44c3_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c3_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p8_0 = {
+	_vq_quantthresh__44c3_s_p8_0,
+	_vq_quantmap__44c3_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _44c3_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__44c3_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c3_s_p8_0,
+	NULL,
+	&_vq_auxt__44c3_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c3_s_p8_1[] = {
+	 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c3_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c3_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p8_1 = {
+	_vq_quantthresh__44c3_s_p8_1,
+	_vq_quantmap__44c3_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _44c3_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__44c3_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c3_s_p8_1,
+	NULL,
+	&_vq_auxt__44c3_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c3_s_p9_0[] = {
+	 1, 4, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8,
+	12,12,12,12,12,12,12,12,12,12, 2, 9, 7,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,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,11,11,11,11,11,11,11,
+};
+
+static float _vq_quantthresh__44c3_s_p9_0[] = {
+	-1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 
+	637.5, 892.5, 1147.5, 1402.5, 
+};
+
+static long _vq_quantmap__44c3_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p9_0 = {
+	_vq_quantthresh__44c3_s_p9_0,
+	_vq_quantmap__44c3_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _44c3_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__44c3_s_p9_0,
+	1, -514332672, 1627381760, 4, 0,
+	_vq_quantlist__44c3_s_p9_0,
+	NULL,
+	&_vq_auxt__44c3_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c3_s_p9_1[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9,10,10,10,10, 6,
+	 5, 5, 7, 7, 8, 8,10, 8,11,10,12,12,13,13, 6, 5,
+	 5, 7, 7, 8, 8,10, 9,11,11,12,12,13,12,18, 8, 8,
+	 8, 8, 9, 9,10, 9,11,10,12,12,13,13,18, 8, 8, 8,
+	 8, 9, 9,10,10,11,11,13,12,14,13,18,11,11, 9, 9,
+	10,10,11,11,11,12,13,12,13,14,18,11,11, 9, 8,11,
+	10,11,11,11,11,12,12,14,13,18,18,18,10,11,10,11,
+	12,12,12,12,13,12,14,13,18,18,18,10,11,11, 9,12,
+	11,12,12,12,13,13,13,18,18,17,14,14,11,11,12,12,
+	13,12,14,12,14,13,18,18,18,14,14,11,10,12, 9,12,
+	13,13,13,13,13,18,18,17,16,18,13,13,12,12,13,11,
+	14,12,14,14,17,18,18,17,18,13,12,13,10,12,11,14,
+	14,14,14,17,18,18,18,18,15,16,12,12,13,10,14,12,
+	14,15,18,18,18,16,17,16,14,12,11,13,10,13,13,14,
+	15,
+};
+
+static float _vq_quantthresh__44c3_s_p9_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__44c3_s_p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p9_1 = {
+	_vq_quantthresh__44c3_s_p9_1,
+	_vq_quantmap__44c3_s_p9_1,
+	15,
+	15
+};
+
+static static_codebook _44c3_s_p9_1 = {
+	2, 225,
+	_vq_lengthlist__44c3_s_p9_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__44c3_s_p9_1,
+	NULL,
+	&_vq_auxt__44c3_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c3_s_p9_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c3_s_p9_2[] = {
+	 2, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+	 8,10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,11, 9, 9,
+	 9, 9, 9, 9,10,10, 9, 9,10, 9,11,10,11,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,11,11,11,11,11,
+	 9, 9, 9, 9,10,10, 9, 9, 9, 9,10, 9,11,11,11,11,
+	11,11,11, 9, 9, 9, 9, 9, 9,10,10,10,10,11,11,11,
+	11,11,11,11,10, 9,10,10, 9,10, 9, 9,10, 9,11,10,
+	10,11,11,11,11, 9,10, 9, 9, 9, 9,10,10,10,10,11,
+	11,11,11,11,11,10,10,10, 9, 9,10, 9,10, 9,10,10,
+	10,10,11,11,11,11,11,11,11, 9, 9, 9, 9, 9,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44c3_s_p9_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c3_s_p9_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c3_s_p9_2 = {
+	_vq_quantthresh__44c3_s_p9_2,
+	_vq_quantmap__44c3_s_p9_2,
+	17,
+	17
+};
+
+static static_codebook _44c3_s_p9_2 = {
+	2, 289,
+	_vq_lengthlist__44c3_s_p9_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c3_s_p9_2,
+	NULL,
+	&_vq_auxt__44c3_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c3_s_short[] = {
+	10, 9,13,11,14,10,12,13,13,14, 7, 2,12, 5,10, 5,
+	 7,10,12,14,12, 6, 9, 8, 7, 7, 9,11,13,16,10, 4,
+	12, 5,10, 6, 8,12,14,16,12, 6, 8, 7, 6, 5, 7,11,
+	12,16,10, 4, 8, 5, 6, 4, 6, 9,13,16,10, 6,10, 7,
+	 7, 6, 7, 9,13,15,12, 9,11, 9, 8, 6, 7,10,12,14,
+	14,11,10, 9, 6, 5, 6, 9,11,13,15,13,11,10, 6, 5,
+	 6, 8, 9,11,
+};
+
+static static_codebook _huff_book__44c3_s_short = {
+	2, 100,
+	_huff_lengthlist__44c3_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c4_s_long[] = {
+	 4, 7,11,11,11,11,10,11,12,11, 5, 2,11, 5, 6, 6,
+	 7, 9,11,12,11, 9, 6,10, 6, 7, 8, 9,10,11,11, 5,
+	11, 7, 8, 8, 9,11,13,14,11, 6, 5, 8, 4, 5, 7, 8,
+	10,11,10, 6, 7, 7, 5, 5, 6, 8, 9,11,10, 7, 8, 9,
+	 6, 6, 6, 7, 8, 9,11, 9, 9,11, 7, 7, 6, 6, 7, 9,
+	12,12,10,13, 9, 8, 7, 7, 7, 8,11,13,11,14,11,10,
+	 9, 8, 7, 7,
+};
+
+static static_codebook _huff_book__44c4_s_long = {
+	2, 100,
+	_huff_lengthlist__44c4_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c4_s_p1_0[] = {
+	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0,
+	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 6, 8, 7, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+	 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c4_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c4_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p1_0 = {
+	_vq_quantthresh__44c4_s_p1_0,
+	_vq_quantmap__44c4_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c4_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c4_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c4_s_p1_0,
+	NULL,
+	&_vq_auxt__44c4_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c4_s_p2_0[] = {
+	 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
+	 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7,
+	 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 7, 7, 0, 0,
+	 0, 7, 7, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5,
+	 7, 8, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9,
+	 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 5, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7,
+	 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0,
+	 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 7,10,10, 0, 0, 0, 9, 9, 0, 0, 0, 9, 9, 0, 0, 0,
+	10,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0, 9,
+	 9, 0, 0, 0, 9, 9, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c4_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c4_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p2_0 = {
+	_vq_quantthresh__44c4_s_p2_0,
+	_vq_quantmap__44c4_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c4_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c4_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c4_s_p2_0,
+	NULL,
+	&_vq_auxt__44c4_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c4_s_p3_0[] = {
+	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c4_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c4_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p3_0 = {
+	_vq_quantthresh__44c4_s_p3_0,
+	_vq_quantmap__44c4_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _44c4_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__44c4_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c4_s_p3_0,
+	NULL,
+	&_vq_auxt__44c4_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c4_s_p4_0[] = {
+	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
+	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
+	 7, 8, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c4_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c4_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p4_0 = {
+	_vq_quantthresh__44c4_s_p4_0,
+	_vq_quantmap__44c4_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c4_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c4_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c4_s_p4_0,
+	NULL,
+	&_vq_auxt__44c4_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c4_s_p5_0[] = {
+	 2, 3, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+	 9, 9, 0, 4, 5, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
+	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, 0,
+	 9, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__44c4_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c4_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p5_0 = {
+	_vq_quantthresh__44c4_s_p5_0,
+	_vq_quantmap__44c4_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _44c4_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__44c4_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c4_s_p5_0,
+	NULL,
+	&_vq_auxt__44c4_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c4_s_p6_0[] = {
+	 2, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,
+	11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	11,11, 0, 4, 4, 7, 6, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9,
+	 9,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,
+	 9,10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9,
+	 9, 9, 9,10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0,
+	10,10,10,10,11,11,11,11,12,12,13,12, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,11,11,12,12,12,12, 0, 0, 0,
+	 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,12,12,13,13,13,13,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,12,13,13,
+	13,
+};
+
+static float _vq_quantthresh__44c4_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c4_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p6_0 = {
+	_vq_quantthresh__44c4_s_p6_0,
+	_vq_quantmap__44c4_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _44c4_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__44c4_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c4_s_p6_0,
+	NULL,
+	&_vq_auxt__44c4_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c4_s_p7_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+	10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+	11,10,10,11,10,10, 7,11,11,12,11,11,12,11,11, 6,
+	 9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__44c4_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c4_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p7_0 = {
+	_vq_quantthresh__44c4_s_p7_0,
+	_vq_quantmap__44c4_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _44c4_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__44c4_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c4_s_p7_0,
+	NULL,
+	&_vq_auxt__44c4_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c4_s_p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+	 7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 9, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 9, 9,
+};
+
+static float _vq_quantthresh__44c4_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c4_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p7_1 = {
+	_vq_quantthresh__44c4_s_p7_1,
+	_vq_quantmap__44c4_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c4_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c4_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c4_s_p7_1,
+	NULL,
+	&_vq_auxt__44c4_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c4_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8,
+	 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9, 9, 9,10,10,10,10,11,11, 0,13,
+	13, 9, 9,10, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
+	10,10,10,10,11,11,12,12, 0, 0, 0,10,10,10,10,10,
+	10,11,11,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
+	12,12, 0, 0, 0,14,14,11,11,11,11,12,12,12,13, 0,
+	 0, 0, 0, 0,12,12,12,12,12,12,13,13, 0, 0, 0, 0,
+	 0,13,12,12,12,12,12,13,13,
+};
+
+static float _vq_quantthresh__44c4_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c4_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p8_0 = {
+	_vq_quantthresh__44c4_s_p8_0,
+	_vq_quantmap__44c4_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _44c4_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__44c4_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c4_s_p8_0,
+	NULL,
+	&_vq_auxt__44c4_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c4_s_p8_1[] = {
+	 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 5, 4, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c4_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c4_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p8_1 = {
+	_vq_quantthresh__44c4_s_p8_1,
+	_vq_quantmap__44c4_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _44c4_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__44c4_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c4_s_p8_1,
+	NULL,
+	&_vq_auxt__44c4_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c4_s_p9_0[] = {
+	 1, 3, 3,12,12,12,12,12,12,12,12,12,12, 4, 7, 7,
+	12,12,12,12,12,12,12,12,12,12, 3, 8, 8,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,
+};
+
+static float _vq_quantthresh__44c4_s_p9_0[] = {
+	-1732.5, -1417.5, -1102.5, -787.5, -472.5, -157.5, 157.5, 472.5, 
+	787.5, 1102.5, 1417.5, 1732.5, 
+};
+
+static long _vq_quantmap__44c4_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p9_0 = {
+	_vq_quantthresh__44c4_s_p9_0,
+	_vq_quantmap__44c4_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _44c4_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__44c4_s_p9_0,
+	1, -513964032, 1628680192, 4, 0,
+	_vq_quantlist__44c4_s_p9_0,
+	NULL,
+	&_vq_auxt__44c4_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c4_s_p9_1[] = {
+	 1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,10,10, 6,
+	 5, 5, 7, 7, 9, 8,10, 9,11,10,12,12,13,13, 6, 5,
+	 5, 7, 7, 9, 9,10,10,11,11,12,12,12,13,19, 8, 8,
+	 8, 8, 9, 9,10,10,12,11,12,12,13,13,19, 8, 8, 8,
+	 8, 9, 9,11,11,12,12,13,13,13,13,19,12,12, 9, 9,
+	11,11,11,11,12,11,13,12,13,13,18,12,12, 9, 9,11,
+	10,11,11,12,12,12,13,13,14,19,18,18,11,11,11,11,
+	12,12,13,12,13,13,14,14,16,18,18,11,11,11,10,12,
+	11,13,13,13,13,13,14,17,18,18,14,15,11,12,12,13,
+	13,13,13,14,14,14,18,18,18,15,15,12,10,13,10,13,
+	13,13,13,13,14,18,17,18,17,18,12,13,12,13,13,13,
+	14,14,16,14,18,17,18,18,17,13,12,13,10,12,12,14,
+	14,14,14,17,18,18,18,18,14,15,12,12,13,12,14,14,
+	15,15,18,18,18,17,18,15,14,12,11,12,12,14,14,14,
+	15,
+};
+
+static float _vq_quantthresh__44c4_s_p9_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44c4_s_p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p9_1 = {
+	_vq_quantthresh__44c4_s_p9_1,
+	_vq_quantmap__44c4_s_p9_1,
+	15,
+	15
+};
+
+static static_codebook _44c4_s_p9_1 = {
+	2, 225,
+	_vq_lengthlist__44c4_s_p9_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44c4_s_p9_1,
+	NULL,
+	&_vq_auxt__44c4_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c4_s_p9_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44c4_s_p9_2[] = {
+	 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 9, 9, 9, 9,11, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,11, 6, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,11,
+	 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10,10,10,12,11,11, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,12,11,12, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,11,
+	11, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,
+	10,10,10,11,11,12, 9, 9, 9, 9, 9, 9,10, 9,10,10,
+	10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,
+	11,11, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,11,11,11,11,11, 9, 9, 9, 9,10,10,10,10,10,
+	10,10,10,10,10,10,10,11,11,11,12,12,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,12,
+	11,11,11, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,11,12,11,11,11,11,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,11,11,11,12,11,11,11,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,12,11,11,12,11,
+	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+	10,10,10,10,10,11,11,11,11,12,12,11,11,11,11,11,
+	11,11,10,10,10,10,10,10,10,10,12,12,12,11,11,11,
+	12,11,11,11,10,10,10,10,10,10,10,10,10,10,10,12,
+	11,12,12,12,12,12,11,12,11,11,10,10,10,10,10,10,
+	10,10,10,10,12,12,12,12,11,11,11,11,11,11,11,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44c4_s_p9_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44c4_s_p9_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c4_s_p9_2 = {
+	_vq_quantthresh__44c4_s_p9_2,
+	_vq_quantmap__44c4_s_p9_2,
+	21,
+	21
+};
+
+static static_codebook _44c4_s_p9_2 = {
+	2, 441,
+	_vq_lengthlist__44c4_s_p9_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44c4_s_p9_2,
+	NULL,
+	&_vq_auxt__44c4_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c4_s_short[] = {
+	 4, 7,14,10,15,10,12,15,16,15, 4, 2,11, 5,10, 6,
+	 8,11,14,14,14,10, 7,11, 6, 8,10,11,13,15, 9, 4,
+	11, 5, 9, 6, 9,12,14,15,14, 9, 6, 9, 4, 5, 7,10,
+	12,13, 9, 5, 7, 6, 5, 5, 7,10,13,13,10, 8, 9, 8,
+	 7, 6, 8,10,14,14,13,11,10,10, 7, 7, 8,11,14,15,
+	13,12, 9, 9, 6, 5, 7,10,14,17,15,13,11,10, 6, 6,
+	 7, 9,12,17,
+};
+
+static static_codebook _huff_book__44c4_s_short = {
+	2, 100,
+	_huff_lengthlist__44c4_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c5_s_long[] = {
+	 3, 8, 9,13,10,12,12,12,12,12, 6, 4, 6, 8, 6, 8,
+	10,10,11,12, 8, 5, 4,10, 4, 7, 8, 9,10,11,13, 8,
+	10, 8, 9, 9,11,12,13,14,10, 6, 4, 9, 3, 5, 6, 8,
+	10,11,11, 8, 6, 9, 5, 5, 6, 7, 9,11,12, 9, 7,11,
+	 6, 6, 6, 7, 8,10,12,11, 9,12, 7, 7, 6, 6, 7, 9,
+	13,12,10,13, 9, 8, 7, 7, 7, 8,11,15,11,15,11,10,
+	 9, 8, 7, 7,
+};
+
+static static_codebook _huff_book__44c5_s_long = {
+	2, 100,
+	_huff_lengthlist__44c5_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c5_s_p1_0[] = {
+	 2, 4, 4, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
+	 0, 0, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
+	 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c5_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c5_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p1_0 = {
+	_vq_quantthresh__44c5_s_p1_0,
+	_vq_quantmap__44c5_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c5_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c5_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c5_s_p1_0,
+	NULL,
+	&_vq_auxt__44c5_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c5_s_p2_0[] = {
+	 2, 4, 4, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0,
+	 8, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8,
+	 8, 0, 0, 0, 8, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0,
+	 0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 7, 8, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 8, 8, 0, 0,
+	 0, 8, 8, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5,
+	 7, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,
+	10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 5, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8,
+	 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0,
+	 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0,10,10, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 8,10,10, 0, 0, 0,10,10, 0, 0, 0, 9,10, 0, 0, 0,
+	11,10, 0, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0, 0,10,
+	10, 0, 0, 0,10,10, 0, 0, 0,10,11, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c5_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c5_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p2_0 = {
+	_vq_quantthresh__44c5_s_p2_0,
+	_vq_quantmap__44c5_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c5_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c5_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c5_s_p2_0,
+	NULL,
+	&_vq_auxt__44c5_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c5_s_p3_0[] = {
+	 2, 4, 3, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 5, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c5_s_p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c5_s_p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p3_0 = {
+	_vq_quantthresh__44c5_s_p3_0,
+	_vq_quantmap__44c5_s_p3_0,
+	5,
+	5
+};
+
+static static_codebook _44c5_s_p3_0 = {
+	4, 625,
+	_vq_lengthlist__44c5_s_p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c5_s_p3_0,
+	NULL,
+	&_vq_auxt__44c5_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c5_s_p4_0[] = {
+	 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6,
+	 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0,
+	 7, 7, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c5_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c5_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p4_0 = {
+	_vq_quantthresh__44c5_s_p4_0,
+	_vq_quantmap__44c5_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c5_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c5_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c5_s_p4_0,
+	NULL,
+	&_vq_auxt__44c5_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c5_s_p5_0[] = {
+	 2, 4, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+	 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7,
+	 7, 7, 9, 9, 0, 0, 0, 7, 6, 7, 7, 9, 9, 0, 0, 0,
+	 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+	 0, 0, 9, 9, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__44c5_s_p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c5_s_p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p5_0 = {
+	_vq_quantthresh__44c5_s_p5_0,
+	_vq_quantmap__44c5_s_p5_0,
+	9,
+	9
+};
+
+static static_codebook _44c5_s_p5_0 = {
+	2, 81,
+	_vq_lengthlist__44c5_s_p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c5_s_p5_0,
+	NULL,
+	&_vq_auxt__44c5_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p6_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c5_s_p6_0[] = {
+	 2, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,11,
+	11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	12,12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,12,12, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
+	11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 9,10,10,10,
+	10,11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,
+	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
+	10,10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9,
+	 9, 9,10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
+	10,10,10,10,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,11,11,12,12,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,11,11,12,12,12,13,13,13, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,11,12,12,12,12,13,13, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,13,12,13,13,13,13,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,
+	13,
+};
+
+static float _vq_quantthresh__44c5_s_p6_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c5_s_p6_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p6_0 = {
+	_vq_quantthresh__44c5_s_p6_0,
+	_vq_quantmap__44c5_s_p6_0,
+	17,
+	17
+};
+
+static static_codebook _44c5_s_p6_0 = {
+	2, 289,
+	_vq_lengthlist__44c5_s_p6_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c5_s_p6_0,
+	NULL,
+	&_vq_auxt__44c5_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c5_s_p7_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+	10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+	11,10,10,11,10,10, 7,11,11,12,11,11,12,11,11, 6,
+	 9, 9,11,10,10,11,10,10, 6, 9, 9,11,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__44c5_s_p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c5_s_p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p7_0 = {
+	_vq_quantthresh__44c5_s_p7_0,
+	_vq_quantmap__44c5_s_p7_0,
+	3,
+	3
+};
+
+static static_codebook _44c5_s_p7_0 = {
+	4, 81,
+	_vq_lengthlist__44c5_s_p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c5_s_p7_0,
+	NULL,
+	&_vq_auxt__44c5_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c5_s_p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+	 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 9,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c5_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c5_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p7_1 = {
+	_vq_quantthresh__44c5_s_p7_1,
+	_vq_quantmap__44c5_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c5_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c5_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c5_s_p7_1,
+	NULL,
+	&_vq_auxt__44c5_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c5_s_p8_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+	 7, 7, 8, 8, 8, 9,10,10,10,10, 7, 5, 5, 7, 7, 8,
+	 8, 9, 9,10,10,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9, 9,10,10,10,10,10,11,11, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0,10,10,
+	10,10,10,10,11,11,11,11, 0, 0, 0,10,10,10,10,10,
+	10,11,11,12,12, 0, 0, 0,14,14,11,11,11,11,12,12,
+	12,12, 0, 0, 0,14,14,11,11,11,11,12,12,12,12, 0,
+	 0, 0, 0, 0,12,12,12,12,12,12,13,13, 0, 0, 0, 0,
+	 0,12,12,12,12,12,12,13,13,
+};
+
+static float _vq_quantthresh__44c5_s_p8_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c5_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p8_0 = {
+	_vq_quantthresh__44c5_s_p8_0,
+	_vq_quantmap__44c5_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _44c5_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__44c5_s_p8_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c5_s_p8_0,
+	NULL,
+	&_vq_auxt__44c5_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p8_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c5_s_p8_1[] = {
+	 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c5_s_p8_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c5_s_p8_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p8_1 = {
+	_vq_quantthresh__44c5_s_p8_1,
+	_vq_quantmap__44c5_s_p8_1,
+	5,
+	5
+};
+
+static static_codebook _44c5_s_p8_1 = {
+	2, 25,
+	_vq_lengthlist__44c5_s_p8_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c5_s_p8_1,
+	NULL,
+	&_vq_auxt__44c5_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p9_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c5_s_p9_0[] = {
+	 1, 3, 3,13,13,13,13,13,13,13,13,13,13,13,13, 4,
+	 7, 7,13,13,13,13,13,13,13,13,13,13,13,13, 3, 8,
+	 6,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,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,
+};
+
+static float _vq_quantthresh__44c5_s_p9_0[] = {
+	-2320.5, -1963.5, -1606.5, -1249.5, -892.5, -535.5, -178.5, 178.5, 
+	535.5, 892.5, 1249.5, 1606.5, 1963.5, 2320.5, 
+};
+
+static long _vq_quantmap__44c5_s_p9_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p9_0 = {
+	_vq_quantthresh__44c5_s_p9_0,
+	_vq_quantmap__44c5_s_p9_0,
+	15,
+	15
+};
+
+static static_codebook _44c5_s_p9_0 = {
+	2, 225,
+	_vq_lengthlist__44c5_s_p9_0,
+	1, -512522752, 1628852224, 4, 0,
+	_vq_quantlist__44c5_s_p9_0,
+	NULL,
+	&_vq_auxt__44c5_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p9_1[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c5_s_p9_1[] = {
+	 1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,11,10,11,
+	11, 6, 5, 5, 7, 7, 8, 9,10,10,11,10,12,11,12,11,
+	13,12, 6, 5, 5, 7, 7, 9, 9,10,10,11,11,12,12,13,
+	12,13,13,18, 8, 8, 8, 8, 9, 9,10,11,11,11,12,11,
+	13,11,13,12,18, 8, 8, 8, 8,10,10,11,11,12,12,13,
+	13,13,13,13,14,18,12,12, 9, 9,11,11,11,11,12,12,
+	13,12,13,12,13,13,20,13,12, 9, 9,11,11,11,11,12,
+	12,13,13,13,14,14,13,20,18,19,11,12,11,11,12,12,
+	13,13,13,13,13,13,14,13,18,19,19,12,11,11,11,12,
+	12,13,12,13,13,13,14,14,13,18,17,19,14,15,12,12,
+	12,13,13,13,14,14,14,14,14,14,19,19,19,16,15,12,
+	11,13,12,14,14,14,13,13,14,14,14,19,18,19,18,19,
+	13,13,13,13,14,14,14,13,14,14,14,14,18,17,19,19,
+	19,13,13,13,11,13,11,13,14,14,14,14,14,19,17,17,
+	18,18,16,16,13,13,13,13,14,13,15,15,14,14,19,19,
+	17,17,18,16,16,13,11,14,10,13,12,14,14,14,14,19,
+	19,19,19,19,18,17,13,14,13,11,14,13,14,14,15,15,
+	19,19,19,17,19,18,18,14,13,12,11,14,11,15,15,15,
+	15,
+};
+
+static float _vq_quantthresh__44c5_s_p9_1[] = {
+	-157.5, -136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 
+	10.5, 31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 157.5, 
+};
+
+static long _vq_quantmap__44c5_s_p9_1[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p9_1 = {
+	_vq_quantthresh__44c5_s_p9_1,
+	_vq_quantmap__44c5_s_p9_1,
+	17,
+	17
+};
+
+static static_codebook _44c5_s_p9_1 = {
+	2, 289,
+	_vq_lengthlist__44c5_s_p9_1,
+	1, -520814592, 1620377600, 5, 0,
+	_vq_quantlist__44c5_s_p9_1,
+	NULL,
+	&_vq_auxt__44c5_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c5_s_p9_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44c5_s_p9_2[] = {
+	 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 9,11, 5, 6, 7, 7, 8, 7, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11, 5, 5, 7, 7, 7,
+	 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+	 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,10, 9,10,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9,10,10,10,10,10,10,11,11,11, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,11,11,
+	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,
+	10,10,10,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,11,11,11,11,11, 9, 9, 9,
+	 9, 9, 9,10, 9,10,10,10,10,10,10,10,10,11,11,11,
+	11,11, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,
+	10,10,11,11,11,11,11, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10,10,10,10,10,10,11,11,11,11,11, 9, 9,10, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,
+	11,11,11, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,
+	11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+	10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
+	10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,
+	11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44c5_s_p9_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44c5_s_p9_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c5_s_p9_2 = {
+	_vq_quantthresh__44c5_s_p9_2,
+	_vq_quantmap__44c5_s_p9_2,
+	21,
+	21
+};
+
+static static_codebook _44c5_s_p9_2 = {
+	2, 441,
+	_vq_lengthlist__44c5_s_p9_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44c5_s_p9_2,
+	NULL,
+	&_vq_auxt__44c5_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c5_s_short[] = {
+	 5, 8,10,14,11,11,12,16,15,17, 5, 5, 7, 9, 7, 8,
+	10,13,17,17, 7, 5, 5,10, 5, 7, 8,11,13,15,10, 8,
+	10, 8, 8, 8,11,15,18,18, 8, 5, 5, 8, 3, 4, 6,10,
+	14,16, 9, 7, 6, 7, 4, 3, 5, 9,14,18,10, 9, 8,10,
+	 6, 5, 6, 9,14,18,12,12,11,12, 8, 7, 8,11,14,18,
+	14,13,12,10, 7, 5, 6, 9,14,18,14,14,13,10, 6, 5,
+	 6, 8,11,16,
+};
+
+static static_codebook _huff_book__44c5_s_short = {
+	2, 100,
+	_huff_lengthlist__44c5_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c6_s_long[] = {
+	 3, 8,11,13,14,14,13,13,16,14, 6, 3, 4, 7, 9, 9,
+	10,11,14,13,10, 4, 3, 5, 7, 7, 9,10,13,15,12, 7,
+	 4, 4, 6, 6, 8,10,13,15,12, 8, 6, 6, 6, 6, 8,10,
+	13,14,11, 9, 7, 6, 6, 6, 7, 8,12,11,13,10, 9, 8,
+	 7, 6, 6, 7,11,11,13,11,10, 9, 9, 7, 7, 6,10,11,
+	13,13,13,13,13,11, 9, 8,10,12,12,15,15,16,15,12,
+	11,10,10,12,
+};
+
+static static_codebook _huff_book__44c6_s_long = {
+	2, 100,
+	_huff_lengthlist__44c6_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c6_s_p1_0[] = {
+	 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0,
+	 9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9,
+	 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+	 9, 9, 0, 8, 8, 0, 8, 8, 5, 9, 9, 0, 8, 8, 0, 8,
+	 8,
+};
+
+static float _vq_quantthresh__44c6_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c6_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p1_0 = {
+	_vq_quantthresh__44c6_s_p1_0,
+	_vq_quantmap__44c6_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c6_s_p1_0 = {
+	4, 81,
+	_vq_lengthlist__44c6_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c6_s_p1_0,
+	NULL,
+	&_vq_auxt__44c6_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c6_s_p2_0[] = {
+	 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+	 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
+	 8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
+	11,11, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 7, 8, 9,
+	10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,11,
+	 0,11,11,12,12, 0,11,10,12,12, 0,13,14,14,14, 0,
+	 0, 0,14,13, 8, 9, 9,11,11, 0,11,11,12,12, 0,10,
+	11,12,12, 0,14,13,14,14, 0, 0, 0,13,14, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10,
+	 0, 7, 7,10,10, 0, 9, 9,11,10, 0, 0, 0,11,11, 5,
+	 7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
+	 9,10,11, 0, 0, 0,11,11, 8,10, 9,12,12, 0,10,10,
+	12,12, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
+	13, 8, 9,10,12,12, 0,10,10,11,12, 0,10,10,12,12,
+	 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 5, 8, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,
+	10,10, 0, 9, 9,10,11, 0, 0, 0,11,10, 5, 8, 8,11,
+	11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,11,
+	 0, 0, 0,10,11, 8,10,10,12,12, 0,10,10,12,12, 0,
+	10,10,12,12, 0,12,13,13,13, 0, 0, 0,14,13, 8,10,
+	10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,13,12,
+	13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 7,10,10,14,13, 0, 9, 9,13,12, 0, 9, 9,12,12, 0,
+	10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,14, 0, 9,
+	 9,12,13, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
+	12,12, 9,11,11,14,13, 0,11,10,14,13, 0,11,11,13,
+	13, 0,12,12,13,13, 0, 0, 0,13,13, 9,11,11,13,14,
+	 0,10,11,13,14, 0,11,11,13,13, 0,12,12,13,13, 0,
+	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+	11,11,14,14, 0,11,11,13,13, 0,11,10,13,13, 0,12,
+	12,13,13, 0, 0, 0,13,13, 9,11,11,14,14, 0,11,11,
+	13,13, 0,10,11,13,13, 0,12,12,14,13, 0, 0, 0,13,
+	13,
+};
+
+static float _vq_quantthresh__44c6_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c6_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p2_0 = {
+	_vq_quantthresh__44c6_s_p2_0,
+	_vq_quantmap__44c6_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c6_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c6_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c6_s_p2_0,
+	NULL,
+	&_vq_auxt__44c6_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c6_s_p3_0[] = {
+	 2, 3, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+	 9,10, 0, 4, 4, 6, 6, 7, 7,10, 9, 0, 5, 5, 7, 7,
+	 8, 8,10,10, 0, 0, 0, 7, 6, 8, 8,10,10, 0, 0, 0,
+	 7, 7, 9, 9,11,11, 0, 0, 0, 7, 7, 9, 9,11,11, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c6_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c6_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p3_0 = {
+	_vq_quantthresh__44c6_s_p3_0,
+	_vq_quantmap__44c6_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c6_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c6_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c6_s_p3_0,
+	NULL,
+	&_vq_auxt__44c6_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c6_s_p4_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,10,10,
+	10, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
+	11,11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
+	10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,11, 0, 0, 0, 7, 7, 9, 9,10,10,10,10,
+	11,11,11,11,12,12, 0, 0, 0, 7, 7, 9, 9,10,10,10,
+	10,11,11,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 8, 8, 9,
+	 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c6_s_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c6_s_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p4_0 = {
+	_vq_quantthresh__44c6_s_p4_0,
+	_vq_quantmap__44c6_s_p4_0,
+	17,
+	17
+};
+
+static static_codebook _44c6_s_p4_0 = {
+	2, 289,
+	_vq_lengthlist__44c6_s_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c6_s_p4_0,
+	NULL,
+	&_vq_auxt__44c6_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c6_s_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6, 9, 9,10,10,
+	10, 9, 4, 6, 6, 9,10, 9,10, 9,10, 6, 9, 9,10,12,
+	11,10,11,11, 7,10, 9,11,12,12,12,12,12, 7,10,10,
+	11,12,12,12,12,12, 6,10,10,10,12,12,11,12,12, 7,
+	 9,10,11,12,12,12,12,12, 7,10, 9,12,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__44c6_s_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c6_s_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p5_0 = {
+	_vq_quantthresh__44c6_s_p5_0,
+	_vq_quantmap__44c6_s_p5_0,
+	3,
+	3
+};
+
+static static_codebook _44c6_s_p5_0 = {
+	4, 81,
+	_vq_lengthlist__44c6_s_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c6_s_p5_0,
+	NULL,
+	&_vq_auxt__44c6_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c6_s_p5_1[] = {
+	 3, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6,
+	 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6, 7, 7, 8, 8, 8,
+	 8,11, 6, 6, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6,
+	 6, 7, 8, 8, 8, 8, 9,11,11,11, 7, 7, 8, 8, 8, 8,
+	 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 8, 8,11,11,11,
+	 8, 8, 8, 8, 8, 8, 8, 8,11,11,11,10,10, 8, 8, 8,
+	 8, 8, 8,11,11,11,10,10, 8, 8, 8, 8, 8, 8,11,11,
+	11,10,10, 7, 7, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c6_s_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c6_s_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p5_1 = {
+	_vq_quantthresh__44c6_s_p5_1,
+	_vq_quantmap__44c6_s_p5_1,
+	11,
+	11
+};
+
+static static_codebook _44c6_s_p5_1 = {
+	2, 121,
+	_vq_lengthlist__44c6_s_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c6_s_p5_1,
+	NULL,
+	&_vq_auxt__44c6_s_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c6_s_p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 8, 8,10, 9,10,10, 6, 5, 5,
+	 7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9,
+	 9,10, 9,11,10,11,11, 0, 6, 6, 7, 7, 9, 9,10,10,
+	11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
+	12, 0,11,11, 8, 8,10,10,11,11,12,12,12,12, 0,11,
+	12, 9, 8,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__44c6_s_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c6_s_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p6_0 = {
+	_vq_quantthresh__44c6_s_p6_0,
+	_vq_quantmap__44c6_s_p6_0,
+	13,
+	13
+};
+
+static static_codebook _44c6_s_p6_0 = {
+	2, 169,
+	_vq_lengthlist__44c6_s_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c6_s_p6_0,
+	NULL,
+	&_vq_auxt__44c6_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c6_s_p6_1[] = {
+	 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c6_s_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c6_s_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p6_1 = {
+	_vq_quantthresh__44c6_s_p6_1,
+	_vq_quantmap__44c6_s_p6_1,
+	5,
+	5
+};
+
+static static_codebook _44c6_s_p6_1 = {
+	2, 25,
+	_vq_lengthlist__44c6_s_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c6_s_p6_1,
+	NULL,
+	&_vq_auxt__44c6_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c6_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 8, 8,10,10,11,10, 6, 5, 5,
+	 7, 7, 8, 8, 9, 9,10,10,12,11, 6, 5, 5, 7, 7, 8,
+	 8, 9, 9,10,10,12,11,21, 7, 7, 7, 7, 9, 9,10,10,
+	11,11,12,12,21, 7, 7, 7, 7, 9, 9,10,10,11,11,12,
+	12,21,12,12, 9, 9,10,10,11,11,11,11,12,12,21,12,
+	12, 9, 9,10,10,11,11,12,12,12,12,21,21,21,11,11,
+	10,10,11,12,12,12,13,13,21,21,21,11,11,10,10,12,
+	12,12,12,13,13,21,21,21,15,15,11,11,12,12,13,13,
+	13,13,21,21,21,15,16,11,11,12,12,13,13,14,14,21,
+	21,21,21,20,13,13,13,13,13,13,14,14,20,20,20,20,
+	20,13,13,13,13,13,13,14,14,
+};
+
+static float _vq_quantthresh__44c6_s_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__44c6_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p7_0 = {
+	_vq_quantthresh__44c6_s_p7_0,
+	_vq_quantmap__44c6_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c6_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c6_s_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__44c6_s_p7_0,
+	NULL,
+	&_vq_auxt__44c6_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c6_s_p7_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 6, 6,
+	 7, 7, 7, 7, 8, 7, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7,
+	 7, 9, 6, 6, 7, 7, 7, 7, 8, 7, 7, 8, 9, 9, 9, 7,
+	 7, 7, 7, 7, 7, 7, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8,
+	 8, 8, 9, 9, 9, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
+	 8, 8, 8, 8, 7, 7, 8, 8, 9, 9, 9, 9, 8, 8, 8, 7,
+	 7, 8, 8, 9, 9, 9, 8, 8, 8, 8, 7, 7, 8, 8, 9, 9,
+	 9, 8, 8, 7, 7, 7, 7, 8, 8,
+};
+
+static float _vq_quantthresh__44c6_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c6_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p7_1 = {
+	_vq_quantthresh__44c6_s_p7_1,
+	_vq_quantmap__44c6_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c6_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c6_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c6_s_p7_1,
+	NULL,
+	&_vq_auxt__44c6_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c6_s_p8_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 7, 7, 8, 7, 9, 8,10, 9, 6,
+	 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,11,10,11,10, 6, 5,
+	 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,18, 8, 8,
+	 9, 8,10,10, 9, 9,10,10,10,10,11,10,18, 8, 8, 9,
+	 9,10,10, 9, 9,10,10,11,11,12,12,18,12,13, 9,10,
+	10,10, 9,10,10,10,11,11,12,11,18,13,13, 9, 9,10,
+	10,10,10,10,10,11,11,12,12,18,18,18,10,10, 9, 9,
+	11,11,11,11,11,12,12,12,18,18,18,10, 9,10, 9,11,
+	10,11,11,11,11,13,12,18,18,18,14,13,10,10,11,11,
+	12,12,12,12,12,12,18,18,18,14,13,10,10,11,10,12,
+	12,12,12,12,12,18,18,18,18,18,12,12,11,11,12,12,
+	13,13,13,14,18,18,18,18,18,12,12,11,11,12,11,13,
+	13,14,13,18,18,18,18,18,16,16,11,12,12,13,13,13,
+	14,13,18,18,18,18,18,16,15,12,11,12,11,13,11,15,
+	14,
+};
+
+static float _vq_quantthresh__44c6_s_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44c6_s_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p8_0 = {
+	_vq_quantthresh__44c6_s_p8_0,
+	_vq_quantmap__44c6_s_p8_0,
+	15,
+	15
+};
+
+static static_codebook _44c6_s_p8_0 = {
+	2, 225,
+	_vq_lengthlist__44c6_s_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44c6_s_p8_0,
+	NULL,
+	&_vq_auxt__44c6_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44c6_s_p8_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+	 8, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,
+	 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,11,11, 8, 7, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,
+	11, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,11,
+	11,11, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9,10, 9, 9,
+	10, 9,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,10,10,
+	10,10, 9,10,10, 9,10,11,11,11,11,11, 9, 9, 9, 9,
+	10,10,10, 9,10,10,10,10, 9,10,10, 9,11,11,11,11,
+	11,11,11, 9, 9, 9, 9,10,10,10,10, 9,10,10,10,10,
+	10,11,11,11,11,11,11,11,10, 9,10,10,10,10,10,10,
+	10, 9,10, 9,10,10,11,11,11,11,11,11,11,10, 9,10,
+	 9,10,10, 9,10,10,10,10,10,10,10,11,11,11,11,11,
+	11,11,10,10,10,10,10,10,10, 9,10,10,10,10,10, 9,
+	11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,
+	10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,
+	10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,10,10, 9,10,10,11,
+	11,11,11,11,11,11,11,11,10,10,10, 9,10,10,10,10,
+	10,10,10,10,10,11,11,11,11,11,11,11,11,10,11, 9,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44c6_s_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44c6_s_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p8_1 = {
+	_vq_quantthresh__44c6_s_p8_1,
+	_vq_quantmap__44c6_s_p8_1,
+	21,
+	21
+};
+
+static static_codebook _44c6_s_p8_1 = {
+	2, 441,
+	_vq_lengthlist__44c6_s_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44c6_s_p8_1,
+	NULL,
+	&_vq_auxt__44c6_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c6_s_p9_0[] = {
+	 1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 7, 7,
+	11,11,11,11,11,11,11,11,11,11, 5, 8, 9,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,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,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,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,10,10,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44c6_s_p9_0[] = {
+	-3503.5, -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 
+	1592.5, 2229.5, 2866.5, 3503.5, 
+};
+
+static long _vq_quantmap__44c6_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p9_0 = {
+	_vq_quantthresh__44c6_s_p9_0,
+	_vq_quantmap__44c6_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _44c6_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__44c6_s_p9_0,
+	1, -511845376, 1630791680, 4, 0,
+	_vq_quantlist__44c6_s_p9_0,
+	NULL,
+	&_vq_auxt__44c6_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p9_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c6_s_p9_1[] = {
+	 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6,
+	 8, 8, 8, 8, 8, 7, 9, 8,10,10, 5, 6, 6, 8, 8, 9,
+	 9, 8, 8,10,10,10,10,16, 9, 9, 9, 9, 9, 9, 9, 8,
+	10, 9,11,11,16, 8, 9, 9, 9, 9, 9, 9, 9,10,10,11,
+	11,16,13,13, 9, 9,10, 9, 9,10,11,11,11,12,16,13,
+	14, 9, 8,10, 8, 9, 9,10,10,12,11,16,14,16, 9, 9,
+	 9, 9,11,11,12,11,12,11,16,16,16, 9, 7, 9, 6,11,
+	11,11,10,11,11,16,16,16,11,12, 9,10,11,11,12,11,
+	13,13,16,16,16,12,11,10, 7,12,10,12,12,12,12,16,
+	16,15,16,16,10,11,10,11,13,13,14,12,16,16,16,15,
+	15,12,10,11,11,13,11,12,13,
+};
+
+static float _vq_quantthresh__44c6_s_p9_1[] = {
+	-269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, 
+	122.5, 171.5, 220.5, 269.5, 
+};
+
+static long _vq_quantmap__44c6_s_p9_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p9_1 = {
+	_vq_quantthresh__44c6_s_p9_1,
+	_vq_quantmap__44c6_s_p9_1,
+	13,
+	13
+};
+
+static static_codebook _44c6_s_p9_1 = {
+	2, 169,
+	_vq_lengthlist__44c6_s_p9_1,
+	1, -518889472, 1622704128, 4, 0,
+	_vq_quantlist__44c6_s_p9_1,
+	NULL,
+	&_vq_auxt__44c6_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c6_s_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44c6_s_p9_2[] = {
+	 2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+	 6, 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,
+};
+
+static float _vq_quantthresh__44c6_s_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44c6_s_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c6_s_p9_2 = {
+	_vq_quantthresh__44c6_s_p9_2,
+	_vq_quantmap__44c6_s_p9_2,
+	49,
+	49
+};
+
+static static_codebook _44c6_s_p9_2 = {
+	1, 49,
+	_vq_lengthlist__44c6_s_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44c6_s_p9_2,
+	NULL,
+	&_vq_auxt__44c6_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c6_s_short[] = {
+	 3, 9,11,11,13,14,19,17,17,19, 5, 4, 5, 8,10,10,
+	13,16,18,19, 7, 4, 4, 5, 8, 9,12,14,17,19, 8, 6,
+	 5, 5, 7, 7,10,13,16,18,10, 8, 7, 6, 5, 5, 8,11,
+	17,19,11, 9, 7, 7, 5, 4, 5, 8,17,19,13,11, 8, 7,
+	 7, 5, 5, 7,16,18,14,13, 8, 6, 6, 5, 5, 7,16,18,
+	18,16,10, 8, 8, 7, 7, 9,16,18,18,18,12,10,10, 9,
+	 9,10,17,18,
+};
+
+static static_codebook _huff_book__44c6_s_short = {
+	2, 100,
+	_huff_lengthlist__44c6_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c7_s_long[] = {
+	 3, 8,11,13,15,14,14,13,15,14, 6, 4, 5, 7, 9,10,
+	11,11,14,13,10, 4, 3, 5, 7, 8, 9,10,13,13,12, 7,
+	 4, 4, 5, 6, 8, 9,12,14,13, 9, 6, 5, 5, 6, 8, 9,
+	12,14,12, 9, 7, 6, 5, 5, 6, 8,11,11,12,11, 9, 8,
+	 7, 6, 6, 7,10,11,13,11,10, 9, 8, 7, 6, 6, 9,11,
+	13,13,12,12,12,10, 9, 8, 9,11,12,14,15,15,14,12,
+	11,10,10,12,
+};
+
+static static_codebook _huff_book__44c7_s_long = {
+	2, 100,
+	_huff_lengthlist__44c7_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c7_s_p1_0[] = {
+	 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0,
+	 9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 5, 9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9,
+	 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+	 9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
+	 8,
+};
+
+static float _vq_quantthresh__44c7_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c7_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p1_0 = {
+	_vq_quantthresh__44c7_s_p1_0,
+	_vq_quantmap__44c7_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c7_s_p1_0 = {
+	4, 81,
+	_vq_lengthlist__44c7_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c7_s_p1_0,
+	NULL,
+	&_vq_auxt__44c7_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c7_s_p2_0[] = {
+	 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+	 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
+	 8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
+	11,11, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 7, 8, 9,
+	10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
+	 0,11,11,12,12, 0,11,10,12,12, 0,13,14,14,14, 0,
+	 0, 0,14,13, 8, 9, 9,10,11, 0,11,11,12,12, 0,10,
+	11,12,12, 0,13,13,14,14, 0, 0, 0,13,14, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10,
+	 0, 7, 7,10,10, 0, 9, 9,11,10, 0, 0, 0,11,11, 5,
+	 7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
+	 9,10,11, 0, 0, 0,11,11, 8,10, 9,12,12, 0,10,10,
+	12,12, 0,10,10,12,12, 0,12,12,13,13, 0, 0, 0,13,
+	13, 8, 9,10,12,12, 0,10,10,12,12, 0,10,10,11,12,
+	 0,12,12,13,13, 0, 0, 0,13,13, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 5, 8, 8,11,11, 0, 7, 7,10,10, 0, 7, 7,
+	10,10, 0, 9, 9,10,11, 0, 0, 0,11,10, 5, 8, 8,10,
+	11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,11,10,
+	 0, 0, 0,10,11, 9,10,10,12,12, 0,10,10,12,12, 0,
+	10,10,12,12, 0,12,13,13,13, 0, 0, 0,13,12, 9,10,
+	10,12,12, 0,10,10,12,12, 0,10,10,12,12, 0,13,12,
+	13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 7,10,10,14,13, 0, 9, 9,12,12, 0, 9, 9,12,12, 0,
+	10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,14, 0, 9,
+	 9,12,13, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
+	12,12, 9,11,11,14,13, 0,11,10,13,12, 0,11,11,13,
+	13, 0,12,12,13,13, 0, 0, 0,13,13, 9,11,11,13,14,
+	 0,10,11,12,13, 0,11,11,13,13, 0,12,12,13,13, 0,
+	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+	11,11,14,14, 0,10,11,13,13, 0,11,10,13,13, 0,12,
+	12,13,13, 0, 0, 0,13,12, 9,11,11,14,14, 0,11,10,
+	13,13, 0,10,11,13,13, 0,12,12,14,13, 0, 0, 0,13,
+	13,
+};
+
+static float _vq_quantthresh__44c7_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c7_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p2_0 = {
+	_vq_quantthresh__44c7_s_p2_0,
+	_vq_quantmap__44c7_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c7_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c7_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c7_s_p2_0,
+	NULL,
+	&_vq_auxt__44c7_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c7_s_p3_0[] = {
+	 2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+	 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
+	 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
+	 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c7_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c7_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p3_0 = {
+	_vq_quantthresh__44c7_s_p3_0,
+	_vq_quantmap__44c7_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c7_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c7_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c7_s_p3_0,
+	NULL,
+	&_vq_auxt__44c7_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c7_s_p4_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
+	12,12, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+	11,12,12, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,
+	11,12,12,12, 0, 0, 0, 6, 6, 8, 7, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,12,12,13,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
+	10,11,11,12,12,12,13, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+	 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c7_s_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c7_s_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p4_0 = {
+	_vq_quantthresh__44c7_s_p4_0,
+	_vq_quantmap__44c7_s_p4_0,
+	17,
+	17
+};
+
+static static_codebook _44c7_s_p4_0 = {
+	2, 289,
+	_vq_lengthlist__44c7_s_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c7_s_p4_0,
+	NULL,
+	&_vq_auxt__44c7_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c7_s_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 7,10,10,10,10,
+	10, 9, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11,
+	12,10,11,12, 7,10,10,11,12,12,12,12,12, 7,10,10,
+	11,12,12,12,12,12, 6,10,10,10,12,12,11,12,12, 7,
+	10,10,12,12,12,12,11,12, 7,10,10,11,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__44c7_s_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c7_s_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p5_0 = {
+	_vq_quantthresh__44c7_s_p5_0,
+	_vq_quantmap__44c7_s_p5_0,
+	3,
+	3
+};
+
+static static_codebook _44c7_s_p5_0 = {
+	4, 81,
+	_vq_lengthlist__44c7_s_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c7_s_p5_0,
+	NULL,
+	&_vq_auxt__44c7_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c7_s_p5_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6,
+	 7, 7, 8, 8, 9, 9,11, 4, 4, 6, 6, 7, 7, 8, 8, 9,
+	 9,12, 5, 5, 6, 6, 7, 7, 9, 9, 9, 9,12,12,12, 6,
+	 6, 7, 7, 9, 9, 9, 9,11,11,11, 7, 7, 7, 7, 8, 8,
+	 9, 9,11,11,11, 7, 7, 7, 7, 8, 8, 9, 9,11,11,11,
+	 7, 7, 8, 8, 8, 8, 9, 9,11,11,11,11,11, 8, 8, 8,
+	 8, 8, 9,11,11,11,11,11, 8, 8, 8, 8, 8, 8,11,11,
+	11,11,11, 7, 7, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c7_s_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c7_s_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p5_1 = {
+	_vq_quantthresh__44c7_s_p5_1,
+	_vq_quantmap__44c7_s_p5_1,
+	11,
+	11
+};
+
+static static_codebook _44c7_s_p5_1 = {
+	2, 121,
+	_vq_lengthlist__44c7_s_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c7_s_p5_1,
+	NULL,
+	&_vq_auxt__44c7_s_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c7_s_p6_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 8,10,10, 6, 5, 5,
+	 7, 7, 8, 8, 9, 9, 9,10,11,11, 7, 5, 5, 7, 7, 8,
+	 8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 8, 9, 9,
+	10,10,11,11, 0, 8, 8, 7, 7, 8, 9, 9, 9,10,10,11,
+	11, 0,11,11, 9, 9,10,10,11,10,11,11,12,12, 0,12,
+	12, 9, 9,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__44c7_s_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c7_s_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p6_0 = {
+	_vq_quantthresh__44c7_s_p6_0,
+	_vq_quantmap__44c7_s_p6_0,
+	13,
+	13
+};
+
+static static_codebook _44c7_s_p6_0 = {
+	2, 169,
+	_vq_lengthlist__44c7_s_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c7_s_p6_0,
+	NULL,
+	&_vq_auxt__44c7_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c7_s_p6_1[] = {
+	 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c7_s_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c7_s_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p6_1 = {
+	_vq_quantthresh__44c7_s_p6_1,
+	_vq_quantmap__44c7_s_p6_1,
+	5,
+	5
+};
+
+static static_codebook _44c7_s_p6_1 = {
+	2, 25,
+	_vq_lengthlist__44c7_s_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c7_s_p6_1,
+	NULL,
+	&_vq_auxt__44c7_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c7_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 8, 9, 9,10,10,12,11, 6, 5, 5,
+	 7, 7, 8, 8, 9,10,11,11,12,12, 7, 5, 5, 7, 7, 8,
+	 8,10,10,11,11,12,12,20, 7, 7, 7, 7, 8, 9,10,10,
+	11,11,12,13,20, 7, 7, 7, 7, 9, 9,10,10,11,12,13,
+	13,20,11,11, 8, 8, 9, 9,11,11,12,12,13,13,20,11,
+	11, 8, 8, 9, 9,11,11,12,12,13,13,20,20,20,10,10,
+	10,10,12,12,13,13,13,13,20,20,20,10,10,10,10,12,
+	12,13,13,13,14,20,20,20,14,14,11,11,12,12,13,13,
+	14,14,20,20,20,14,14,11,11,12,12,13,13,14,14,20,
+	20,20,20,19,13,13,13,13,14,14,15,14,19,19,19,19,
+	19,13,13,13,13,14,14,15,15,
+};
+
+static float _vq_quantthresh__44c7_s_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__44c7_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p7_0 = {
+	_vq_quantthresh__44c7_s_p7_0,
+	_vq_quantmap__44c7_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c7_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c7_s_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__44c7_s_p7_0,
+	NULL,
+	&_vq_auxt__44c7_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c7_s_p7_1[] = {
+	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7,
+	 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+	 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
+	 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+	 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+	 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+	 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
+	 8, 8, 8, 7, 7, 7, 7, 7, 7,
+};
+
+static float _vq_quantthresh__44c7_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c7_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p7_1 = {
+	_vq_quantthresh__44c7_s_p7_1,
+	_vq_quantmap__44c7_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c7_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c7_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c7_s_p7_1,
+	NULL,
+	&_vq_auxt__44c7_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c7_s_p8_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8, 9, 9,10,10, 6,
+	 5, 5, 7, 7, 9, 9, 8, 8,10, 9,11,10,12,11, 6, 5,
+	 5, 8, 7, 9, 9, 8, 8,10,10,11,11,12,11,19, 8, 8,
+	 8, 8,10,10, 9, 9,10,10,11,11,12,11,19, 8, 8, 8,
+	 8,10,10, 9, 9,10,10,11,11,12,12,19,12,12, 9, 9,
+	10,10, 9,10,10,10,11,11,12,12,19,12,12, 9, 9,10,
+	10,10,10,10,10,12,12,12,12,19,19,19, 9, 9, 9, 9,
+	11,10,11,11,12,11,13,13,19,19,19, 9, 9, 9, 9,11,
+	10,11,11,11,12,13,13,19,19,19,13,13,10,10,11,11,
+	12,12,12,12,13,12,19,19,19,14,13,10,10,11,11,12,
+	12,12,13,13,13,19,19,19,19,19,12,12,12,11,12,13,
+	14,13,13,13,19,19,19,19,19,12,12,12,11,12,12,13,
+	14,13,14,19,19,19,19,19,16,16,12,13,12,13,13,14,
+	15,14,19,18,18,18,18,16,15,12,11,12,11,14,12,14,
+	14,
+};
+
+static float _vq_quantthresh__44c7_s_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44c7_s_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p8_0 = {
+	_vq_quantthresh__44c7_s_p8_0,
+	_vq_quantmap__44c7_s_p8_0,
+	15,
+	15
+};
+
+static static_codebook _44c7_s_p8_0 = {
+	2, 225,
+	_vq_lengthlist__44c7_s_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44c7_s_p8_0,
+	NULL,
+	&_vq_auxt__44c7_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44c7_s_p8_1[] = {
+	 3, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+	10, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,11,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10, 9, 9,10, 9, 9,10,11,10,
+	11,10, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,10, 9, 9,
+	 9, 9,11,10,11,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9,
+	10, 9, 9,10, 9, 9,10,11,10,10,11,10, 9, 9, 9, 9,
+	 9,10,10, 9,10,10,10,10, 9,10,10,10,10,10,10,11,
+	11,11,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,11,11,10,10,10,10,10,10,10,10,10,10,10,
+	10, 9,10,10, 9,10,11,11,10,11,10,11,10, 9,10,10,
+	 9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,10,
+	11,11,10,10,10,10,10,10, 9,10, 9,10,10, 9,10, 9,
+	10,10,10,11,10,11,10,11,11,10,10,10,10,10,10, 9,
+	10,10,10,10,10,10,10,11,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,11,10,11,
+	11,10,10,10,10, 9, 9,10,10, 9, 9,10, 9,10,10,10,
+	10,11,11,10,10,10,10,10,10,10, 9, 9,10,10,10, 9,
+	 9,10,10,10,10,10,11,10,11,10,10,10,10,10,10, 9,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44c7_s_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44c7_s_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p8_1 = {
+	_vq_quantthresh__44c7_s_p8_1,
+	_vq_quantmap__44c7_s_p8_1,
+	21,
+	21
+};
+
+static static_codebook _44c7_s_p8_1 = {
+	2, 441,
+	_vq_lengthlist__44c7_s_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44c7_s_p8_1,
+	NULL,
+	&_vq_auxt__44c7_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c7_s_p9_0[] = {
+	 1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 6, 6,
+	11,11,11,11,11,11,11,11,11,11, 4, 7, 7,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,
+};
+
+static float _vq_quantthresh__44c7_s_p9_0[] = {
+	-3503.5, -2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 
+	1592.5, 2229.5, 2866.5, 3503.5, 
+};
+
+static long _vq_quantmap__44c7_s_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p9_0 = {
+	_vq_quantthresh__44c7_s_p9_0,
+	_vq_quantmap__44c7_s_p9_0,
+	13,
+	13
+};
+
+static static_codebook _44c7_s_p9_0 = {
+	2, 169,
+	_vq_lengthlist__44c7_s_p9_0,
+	1, -511845376, 1630791680, 4, 0,
+	_vq_quantlist__44c7_s_p9_0,
+	NULL,
+	&_vq_auxt__44c7_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p9_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c7_s_p9_1[] = {
+	 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6,
+	 8, 8, 9, 8, 8, 7, 9, 8,11,10, 5, 6, 6, 8, 8, 9,
+	 8, 8, 8,10, 9,11,11,16, 8, 8, 9, 8, 9, 9, 9, 8,
+	10, 9,11,10,16, 8, 8, 9, 9,10,10, 9, 9,10,10,11,
+	11,16,13,13, 9, 9,10,10, 9,10,11,11,12,11,16,13,
+	13, 9, 8,10, 9,10,10,10,10,11,11,16,14,16, 8, 9,
+	 9, 9,11,10,11,11,12,11,16,16,16, 9, 7,10, 7,11,
+	10,11,11,12,11,16,16,16,12,12, 9,10,11,11,12,11,
+	12,12,16,16,16,12,10,10, 7,11, 8,12,11,12,12,16,
+	16,15,16,16,11,12,10,10,12,11,12,12,16,16,16,15,
+	15,11,11,10,10,12,12,12,12,
+};
+
+static float _vq_quantthresh__44c7_s_p9_1[] = {
+	-269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, 
+	122.5, 171.5, 220.5, 269.5, 
+};
+
+static long _vq_quantmap__44c7_s_p9_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p9_1 = {
+	_vq_quantthresh__44c7_s_p9_1,
+	_vq_quantmap__44c7_s_p9_1,
+	13,
+	13
+};
+
+static static_codebook _44c7_s_p9_1 = {
+	2, 169,
+	_vq_lengthlist__44c7_s_p9_1,
+	1, -518889472, 1622704128, 4, 0,
+	_vq_quantlist__44c7_s_p9_1,
+	NULL,
+	&_vq_auxt__44c7_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c7_s_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44c7_s_p9_2[] = {
+	 2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+	 6, 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,
+};
+
+static float _vq_quantthresh__44c7_s_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44c7_s_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c7_s_p9_2 = {
+	_vq_quantthresh__44c7_s_p9_2,
+	_vq_quantmap__44c7_s_p9_2,
+	49,
+	49
+};
+
+static static_codebook _44c7_s_p9_2 = {
+	1, 49,
+	_vq_lengthlist__44c7_s_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44c7_s_p9_2,
+	NULL,
+	&_vq_auxt__44c7_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c7_s_short[] = {
+	 4,11,12,14,15,15,17,17,18,18, 5, 6, 6, 8, 9,10,
+	13,17,18,19, 7, 5, 4, 6, 8, 9,11,15,19,19, 8, 6,
+	 5, 5, 6, 7,11,14,16,17, 9, 7, 7, 6, 7, 7,10,13,
+	15,19,10, 8, 7, 6, 7, 6, 7, 9,14,16,12,10, 9, 7,
+	 7, 6, 4, 5,10,15,14,13,11, 7, 6, 6, 4, 2, 7,13,
+	16,16,15, 9, 8, 8, 8, 6, 9,13,19,19,17,12,11,10,
+	10, 9,11,14,
+};
+
+static static_codebook _huff_book__44c7_s_short = {
+	2, 100,
+	_huff_lengthlist__44c7_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c8_s_long[] = {
+	 3, 8,12,13,14,14,14,13,14,14, 6, 4, 5, 8,10,10,
+	11,11,14,13, 9, 5, 4, 5, 7, 8, 9,10,13,13,12, 7,
+	 5, 4, 5, 6, 8, 9,12,13,13, 9, 6, 5, 5, 5, 7, 9,
+	11,14,12,10, 7, 6, 5, 4, 6, 7,10,11,12,11, 9, 8,
+	 7, 5, 5, 6,10,10,13,12,10, 9, 8, 6, 6, 5, 8,10,
+	14,13,12,12,11,10, 9, 7, 8,10,12,13,14,14,13,12,
+	11, 9, 9,10,
+};
+
+static static_codebook _huff_book__44c8_s_long = {
+	2, 100,
+	_huff_lengthlist__44c8_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c8_s_p1_0[] = {
+	 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 7, 7, 0, 9, 8, 0,
+	 9, 8, 6, 7, 7, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9,
+	 0, 8, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+	 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, 0, 8, 8, 0, 8,
+	 8,
+};
+
+static float _vq_quantthresh__44c8_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c8_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p1_0 = {
+	_vq_quantthresh__44c8_s_p1_0,
+	_vq_quantmap__44c8_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c8_s_p1_0 = {
+	4, 81,
+	_vq_lengthlist__44c8_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c8_s_p1_0,
+	NULL,
+	&_vq_auxt__44c8_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c8_s_p2_0[] = {
+	 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+	 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8,
+	 7,10, 9, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0,
+	11,11, 5, 7, 7, 9, 9, 0, 7, 8, 9,10, 0, 7, 8, 9,
+	10, 0,10,10,11,11, 0, 0, 0,11,11, 8, 9, 9,11,10,
+	 0,11,10,12,11, 0,11,10,12,12, 0,13,13,14,14, 0,
+	 0, 0,14,13, 8, 9, 9,10,11, 0,10,11,12,12, 0,10,
+	11,12,12, 0,13,13,14,14, 0, 0, 0,13,14, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 5, 8, 7,11,10, 0, 7, 7,10,10,
+	 0, 7, 7,10,10, 0, 9, 9,10,10, 0, 0, 0,11,10, 5,
+	 7, 8,10,11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9,
+	 9,10,10, 0, 0, 0,10,10, 8,10, 9,12,12, 0,10,10,
+	12,11, 0,10,10,12,12, 0,12,12,13,12, 0, 0, 0,13,
+	12, 8, 9,10,12,12, 0,10,10,11,12, 0,10,10,11,12,
+	 0,12,12,13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 6, 8, 7,11,10, 0, 7, 7,10,10, 0, 7, 7,
+	10,10, 0, 9, 9,10,11, 0, 0, 0,10,10, 6, 7, 8,10,
+	11, 0, 7, 7,10,10, 0, 7, 7,10,10, 0, 9, 9,10,10,
+	 0, 0, 0,10,10, 9,10, 9,12,12, 0,10,10,12,12, 0,
+	10,10,12,11, 0,12,12,13,13, 0, 0, 0,13,12, 8, 9,
+	10,12,12, 0,10,10,12,12, 0,10,10,11,12, 0,12,12,
+	13,13, 0, 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 7,10,10,13,13, 0, 9, 9,12,12, 0, 9, 9,12,12, 0,
+	10,10,12,12, 0, 0, 0,12,12, 7,10,10,13,13, 0, 9,
+	 9,12,12, 0, 9, 9,12,12, 0,10,10,12,12, 0, 0, 0,
+	12,12, 9,11,11,14,13, 0,10,10,13,12, 0,11,10,13,
+	12, 0,12,12,13,12, 0, 0, 0,13,13, 9,11,11,13,14,
+	 0,10,11,12,13, 0,10,11,13,13, 0,12,12,12,13, 0,
+	 0, 0,13,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+	11,11,14,14, 0,10,11,13,13, 0,11,10,13,13, 0,11,
+	12,13,13, 0, 0, 0,13,12, 9,11,11,14,14, 0,11,10,
+	13,13, 0,10,11,13,13, 0,12,12,13,13, 0, 0, 0,12,
+	13,
+};
+
+static float _vq_quantthresh__44c8_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c8_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p2_0 = {
+	_vq_quantthresh__44c8_s_p2_0,
+	_vq_quantmap__44c8_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c8_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c8_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c8_s_p2_0,
+	NULL,
+	&_vq_auxt__44c8_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c8_s_p3_0[] = {
+	 2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7,
+	 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6,
+	 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0,
+	 7, 7, 9, 9,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c8_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c8_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p3_0 = {
+	_vq_quantthresh__44c8_s_p3_0,
+	_vq_quantmap__44c8_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c8_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c8_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c8_s_p3_0,
+	NULL,
+	&_vq_auxt__44c8_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c8_s_p4_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 8,10,10,11,11,
+	11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+	11,11,11, 0, 6, 5, 6, 6, 7, 7, 9, 9, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 6, 6, 7, 7, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,11,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,
+	10,11,11,11,12,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+	 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c8_s_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c8_s_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p4_0 = {
+	_vq_quantthresh__44c8_s_p4_0,
+	_vq_quantmap__44c8_s_p4_0,
+	17,
+	17
+};
+
+static static_codebook _44c8_s_p4_0 = {
+	2, 289,
+	_vq_lengthlist__44c8_s_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c8_s_p4_0,
+	NULL,
+	&_vq_auxt__44c8_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c8_s_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6,10,10,10,10,
+	10,10, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11,
+	11,10,11,11, 7,10,10,11,12,12,12,12,12, 7,10,10,
+	11,12,12,12,12,12, 6,10,10,10,12,12,10,12,12, 7,
+	10,10,11,12,12,12,12,12, 7,10,10,11,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__44c8_s_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c8_s_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p5_0 = {
+	_vq_quantthresh__44c8_s_p5_0,
+	_vq_quantmap__44c8_s_p5_0,
+	3,
+	3
+};
+
+static static_codebook _44c8_s_p5_0 = {
+	4, 81,
+	_vq_lengthlist__44c8_s_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c8_s_p5_0,
+	NULL,
+	&_vq_auxt__44c8_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c8_s_p5_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 9,12, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,12,12,12, 6,
+	 6, 7, 7, 8, 8, 9, 9,11,11,11, 6, 6, 7, 7, 8, 8,
+	 8, 8,11,11,11, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11,
+	 7, 7, 7, 8, 8, 8, 8, 8,11,11,11,11,11, 7, 7, 8,
+	 8, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 8, 8,11,11,
+	11,11,11, 7, 7, 7, 7, 8, 8,
+};
+
+static float _vq_quantthresh__44c8_s_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c8_s_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p5_1 = {
+	_vq_quantthresh__44c8_s_p5_1,
+	_vq_quantmap__44c8_s_p5_1,
+	11,
+	11
+};
+
+static static_codebook _44c8_s_p5_1 = {
+	2, 121,
+	_vq_lengthlist__44c8_s_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c8_s_p5_1,
+	NULL,
+	&_vq_auxt__44c8_s_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c8_s_p6_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+	 7, 7, 8, 8, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 8,
+	 8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,
+	10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10,10,10,11,
+	11, 0,11,11, 9, 9,10,10,11,11,11,11,12,12, 0,12,
+	12, 9, 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__44c8_s_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c8_s_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p6_0 = {
+	_vq_quantthresh__44c8_s_p6_0,
+	_vq_quantmap__44c8_s_p6_0,
+	13,
+	13
+};
+
+static static_codebook _44c8_s_p6_0 = {
+	2, 169,
+	_vq_lengthlist__44c8_s_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c8_s_p6_0,
+	NULL,
+	&_vq_auxt__44c8_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c8_s_p6_1[] = {
+	 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c8_s_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c8_s_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p6_1 = {
+	_vq_quantthresh__44c8_s_p6_1,
+	_vq_quantmap__44c8_s_p6_1,
+	5,
+	5
+};
+
+static static_codebook _44c8_s_p6_1 = {
+	2, 25,
+	_vq_lengthlist__44c8_s_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c8_s_p6_1,
+	NULL,
+	&_vq_auxt__44c8_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c8_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 8, 7, 9, 9,10,10,12,12, 6, 5, 5,
+	 7, 7, 8, 8,10,10,11,11,12,12, 7, 5, 5, 7, 7, 8,
+	 8,10,10,11,11,12,12,21, 7, 7, 7, 7, 8, 9,10,10,
+	11,11,12,12,21, 7, 7, 7, 7, 9, 9,10,10,12,12,13,
+	13,21,11,11, 8, 8, 9, 9,11,11,12,12,13,13,21,11,
+	11, 8, 8, 9, 9,11,11,12,12,13,13,21,21,21,10,10,
+	10,10,11,11,12,13,13,13,21,21,21,10,10,10,10,11,
+	11,13,13,14,13,21,21,21,13,13,11,11,12,12,13,13,
+	14,14,21,21,21,14,14,11,11,12,12,13,13,14,14,21,
+	21,21,21,20,13,13,13,12,14,14,16,15,20,20,20,20,
+	20,13,13,13,13,14,13,15,15,
+};
+
+static float _vq_quantthresh__44c8_s_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__44c8_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p7_0 = {
+	_vq_quantthresh__44c8_s_p7_0,
+	_vq_quantmap__44c8_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c8_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c8_s_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__44c8_s_p7_0,
+	NULL,
+	&_vq_auxt__44c8_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c8_s_p7_1[] = {
+	 4, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7,
+	 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+	 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7,
+	 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+	 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+	 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+	 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
+	 8, 8, 8, 7, 7, 7, 7, 7, 7,
+};
+
+static float _vq_quantthresh__44c8_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c8_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p7_1 = {
+	_vq_quantthresh__44c8_s_p7_1,
+	_vq_quantmap__44c8_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c8_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c8_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c8_s_p7_1,
+	NULL,
+	&_vq_auxt__44c8_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c8_s_p8_0[] = {
+	 1, 4, 4, 7, 6, 8, 8, 8, 7, 9, 8,10,10,11,10, 6,
+	 5, 5, 7, 7, 9, 9, 8, 8,10,10,11,11,12,11, 6, 5,
+	 5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8,
+	 8, 8, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8, 8,
+	 8,10, 9, 9, 9,10,10,11,11,12,12,20,12,12, 9, 9,
+	10,10,10,10,10,11,12,12,12,12,20,12,12, 9, 9,10,
+	10,10,10,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,
+	11,10,11,11,12,12,12,13,20,19,19, 9, 9, 9, 9,11,
+	11,11,12,12,12,13,13,19,19,19,13,13,10,10,11,11,
+	12,12,13,13,13,13,19,19,19,14,13,11,10,11,11,12,
+	12,12,13,13,13,19,19,19,19,19,12,12,12,12,13,13,
+	13,13,14,13,19,19,19,19,19,12,12,12,11,12,12,13,
+	14,14,14,19,19,19,19,19,16,15,13,12,13,13,13,14,
+	14,14,19,19,19,19,19,17,17,13,12,13,11,14,13,15,
+	15,
+};
+
+static float _vq_quantthresh__44c8_s_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44c8_s_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p8_0 = {
+	_vq_quantthresh__44c8_s_p8_0,
+	_vq_quantmap__44c8_s_p8_0,
+	15,
+	15
+};
+
+static static_codebook _44c8_s_p8_0 = {
+	2, 225,
+	_vq_lengthlist__44c8_s_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44c8_s_p8_0,
+	NULL,
+	&_vq_auxt__44c8_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44c8_s_p8_1[] = {
+	 4, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+	10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,10,10,10,10,
+	10,10,10, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10, 9,10,10, 9,10,10,10,10,
+	 9,10, 9,10,10, 9,10,10,10,10,10,10,10, 9,10,10,
+	10,10,10,10, 9, 9,10,10, 9,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10, 9, 9, 9,10, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
+	10, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10, 9, 9,10, 9, 9, 9,10,10,10,10,10,10,
+	10,10,10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10, 9,
+	 9,10, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10, 9, 9,10,10, 9,10, 9, 9,
+};
+
+static float _vq_quantthresh__44c8_s_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44c8_s_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p8_1 = {
+	_vq_quantthresh__44c8_s_p8_1,
+	_vq_quantmap__44c8_s_p8_1,
+	21,
+	21
+};
+
+static static_codebook _44c8_s_p8_1 = {
+	2, 441,
+	_vq_lengthlist__44c8_s_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44c8_s_p8_1,
+	NULL,
+	&_vq_auxt__44c8_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p9_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c8_s_p9_0[] = {
+	 1, 4, 3,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11, 4, 7, 7,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11, 4, 8,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,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,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,10,10,10,10,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44c8_s_p9_0[] = {
+	-6982.5, -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 
+	465.5, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 6982.5, 
+};
+
+static long _vq_quantmap__44c8_s_p9_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p9_0 = {
+	_vq_quantthresh__44c8_s_p9_0,
+	_vq_quantmap__44c8_s_p9_0,
+	17,
+	17
+};
+
+static static_codebook _44c8_s_p9_0 = {
+	2, 289,
+	_vq_lengthlist__44c8_s_p9_0,
+	1, -509798400, 1631393792, 5, 0,
+	_vq_quantlist__44c8_s_p9_0,
+	NULL,
+	&_vq_auxt__44c8_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p9_1[] = {
+	9,
+	8,
+	10,
+	7,
+	11,
+	6,
+	12,
+	5,
+	13,
+	4,
+	14,
+	3,
+	15,
+	2,
+	16,
+	1,
+	17,
+	0,
+	18,
+};
+
+static long _vq_lengthlist__44c8_s_p9_1[] = {
+	 1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10,
+	10,11,11, 6, 6, 6, 8, 8, 9, 8, 8, 7,10, 8,11,10,
+	12,11,12,12,13,13, 5, 5, 6, 8, 8, 9, 9, 8, 8,10,
+	 9,11,11,12,12,13,13,13,13,17, 8, 8, 9, 9, 9, 9,
+	 9, 9,10, 9,12,10,12,12,13,12,13,13,17, 9, 8, 9,
+	 9, 9, 9, 9, 9,10,10,12,12,12,12,13,13,13,13,17,
+	13,13, 9, 9,10,10,10,10,11,11,12,11,13,12,13,13,
+	14,15,17,13,13, 9, 8,10, 9,10,10,11,11,12,12,14,
+	13,15,13,14,15,17,17,17, 9,10, 9,10,11,11,12,12,
+	12,12,13,13,14,14,15,15,17,17,17, 9, 8, 9, 8,11,
+	11,12,12,12,12,14,13,14,14,14,15,17,17,17,12,14,
+	 9,10,11,11,12,12,14,13,13,14,15,13,15,15,17,17,
+	17,13,11,10, 8,11, 9,13,12,13,13,13,13,13,14,14,
+	14,17,17,17,17,17,11,12,11,11,13,13,14,13,15,14,
+	13,15,16,15,17,17,17,17,17,11,11,12, 8,13,12,14,
+	13,17,14,15,14,15,14,17,17,17,17,17,15,15,12,12,
+	12,12,13,14,14,14,15,14,17,14,17,17,17,17,17,16,
+	17,12,12,13,12,13,13,14,14,14,14,14,14,17,17,17,
+	17,17,17,17,14,14,13,12,13,13,15,15,14,13,15,17,
+	17,17,17,17,17,17,17,13,14,13,13,13,13,14,15,15,
+	15,14,15,17,17,17,17,17,17,17,16,15,13,14,13,13,
+	14,14,15,14,14,16,17,17,17,17,17,17,17,16,16,13,
+	14,13,13,14,14,15,14,15,14,
+};
+
+static float _vq_quantthresh__44c8_s_p9_1[] = {
+	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
+	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
+	367.5, 416.5, 
+};
+
+static long _vq_quantmap__44c8_s_p9_1[] = {
+	   17,   15,   13,   11,    9,    7,    5,    3,
+	    1,    0,    2,    4,    6,    8,   10,   12,
+	   14,   16,   18,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p9_1 = {
+	_vq_quantthresh__44c8_s_p9_1,
+	_vq_quantmap__44c8_s_p9_1,
+	19,
+	19
+};
+
+static static_codebook _44c8_s_p9_1 = {
+	2, 361,
+	_vq_lengthlist__44c8_s_p9_1,
+	1, -518287360, 1622704128, 5, 0,
+	_vq_quantlist__44c8_s_p9_1,
+	NULL,
+	&_vq_auxt__44c8_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c8_s_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44c8_s_p9_2[] = {
+	 2, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+	 6, 6, 6, 6, 6, 6, 6, 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,
+};
+
+static float _vq_quantthresh__44c8_s_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44c8_s_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c8_s_p9_2 = {
+	_vq_quantthresh__44c8_s_p9_2,
+	_vq_quantmap__44c8_s_p9_2,
+	49,
+	49
+};
+
+static static_codebook _44c8_s_p9_2 = {
+	1, 49,
+	_vq_lengthlist__44c8_s_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44c8_s_p9_2,
+	NULL,
+	&_vq_auxt__44c8_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c8_s_short[] = {
+	 4,11,13,14,15,15,18,17,19,17, 5, 6, 8, 9,10,10,
+	12,15,19,19, 6, 6, 6, 6, 8, 8,11,14,18,19, 8, 6,
+	 5, 4, 6, 7,10,13,16,17, 9, 7, 6, 5, 6, 7, 9,12,
+	15,19,10, 8, 7, 6, 6, 6, 7, 9,13,15,12,10, 9, 8,
+	 7, 6, 4, 5,10,15,13,13,11, 8, 6, 6, 4, 2, 7,12,
+	17,15,16,10, 8, 8, 7, 6, 9,12,19,18,17,13,11,10,
+	10, 9,11,14,
+};
+
+static static_codebook _huff_book__44c8_s_short = {
+	2, 100,
+	_huff_lengthlist__44c8_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c9_s_long[] = {
+	 3, 8,12,14,15,15,15,13,15,15, 6, 5, 8,10,12,12,
+	13,12,14,13,10, 6, 5, 6, 8, 9,11,11,13,13,13, 8,
+	 5, 4, 5, 6, 8,10,11,13,14,10, 7, 5, 4, 5, 7, 9,
+	11,12,13,11, 8, 6, 5, 4, 5, 7, 9,11,12,11,10, 8,
+	 7, 5, 4, 5, 9,10,13,13,11,10, 8, 6, 5, 4, 7, 9,
+	15,14,13,12,10, 9, 8, 7, 8, 9,12,12,14,13,12,11,
+	10, 9, 8, 9,
+};
+
+static static_codebook _huff_book__44c9_s_long = {
+	2, 100,
+	_huff_lengthlist__44c9_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c9_s_p1_0[] = {
+	 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 8, 0, 9, 8, 0,
+	 9, 8, 6, 8, 8, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 5, 8, 8, 0, 7, 7, 0, 8, 8, 5, 8, 8,
+	 0, 7, 8, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+	 9, 8, 0, 8, 8, 0, 7, 7, 5, 8, 9, 0, 8, 8, 0, 7,
+	 7,
+};
+
+static float _vq_quantthresh__44c9_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c9_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p1_0 = {
+	_vq_quantthresh__44c9_s_p1_0,
+	_vq_quantmap__44c9_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c9_s_p1_0 = {
+	4, 81,
+	_vq_lengthlist__44c9_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c9_s_p1_0,
+	NULL,
+	&_vq_auxt__44c9_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c9_s_p2_0[] = {
+	 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0,
+	 7, 7, 9, 9, 0, 0, 0, 9, 9, 6, 7, 7, 9, 8, 0, 8,
+	 8, 9, 9, 0, 8, 7, 9, 9, 0, 9,10,10,10, 0, 0, 0,
+	11,10, 6, 7, 7, 8, 9, 0, 8, 8, 9, 9, 0, 7, 8, 9,
+	 9, 0,10, 9,11,10, 0, 0, 0,10,10, 8, 9, 8,10,10,
+	 0,10,10,12,11, 0,10,10,11,11, 0,12,13,13,13, 0,
+	 0, 0,13,12, 8, 8, 9,10,10, 0,10,10,11,12, 0,10,
+	10,11,11, 0,13,12,13,13, 0, 0, 0,13,13, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 6, 8, 7,10,10, 0, 7, 7,10, 9,
+	 0, 7, 7,10,10, 0, 9, 9,10,10, 0, 0, 0,10,10, 6,
+	 7, 8,10,10, 0, 7, 7, 9,10, 0, 7, 7,10,10, 0, 9,
+	 9,10,10, 0, 0, 0,10,10, 8, 9, 9,11,11, 0,10,10,
+	11,11, 0,10,10,11,11, 0,12,12,12,12, 0, 0, 0,12,
+	12, 8, 9,10,11,11, 0, 9,10,11,11, 0,10,10,11,11,
+	 0,12,12,12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 5, 8, 7,10,10, 0, 7, 7,10,10, 0, 7, 7,
+	10, 9, 0, 9, 9,10,10, 0, 0, 0,10,10, 6, 7, 8,10,
+	10, 0, 7, 7,10,10, 0, 7, 7, 9,10, 0, 9, 9,10,10,
+	 0, 0, 0,10,10, 8,10, 9,12,11, 0,10,10,12,11, 0,
+	10, 9,11,11, 0,11,12,12,12, 0, 0, 0,12,12, 8, 9,
+	10,11,12, 0,10,10,11,11, 0, 9,10,11,11, 0,12,11,
+	12,12, 0, 0, 0,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 7,10, 9,12,12, 0, 9, 9,12,11, 0, 9, 9,11,11, 0,
+	10,10,12,11, 0, 0, 0,11,12, 7, 9,10,12,12, 0, 9,
+	 9,11,12, 0, 9, 9,11,11, 0,10,10,11,12, 0, 0, 0,
+	11,11, 9,11,10,13,12, 0,10,10,12,12, 0,10,10,12,
+	12, 0,11,11,12,12, 0, 0, 0,13,12, 9,10,11,12,13,
+	 0,10,10,12,12, 0,10,10,12,12, 0,11,12,12,12, 0,
+	 0, 0,12,13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+	11,10,13,13, 0,10,10,12,12, 0,10,10,12,12, 0,11,
+	12,12,12, 0, 0, 0,12,12, 9,10,11,13,13, 0,10,10,
+	12,12, 0,10,10,12,12, 0,12,11,13,12, 0, 0, 0,12,
+	12,
+};
+
+static float _vq_quantthresh__44c9_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c9_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p2_0 = {
+	_vq_quantthresh__44c9_s_p2_0,
+	_vq_quantmap__44c9_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c9_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c9_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c9_s_p2_0,
+	NULL,
+	&_vq_auxt__44c9_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c9_s_p3_0[] = {
+	 3, 4, 4, 5, 5, 6, 6, 8, 8, 0, 4, 4, 5, 5, 6, 7,
+	 8, 8, 0, 4, 4, 5, 5, 7, 7, 8, 8, 0, 5, 5, 6, 6,
+	 7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0,
+	 7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c9_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c9_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p3_0 = {
+	_vq_quantthresh__44c9_s_p3_0,
+	_vq_quantmap__44c9_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c9_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c9_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c9_s_p3_0,
+	NULL,
+	&_vq_auxt__44c9_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c9_s_p4_0[] = {
+	 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10,
+	10, 0, 5, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
+	11,11, 0, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
+	10,11,11, 0, 6, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,11,12, 0, 0, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 7, 7, 7, 7, 9, 9, 9, 9,
+	10,10,11,11,12,12, 0, 0, 0, 7, 7, 7, 8, 9, 9, 9,
+	 9,10,10,11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 8, 8, 9,
+	 9,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c9_s_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c9_s_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p4_0 = {
+	_vq_quantthresh__44c9_s_p4_0,
+	_vq_quantmap__44c9_s_p4_0,
+	17,
+	17
+};
+
+static static_codebook _44c9_s_p4_0 = {
+	2, 289,
+	_vq_lengthlist__44c9_s_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c9_s_p4_0,
+	NULL,
+	&_vq_auxt__44c9_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c9_s_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6, 9,10,10,10,
+	10, 9, 4, 6, 7, 9,10,10,10, 9,10, 5, 9, 9, 9,11,
+	11,10,11,11, 7,10, 9,11,12,11,12,12,12, 7, 9,10,
+	11,11,12,12,12,12, 6,10,10,10,12,12,10,12,11, 7,
+	10,10,11,12,12,11,12,12, 7,10,10,11,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__44c9_s_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c9_s_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p5_0 = {
+	_vq_quantthresh__44c9_s_p5_0,
+	_vq_quantmap__44c9_s_p5_0,
+	3,
+	3
+};
+
+static static_codebook _44c9_s_p5_0 = {
+	4, 81,
+	_vq_lengthlist__44c9_s_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c9_s_p5_0,
+	NULL,
+	&_vq_auxt__44c9_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c9_s_p5_1[] = {
+	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7,11, 5, 5, 6, 6,
+	 7, 7, 7, 7, 8, 8,11, 5, 5, 6, 6, 7, 7, 7, 7, 8,
+	 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6,
+	 6, 7, 7, 7, 8, 8, 8,11,11,11, 6, 6, 7, 7, 7, 8,
+	 8, 8,11,11,11, 6, 6, 7, 7, 7, 7, 8, 8,11,11,11,
+	 7, 7, 7, 7, 7, 7, 8, 8,11,11,11,10,10, 7, 7, 7,
+	 7, 8, 8,11,11,11,11,11, 7, 7, 7, 7, 7, 7,11,11,
+	11,11,11, 7, 7, 7, 7, 7, 7,
+};
+
+static float _vq_quantthresh__44c9_s_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c9_s_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p5_1 = {
+	_vq_quantthresh__44c9_s_p5_1,
+	_vq_quantmap__44c9_s_p5_1,
+	11,
+	11
+};
+
+static static_codebook _44c9_s_p5_1 = {
+	2, 121,
+	_vq_lengthlist__44c9_s_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c9_s_p5_1,
+	NULL,
+	&_vq_auxt__44c9_s_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c9_s_p6_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 5, 4, 4,
+	 6, 6, 8, 8, 9, 9, 9, 9,10,10, 6, 4, 4, 6, 6, 8,
+	 8, 9, 9, 9, 9,10,10, 0, 6, 6, 7, 7, 8, 8, 9, 9,
+	10,10,11,11, 0, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+	11, 0,10,10, 8, 8, 9, 9,10,10,11,11,12,12, 0,11,
+	11, 8, 8, 9, 9,10,10,11,11,12,12, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__44c9_s_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c9_s_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p6_0 = {
+	_vq_quantthresh__44c9_s_p6_0,
+	_vq_quantmap__44c9_s_p6_0,
+	13,
+	13
+};
+
+static static_codebook _44c9_s_p6_0 = {
+	2, 169,
+	_vq_lengthlist__44c9_s_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c9_s_p6_0,
+	NULL,
+	&_vq_auxt__44c9_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c9_s_p6_1[] = {
+	 4, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static float _vq_quantthresh__44c9_s_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c9_s_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p6_1 = {
+	_vq_quantthresh__44c9_s_p6_1,
+	_vq_quantmap__44c9_s_p6_1,
+	5,
+	5
+};
+
+static static_codebook _44c9_s_p6_1 = {
+	2, 25,
+	_vq_lengthlist__44c9_s_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c9_s_p6_1,
+	NULL,
+	&_vq_auxt__44c9_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c9_s_p7_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8,10,10,11,11, 6, 4, 4,
+	 6, 6, 8, 8, 9, 9,10,10,12,12, 6, 4, 5, 6, 6, 8,
+	 8, 9, 9,10,10,12,12,20, 6, 6, 6, 6, 8, 8, 9,10,
+	11,11,12,12,20, 6, 6, 6, 6, 8, 8,10,10,11,11,12,
+	12,20,10,10, 7, 7, 9, 9,10,10,11,11,12,12,20,11,
+	11, 7, 7, 9, 9,10,10,11,11,12,12,20,20,20, 9, 9,
+	 9, 9,11,11,12,12,13,13,20,20,20, 9, 9, 9, 9,11,
+	11,12,12,13,13,20,20,20,13,13,10,10,11,11,12,13,
+	13,13,20,20,20,13,13,10,10,11,11,12,13,13,13,20,
+	20,20,20,19,12,12,12,12,13,13,14,15,19,19,19,19,
+	19,12,12,12,12,13,13,14,14,
+};
+
+static float _vq_quantthresh__44c9_s_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__44c9_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p7_0 = {
+	_vq_quantthresh__44c9_s_p7_0,
+	_vq_quantmap__44c9_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c9_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c9_s_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__44c9_s_p7_0,
+	NULL,
+	&_vq_auxt__44c9_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c9_s_p7_1[] = {
+	 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6,
+	 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+	 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 6,
+	 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7,
+	 7, 7, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8,
+	 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+	 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 8, 8,
+	 8, 8, 8, 7, 7, 7, 7, 7, 7,
+};
+
+static float _vq_quantthresh__44c9_s_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c9_s_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p7_1 = {
+	_vq_quantthresh__44c9_s_p7_1,
+	_vq_quantmap__44c9_s_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44c9_s_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44c9_s_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c9_s_p7_1,
+	NULL,
+	&_vq_auxt__44c9_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44c9_s_p8_0[] = {
+	 1, 4, 4, 7, 6, 8, 8, 8, 8, 9, 9,10,10,11,10, 6,
+	 5, 5, 7, 7, 9, 9, 8, 9,10,10,11,11,12,12, 6, 5,
+	 5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,21, 7, 8,
+	 8, 8, 9, 9, 9, 9,10,10,11,11,12,12,21, 8, 8, 8,
+	 8, 9, 9, 9, 9,10,10,11,11,12,12,21,11,12, 9, 9,
+	10,10,10,10,10,11,11,12,12,12,21,12,12, 9, 8,10,
+	10,10,10,11,11,12,12,13,13,21,21,21, 9, 9, 9, 9,
+	11,11,11,11,12,12,12,13,21,20,20, 9, 9, 9, 9,10,
+	11,11,11,12,12,13,13,20,20,20,13,13,10,10,11,11,
+	12,12,13,13,13,13,20,20,20,13,13,10,10,11,11,12,
+	12,13,13,13,13,20,20,20,20,20,12,12,12,12,12,12,
+	13,13,14,14,20,20,20,20,20,12,12,12,11,13,12,13,
+	13,14,14,20,20,20,20,20,15,16,13,12,13,13,14,13,
+	14,14,20,20,20,20,20,16,15,12,12,13,12,14,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44c9_s_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44c9_s_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p8_0 = {
+	_vq_quantthresh__44c9_s_p8_0,
+	_vq_quantmap__44c9_s_p8_0,
+	15,
+	15
+};
+
+static static_codebook _44c9_s_p8_0 = {
+	2, 225,
+	_vq_lengthlist__44c9_s_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44c9_s_p8_0,
+	NULL,
+	&_vq_auxt__44c9_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44c9_s_p8_1[] = {
+	 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,
+	 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+	10, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10,10,10,10,
+	10,10,10, 9, 9, 9, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10, 9, 9, 9,10,10,10,10,10,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10, 9, 9,10,
+	 9,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+	10,10,10,10, 9, 9,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10, 9, 9,10, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+	10,10,10,10,10, 9, 9,10,10, 9, 9,10, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10, 9, 9,10, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 9,
+	 9, 9, 9,10, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__44c9_s_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44c9_s_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p8_1 = {
+	_vq_quantthresh__44c9_s_p8_1,
+	_vq_quantmap__44c9_s_p8_1,
+	21,
+	21
+};
+
+static static_codebook _44c9_s_p8_1 = {
+	2, 441,
+	_vq_lengthlist__44c9_s_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44c9_s_p8_1,
+	NULL,
+	&_vq_auxt__44c9_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p9_0[] = {
+	9,
+	8,
+	10,
+	7,
+	11,
+	6,
+	12,
+	5,
+	13,
+	4,
+	14,
+	3,
+	15,
+	2,
+	16,
+	1,
+	17,
+	0,
+	18,
+};
+
+static long _vq_lengthlist__44c9_s_p9_0[] = {
+	 1, 4, 3,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12, 4, 5, 6,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12, 4, 6, 6,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,
+};
+
+static float _vq_quantthresh__44c9_s_p9_0[] = {
+	-7913.5, -6982.5, -6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, 
+	-465.5, 465.5, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 
+	6982.5, 7913.5, 
+};
+
+static long _vq_quantmap__44c9_s_p9_0[] = {
+	   17,   15,   13,   11,    9,    7,    5,    3,
+	    1,    0,    2,    4,    6,    8,   10,   12,
+	   14,   16,   18,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p9_0 = {
+	_vq_quantthresh__44c9_s_p9_0,
+	_vq_quantmap__44c9_s_p9_0,
+	19,
+	19
+};
+
+static static_codebook _44c9_s_p9_0 = {
+	2, 361,
+	_vq_lengthlist__44c9_s_p9_0,
+	1, -508535424, 1631393792, 5, 0,
+	_vq_quantlist__44c9_s_p9_0,
+	NULL,
+	&_vq_auxt__44c9_s_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p9_1[] = {
+	9,
+	8,
+	10,
+	7,
+	11,
+	6,
+	12,
+	5,
+	13,
+	4,
+	14,
+	3,
+	15,
+	2,
+	16,
+	1,
+	17,
+	0,
+	18,
+};
+
+static long _vq_lengthlist__44c9_s_p9_1[] = {
+	 1, 4, 4, 7, 7, 7, 7, 8, 7, 9, 8, 9, 9,10,10,11,
+	11,11,11, 6, 5, 5, 8, 8, 9, 9, 9, 8,10, 9,11,10,
+	12,12,13,12,13,13, 5, 5, 5, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12,13,12,13,13,17, 8, 8, 9, 9, 9, 9,
+	 9, 9,10,10,12,11,13,12,13,13,13,13,18, 8, 8, 9,
+	 9, 9, 9, 9, 9,11,11,12,12,13,13,13,13,13,13,17,
+	13,12, 9, 9,10,10,10,10,11,11,12,12,12,13,13,13,
+	14,14,18,13,12, 9, 9,10,10,10,10,11,11,12,12,13,
+	13,13,14,14,14,17,18,18,10,10,10,10,11,11,11,12,
+	12,12,14,13,14,13,13,14,18,18,18,10, 9,10, 9,11,
+	11,12,12,12,12,13,13,15,14,14,14,18,18,16,13,14,
+	10,11,11,11,12,13,13,13,13,14,13,13,14,14,18,18,
+	18,14,12,11, 9,11,10,13,12,13,13,13,14,14,14,13,
+	14,18,18,17,18,18,11,12,12,12,13,13,14,13,14,14,
+	13,14,14,14,18,18,18,18,17,12,10,12, 9,13,11,13,
+	14,14,14,14,14,15,14,18,18,17,17,18,14,15,12,13,
+	13,13,14,13,14,14,15,14,15,14,18,17,18,18,18,15,
+	15,12,10,14,10,14,14,13,13,14,14,14,14,18,16,18,
+	18,18,18,17,14,14,13,14,14,13,13,14,14,14,15,15,
+	18,18,18,18,17,17,17,14,14,14,12,14,13,14,14,15,
+	14,15,14,18,18,18,18,18,18,18,17,16,13,13,13,14,
+	14,14,14,15,16,15,18,18,18,18,18,18,18,17,17,13,
+	13,13,13,14,13,14,15,15,15,
+};
+
+static float _vq_quantthresh__44c9_s_p9_1[] = {
+	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
+	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
+	367.5, 416.5, 
+};
+
+static long _vq_quantmap__44c9_s_p9_1[] = {
+	   17,   15,   13,   11,    9,    7,    5,    3,
+	    1,    0,    2,    4,    6,    8,   10,   12,
+	   14,   16,   18,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p9_1 = {
+	_vq_quantthresh__44c9_s_p9_1,
+	_vq_quantmap__44c9_s_p9_1,
+	19,
+	19
+};
+
+static static_codebook _44c9_s_p9_1 = {
+	2, 361,
+	_vq_lengthlist__44c9_s_p9_1,
+	1, -518287360, 1622704128, 5, 0,
+	_vq_quantlist__44c9_s_p9_1,
+	NULL,
+	&_vq_auxt__44c9_s_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c9_s_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44c9_s_p9_2[] = {
+	 2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+	 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7,
+};
+
+static float _vq_quantthresh__44c9_s_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44c9_s_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c9_s_p9_2 = {
+	_vq_quantthresh__44c9_s_p9_2,
+	_vq_quantmap__44c9_s_p9_2,
+	49,
+	49
+};
+
+static static_codebook _44c9_s_p9_2 = {
+	1, 49,
+	_vq_lengthlist__44c9_s_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44c9_s_p9_2,
+	NULL,
+	&_vq_auxt__44c9_s_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c9_s_short[] = {
+	 5,13,18,16,17,17,19,18,19,19, 5, 7,10,11,12,12,
+	13,16,17,18, 6, 6, 7, 7, 9, 9,10,14,17,19, 8, 7,
+	 6, 5, 6, 7, 9,12,19,17, 8, 7, 7, 6, 5, 6, 8,11,
+	15,19, 9, 8, 7, 6, 5, 5, 6, 8,13,15,11,10, 8, 8,
+	 7, 5, 4, 4,10,14,12,13,11, 9, 7, 6, 4, 2, 6,12,
+	18,16,16,13, 8, 7, 7, 5, 8,13,16,17,18,15,11, 9,
+	 9, 8,10,13,
+};
+
+static static_codebook _huff_book__44c9_s_short = {
+	2, 100,
+	_huff_lengthlist__44c9_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c0_s_long[] = {
+	 5, 4, 8, 9, 8, 9,10,12,15, 4, 1, 5, 5, 6, 8,11,
+	12,12, 8, 5, 8, 9, 9,11,13,12,12, 9, 5, 8, 5, 7,
+	 9,12,13,13, 8, 6, 8, 7, 7, 9,11,11,11, 9, 7, 9,
+	 7, 7, 7, 7,10,12,10,10,11, 9, 8, 7, 7, 9,11,11,
+	12,13,12,11, 9, 8, 9,11,13,16,16,15,15,12,10,11,
+	12,
+};
+
+static static_codebook _huff_book__44c0_s_long = {
+	2, 81,
+	_huff_lengthlist__44c0_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c0_s_p1_0[] = {
+	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 9,10,11, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 9,10,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,11,10, 0,
+	 0, 0, 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,10,11,
+	 0, 0, 0, 0, 0, 0, 9,11,10, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c0_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c0_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p1_0 = {
+	_vq_quantthresh__44c0_s_p1_0,
+	_vq_quantmap__44c0_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c0_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c0_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c0_s_p1_0,
+	NULL,
+	&_vq_auxt__44c0_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c0_s_p2_0[] = {
+	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c0_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c0_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p2_0 = {
+	_vq_quantthresh__44c0_s_p2_0,
+	_vq_quantmap__44c0_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c0_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c0_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c0_s_p2_0,
+	NULL,
+	&_vq_auxt__44c0_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c0_s_p3_0[] = {
+	 1, 3, 2, 8, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+	 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c0_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c0_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p3_0 = {
+	_vq_quantthresh__44c0_s_p3_0,
+	_vq_quantmap__44c0_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c0_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c0_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c0_s_p3_0,
+	NULL,
+	&_vq_auxt__44c0_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c0_s_p4_0[] = {
+	 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+	 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+	 7, 8, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0,
+	 9, 9, 8, 8,10,10, 0, 0, 0, 8, 9, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,10,10, 0, 0, 0, 0, 0, 9, 9,10,
+	10,
+};
+
+static float _vq_quantthresh__44c0_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c0_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p4_0 = {
+	_vq_quantthresh__44c0_s_p4_0,
+	_vq_quantmap__44c0_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c0_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c0_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c0_s_p4_0,
+	NULL,
+	&_vq_auxt__44c0_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p5_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c0_s_p5_0[] = {
+	 1, 4, 3, 6, 6, 8, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9, 9,10,10,10,
+	11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+	10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,11, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
+	10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,11,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,
+	10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,11,11,11,11,11,12,12,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,11,10,11,11,11,11,12,12,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,11,12,12,12,12,13,13, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,12,12,12,12,13,13,13, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,12,13,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44c0_s_p5_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c0_s_p5_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p5_0 = {
+	_vq_quantthresh__44c0_s_p5_0,
+	_vq_quantmap__44c0_s_p5_0,
+	17,
+	17
+};
+
+static static_codebook _44c0_s_p5_0 = {
+	2, 289,
+	_vq_lengthlist__44c0_s_p5_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c0_s_p5_0,
+	NULL,
+	&_vq_auxt__44c0_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c0_s_p6_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10,
+	 9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11,
+	11,12,10,11, 6, 9, 9,11,10,11,11,10,10, 6, 9, 9,
+	11,10,11,11,10,10, 7,11,10,12,11,11,11,11,11, 7,
+	 9, 9,10,10,10,11,11,10, 6, 9, 9,11,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__44c0_s_p6_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c0_s_p6_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p6_0 = {
+	_vq_quantthresh__44c0_s_p6_0,
+	_vq_quantmap__44c0_s_p6_0,
+	3,
+	3
+};
+
+static static_codebook _44c0_s_p6_0 = {
+	4, 81,
+	_vq_lengthlist__44c0_s_p6_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c0_s_p6_0,
+	NULL,
+	&_vq_auxt__44c0_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p6_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c0_s_p6_1[] = {
+	 2, 3, 3, 6, 6, 7, 7, 7, 7, 7, 8,10,10,10, 6, 6,
+	 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c0_s_p6_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c0_s_p6_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p6_1 = {
+	_vq_quantthresh__44c0_s_p6_1,
+	_vq_quantmap__44c0_s_p6_1,
+	11,
+	11
+};
+
+static static_codebook _44c0_s_p6_1 = {
+	2, 121,
+	_vq_lengthlist__44c0_s_p6_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c0_s_p6_1,
+	NULL,
+	&_vq_auxt__44c0_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c0_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
+	10,10,11,11,11,11,12,12, 0, 0, 0,10,10, 9, 9,11,
+	11,11,12,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+	13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,11,11,11,11,13,12,13,13, 0, 0, 0, 0,
+	 0,12,12,11,11,12,12,13,13,
+};
+
+static float _vq_quantthresh__44c0_s_p7_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c0_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p7_0 = {
+	_vq_quantthresh__44c0_s_p7_0,
+	_vq_quantmap__44c0_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c0_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c0_s_p7_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c0_s_p7_0,
+	NULL,
+	&_vq_auxt__44c0_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c0_s_p7_1[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c0_s_p7_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c0_s_p7_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p7_1 = {
+	_vq_quantthresh__44c0_s_p7_1,
+	_vq_quantmap__44c0_s_p7_1,
+	5,
+	5
+};
+
+static static_codebook _44c0_s_p7_1 = {
+	2, 25,
+	_vq_lengthlist__44c0_s_p7_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c0_s_p7_1,
+	NULL,
+	&_vq_auxt__44c0_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p8_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c0_s_p8_0[] = {
+	 1, 5, 5,10,10, 6, 9, 8,10,10, 6,10, 9,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,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,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,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,10,10,10,10,10,10,10,10, 8,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,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,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,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,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,
+};
+
+static float _vq_quantthresh__44c0_s_p8_0[] = {
+	-331.5, -110.5, 110.5, 331.5, 
+};
+
+static long _vq_quantmap__44c0_s_p8_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p8_0 = {
+	_vq_quantthresh__44c0_s_p8_0,
+	_vq_quantmap__44c0_s_p8_0,
+	5,
+	5
+};
+
+static static_codebook _44c0_s_p8_0 = {
+	4, 625,
+	_vq_lengthlist__44c0_s_p8_0,
+	1, -518283264, 1627103232, 3, 0,
+	_vq_quantlist__44c0_s_p8_0,
+	NULL,
+	&_vq_auxt__44c0_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p8_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c0_s_p8_1[] = {
+	 1, 4, 4, 6, 6, 7, 7, 9, 9,11,12,13,12, 6, 5, 5,
+	 7, 7, 8, 8,10, 9,12,12,12,12, 6, 5, 5, 7, 7, 8,
+	 8,10, 9,12,11,11,13,16, 7, 7, 8, 8, 9, 9,10,10,
+	12,12,13,12,16, 7, 7, 8, 7, 9, 9,10,10,11,12,12,
+	13,16,10,10, 8, 8,10,10,11,12,12,12,13,13,16,11,
+	10, 8, 7,11,10,11,11,12,11,13,13,16,16,16,10,10,
+	10,10,11,11,13,12,13,13,16,16,16,11, 9,11, 9,15,
+	13,12,13,13,13,16,16,16,15,13,11,11,12,13,12,12,
+	14,13,16,16,16,14,13,11,11,13,12,14,13,13,13,16,
+	16,16,16,16,13,13,13,12,14,13,14,14,16,16,16,16,
+	16,13,13,12,12,14,14,15,13,
+};
+
+static float _vq_quantthresh__44c0_s_p8_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44c0_s_p8_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p8_1 = {
+	_vq_quantthresh__44c0_s_p8_1,
+	_vq_quantmap__44c0_s_p8_1,
+	13,
+	13
+};
+
+static static_codebook _44c0_s_p8_1 = {
+	2, 169,
+	_vq_lengthlist__44c0_s_p8_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44c0_s_p8_1,
+	NULL,
+	&_vq_auxt__44c0_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_s_p8_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c0_s_p8_2[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9,10, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
+	 9,10, 9, 9,10,10,10,10, 8, 8, 8, 8, 9, 8, 9, 9,
+	 9, 9, 9,10, 9,10,10,10,10, 7, 7, 8, 8, 9, 9, 9,
+	 9, 9, 9,10, 9,10,10,10,10,10, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 9,11,10,10,10,10, 8, 8, 9,
+	 9, 9, 9, 9,10, 9, 9, 9,10,10,10,10,11,11, 9, 9,
+	 9, 9, 9, 9, 9, 9,10, 9, 9,10,11,10,10,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,11,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,10,10,11,
+	11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+	11,11,11,11, 9,10, 9,10, 9, 9, 9, 9,10, 9,10,11,
+	10,11,10,10,10,10,10, 9, 9, 9,10, 9, 9, 9,10,11,
+	11,10,11,11,10,11,10,10,10, 9, 9, 9, 9,10, 9, 9,
+	10,11,10,11,11,11,11,10,11,10,10, 9,10, 9, 9, 9,
+	10,
+};
+
+static float _vq_quantthresh__44c0_s_p8_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c0_s_p8_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_s_p8_2 = {
+	_vq_quantthresh__44c0_s_p8_2,
+	_vq_quantmap__44c0_s_p8_2,
+	17,
+	17
+};
+
+static static_codebook _44c0_s_p8_2 = {
+	2, 289,
+	_vq_lengthlist__44c0_s_p8_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c0_s_p8_2,
+	NULL,
+	&_vq_auxt__44c0_s_p8_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c0_s_short[] = {
+	 9, 8,12,11,12,13,14,14,16, 6, 1, 5, 6, 6, 9,12,
+	14,17, 9, 4, 5, 9, 7, 9,13,15,16, 8, 5, 8, 6, 8,
+	10,13,17,17, 9, 6, 7, 7, 8, 9,13,15,17,11, 8, 9,
+	 9, 9,10,12,16,16,13, 7, 8, 7, 7, 9,12,14,15,13,
+	 6, 7, 5, 5, 7,10,13,13,14, 7, 8, 5, 6, 7, 9,10,
+	12,
+};
+
+static static_codebook _huff_book__44c0_s_short = {
+	2, 81,
+	_huff_lengthlist__44c0_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c0_sm_long[] = {
+	 5, 4, 9,10, 9,10,11,12,13, 4, 1, 5, 7, 7, 9,11,
+	12,14, 8, 5, 7, 9, 8,10,13,13,13,10, 7, 9, 4, 6,
+	 7,10,12,14, 9, 6, 7, 6, 6, 7,10,12,12, 9, 8, 9,
+	 7, 6, 7, 8,11,12,11,11,11, 9, 8, 7, 8,10,12,12,
+	13,14,12,11, 9, 9, 9,12,12,17,17,15,16,12,10,11,
+	13,
+};
+
+static static_codebook _huff_book__44c0_sm_long = {
+	2, 81,
+	_huff_lengthlist__44c0_sm_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c0_sm_p1_0[] = {
+	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
+	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 9,10,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 9,10,10, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c0_sm_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p1_0 = {
+	_vq_quantthresh__44c0_sm_p1_0,
+	_vq_quantmap__44c0_sm_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c0_sm_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c0_sm_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c0_sm_p1_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c0_sm_p2_0[] = {
+	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c0_sm_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p2_0 = {
+	_vq_quantthresh__44c0_sm_p2_0,
+	_vq_quantmap__44c0_sm_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c0_sm_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c0_sm_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c0_sm_p2_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c0_sm_p3_0[] = {
+	 1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 4, 7, 7, 0, 0,
+	 0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8,
+	 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+	 9,10, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
+	 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c0_sm_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p3_0 = {
+	_vq_quantthresh__44c0_sm_p3_0,
+	_vq_quantmap__44c0_sm_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c0_sm_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c0_sm_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c0_sm_p3_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c0_sm_p4_0[] = {
+	 1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7,
+	 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+	 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
+	 0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+	11,
+};
+
+static float _vq_quantthresh__44c0_sm_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p4_0 = {
+	_vq_quantthresh__44c0_sm_p4_0,
+	_vq_quantmap__44c0_sm_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c0_sm_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c0_sm_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c0_sm_p4_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p5_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c0_sm_p5_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,
+	11,11, 0, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+	11,11,11, 0, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+	11,11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+	10,11,11,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,12,13, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10,10,11,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,11,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,12,13,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,11,12,12,13,13,13,13, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44c0_sm_p5_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p5_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p5_0 = {
+	_vq_quantthresh__44c0_sm_p5_0,
+	_vq_quantmap__44c0_sm_p5_0,
+	17,
+	17
+};
+
+static static_codebook _44c0_sm_p5_0 = {
+	2, 289,
+	_vq_lengthlist__44c0_sm_p5_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c0_sm_p5_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c0_sm_p6_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
+	11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9,
+	11,10,11,11,10,10, 7,11,10,11,11,11,11,11,11, 6,
+	 9, 9,11,10,10,11,11,10, 6, 9, 9,11,10,10,11,10,
+	11,
+};
+
+static float _vq_quantthresh__44c0_sm_p6_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p6_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p6_0 = {
+	_vq_quantthresh__44c0_sm_p6_0,
+	_vq_quantmap__44c0_sm_p6_0,
+	3,
+	3
+};
+
+static static_codebook _44c0_sm_p6_0 = {
+	4, 81,
+	_vq_lengthlist__44c0_sm_p6_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c0_sm_p6_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p6_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c0_sm_p6_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 8, 9, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+	 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c0_sm_p6_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p6_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p6_1 = {
+	_vq_quantthresh__44c0_sm_p6_1,
+	_vq_quantmap__44c0_sm_p6_1,
+	11,
+	11
+};
+
+static static_codebook _44c0_sm_p6_1 = {
+	2, 121,
+	_vq_lengthlist__44c0_sm_p6_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c0_sm_p6_1,
+	NULL,
+	&_vq_auxt__44c0_sm_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c0_sm_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8,
+	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0, 9,10,
+	10,10,11,11,12,11,12,12, 0, 0, 0,10,10, 9, 9,11,
+	11,12,12,12,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+	13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,11,12,11,11,13,12,13,13, 0, 0, 0, 0,
+	 0,12,12,11,11,13,12,14,14,
+};
+
+static float _vq_quantthresh__44c0_sm_p7_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p7_0 = {
+	_vq_quantthresh__44c0_sm_p7_0,
+	_vq_quantmap__44c0_sm_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c0_sm_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c0_sm_p7_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c0_sm_p7_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c0_sm_p7_1[] = {
+	 2, 4, 4, 4, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c0_sm_p7_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p7_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p7_1 = {
+	_vq_quantthresh__44c0_sm_p7_1,
+	_vq_quantmap__44c0_sm_p7_1,
+	5,
+	5
+};
+
+static static_codebook _44c0_sm_p7_1 = {
+	2, 25,
+	_vq_lengthlist__44c0_sm_p7_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c0_sm_p7_1,
+	NULL,
+	&_vq_auxt__44c0_sm_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p8_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c0_sm_p8_0[] = {
+	 1, 3, 3,11,11,11,11,11,11, 3, 7, 6,11,11,11,11,
+	11,11, 4, 8, 7,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__44c0_sm_p8_0[] = {
+	-773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 552.5, 773.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p8_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_0 = {
+	_vq_quantthresh__44c0_sm_p8_0,
+	_vq_quantmap__44c0_sm_p8_0,
+	9,
+	9
+};
+
+static static_codebook _44c0_sm_p8_0 = {
+	2, 81,
+	_vq_lengthlist__44c0_sm_p8_0,
+	1, -516186112, 1627103232, 4, 0,
+	_vq_quantlist__44c0_sm_p8_0,
+	NULL,
+	&_vq_auxt__44c0_sm_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p8_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c0_sm_p8_1[] = {
+	 1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5,
+	 7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8,
+	 8,10,10,12,11,12,12,17, 7, 7, 8, 8, 9, 9,10,10,
+	12,12,13,13,18, 7, 7, 8, 7, 9, 9,10,10,12,12,12,
+	13,19,10,10, 8, 8,10,10,11,11,12,12,13,14,19,11,
+	10, 8, 7,10,10,11,11,12,12,13,12,19,19,19,10,10,
+	10,10,11,11,12,12,13,13,19,19,19,11, 9,11, 9,14,
+	12,13,12,13,13,19,20,18,13,14,11,11,12,12,13,13,
+	14,13,20,20,20,15,13,11,10,13,11,13,13,14,13,20,
+	20,20,20,20,13,14,12,12,13,13,13,13,20,20,20,20,
+	20,13,13,12,12,16,13,15,13,
+};
+
+static float _vq_quantthresh__44c0_sm_p8_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p8_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_1 = {
+	_vq_quantthresh__44c0_sm_p8_1,
+	_vq_quantmap__44c0_sm_p8_1,
+	13,
+	13
+};
+
+static static_codebook _44c0_sm_p8_1 = {
+	2, 169,
+	_vq_lengthlist__44c0_sm_p8_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44c0_sm_p8_1,
+	NULL,
+	&_vq_auxt__44c0_sm_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c0_sm_p8_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c0_sm_p8_2[] = {
+	 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
+	 9,10, 9, 9,10,10,10,11, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9,10, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10,11,10,10, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,10,11,11, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,11,11,11, 9, 9,
+	 9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,10,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,11,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,10,11,11,
+	11,11,11, 9, 9,10, 9, 9, 9, 9, 9, 9, 9,10,11,10,
+	11,11,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
+	11,11,11,11,11, 9,10, 9, 9, 9, 9, 9, 9, 9, 9,11,
+	11,10,11,11,11,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+	10,11,10,11,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44c0_sm_p8_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c0_sm_p8_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c0_sm_p8_2 = {
+	_vq_quantthresh__44c0_sm_p8_2,
+	_vq_quantmap__44c0_sm_p8_2,
+	17,
+	17
+};
+
+static static_codebook _44c0_sm_p8_2 = {
+	2, 289,
+	_vq_lengthlist__44c0_sm_p8_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c0_sm_p8_2,
+	NULL,
+	&_vq_auxt__44c0_sm_p8_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c0_sm_short[] = {
+	 6, 6,12,13,13,14,16,17,17, 4, 2, 5, 8, 7, 9,12,
+	15,15, 9, 4, 5, 9, 7, 9,12,16,18,11, 6, 7, 4, 6,
+	 8,11,14,18,10, 5, 6, 5, 5, 7,10,14,17,10, 5, 7,
+	 7, 6, 7,10,13,16,11, 5, 7, 7, 7, 8,10,12,15,13,
+	 6, 7, 5, 5, 7, 9,12,13,16, 8, 9, 6, 6, 7, 9,10,
+	12,
+};
+
+static static_codebook _huff_book__44c0_sm_short = {
+	2, 81,
+	_huff_lengthlist__44c0_sm_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c1_s_long[] = {
+	 5, 5, 9,10, 9, 9,10,11,12, 5, 1, 5, 6, 6, 7,10,
+	12,14, 9, 5, 6, 8, 8,10,12,14,14,10, 5, 8, 5, 6,
+	 8,11,13,14, 9, 5, 7, 6, 6, 8,10,12,11, 9, 7, 9,
+	 7, 6, 6, 7,10,10,10, 9,12, 9, 8, 7, 7,10,12,11,
+	11,13,12,10, 9, 8, 9,11,11,14,15,15,13,11, 9, 9,
+	11,
+};
+
+static static_codebook _huff_book__44c1_s_long = {
+	2, 81,
+	_huff_lengthlist__44c1_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c1_s_p1_0[] = {
+	 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0,
+	 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0,
+	 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0, 0,
+	 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 8, 8, 0, 0,
+	 0, 0, 0, 0, 8, 9, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 7, 8, 8, 0, 0,
+	 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 6, 8, 8, 0, 0, 0, 0, 0, 0, 8,10, 9, 0,
+	 0, 0, 0, 0, 0, 8, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9,
+	 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c1_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c1_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p1_0 = {
+	_vq_quantthresh__44c1_s_p1_0,
+	_vq_quantmap__44c1_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c1_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c1_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c1_s_p1_0,
+	NULL,
+	&_vq_auxt__44c1_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c1_s_p2_0[] = {
+	 2, 3, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 4, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 8, 8,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c1_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c1_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p2_0 = {
+	_vq_quantthresh__44c1_s_p2_0,
+	_vq_quantmap__44c1_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c1_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c1_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c1_s_p2_0,
+	NULL,
+	&_vq_auxt__44c1_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c1_s_p3_0[] = {
+	 1, 3, 2, 7, 7, 0, 0, 0, 0, 0,13,13, 6, 6, 0, 0,
+	 0, 0, 0,12, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+	 0, 0,11,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c1_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c1_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p3_0 = {
+	_vq_quantthresh__44c1_s_p3_0,
+	_vq_quantmap__44c1_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c1_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c1_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c1_s_p3_0,
+	NULL,
+	&_vq_auxt__44c1_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c1_s_p4_0[] = {
+	 1, 3, 3, 6, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7,
+	 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0,
+	 0, 0,10,10, 9, 9,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+	11,
+};
+
+static float _vq_quantthresh__44c1_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c1_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p4_0 = {
+	_vq_quantthresh__44c1_s_p4_0,
+	_vq_quantmap__44c1_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c1_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c1_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c1_s_p4_0,
+	NULL,
+	&_vq_auxt__44c1_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p5_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c1_s_p5_0[] = {
+	 1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
+	11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+	10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,11, 0, 0, 0, 8, 8, 9, 9, 9,10,10,10,
+	10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10, 9,10,
+	10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
+	10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,13, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,12,12,12,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44c1_s_p5_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c1_s_p5_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p5_0 = {
+	_vq_quantthresh__44c1_s_p5_0,
+	_vq_quantmap__44c1_s_p5_0,
+	17,
+	17
+};
+
+static static_codebook _44c1_s_p5_0 = {
+	2, 289,
+	_vq_lengthlist__44c1_s_p5_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c1_s_p5_0,
+	NULL,
+	&_vq_auxt__44c1_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c1_s_p6_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 6,10,10,11,11,
+	11,11,10,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+	11,10,11,11,10,10, 7,11,10,11,11,11,12,11,11, 7,
+	 9, 9,11,10,10,11,11,10, 6, 9, 9,10,10,10,12,10,
+	11,
+};
+
+static float _vq_quantthresh__44c1_s_p6_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c1_s_p6_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p6_0 = {
+	_vq_quantthresh__44c1_s_p6_0,
+	_vq_quantmap__44c1_s_p6_0,
+	3,
+	3
+};
+
+static static_codebook _44c1_s_p6_0 = {
+	4, 81,
+	_vq_lengthlist__44c1_s_p6_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c1_s_p6_0,
+	NULL,
+	&_vq_auxt__44c1_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p6_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c1_s_p6_1[] = {
+	 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6,
+	 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8,
+	 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c1_s_p6_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c1_s_p6_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p6_1 = {
+	_vq_quantthresh__44c1_s_p6_1,
+	_vq_quantmap__44c1_s_p6_1,
+	11,
+	11
+};
+
+static static_codebook _44c1_s_p6_1 = {
+	2, 121,
+	_vq_lengthlist__44c1_s_p6_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c1_s_p6_1,
+	NULL,
+	&_vq_auxt__44c1_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c1_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 9, 7, 5, 6,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8,
+	 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9, 9,10,10,10,11,11,11,11, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,11,11, 0, 0, 0,10,10,
+	10,10,11,11,12,11,12,12, 0, 0, 0,10,10,10, 9,11,
+	11,12,11,13,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+	13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,11,12,11,11,12,12,14,13, 0, 0, 0, 0,
+	 0,12,11,11,11,13,10,14,13,
+};
+
+static float _vq_quantthresh__44c1_s_p7_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c1_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p7_0 = {
+	_vq_quantthresh__44c1_s_p7_0,
+	_vq_quantmap__44c1_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c1_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c1_s_p7_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c1_s_p7_0,
+	NULL,
+	&_vq_auxt__44c1_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c1_s_p7_1[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c1_s_p7_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c1_s_p7_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p7_1 = {
+	_vq_quantthresh__44c1_s_p7_1,
+	_vq_quantmap__44c1_s_p7_1,
+	5,
+	5
+};
+
+static static_codebook _44c1_s_p7_1 = {
+	2, 25,
+	_vq_lengthlist__44c1_s_p7_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c1_s_p7_1,
+	NULL,
+	&_vq_auxt__44c1_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c1_s_p8_0[] = {
+	 1, 4, 3,10,10,10,10,10,10,10,10,10,10, 4, 8, 6,
+	10,10,10,10,10,10,10,10,10,10, 4, 8, 7,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,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,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,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,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,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44c1_s_p8_0[] = {
+	-1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 
+	552.5, 773.5, 994.5, 1215.5, 
+};
+
+static long _vq_quantmap__44c1_s_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p8_0 = {
+	_vq_quantthresh__44c1_s_p8_0,
+	_vq_quantmap__44c1_s_p8_0,
+	13,
+	13
+};
+
+static static_codebook _44c1_s_p8_0 = {
+	2, 169,
+	_vq_lengthlist__44c1_s_p8_0,
+	1, -514541568, 1627103232, 4, 0,
+	_vq_quantlist__44c1_s_p8_0,
+	NULL,
+	&_vq_auxt__44c1_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p8_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c1_s_p8_1[] = {
+	 1, 4, 4, 6, 5, 7, 7, 9, 9,10,10,12,12, 6, 5, 5,
+	 7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8,
+	 8,10,10,11,11,12,12,15, 7, 7, 8, 8, 9, 9,11,11,
+	12,12,13,12,15, 8, 8, 8, 7, 9, 9,10,10,12,12,13,
+	13,16,11,10, 8, 8,10,10,11,11,12,12,13,13,16,11,
+	11, 9, 8,11,10,11,11,12,12,13,12,16,16,16,10,11,
+	10,11,12,12,12,12,13,13,16,16,16,11, 9,11, 9,14,
+	12,12,12,13,13,16,16,16,12,14,11,12,12,12,13,13,
+	14,13,16,16,16,15,13,12,10,13,10,13,14,13,13,16,
+	16,16,16,16,13,14,12,13,13,12,13,13,16,16,16,16,
+	16,13,12,12,11,14,12,15,13,
+};
+
+static float _vq_quantthresh__44c1_s_p8_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44c1_s_p8_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p8_1 = {
+	_vq_quantthresh__44c1_s_p8_1,
+	_vq_quantmap__44c1_s_p8_1,
+	13,
+	13
+};
+
+static static_codebook _44c1_s_p8_1 = {
+	2, 169,
+	_vq_lengthlist__44c1_s_p8_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44c1_s_p8_1,
+	NULL,
+	&_vq_auxt__44c1_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_s_p8_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c1_s_p8_2[] = {
+	 2, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9,10, 9, 9,10,10,10, 7, 7, 8, 8, 9, 8, 9, 9, 9,
+	 9,10, 9, 9,10,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9,10, 9, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10,11,11,11, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,11,11,11, 8, 8, 9,
+	 9, 9, 9,10, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10,11,11,
+	11,11,11, 9, 9, 9,10, 9, 9, 9, 9, 9, 9,10,11,11,
+	11,11,11,11,10,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
+	11,11,11,11,11, 9,10, 9, 9, 9, 9,10, 9, 9, 9,11,
+	11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9,10, 9,
+	11,11,10,11,11,11,11,10,11, 9, 9, 9, 9, 9, 9, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44c1_s_p8_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c1_s_p8_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_s_p8_2 = {
+	_vq_quantthresh__44c1_s_p8_2,
+	_vq_quantmap__44c1_s_p8_2,
+	17,
+	17
+};
+
+static static_codebook _44c1_s_p8_2 = {
+	2, 289,
+	_vq_lengthlist__44c1_s_p8_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c1_s_p8_2,
+	NULL,
+	&_vq_auxt__44c1_s_p8_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c1_s_short[] = {
+	 6, 8,13,12,13,14,15,16,16, 4, 2, 4, 7, 6, 8,11,
+	13,15,10, 4, 4, 8, 6, 8,11,14,17,11, 5, 6, 5, 6,
+	 8,12,14,17,11, 5, 5, 6, 5, 7,10,13,16,12, 6, 7,
+	 8, 7, 8,10,13,15,13, 8, 8, 7, 7, 8,10,12,15,15,
+	 7, 7, 5, 5, 7, 9,12,14,15, 8, 8, 6, 6, 7, 8,10,
+	11,
+};
+
+static static_codebook _huff_book__44c1_s_short = {
+	2, 81,
+	_huff_lengthlist__44c1_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c1_sm_long[] = {
+	 5, 4, 8,10, 9, 9,10,11,12, 4, 2, 5, 6, 6, 8,10,
+	11,13, 8, 4, 6, 8, 7, 9,12,12,14,10, 6, 8, 4, 5,
+	 6, 9,11,12, 9, 5, 6, 5, 5, 6, 9,11,11, 9, 7, 9,
+	 6, 5, 5, 7,10,10,10, 9,11, 8, 7, 6, 7, 9,11,11,
+	12,13,10,10, 9, 8, 9,11,11,15,15,12,13,11, 9,10,
+	11,
+};
+
+static static_codebook _huff_book__44c1_sm_long = {
+	2, 81,
+	_huff_lengthlist__44c1_sm_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c1_sm_p1_0[] = {
+	 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 7, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 7, 0, 0, 0, 0,
+	 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0, 0,
+	 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 7, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c1_sm_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p1_0 = {
+	_vq_quantthresh__44c1_sm_p1_0,
+	_vq_quantmap__44c1_sm_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44c1_sm_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44c1_sm_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44c1_sm_p1_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c1_sm_p2_0[] = {
+	 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 6, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c1_sm_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p2_0 = {
+	_vq_quantthresh__44c1_sm_p2_0,
+	_vq_quantmap__44c1_sm_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44c1_sm_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44c1_sm_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c1_sm_p2_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c1_sm_p3_0[] = {
+	 1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0,
+	 0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44c1_sm_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p3_0 = {
+	_vq_quantthresh__44c1_sm_p3_0,
+	_vq_quantmap__44c1_sm_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44c1_sm_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44c1_sm_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c1_sm_p3_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44c1_sm_p4_0[] = {
+	 1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8,
+	 9, 9, 0, 6, 6, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+	 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+	 8, 8, 9, 9,11,11, 0, 0, 0, 9, 9, 9, 9,11,11, 0,
+	 0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0, 9, 9,11,
+	11,
+};
+
+static float _vq_quantthresh__44c1_sm_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p4_0 = {
+	_vq_quantthresh__44c1_sm_p4_0,
+	_vq_quantmap__44c1_sm_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44c1_sm_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44c1_sm_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44c1_sm_p4_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p5_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c1_sm_p5_0[] = {
+	 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,
+	11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,
+	10,11,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,10,
+	10,11,11,11,12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9,10,
+	10,10,10,11,11,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9, 9, 9,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	 9, 9,10,10,11,11,12,12,12,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,10,10,11,11,12,12,12,12,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0, 0,
+	 0, 0, 0, 0, 0,11,11,11,11,12,12,13,13,13,13, 0,
+	 0, 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,12,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44c1_sm_p5_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p5_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p5_0 = {
+	_vq_quantthresh__44c1_sm_p5_0,
+	_vq_quantmap__44c1_sm_p5_0,
+	17,
+	17
+};
+
+static static_codebook _44c1_sm_p5_0 = {
+	2, 289,
+	_vq_lengthlist__44c1_sm_p5_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c1_sm_p5_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44c1_sm_p6_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11,
+	 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
+	11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9,
+	11,10,11,11,10,10, 7,11,11,11,11,11,11,11,11, 6,
+	 9, 9,11,10,10,11,11,10, 6, 9, 9,10,10,10,11,10,
+	11,
+};
+
+static float _vq_quantthresh__44c1_sm_p6_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p6_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p6_0 = {
+	_vq_quantthresh__44c1_sm_p6_0,
+	_vq_quantmap__44c1_sm_p6_0,
+	3,
+	3
+};
+
+static static_codebook _44c1_sm_p6_0 = {
+	4, 81,
+	_vq_lengthlist__44c1_sm_p6_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44c1_sm_p6_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p6_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44c1_sm_p6_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8,
+	 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 9, 8,10,10,10,10,10, 8, 8, 8,
+	 8, 8, 8,10,10,10,10,10, 9, 9, 8, 8, 8, 8,10,10,
+	10,10,10, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44c1_sm_p6_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p6_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p6_1 = {
+	_vq_quantthresh__44c1_sm_p6_1,
+	_vq_quantmap__44c1_sm_p6_1,
+	11,
+	11
+};
+
+static static_codebook _44c1_sm_p6_1 = {
+	2, 121,
+	_vq_lengthlist__44c1_sm_p6_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44c1_sm_p6_1,
+	NULL,
+	&_vq_auxt__44c1_sm_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c1_sm_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9,10,10,10,10,11,11,11,11, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0, 9,10,
+	 9,10,11,11,12,11,13,12, 0, 0, 0,10,10, 9, 9,11,
+	11,12,12,13,12, 0, 0, 0,13,13,10,10,11,11,12,12,
+	13,13, 0, 0, 0,14,14,10,10,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,11,12,11,11,12,13,14,13, 0, 0, 0, 0,
+	 0,12,12,11,11,13,12,14,13,
+};
+
+static float _vq_quantthresh__44c1_sm_p7_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p7_0 = {
+	_vq_quantthresh__44c1_sm_p7_0,
+	_vq_quantmap__44c1_sm_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44c1_sm_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44c1_sm_p7_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44c1_sm_p7_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44c1_sm_p7_1[] = {
+	 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44c1_sm_p7_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p7_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p7_1 = {
+	_vq_quantthresh__44c1_sm_p7_1,
+	_vq_quantmap__44c1_sm_p7_1,
+	5,
+	5
+};
+
+static static_codebook _44c1_sm_p7_1 = {
+	2, 25,
+	_vq_lengthlist__44c1_sm_p7_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44c1_sm_p7_1,
+	NULL,
+	&_vq_auxt__44c1_sm_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p8_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c1_sm_p8_0[] = {
+	 1, 3, 3,13,13,13,13,13,13,13,13,13,13, 3, 6, 6,
+	13,13,13,13,13,13,13,13,13,13, 4, 8, 7,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,
+};
+
+static float _vq_quantthresh__44c1_sm_p8_0[] = {
+	-1215.5, -994.5, -773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 
+	552.5, 773.5, 994.5, 1215.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p8_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_0 = {
+	_vq_quantthresh__44c1_sm_p8_0,
+	_vq_quantmap__44c1_sm_p8_0,
+	13,
+	13
+};
+
+static static_codebook _44c1_sm_p8_0 = {
+	2, 169,
+	_vq_lengthlist__44c1_sm_p8_0,
+	1, -514541568, 1627103232, 4, 0,
+	_vq_quantlist__44c1_sm_p8_0,
+	NULL,
+	&_vq_auxt__44c1_sm_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p8_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44c1_sm_p8_1[] = {
+	 1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5,
+	 7, 7, 8, 7,10,10,11,11,12,12, 6, 5, 5, 7, 7, 8,
+	 8,10,10,11,11,12,12,16, 7, 7, 8, 8, 9, 9,11,11,
+	12,12,13,13,17, 7, 7, 8, 7, 9, 9,11,10,12,12,13,
+	13,19,11,10, 8, 8,10,10,11,11,12,12,13,13,19,11,
+	11, 9, 7,11,10,11,11,12,12,13,12,19,19,19,10,10,
+	10,10,11,12,12,12,13,14,18,19,19,11, 9,11, 9,13,
+	12,12,12,13,13,19,20,19,13,15,11,11,12,12,13,13,
+	14,13,18,19,20,15,13,12,10,13,10,13,13,13,14,20,
+	20,20,20,20,13,14,12,12,13,12,13,13,20,20,20,20,
+	20,13,12,12,12,14,12,14,13,
+};
+
+static float _vq_quantthresh__44c1_sm_p8_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p8_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_1 = {
+	_vq_quantthresh__44c1_sm_p8_1,
+	_vq_quantmap__44c1_sm_p8_1,
+	13,
+	13
+};
+
+static static_codebook _44c1_sm_p8_1 = {
+	2, 169,
+	_vq_lengthlist__44c1_sm_p8_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44c1_sm_p8_1,
+	NULL,
+	&_vq_auxt__44c1_sm_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44c1_sm_p8_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44c1_sm_p8_2[] = {
+	 2, 5, 5, 6, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,11,11, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9,10,10, 9,10,10,10,10, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10,11,10,10, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10, 9,10,10,10,11,11, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,11,11,11, 9, 9,
+	 9, 9, 9, 9, 9, 9,10, 9,10, 9,11,11,11,11,11, 9,
+	 8, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,11,11,11,11,
+	11,11,11, 9, 9,10, 9, 9, 9, 9,10, 9,10,10,11,10,
+	11,11,11,11, 9,10,10,10, 9, 9, 9, 9, 9, 9,10,11,
+	11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,11,
+	11,10,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9,10, 9,
+	10,11,10,11,11,11,11,11,11, 9, 9,10, 9, 9, 9, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44c1_sm_p8_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44c1_sm_p8_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44c1_sm_p8_2 = {
+	_vq_quantthresh__44c1_sm_p8_2,
+	_vq_quantmap__44c1_sm_p8_2,
+	17,
+	17
+};
+
+static static_codebook _44c1_sm_p8_2 = {
+	2, 289,
+	_vq_lengthlist__44c1_sm_p8_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44c1_sm_p8_2,
+	NULL,
+	&_vq_auxt__44c1_sm_p8_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44c1_sm_short[] = {
+	 4, 7,13,14,14,15,16,18,18, 4, 2, 5, 8, 7, 9,12,
+	15,15,10, 4, 5,10, 6, 8,11,15,17,12, 5, 7, 5, 6,
+	 8,11,14,17,11, 5, 6, 6, 5, 6, 9,13,17,12, 6, 7,
+	 6, 5, 6, 8,12,14,14, 7, 8, 6, 6, 7, 9,11,14,14,
+	 8, 9, 6, 5, 6, 9,11,13,16,10,10, 7, 6, 7, 8,10,
+	11,
+};
+
+static static_codebook _huff_book__44c1_sm_short = {
+	2, 81,
+	_huff_lengthlist__44c1_sm_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44cn1_s_long[] = {
+	 4, 4, 7, 8, 7, 8,10,12,17, 3, 1, 6, 6, 7, 8,10,
+	12,15, 7, 6, 9, 9, 9,11,12,14,17, 8, 6, 9, 6, 7,
+	 9,11,13,17, 7, 6, 9, 7, 7, 8, 9,12,15, 8, 8,10,
+	 8, 7, 7, 7,10,14, 9,10,12,10, 8, 8, 8,10,14,11,
+	13,15,13,12,11,11,12,16,17,18,18,19,20,18,16,16,
+	20,
+};
+
+static static_codebook _huff_book__44cn1_s_long = {
+	2, 81,
+	_huff_lengthlist__44cn1_s_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44cn1_s_p1_0[] = {
+	 1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0,
+	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+	 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 8, 9,10, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0, 0,
+	 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0,10,11,11, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10,10, 0, 0,
+	 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0,10,11,11,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8,10,10, 0, 0,
+	 0, 0, 0, 0, 8,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,11, 0,
+	 0, 0, 0, 0, 0, 9, 9,11, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7,10,10, 0, 0, 0, 0, 0, 0,10,11,11,
+	 0, 0, 0, 0, 0, 0, 9,11, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44cn1_s_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p1_0 = {
+	_vq_quantthresh__44cn1_s_p1_0,
+	_vq_quantmap__44cn1_s_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44cn1_s_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44cn1_s_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44cn1_s_p1_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44cn1_s_p2_0[] = {
+	 1, 4, 4, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 6, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44cn1_s_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p2_0 = {
+	_vq_quantthresh__44cn1_s_p2_0,
+	_vq_quantmap__44cn1_s_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44cn1_s_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44cn1_s_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44cn1_s_p2_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44cn1_s_p3_0[] = {
+	 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0,
+	 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7,
+	 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0,
+	 9, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
+	 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44cn1_s_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p3_0 = {
+	_vq_quantthresh__44cn1_s_p3_0,
+	_vq_quantmap__44cn1_s_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44cn1_s_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44cn1_s_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44cn1_s_p3_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44cn1_s_p4_0[] = {
+	 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 6, 6, 7, 7,
+	 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7,
+	 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
+	 0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
+	11,
+};
+
+static float _vq_quantthresh__44cn1_s_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p4_0 = {
+	_vq_quantthresh__44cn1_s_p4_0,
+	_vq_quantmap__44cn1_s_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44cn1_s_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44cn1_s_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44cn1_s_p4_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p5_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44cn1_s_p5_0[] = {
+	 1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
+	10, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,
+	11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,
+	10,11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,11, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12, 0, 0, 0, 8, 8, 9, 9, 9, 9,10,
+	10,10,11,11,11,12,12, 0, 0, 0, 9, 9,10, 9,10,10,
+	10,10,11,11,11,11,12,12, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,12,12, 0, 0, 0, 0, 0, 9, 9,
+	10,10,10,11,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0,
+	10,10,11,10,11,11,11,12,13,12,13,13, 0, 0, 0, 0,
+	 0, 0, 0,11,10,11,11,12,12,12,12,13,13, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,12,12,12,13,13,13,14, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,13,13,13,13,13,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44cn1_s_p5_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p5_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p5_0 = {
+	_vq_quantthresh__44cn1_s_p5_0,
+	_vq_quantmap__44cn1_s_p5_0,
+	17,
+	17
+};
+
+static static_codebook _44cn1_s_p5_0 = {
+	2, 289,
+	_vq_lengthlist__44cn1_s_p5_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44cn1_s_p5_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44cn1_s_p6_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 6, 6,10, 9, 9,11,
+	 9, 9, 4, 6, 6,10, 9, 9,10, 9, 9, 7,10,10,11,11,
+	11,12,11,11, 7, 9, 9,11,11,10,11,10,10, 7, 9, 9,
+	11,10,11,11,10,10, 7,10,10,11,11,11,12,11,11, 7,
+	 9, 9,11,10,10,11,10,10, 7, 9, 9,11,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__44cn1_s_p6_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p6_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p6_0 = {
+	_vq_quantthresh__44cn1_s_p6_0,
+	_vq_quantmap__44cn1_s_p6_0,
+	3,
+	3
+};
+
+static static_codebook _44cn1_s_p6_0 = {
+	4, 81,
+	_vq_lengthlist__44cn1_s_p6_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44cn1_s_p6_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p6_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44cn1_s_p6_1[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 6,
+	 8, 8, 8, 8, 8, 8,10,10,10, 7, 6, 7, 7, 8, 8, 8,
+	 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+	 7, 8, 8, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 9, 9,
+	 9, 9,10,10,10, 8, 8, 8, 8, 9, 9, 9, 9,10,10,10,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,10,
+	10,10,10, 9, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__44cn1_s_p6_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p6_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p6_1 = {
+	_vq_quantthresh__44cn1_s_p6_1,
+	_vq_quantmap__44cn1_s_p6_1,
+	11,
+	11
+};
+
+static static_codebook _44cn1_s_p6_1 = {
+	2, 121,
+	_vq_lengthlist__44cn1_s_p6_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44cn1_s_p6_1,
+	NULL,
+	&_vq_auxt__44cn1_s_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44cn1_s_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,11,11, 7, 5, 5, 7, 7, 8,
+	 8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9, 9,10,10,10,11,11,11,12, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,11,12, 0, 0, 0,10,10,
+	10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
+	11,12,12,13,12, 0, 0, 0,14,14,11,10,11,12,12,13,
+	13,14, 0, 0, 0,15,15,11,11,12,11,12,12,14,13, 0,
+	 0, 0, 0, 0,12,12,12,12,13,13,14,14, 0, 0, 0, 0,
+	 0,13,13,12,12,13,13,13,14,
+};
+
+static float _vq_quantthresh__44cn1_s_p7_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p7_0 = {
+	_vq_quantthresh__44cn1_s_p7_0,
+	_vq_quantmap__44cn1_s_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44cn1_s_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44cn1_s_p7_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44cn1_s_p7_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44cn1_s_p7_1[] = {
+	 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6,
+	 6, 6, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44cn1_s_p7_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p7_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p7_1 = {
+	_vq_quantthresh__44cn1_s_p7_1,
+	_vq_quantmap__44cn1_s_p7_1,
+	5,
+	5
+};
+
+static static_codebook _44cn1_s_p7_1 = {
+	2, 25,
+	_vq_lengthlist__44cn1_s_p7_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44cn1_s_p7_1,
+	NULL,
+	&_vq_auxt__44cn1_s_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p8_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44cn1_s_p8_0[] = {
+	 1, 7, 7,11,11, 8,11,11,11,11, 4,11, 3,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11, 7,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,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,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11, 8,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__44cn1_s_p8_0[] = {
+	-331.5, -110.5, 110.5, 331.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p8_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p8_0 = {
+	_vq_quantthresh__44cn1_s_p8_0,
+	_vq_quantmap__44cn1_s_p8_0,
+	5,
+	5
+};
+
+static static_codebook _44cn1_s_p8_0 = {
+	4, 625,
+	_vq_lengthlist__44cn1_s_p8_0,
+	1, -518283264, 1627103232, 3, 0,
+	_vq_quantlist__44cn1_s_p8_0,
+	NULL,
+	&_vq_auxt__44cn1_s_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p8_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44cn1_s_p8_1[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9,10,10,11,11,11, 6, 5, 5,
+	 7, 7, 8, 8, 9,10, 9,11,11,12, 5, 5, 5, 7, 7, 8,
+	 9,10,10,12,12,14,13,15, 7, 7, 8, 8, 9,10,11,11,
+	10,12,10,11,15, 7, 8, 8, 8, 9, 9,11,11,13,12,12,
+	13,15,10,10, 8, 8,10,10,12,12,11,14,10,10,15,11,
+	11, 8, 8,10,10,12,13,13,14,15,13,15,15,15,10,10,
+	10,10,12,12,13,12,13,10,15,15,15,10,10,11,10,13,
+	11,13,13,15,13,15,15,15,13,13,10,11,11,11,12,10,
+	14,11,15,15,14,14,13,10,10,12,11,13,13,14,14,15,
+	15,15,15,15,11,11,11,11,12,11,15,12,15,15,15,15,
+	15,12,12,11,11,14,12,13,14,
+};
+
+static float _vq_quantthresh__44cn1_s_p8_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p8_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p8_1 = {
+	_vq_quantthresh__44cn1_s_p8_1,
+	_vq_quantmap__44cn1_s_p8_1,
+	13,
+	13
+};
+
+static static_codebook _44cn1_s_p8_1 = {
+	2, 169,
+	_vq_lengthlist__44cn1_s_p8_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44cn1_s_p8_1,
+	NULL,
+	&_vq_auxt__44cn1_s_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_s_p8_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44cn1_s_p8_2[] = {
+	 3, 4, 3, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9,10,11,11, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9,10, 9,10,11,10, 7, 6, 7, 7, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10,11, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9,10,11,11,11, 8, 8, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,11, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,11,11, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,11,10,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,10,11,
+	11,11,11, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11,
+	10,11,11,11, 9,10,10, 9, 9, 9, 9, 9, 9, 9,10,11,
+	11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+	11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+	11,11,11,10,11,11,11,11,11, 9, 9, 9,10, 9, 9, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44cn1_s_p8_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44cn1_s_p8_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_s_p8_2 = {
+	_vq_quantthresh__44cn1_s_p8_2,
+	_vq_quantmap__44cn1_s_p8_2,
+	17,
+	17
+};
+
+static static_codebook _44cn1_s_p8_2 = {
+	2, 289,
+	_vq_lengthlist__44cn1_s_p8_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44cn1_s_p8_2,
+	NULL,
+	&_vq_auxt__44cn1_s_p8_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44cn1_s_short[] = {
+	10, 9,12,15,12,13,16,14,16, 7, 1, 5,14, 7,10,13,
+	16,16, 9, 4, 6,16, 8,11,16,16,16,14, 4, 7,16, 9,
+	12,14,16,16,10, 5, 7,14, 9,12,14,15,15,13, 8, 9,
+	14,10,12,13,14,15,13, 9, 9, 7, 6, 8,11,12,12,14,
+	 8, 8, 5, 4, 5, 8,11,12,16,10,10, 6, 5, 6, 8, 9,
+	10,
+};
+
+static static_codebook _huff_book__44cn1_s_short = {
+	2, 81,
+	_huff_lengthlist__44cn1_s_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44cn1_sm_long[] = {
+	 3, 3, 8, 8, 8, 8,10,12,14, 3, 2, 6, 7, 7, 8,10,
+	12,16, 7, 6, 7, 9, 8,10,12,14,16, 8, 6, 8, 4, 5,
+	 7, 9,11,13, 7, 6, 8, 5, 6, 7, 9,11,14, 8, 8,10,
+	 7, 7, 6, 8,10,13, 9,11,12, 9, 9, 7, 8,10,12,10,
+	13,15,11,11,10, 9,10,13,13,16,17,14,15,14,13,14,
+	17,
+};
+
+static static_codebook _huff_book__44cn1_sm_long = {
+	2, 81,
+	_huff_lengthlist__44cn1_sm_long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44cn1_sm_p1_0[] = {
+	 1, 4, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0,
+	 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0, 0,
+	 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 7, 9, 8, 0, 0,
+	 0, 0, 0, 0, 8, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 0, 0, 0,
+	 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,10, 9, 0, 0, 0,
+	 0, 0, 0, 9, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8,10, 9, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 8, 8, 0, 0, 0, 0, 0, 0, 8, 9, 9, 0, 0,
+	 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 7, 9, 9, 0, 0, 0, 0, 0, 0, 9,10,10, 0,
+	 0, 0, 0, 0, 0, 8, 9,10, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 9,10, 0, 0, 0, 0, 0, 0, 9,10,10,
+	 0, 0, 0, 0, 0, 0, 9,10, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44cn1_sm_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p1_0 = {
+	_vq_quantthresh__44cn1_sm_p1_0,
+	_vq_quantmap__44cn1_sm_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44cn1_sm_p1_0 = {
+	8, 6561,
+	_vq_lengthlist__44cn1_sm_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44cn1_sm_p1_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44cn1_sm_p2_0[] = {
+	 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 7, 9, 9,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 7, 7, 7, 9, 9, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44cn1_sm_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p2_0 = {
+	_vq_quantthresh__44cn1_sm_p2_0,
+	_vq_quantmap__44cn1_sm_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44cn1_sm_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44cn1_sm_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44cn1_sm_p2_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44cn1_sm_p3_0[] = {
+	 1, 3, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0,
+	 0, 0, 0, 4, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8,
+	 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+	 9, 9, 0, 0, 0, 0, 0, 0, 0,10, 9, 0, 0, 0, 0, 0,
+	 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44cn1_sm_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p3_0 = {
+	_vq_quantthresh__44cn1_sm_p3_0,
+	_vq_quantmap__44cn1_sm_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44cn1_sm_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44cn1_sm_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44cn1_sm_p3_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p4_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44cn1_sm_p4_0[] = {
+	 1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7,
+	 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8,
+	 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0,
+	 9, 9, 9, 9,10,10, 0, 0, 0, 9, 9, 9, 9,10,10, 0,
+	 0, 0,10,10,10,10,11,11, 0, 0, 0, 0, 0,10,10,11,
+	11,
+};
+
+static float _vq_quantthresh__44cn1_sm_p4_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p4_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p4_0 = {
+	_vq_quantthresh__44cn1_sm_p4_0,
+	_vq_quantmap__44cn1_sm_p4_0,
+	9,
+	9
+};
+
+static static_codebook _44cn1_sm_p4_0 = {
+	2, 81,
+	_vq_lengthlist__44cn1_sm_p4_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44cn1_sm_p4_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p5_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44cn1_sm_p5_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,
+	11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	12,12, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,12,12, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9,10,10,11,
+	11,11,11,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,10,
+	11,11,12,12,12,12, 0, 0, 0, 8, 8, 9, 9,10,10,10,
+	10,11,11,12,12,12,12, 0, 0, 0, 9, 9, 9, 9,10,10,
+	10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,10,
+	10,10,10,11,11,12,12,13,13, 0, 0, 0, 0, 0, 9, 9,
+	10,10,11,11,12,12,13,13,13,13, 0, 0, 0, 0, 0, 9,
+	 9,10,10,11,11,12,12,12,13,13,13, 0, 0, 0, 0, 0,
+	10,10,11,11,11,11,12,12,13,13,14,14, 0, 0, 0, 0,
+	 0, 0, 0,11,11,11,11,12,12,13,13,14,14, 0, 0, 0,
+	 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0, 0,
+	 0, 0, 0, 0, 0,11,11,12,12,13,13,13,13,14,14, 0,
+	 0, 0, 0, 0, 0, 0,12,12,12,13,13,13,14,14,14,14,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0,12,12,13,13,14,14,14,
+	14,
+};
+
+static float _vq_quantthresh__44cn1_sm_p5_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p5_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p5_0 = {
+	_vq_quantthresh__44cn1_sm_p5_0,
+	_vq_quantmap__44cn1_sm_p5_0,
+	17,
+	17
+};
+
+static static_codebook _44cn1_sm_p5_0 = {
+	2, 289,
+	_vq_lengthlist__44cn1_sm_p5_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44cn1_sm_p5_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p6_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44cn1_sm_p6_0[] = {
+	 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 6,10, 9, 9,11,
+	 9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11,
+	11,11,11,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9,
+	11,10,11,11,10,10, 7,11,11,11,11,11,12,11,11, 7,
+	 9, 9,11,10,10,12,10,10, 7, 9, 9,11,10,10,11,10,
+	10,
+};
+
+static float _vq_quantthresh__44cn1_sm_p6_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p6_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p6_0 = {
+	_vq_quantthresh__44cn1_sm_p6_0,
+	_vq_quantmap__44cn1_sm_p6_0,
+	3,
+	3
+};
+
+static static_codebook _44cn1_sm_p6_0 = {
+	4, 81,
+	_vq_lengthlist__44cn1_sm_p6_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44cn1_sm_p6_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p6_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44cn1_sm_p6_1[] = {
+	 2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7,
+	 7, 7, 7, 8, 8, 8, 8,10,10,10, 8, 8, 8, 8, 8, 8,
+	 8, 8,10,10,10, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10,
+	 8, 8, 8, 8, 8, 8, 9, 9,10,10,10,10,10, 8, 8, 8,
+	 8, 9, 9,10,10,10,10,10, 9, 9, 9, 9, 8, 9,10,10,
+	10,10,10, 8, 9, 8, 8, 9, 8,
+};
+
+static float _vq_quantthresh__44cn1_sm_p6_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p6_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p6_1 = {
+	_vq_quantthresh__44cn1_sm_p6_1,
+	_vq_quantmap__44cn1_sm_p6_1,
+	11,
+	11
+};
+
+static static_codebook _44cn1_sm_p6_1 = {
+	2, 121,
+	_vq_lengthlist__44cn1_sm_p6_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44cn1_sm_p6_1,
+	NULL,
+	&_vq_auxt__44cn1_sm_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44cn1_sm_p7_0[] = {
+	 1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 9,10,10, 7, 5, 5,
+	 7, 7, 8, 8, 8, 8,10, 9,11,10, 7, 5, 5, 7, 7, 8,
+	 8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,
+	11, 0,12,12, 9, 9, 9,10,10,10,11,11,12,12, 0,13,
+	13, 9, 9, 9, 9,10,10,11,11,12,12, 0, 0, 0,10,10,
+	10,10,11,11,12,12,12,13, 0, 0, 0,10,10,10,10,11,
+	11,12,12,12,12, 0, 0, 0,14,14,11,11,11,11,12,13,
+	13,13, 0, 0, 0,14,14,11,10,11,11,12,12,13,13, 0,
+	 0, 0, 0, 0,12,12,12,12,13,13,13,14, 0, 0, 0, 0,
+	 0,13,12,12,12,13,13,13,14,
+};
+
+static float _vq_quantthresh__44cn1_sm_p7_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p7_0 = {
+	_vq_quantthresh__44cn1_sm_p7_0,
+	_vq_quantmap__44cn1_sm_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44cn1_sm_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44cn1_sm_p7_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44cn1_sm_p7_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p7_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44cn1_sm_p7_1[] = {
+	 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
+	 5, 5, 5, 5, 6, 6, 6, 5, 5,
+};
+
+static float _vq_quantthresh__44cn1_sm_p7_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p7_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p7_1 = {
+	_vq_quantthresh__44cn1_sm_p7_1,
+	_vq_quantmap__44cn1_sm_p7_1,
+	5,
+	5
+};
+
+static static_codebook _44cn1_sm_p7_1 = {
+	2, 25,
+	_vq_lengthlist__44cn1_sm_p7_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44cn1_sm_p7_1,
+	NULL,
+	&_vq_auxt__44cn1_sm_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p8_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44cn1_sm_p8_0[] = {
+	 1, 4, 4,12,11,13,13,14,14, 4, 7, 7,11,13,14,14,
+	14,14, 3, 8, 3,14,14,14,14,14,14,14,10,12,14,14,
+	14,14,14,14,14,14, 5,14, 8,14,14,14,14,14,12,14,
+	13,14,14,14,14,14,14,14,13,14,10,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,
+};
+
+static float _vq_quantthresh__44cn1_sm_p8_0[] = {
+	-773.5, -552.5, -331.5, -110.5, 110.5, 331.5, 552.5, 773.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p8_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p8_0 = {
+	_vq_quantthresh__44cn1_sm_p8_0,
+	_vq_quantmap__44cn1_sm_p8_0,
+	9,
+	9
+};
+
+static static_codebook _44cn1_sm_p8_0 = {
+	2, 81,
+	_vq_lengthlist__44cn1_sm_p8_0,
+	1, -516186112, 1627103232, 4, 0,
+	_vq_quantlist__44cn1_sm_p8_0,
+	NULL,
+	&_vq_auxt__44cn1_sm_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p8_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44cn1_sm_p8_1[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,11,11, 6, 5, 5,
+	 7, 7, 8, 8,10,10,10,11,11,11, 6, 5, 5, 7, 7, 8,
+	 8,10,10,11,12,12,12,14, 7, 7, 7, 8, 9, 9,11,11,
+	11,12,11,12,17, 7, 7, 8, 7, 9, 9,11,11,12,12,12,
+	12,14,11,11, 8, 8,10,10,11,12,12,13,11,12,14,11,
+	11, 8, 8,10,10,11,12,12,13,13,12,14,15,14,10,10,
+	10,10,11,12,12,12,12,11,14,13,16,10,10,10, 9,12,
+	11,12,12,13,14,14,15,14,14,13,10,10,11,11,12,11,
+	13,11,14,12,15,13,14,11,10,12,10,12,12,13,13,13,
+	13,14,15,15,12,12,11,11,12,11,13,12,14,14,14,14,
+	17,12,12,11,10,13,11,13,13,
+};
+
+static float _vq_quantthresh__44cn1_sm_p8_1[] = {
+	-93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 25.5, 
+	42.5, 59.5, 76.5, 93.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p8_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p8_1 = {
+	_vq_quantthresh__44cn1_sm_p8_1,
+	_vq_quantmap__44cn1_sm_p8_1,
+	13,
+	13
+};
+
+static static_codebook _44cn1_sm_p8_1 = {
+	2, 169,
+	_vq_lengthlist__44cn1_sm_p8_1,
+	1, -522616832, 1620115456, 4, 0,
+	_vq_quantlist__44cn1_sm_p8_1,
+	NULL,
+	&_vq_auxt__44cn1_sm_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44cn1_sm_p8_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44cn1_sm_p8_2[] = {
+	 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10, 8, 8, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9,11,10,11, 8, 8, 8, 8, 8, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,11,11, 8, 8, 8,
+	 8, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,11, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,10,11,11, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,10,11,11,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,10,11,11,
+	11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11,
+	11,11,11,11, 9,10,10,10, 9, 9, 9, 9, 9, 9,11,10,
+	11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11,
+	11,11,11,11,11,11,10,10, 9, 9, 9, 9, 9, 9, 9, 9,
+	10,11,11,11,11,11,11,11,11, 9, 9, 9, 9, 9, 9, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44cn1_sm_p8_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44cn1_sm_p8_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44cn1_sm_p8_2 = {
+	_vq_quantthresh__44cn1_sm_p8_2,
+	_vq_quantmap__44cn1_sm_p8_2,
+	17,
+	17
+};
+
+static static_codebook _44cn1_sm_p8_2 = {
+	2, 289,
+	_vq_lengthlist__44cn1_sm_p8_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44cn1_sm_p8_2,
+	NULL,
+	&_vq_auxt__44cn1_sm_p8_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44cn1_sm_short[] = {
+	 5, 6,12,14,12,14,16,17,18, 4, 2, 5,11, 7,10,12,
+	14,15, 9, 4, 5,11, 7,10,13,15,18,15, 6, 7, 5, 6,
+	 8,11,13,16,11, 5, 6, 5, 5, 6, 9,13,15,12, 5, 7,
+	 6, 5, 6, 9,12,14,12, 6, 7, 8, 6, 7, 9,12,13,14,
+	 8, 8, 7, 5, 5, 8,10,12,16, 9, 9, 8, 6, 6, 7, 9,
+	 9,
+};
+
+static static_codebook _huff_book__44cn1_sm_short = {
+	2, 81,
+	_huff_lengthlist__44cn1_sm_short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
Index: /libvorbis-1.2.0/lib/books/floor/Makefile.am
===================================================================
--- /libvorbis-1.2.0/lib/books/floor/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/lib/books/floor/Makefile.am	(revision 16)
@@ -0,0 +1,3 @@
+## Process this file with automake to produce Makefile.in
+
+EXTRA_DIST = floor_books.h
Index: /libvorbis-1.2.0/lib/books/floor/Makefile.in
===================================================================
--- /libvorbis-1.2.0/lib/books/floor/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/lib/books/floor/Makefile.in	(revision 16)
@@ -0,0 +1,347 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = lib/books/floor
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = floor_books.h
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/books/floor/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  lib/books/floor/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+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
+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-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-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:
Index: /libvorbis-1.2.0/lib/books/floor/floor_books.h
===================================================================
--- /libvorbis-1.2.0/lib/books/floor/floor_books.h	(revision 16)
+++ /libvorbis-1.2.0/lib/books/floor/floor_books.h	(revision 16)
@@ -0,0 +1,1838 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: static codebooks autogenerated by huff/huffbuld
+ last modified: $Id: floor_books.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "codebook.h"
+
+static long _huff_lengthlist_line_256x7_0sub1[] = {
+	 0, 2, 3, 3, 3, 3, 4, 3, 4,
+};
+
+static static_codebook _huff_book_line_256x7_0sub1 = {
+	1, 9,
+	_huff_lengthlist_line_256x7_0sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_0sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 5, 3,
+	 6, 3, 6, 4, 6, 4, 7, 5, 7,
+};
+
+static static_codebook _huff_book_line_256x7_0sub2 = {
+	1, 25,
+	_huff_lengthlist_line_256x7_0sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_0sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 5, 3, 5, 3,
+	 6, 3, 6, 4, 7, 6, 7, 8, 7, 9, 8, 9, 9, 9,10, 9,
+	11,13,11,13,10,10,13,13,13,13,13,13,12,12,12,12,
+};
+
+static static_codebook _huff_book_line_256x7_0sub3 = {
+	1, 64,
+	_huff_lengthlist_line_256x7_0sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_1sub1[] = {
+	 0, 3, 3, 3, 3, 2, 4, 3, 4,
+};
+
+static static_codebook _huff_book_line_256x7_1sub1 = {
+	1, 9,
+	_huff_lengthlist_line_256x7_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_1sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 4, 4,
+	 5, 4, 6, 5, 6, 7, 6, 8, 8,
+};
+
+static static_codebook _huff_book_line_256x7_1sub2 = {
+	1, 25,
+	_huff_lengthlist_line_256x7_1sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_1sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 6, 3, 7,
+	 3, 8, 5, 8, 6, 8, 8, 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,
+};
+
+static static_codebook _huff_book_line_256x7_1sub3 = {
+	1, 64,
+	_huff_lengthlist_line_256x7_1sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_class0[] = {
+	 7, 5, 5, 9, 9, 6, 6, 9,12, 8, 7, 8,11, 8, 9,15,
+	 6, 3, 3, 7, 7, 4, 3, 6, 9, 6, 5, 6, 8, 6, 8,15,
+	 8, 5, 5, 9, 8, 5, 4, 6,10, 7, 5, 5,11, 8, 7,15,
+	14,15,13,13,13,13, 8,11,15,10, 7, 6,11, 9,10,15,
+};
+
+static static_codebook _huff_book_line_256x7_class0 = {
+	1, 64,
+	_huff_lengthlist_line_256x7_class0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x7_class1[] = {
+	 5, 6, 8,15, 6, 9,10,15,10,11,12,15,15,15,15,15,
+	 4, 6, 7,15, 6, 7, 8,15, 9, 8, 9,15,15,15,15,15,
+	 6, 8, 9,15, 7, 7, 8,15,10, 9,10,15,15,15,15,15,
+	15,13,15,15,15,10,11,15,15,13,13,15,15,15,15,15,
+	 4, 6, 7,15, 6, 8, 9,15,10,10,12,15,15,15,15,15,
+	 2, 5, 6,15, 5, 6, 7,15, 8, 6, 7,15,15,15,15,15,
+	 5, 6, 8,15, 5, 6, 7,15, 9, 6, 7,15,15,15,15,15,
+	14,12,13,15,12,10,11,15,15,15,15,15,15,15,15,15,
+	 7, 8, 9,15, 9,10,10,15,15,14,14,15,15,15,15,15,
+	 5, 6, 7,15, 7, 8, 9,15,12, 9,10,15,15,15,15,15,
+	 7, 7, 9,15, 7, 7, 8,15,12, 8, 9,15,15,15,15,15,
+	13,13,14,15,12,11,12,15,15,15,15,15,15,15,15,15,
+	15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+	13,13,13,15,15,15,15,15,15,15,15,15,15,15,15,15,
+	15,12,13,15,15,12,13,15,15,14,15,15,15,15,15,15,
+	15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,
+};
+
+static static_codebook _huff_book_line_256x7_class1 = {
+	1, 256,
+	_huff_lengthlist_line_256x7_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_0sub0[] = {
+	 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 7, 6, 7, 6, 7, 6,
+	 7, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7,
+	 9, 7, 9, 8, 9, 8,10, 8,10, 8,10, 7,10, 6,10, 8,
+	10, 8,11, 7,10, 7,11, 8,11,11,12,12,11,11,12,11,
+	13,11,13,11,13,12,15,12,13,13,14,14,14,14,14,15,
+	15,15,16,14,17,19,19,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+};
+
+static static_codebook _huff_book_line_512x17_0sub0 = {
+	1, 128,
+	_huff_lengthlist_line_512x17_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_1sub0[] = {
+	 2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
+	 6, 5, 6, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7,
+};
+
+static static_codebook _huff_book_line_512x17_1sub0 = {
+	1, 32,
+	_huff_lengthlist_line_512x17_1sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_1sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 4, 3, 5, 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5,
+	 6, 5, 7, 5, 8, 6, 8, 6, 8, 6, 8, 6, 8, 7, 9, 7,
+	 9, 7,11, 9,11,11,12,11,14,12,14,16,14,16,13,16,
+	14,16,12,15,13,16,14,16,13,14,12,15,13,15,13,13,
+	13,15,12,14,14,15,13,15,12,15,15,15,15,15,15,15,
+	15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+};
+
+static static_codebook _huff_book_line_512x17_1sub1 = {
+	1, 128,
+	_huff_lengthlist_line_512x17_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_2sub1[] = {
+	 0, 4, 5, 4, 4, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 3,
+	 5, 3,
+};
+
+static static_codebook _huff_book_line_512x17_2sub1 = {
+	1, 18,
+	_huff_lengthlist_line_512x17_2sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_2sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 4, 6, 5,
+	 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 7, 8, 7, 9, 7,
+	 9, 8,
+};
+
+static static_codebook _huff_book_line_512x17_2sub2 = {
+	1, 50,
+	_huff_lengthlist_line_512x17_2sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_2sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 3, 3, 3, 4, 3, 4, 4, 5, 5, 6, 6, 7, 7,
+	 7, 8, 8,11, 8, 9, 9, 9,10,11,11,11, 9,10,10,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,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+};
+
+static static_codebook _huff_book_line_512x17_2sub3 = {
+	1, 128,
+	_huff_lengthlist_line_512x17_2sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_3sub1[] = {
+	 0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 5,
+	 5, 5,
+};
+
+static static_codebook _huff_book_line_512x17_3sub1 = {
+	1, 18,
+	_huff_lengthlist_line_512x17_3sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_3sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 2, 3, 3, 4, 3, 5, 4, 6, 4, 6, 5, 7, 6, 7,
+	 6, 8, 6, 8, 7, 9, 8,10, 8,12, 9,13,10,15,10,15,
+	11,14,
+};
+
+static static_codebook _huff_book_line_512x17_3sub2 = {
+	1, 50,
+	_huff_lengthlist_line_512x17_3sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_3sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 8, 4, 8, 4, 8, 4, 8, 5, 8, 5, 8, 6, 8,
+	 4, 8, 4, 8, 5, 8, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 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,
+};
+
+static static_codebook _huff_book_line_512x17_3sub3 = {
+	1, 128,
+	_huff_lengthlist_line_512x17_3sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_class1[] = {
+	 1, 2, 3, 6, 5, 4, 7, 7,
+};
+
+static static_codebook _huff_book_line_512x17_class1 = {
+	1, 8,
+	_huff_lengthlist_line_512x17_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_class2[] = {
+	 3, 3, 3,14, 5, 4, 4,11, 8, 6, 6,10,17,12,11,17,
+	 6, 5, 5,15, 5, 3, 4,11, 8, 5, 5, 8,16, 9,10,14,
+	10, 8, 9,17, 8, 6, 6,13,10, 7, 7,10,16,11,13,14,
+	17,17,17,17,17,16,16,16,16,15,16,16,16,16,16,16,
+};
+
+static static_codebook _huff_book_line_512x17_class2 = {
+	1, 64,
+	_huff_lengthlist_line_512x17_class2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_512x17_class3[] = {
+	 2, 4, 6,17, 4, 5, 7,17, 8, 7,10,17,17,17,17,17,
+	 3, 4, 6,15, 3, 3, 6,15, 7, 6, 9,17,17,17,17,17,
+	 6, 8,10,17, 6, 6, 8,16, 9, 8,10,17,17,15,16,17,
+	17,17,17,17,12,15,15,16,12,15,15,16,16,16,16,16,
+};
+
+static static_codebook _huff_book_line_512x17_class3 = {
+	1, 64,
+	_huff_lengthlist_line_512x17_class3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x4_class0[] = {
+	 7, 7, 7,11, 6, 6, 7,11, 7, 6, 6,10,12,10,10,13,
+	 7, 7, 8,11, 7, 7, 7,11, 7, 6, 7,10,11,10,10,13,
+	10,10, 9,12, 9, 9, 9,11, 8, 8, 8,11,13,11,10,14,
+	15,15,14,15,15,14,13,14,15,12,12,17,17,17,17,17,
+	 7, 7, 6, 9, 6, 6, 6, 9, 7, 6, 6, 8,11,11,10,12,
+	 7, 7, 7, 9, 7, 6, 6, 9, 7, 6, 6, 9,13,10,10,11,
+	10, 9, 8,10, 9, 8, 8,10, 8, 8, 7, 9,13,12,10,11,
+	17,14,14,13,15,14,12,13,17,13,12,15,17,17,14,17,
+	 7, 6, 6, 7, 6, 6, 5, 7, 6, 6, 6, 6,11, 9, 9, 9,
+	 7, 7, 6, 7, 7, 6, 6, 7, 6, 6, 6, 6,10, 9, 8, 9,
+	10, 9, 8, 8, 9, 8, 7, 8, 8, 7, 6, 8,11,10, 9,10,
+	17,17,12,15,15,15,12,14,14,14,10,12,15,13,12,13,
+	11,10, 8,10,11,10, 8, 8,10, 9, 7, 7,10, 9, 9,11,
+	11,11, 9,10,11,10, 8, 9,10, 8, 6, 8,10, 9, 9,11,
+	14,13,10,12,12,11,10,10, 8, 7, 8,10,10,11,11,12,
+	17,17,15,17,17,17,17,17,17,13,12,17,17,17,14,17,
+};
+
+static static_codebook _huff_book_line_128x4_class0 = {
+	1, 256,
+	_huff_lengthlist_line_128x4_class0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x4_0sub0[] = {
+	 2, 2, 2, 2,
+};
+
+static static_codebook _huff_book_line_128x4_0sub0 = {
+	1, 4,
+	_huff_lengthlist_line_128x4_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x4_0sub1[] = {
+	 0, 0, 0, 0, 3, 2, 3, 2, 3, 3,
+};
+
+static static_codebook _huff_book_line_128x4_0sub1 = {
+	1, 10,
+	_huff_lengthlist_line_128x4_0sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x4_0sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 3,
+	 4, 4, 5, 4, 5, 4, 6, 5, 6,
+};
+
+static static_codebook _huff_book_line_128x4_0sub2 = {
+	1, 25,
+	_huff_lengthlist_line_128x4_0sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x4_0sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
+	 5, 4, 6, 5, 6, 5, 7, 6, 6, 7, 7, 9, 9,11,11,16,
+	11,14,10,11,11,13,16,15,15,15,15,15,15,15,15,15,
+};
+
+static static_codebook _huff_book_line_128x4_0sub3 = {
+	1, 64,
+	_huff_lengthlist_line_128x4_0sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4_class0[] = {
+	 6, 7, 7,12, 6, 6, 7,12, 7, 6, 6,10,15,12,11,13,
+	 7, 7, 8,13, 7, 7, 8,12, 7, 7, 7,11,12,12,11,13,
+	10, 9, 9,11, 9, 9, 9,10,10, 8, 8,12,14,12,12,14,
+	11,11,12,14,11,12,11,15,15,12,13,15,15,15,15,15,
+	 6, 6, 7,10, 6, 6, 6,11, 7, 6, 6, 9,14,12,11,13,
+	 7, 7, 7,10, 6, 6, 7, 9, 7, 7, 6,10,13,12,10,12,
+	 9, 9, 9,11, 9, 9, 8, 9, 9, 8, 8,10,13,12,10,12,
+	12,12,11,13,12,12,11,12,15,13,12,15,15,15,14,14,
+	 6, 6, 6, 8, 6, 6, 5, 6, 7, 7, 6, 5,11,10, 9, 8,
+	 7, 6, 6, 7, 6, 6, 5, 6, 7, 7, 6, 6,11,10, 9, 8,
+	 8, 8, 8, 9, 8, 8, 7, 8, 8, 8, 6, 7,11,10, 9, 9,
+	14,11,10,14,14,11,10,15,13,11, 9,11,15,12,12,11,
+	11, 9, 8, 8,10, 9, 8, 9,11,10, 9, 8,12,11,12,11,
+	13,10, 8, 9,11,10, 8, 9,10, 9, 8, 9,10, 8,12,12,
+	15,11,10,10,13,11,10,10, 8, 8, 7,12,10, 9,11,12,
+	15,12,11,15,13,11,11,15,12,14,11,13,15,15,13,13,
+};
+
+static static_codebook _huff_book_line_256x4_class0 = {
+	1, 256,
+	_huff_lengthlist_line_256x4_class0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4_0sub0[] = {
+	 2, 2, 2, 2,
+};
+
+static static_codebook _huff_book_line_256x4_0sub0 = {
+	1, 4,
+	_huff_lengthlist_line_256x4_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4_0sub1[] = {
+	 0, 0, 0, 0, 2, 2, 3, 3, 3, 3,
+};
+
+static static_codebook _huff_book_line_256x4_0sub1 = {
+	1, 10,
+	_huff_lengthlist_line_256x4_0sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4_0sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 3,
+	 5, 3, 5, 4, 5, 4, 6, 4, 6,
+};
+
+static static_codebook _huff_book_line_256x4_0sub2 = {
+	1, 25,
+	_huff_lengthlist_line_256x4_0sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4_0sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3,
+	 6, 4, 7, 4, 7, 5, 7, 6, 7, 6, 7, 8,10,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,
+};
+
+static static_codebook _huff_book_line_256x4_0sub3 = {
+	1, 64,
+	_huff_lengthlist_line_256x4_0sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_class0[] = {
+	10, 7, 8,13, 9, 6, 7,11,10, 8, 8,12,17,17,17,17,
+	 7, 5, 5, 9, 6, 4, 4, 8, 8, 5, 5, 8,16,14,13,16,
+	 7, 5, 5, 7, 6, 3, 3, 5, 8, 5, 4, 7,14,12,12,15,
+	10, 7, 8, 9, 7, 5, 5, 6, 9, 6, 5, 5,15,12, 9,10,
+};
+
+static static_codebook _huff_book_line_128x7_class0 = {
+	1, 64,
+	_huff_lengthlist_line_128x7_class0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_class1[] = {
+	 8,13,17,17, 8,11,17,17,11,13,17,17,17,17,17,17,
+	 6,10,16,17, 6,10,15,17, 8,10,16,17,17,17,17,17,
+	 9,13,15,17, 8,11,17,17,10,12,17,17,17,17,17,17,
+	17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
+	 6,11,15,17, 7,10,15,17, 8,10,17,17,17,15,17,17,
+	 4, 8,13,17, 4, 7,13,17, 6, 8,15,17,16,15,17,17,
+	 6,11,15,17, 6, 9,13,17, 8,10,17,17,15,17,17,17,
+	16,17,17,17,12,14,15,17,13,14,15,17,17,17,17,17,
+	 5,10,14,17, 5, 9,14,17, 7, 9,15,17,15,15,17,17,
+	 3, 7,12,17, 3, 6,11,17, 5, 7,13,17,12,12,17,17,
+	 5, 9,14,17, 3, 7,11,17, 5, 8,13,17,13,11,16,17,
+	12,17,17,17, 9,14,15,17,10,11,14,17,16,14,17,17,
+	 8,12,17,17, 8,12,17,17,10,12,17,17,17,17,17,17,
+	 5,10,17,17, 5, 9,15,17, 7, 9,17,17,13,13,17,17,
+	 7,11,17,17, 6,10,15,17, 7, 9,15,17,12,11,17,17,
+	12,15,17,17,11,14,17,17,11,10,15,17,17,16,17,17,
+};
+
+static static_codebook _huff_book_line_128x7_class1 = {
+	1, 256,
+	_huff_lengthlist_line_128x7_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_0sub1[] = {
+	 0, 3, 3, 3, 3, 3, 3, 3, 3,
+};
+
+static static_codebook _huff_book_line_128x7_0sub1 = {
+	1, 9,
+	_huff_lengthlist_line_128x7_0sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_0sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 4, 4, 4,
+	 5, 4, 5, 4, 5, 4, 6, 4, 6,
+};
+
+static static_codebook _huff_book_line_128x7_0sub2 = {
+	1, 25,
+	_huff_lengthlist_line_128x7_0sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_0sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 5, 3, 5, 4,
+	 5, 4, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+	 7, 8, 9,11,13,13,13,13,13,13,13,13,13,13,13,13,
+};
+
+static static_codebook _huff_book_line_128x7_0sub3 = {
+	1, 64,
+	_huff_lengthlist_line_128x7_0sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_1sub1[] = {
+	 0, 3, 3, 2, 3, 3, 4, 3, 4,
+};
+
+static static_codebook _huff_book_line_128x7_1sub1 = {
+	1, 9,
+	_huff_lengthlist_line_128x7_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_1sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 6, 3, 6, 3,
+	 6, 3, 7, 3, 8, 4, 9, 4, 9,
+};
+
+static static_codebook _huff_book_line_128x7_1sub2 = {
+	1, 25,
+	_huff_lengthlist_line_128x7_1sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x7_1sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 2, 7, 3, 8, 4,
+	 9, 5, 9, 8,10,11,11,12,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,
+};
+
+static static_codebook _huff_book_line_128x7_1sub3 = {
+	1, 64,
+	_huff_lengthlist_line_128x7_1sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_class1[] = {
+	 1, 6, 3, 7, 2, 4, 5, 7,
+};
+
+static static_codebook _huff_book_line_128x11_class1 = {
+	1, 8,
+	_huff_lengthlist_line_128x11_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_class2[] = {
+	 1, 6,12,16, 4,12,15,16, 9,15,16,16,16,16,16,16,
+	 2, 5,11,16, 5,11,13,16, 9,13,16,16,16,16,16,16,
+	 4, 8,12,16, 5, 9,12,16, 9,13,15,16,16,16,16,16,
+	15,16,16,16,11,14,13,16,12,15,16,16,16,16,16,15,
+};
+
+static static_codebook _huff_book_line_128x11_class2 = {
+	1, 64,
+	_huff_lengthlist_line_128x11_class2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_class3[] = {
+	 7, 6, 9,17, 7, 6, 8,17,12, 9,11,16,16,16,16,16,
+	 5, 4, 7,16, 5, 3, 6,14, 9, 6, 8,15,16,16,16,16,
+	 5, 4, 6,13, 3, 2, 4,11, 7, 4, 6,13,16,11,10,14,
+	12,12,12,16, 9, 7,10,15,12, 9,11,16,16,15,15,16,
+};
+
+static static_codebook _huff_book_line_128x11_class3 = {
+	1, 64,
+	_huff_lengthlist_line_128x11_class3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_0sub0[] = {
+	 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+	 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 7, 6,
+	 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6, 8, 7,
+	 8, 7, 8, 7, 8, 7, 9, 7, 9, 8, 9, 8, 9, 8,10, 8,
+	10, 9,10, 9,10, 9,11, 9,11, 9,10,10,11,10,11,10,
+	11,11,11,11,11,11,12,13,14,14,14,15,15,16,16,16,
+	17,15,16,15,16,16,17,17,16,17,17,17,17,17,17,17,
+	17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
+};
+
+static static_codebook _huff_book_line_128x11_0sub0 = {
+	1, 128,
+	_huff_lengthlist_line_128x11_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_1sub0[] = {
+	 2, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5,
+	 6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6,
+};
+
+static static_codebook _huff_book_line_128x11_1sub0 = {
+	1, 32,
+	_huff_lengthlist_line_128x11_1sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_1sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 5, 3, 5, 3, 6, 4, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
+	 8, 4, 9, 5, 9, 5, 9, 5, 9, 6,10, 6,10, 6,11, 7,
+	10, 7,10, 8,11, 9,11, 9,11,10,11,11,12,11,11,12,
+	15,15,12,14,11,14,12,14,11,14,13,14,12,14,11,14,
+	11,14,12,14,11,14,11,14,13,13,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+};
+
+static static_codebook _huff_book_line_128x11_1sub1 = {
+	1, 128,
+	_huff_lengthlist_line_128x11_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_2sub1[] = {
+	 0, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4,
+	 5, 5,
+};
+
+static static_codebook _huff_book_line_128x11_2sub1 = {
+	1, 18,
+	_huff_lengthlist_line_128x11_2sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_2sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 4, 6, 5, 7,
+	 5, 7, 6, 8, 6, 8, 6, 9, 7, 9, 7,10, 7, 9, 8,11,
+	 8,11,
+};
+
+static static_codebook _huff_book_line_128x11_2sub2 = {
+	1, 50,
+	_huff_lengthlist_line_128x11_2sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_2sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 8, 3, 8, 4, 8, 4, 8, 6, 8, 5, 8, 4, 8,
+	 4, 8, 6, 8, 7, 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, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+};
+
+static static_codebook _huff_book_line_128x11_2sub3 = {
+	1, 128,
+	_huff_lengthlist_line_128x11_2sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_3sub1[] = {
+	 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4,
+	 5, 4,
+};
+
+static static_codebook _huff_book_line_128x11_3sub1 = {
+	1, 18,
+	_huff_lengthlist_line_128x11_3sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_3sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 3, 5, 4, 6, 4, 6, 4, 7, 4, 7, 4, 8, 4,
+	 8, 4, 9, 4, 9, 4,10, 4,10, 5,10, 5,11, 5,12, 6,
+	12, 6,
+};
+
+static static_codebook _huff_book_line_128x11_3sub2 = {
+	1, 50,
+	_huff_lengthlist_line_128x11_3sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x11_3sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 7, 1, 6, 3, 7, 3, 8, 4, 8, 5, 8, 8, 8, 9,
+	 7, 8, 8, 7, 7, 7, 8, 9,10, 9, 9,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,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,
+};
+
+static static_codebook _huff_book_line_128x11_3sub3 = {
+	1, 128,
+	_huff_lengthlist_line_128x11_3sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_class1[] = {
+	 1, 3, 4, 7, 2, 5, 6, 7,
+};
+
+static static_codebook _huff_book_line_128x17_class1 = {
+	1, 8,
+	_huff_lengthlist_line_128x17_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_class2[] = {
+	 1, 4,10,19, 3, 8,13,19, 7,12,19,19,19,19,19,19,
+	 2, 6,11,19, 8,13,19,19, 9,11,19,19,19,19,19,19,
+	 6, 7,13,19, 9,13,19,19,10,13,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+};
+
+static static_codebook _huff_book_line_128x17_class2 = {
+	1, 64,
+	_huff_lengthlist_line_128x17_class2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_class3[] = {
+	 3, 6,10,17, 4, 8,11,20, 8,10,11,20,20,20,20,20,
+	 2, 4, 8,18, 4, 6, 8,17, 7, 8,10,20,20,17,20,20,
+	 3, 5, 8,17, 3, 4, 6,17, 8, 8,10,17,17,12,16,20,
+	13,13,15,20,10,10,12,20,15,14,15,20,20,20,19,19,
+};
+
+static static_codebook _huff_book_line_128x17_class3 = {
+	1, 64,
+	_huff_lengthlist_line_128x17_class3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_0sub0[] = {
+	 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+	 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5,
+	 8, 5, 8, 5, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, 9, 6,
+	 9, 6, 9, 7, 9, 7, 9, 7, 9, 7,10, 7,10, 8,10, 8,
+	10, 8,10, 8,10, 8,11, 8,11, 8,11, 8,11, 8,11, 9,
+	12, 9,12, 9,12, 9,12, 9,12,10,12,10,13,11,13,11,
+	14,12,14,13,15,14,16,14,17,15,18,16,20,20,20,20,
+	20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
+};
+
+static static_codebook _huff_book_line_128x17_0sub0 = {
+	1, 128,
+	_huff_lengthlist_line_128x17_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_1sub0[] = {
+	 2, 5, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
+	 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7,
+};
+
+static static_codebook _huff_book_line_128x17_1sub0 = {
+	1, 32,
+	_huff_lengthlist_line_128x17_1sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_1sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 4, 3, 5, 3, 5, 3, 6, 3, 6, 4, 6, 4, 7, 4, 7, 5,
+	 8, 5, 8, 6, 9, 7, 9, 7, 9, 8,10, 9,10, 9,11,10,
+	11,11,11,11,11,11,12,12,12,13,12,13,12,14,12,15,
+	12,14,12,16,13,17,13,17,14,17,14,16,13,17,14,17,
+	14,17,15,17,15,15,16,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,
+};
+
+static static_codebook _huff_book_line_128x17_1sub1 = {
+	1, 128,
+	_huff_lengthlist_line_128x17_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_2sub1[] = {
+	 0, 4, 5, 4, 6, 4, 8, 3, 9, 3, 9, 2, 9, 3, 8, 4,
+	 9, 4,
+};
+
+static static_codebook _huff_book_line_128x17_2sub1 = {
+	1, 18,
+	_huff_lengthlist_line_128x17_2sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_2sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 1, 5, 3, 5, 3, 5, 4, 7, 5,10, 7,10, 7,
+	12,10,14,10,14, 9,14,11,14,14,14,13,13,13,13,13,
+	13,13,
+};
+
+static static_codebook _huff_book_line_128x17_2sub2 = {
+	1, 50,
+	_huff_lengthlist_line_128x17_2sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_2sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 7, 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, 6, 6, 6, 6, 6, 6, 6,
+};
+
+static static_codebook _huff_book_line_128x17_2sub3 = {
+	1, 128,
+	_huff_lengthlist_line_128x17_2sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_3sub1[] = {
+	 0, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, 5, 4, 6, 4,
+	 6, 4,
+};
+
+static static_codebook _huff_book_line_128x17_3sub1 = {
+	1, 18,
+	_huff_lengthlist_line_128x17_3sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_3sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 5, 3, 6, 3, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4,
+	 8, 4, 8, 4, 8, 4, 9, 4, 9, 5,10, 5,10, 7,10, 8,
+	10, 8,
+};
+
+static static_codebook _huff_book_line_128x17_3sub2 = {
+	1, 50,
+	_huff_lengthlist_line_128x17_3sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_128x17_3sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 4, 7, 5, 8, 5,11,
+	 6,10, 6,12, 7,12, 7,12, 8,12, 8,12,10,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,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+};
+
+static static_codebook _huff_book_line_128x17_3sub3 = {
+	1, 128,
+	_huff_lengthlist_line_128x17_3sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_class1[] = {
+	 2,10, 8,14, 7,12,11,14, 1, 5, 3, 7, 4, 9, 7,13,
+};
+
+static static_codebook _huff_book_line_1024x27_class1 = {
+	1, 16,
+	_huff_lengthlist_line_1024x27_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_class2[] = {
+	 1, 4, 2, 6, 3, 7, 5, 7,
+};
+
+static static_codebook _huff_book_line_1024x27_class2 = {
+	1, 8,
+	_huff_lengthlist_line_1024x27_class2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_class3[] = {
+	 1, 5, 7,21, 5, 8, 9,21,10, 9,12,20,20,16,20,20,
+	 4, 8, 9,20, 6, 8, 9,20,11,11,13,20,20,15,17,20,
+	 9,11,14,20, 8,10,15,20,11,13,15,20,20,20,20,20,
+	20,20,20,20,13,20,20,20,18,18,20,20,20,20,20,20,
+	 3, 6, 8,20, 6, 7, 9,20,10, 9,12,20,20,20,20,20,
+	 5, 7, 9,20, 6, 6, 9,20,10, 9,12,20,20,20,20,20,
+	 8,10,13,20, 8, 9,12,20,11,10,12,20,20,20,20,20,
+	18,20,20,20,15,17,18,20,18,17,18,20,20,20,20,20,
+	 7,10,12,20, 8, 9,11,20,14,13,14,20,20,20,20,20,
+	 6, 9,12,20, 7, 8,11,20,12,11,13,20,20,20,20,20,
+	 9,11,15,20, 8,10,14,20,12,11,14,20,20,20,20,20,
+	20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
+	11,16,18,20,15,15,17,20,20,17,20,20,20,20,20,20,
+	 9,14,16,20,12,12,15,20,17,15,18,20,20,20,20,20,
+	16,19,18,20,15,16,20,20,17,17,20,20,20,20,20,20,
+	20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
+};
+
+static static_codebook _huff_book_line_1024x27_class3 = {
+	1, 256,
+	_huff_lengthlist_line_1024x27_class3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_class4[] = {
+	 2, 3, 7,13, 4, 4, 7,15, 8, 6, 9,17,21,16,15,21,
+	 2, 5, 7,11, 5, 5, 7,14, 9, 7,10,16,17,15,16,21,
+	 4, 7,10,17, 7, 7, 9,15,11, 9,11,16,21,18,15,21,
+	18,21,21,21,15,17,17,19,21,19,18,20,21,21,21,20,
+};
+
+static static_codebook _huff_book_line_1024x27_class4 = {
+	1, 64,
+	_huff_lengthlist_line_1024x27_class4,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_0sub0[] = {
+	 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+	 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5,
+	 8, 6, 8, 6, 8, 6, 9, 6, 9, 6,10, 6,10, 6,11, 6,
+	11, 7,11, 7,12, 7,12, 7,12, 7,12, 7,12, 7,12, 7,
+	12, 7,12, 8,13, 8,12, 8,12, 8,13, 8,13, 9,13, 9,
+	13, 9,13, 9,12,10,12,10,13,10,14,11,14,12,14,13,
+	14,13,14,14,15,16,15,15,15,14,15,17,21,22,22,21,
+	22,22,22,22,22,22,21,21,21,21,21,21,21,21,21,21,
+};
+
+static static_codebook _huff_book_line_1024x27_0sub0 = {
+	1, 128,
+	_huff_lengthlist_line_1024x27_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_1sub0[] = {
+	 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 5, 6, 5, 6, 5,
+	 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6,
+};
+
+static static_codebook _huff_book_line_1024x27_1sub0 = {
+	1, 32,
+	_huff_lengthlist_line_1024x27_1sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_1sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 8, 5, 8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4,
+	 9, 4, 9, 4, 9, 4, 8, 4, 8, 4, 9, 5, 9, 5, 9, 5,
+	 9, 5, 9, 6,10, 6,10, 7,10, 8,11, 9,11,11,12,13,
+	12,14,13,15,13,15,14,16,14,17,15,17,15,15,16,16,
+	15,16,16,16,15,18,16,15,17,17,19,19,19,19,19,19,
+	19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
+};
+
+static static_codebook _huff_book_line_1024x27_1sub1 = {
+	1, 128,
+	_huff_lengthlist_line_1024x27_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_2sub0[] = {
+	 1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+	 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 9, 8,10, 9,10, 9,
+};
+
+static static_codebook _huff_book_line_1024x27_2sub0 = {
+	1, 32,
+	_huff_lengthlist_line_1024x27_2sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_2sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 5, 5, 6, 5, 6, 5,
+	 7, 5, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 9, 8, 9, 9,
+	 9, 9,10,10,10,11, 9,12, 9,12, 9,15,10,14, 9,13,
+	10,13,10,12,10,12,10,13,10,12,11,13,11,14,12,13,
+	13,14,14,13,14,15,14,16,13,13,14,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,
+};
+
+static static_codebook _huff_book_line_1024x27_2sub1 = {
+	1, 128,
+	_huff_lengthlist_line_1024x27_2sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_3sub1[] = {
+	 0, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 4, 5,
+	 5, 5,
+};
+
+static static_codebook _huff_book_line_1024x27_3sub1 = {
+	1, 18,
+	_huff_lengthlist_line_1024x27_3sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_3sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 3, 4, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6,
+	 5, 7, 5, 8, 6, 8, 6, 9, 7,10, 7,10, 8,10, 8,11,
+	 9,11,
+};
+
+static static_codebook _huff_book_line_1024x27_3sub2 = {
+	1, 50,
+	_huff_lengthlist_line_1024x27_3sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_3sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 7, 3, 8, 3,10, 3, 8, 3, 9, 3, 8, 4, 9,
+	 4, 9, 5, 9, 6,10, 6, 9, 7,11, 7,12, 9,13,10,13,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+};
+
+static static_codebook _huff_book_line_1024x27_3sub3 = {
+	1, 128,
+	_huff_lengthlist_line_1024x27_3sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_4sub1[] = {
+	 0, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4,
+	 5, 4,
+};
+
+static static_codebook _huff_book_line_1024x27_4sub1 = {
+	1, 18,
+	_huff_lengthlist_line_1024x27_4sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_4sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 7, 7, 8,
+	 7, 8, 7, 8, 7, 9, 8, 9, 8, 9, 8,10, 8,11, 9,12,
+	 9,12,
+};
+
+static static_codebook _huff_book_line_1024x27_4sub2 = {
+	1, 50,
+	_huff_lengthlist_line_1024x27_4sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_1024x27_4sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 2, 5, 2, 6, 3, 6, 4, 7, 4, 7, 5, 9, 5,11,
+	 6,11, 6,11, 7,11, 6,11, 6,11, 9,11, 8,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,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,
+};
+
+static static_codebook _huff_book_line_1024x27_4sub3 = {
+	1, 128,
+	_huff_lengthlist_line_1024x27_4sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_class1[] = {
+	 2, 6, 8, 9, 7,11,13,13, 1, 3, 5, 5, 6, 6,12,10,
+};
+
+static static_codebook _huff_book_line_2048x27_class1 = {
+	1, 16,
+	_huff_lengthlist_line_2048x27_class1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_class2[] = {
+	 1, 2, 3, 6, 4, 7, 5, 7,
+};
+
+static static_codebook _huff_book_line_2048x27_class2 = {
+	1, 8,
+	_huff_lengthlist_line_2048x27_class2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_class3[] = {
+	 3, 3, 6,16, 5, 5, 7,16, 9, 8,11,16,16,16,16,16,
+	 5, 5, 8,16, 5, 5, 7,16, 8, 7, 9,16,16,16,16,16,
+	 9, 9,12,16, 6, 8,11,16, 9,10,11,16,16,16,16,16,
+	16,16,16,16,13,16,16,16,15,16,16,16,16,16,16,16,
+	 5, 4, 7,16, 6, 5, 8,16, 9, 8,10,16,16,16,16,16,
+	 5, 5, 7,15, 5, 4, 6,15, 7, 6, 8,16,16,16,16,16,
+	 9, 9,11,15, 7, 7, 9,16, 8, 8, 9,16,16,16,16,16,
+	16,16,16,16,15,15,15,16,15,15,14,16,16,16,16,16,
+	 8, 8,11,16, 8, 9,10,16,11,10,14,16,16,16,16,16,
+	 6, 8,10,16, 6, 7,10,16, 8, 8,11,16,14,16,16,16,
+	10,11,14,16, 9, 9,11,16,10,10,11,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,
+	12,16,15,16,12,14,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
+};
+
+static static_codebook _huff_book_line_2048x27_class3 = {
+	1, 256,
+	_huff_lengthlist_line_2048x27_class3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_class4[] = {
+	 2, 4, 7,13, 4, 5, 7,15, 8, 7,10,16,16,14,16,16,
+	 2, 4, 7,16, 3, 4, 7,14, 8, 8,10,16,16,16,15,16,
+	 6, 8,11,16, 7, 7, 9,16,11, 9,13,16,16,16,15,16,
+	16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,
+};
+
+static static_codebook _huff_book_line_2048x27_class4 = {
+	1, 64,
+	_huff_lengthlist_line_2048x27_class4,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_0sub0[] = {
+	 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5,
+	 6, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5, 8, 5, 9, 5,
+	 9, 6,10, 6,10, 6,11, 6,11, 6,11, 6,11, 6,11, 6,
+	11, 6,11, 6,12, 7,11, 7,11, 7,11, 7,11, 7,10, 7,
+	11, 7,11, 7,12, 7,11, 8,11, 8,11, 8,11, 8,13, 8,
+	12, 9,11, 9,11, 9,11,10,12,10,12, 9,12,10,12,11,
+	14,12,16,12,12,11,14,16,17,17,17,17,17,17,17,17,
+	17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,
+};
+
+static static_codebook _huff_book_line_2048x27_0sub0 = {
+	1, 128,
+	_huff_lengthlist_line_2048x27_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_1sub0[] = {
+	 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6,
+};
+
+static static_codebook _huff_book_line_2048x27_1sub0 = {
+	1, 32,
+	_huff_lengthlist_line_2048x27_1sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_1sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 6, 5, 7, 5, 7, 4, 7, 4, 8, 4, 8, 4, 8, 4, 8, 3,
+	 8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 5, 9, 5, 9, 6,
+	 9, 7, 9, 8, 9, 9, 9,10, 9,11, 9,14, 9,15,10,15,
+	10,15,10,15,10,15,11,15,10,14,12,14,11,14,13,14,
+	13,15,15,15,12,15,15,15,13,15,13,15,13,15,15,15,
+	15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,
+};
+
+static static_codebook _huff_book_line_2048x27_1sub1 = {
+	1, 128,
+	_huff_lengthlist_line_2048x27_1sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_2sub0[] = {
+	 2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5,
+	 6, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+};
+
+static static_codebook _huff_book_line_2048x27_2sub0 = {
+	1, 32,
+	_huff_lengthlist_line_2048x27_2sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_2sub1[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 3, 4, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 6, 6, 6, 7,
+	 6, 8, 6, 8, 6, 9, 7,10, 7,10, 7,10, 7,12, 7,12,
+	 7,12, 9,12,11,12,10,12,10,12,11,12,12,12,10,12,
+	10,12,10,12, 9,12,11,12,12,12,12,12,11,12,11,12,
+	12,12,12,12,12,12,12,12,10,10,12,12,12,12,12,10,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+};
+
+static static_codebook _huff_book_line_2048x27_2sub1 = {
+	1, 128,
+	_huff_lengthlist_line_2048x27_2sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_3sub1[] = {
+	 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+	 5, 5,
+};
+
+static static_codebook _huff_book_line_2048x27_3sub1 = {
+	1, 18,
+	_huff_lengthlist_line_2048x27_3sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_3sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6,
+	 6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7, 9, 9,11, 9,12,
+	10,12,
+};
+
+static static_codebook _huff_book_line_2048x27_3sub2 = {
+	1, 50,
+	_huff_lengthlist_line_2048x27_3sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_3sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 6, 3, 7, 3, 7, 5, 7, 7, 7, 7, 7, 6, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 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,
+};
+
+static static_codebook _huff_book_line_2048x27_3sub3 = {
+	1, 128,
+	_huff_lengthlist_line_2048x27_3sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_4sub1[] = {
+	 0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4,
+	 4, 5,
+};
+
+static static_codebook _huff_book_line_2048x27_4sub1 = {
+	1, 18,
+	_huff_lengthlist_line_2048x27_4sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_4sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 5, 6, 5, 6, 5, 7,
+	 6, 6, 6, 7, 7, 7, 8, 9, 9, 9,12,10,11,10,10,12,
+	10,10,
+};
+
+static static_codebook _huff_book_line_2048x27_4sub2 = {
+	1, 50,
+	_huff_lengthlist_line_2048x27_4sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_2048x27_4sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 3, 6, 5, 7, 5, 7, 7, 7, 7, 7, 5, 7, 5, 7,
+	 5, 7, 5, 7, 7, 7, 7, 7, 4, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+};
+
+static static_codebook _huff_book_line_2048x27_4sub3 = {
+	1, 128,
+	_huff_lengthlist_line_2048x27_4sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4low_class0[] = {
+	 4, 5, 6,11, 5, 5, 6,10, 7, 7, 6, 6,14,13, 9, 9,
+	 6, 6, 6,10, 6, 6, 6, 9, 8, 7, 7, 9,14,12, 8,11,
+	 8, 7, 7,11, 8, 8, 7,11, 9, 9, 7, 9,13,11, 9,13,
+	19,19,18,19,15,16,16,19,11,11,10,13,10,10, 9,15,
+	 5, 5, 6,13, 6, 6, 6,11, 8, 7, 6, 7,14,11,10,11,
+	 6, 6, 6,12, 7, 6, 6,11, 8, 7, 7,11,13,11, 9,11,
+	 9, 7, 6,12, 8, 7, 6,12, 9, 8, 8,11,13,10, 7,13,
+	19,19,17,19,17,14,14,19,12,10, 8,12,13,10, 9,16,
+	 7, 8, 7,12, 7, 7, 7,11, 8, 7, 7, 8,12,12,11,11,
+	 8, 8, 7,12, 8, 7, 6,11, 8, 7, 7,10,10,11,10,11,
+	 9, 8, 8,13, 9, 8, 7,12,10, 9, 7,11, 9, 8, 7,11,
+	18,18,15,18,18,16,17,18,15,11,10,18,11, 9, 9,18,
+	16,16,13,16,12,11,10,16,12,11, 9, 6,15,12,11,13,
+	16,16,14,14,13,11,12,16,12, 9, 9,13,13,10,10,12,
+	17,18,17,17,14,15,14,16,14,12,14,15,12,10,11,12,
+	18,18,18,18,18,18,18,18,18,12,13,18,16,11, 9,18,
+};
+
+static static_codebook _huff_book_line_256x4low_class0 = {
+	1, 256,
+	_huff_lengthlist_line_256x4low_class0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4low_0sub0[] = {
+	 1, 3, 2, 3,
+};
+
+static static_codebook _huff_book_line_256x4low_0sub0 = {
+	1, 4,
+	_huff_lengthlist_line_256x4low_0sub0,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4low_0sub1[] = {
+	 0, 0, 0, 0, 2, 3, 2, 3, 3, 3,
+};
+
+static static_codebook _huff_book_line_256x4low_0sub1 = {
+	1, 10,
+	_huff_lengthlist_line_256x4low_0sub1,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4low_0sub2[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4,
+	 4, 4, 4, 4, 5, 5, 5, 6, 6,
+};
+
+static static_codebook _huff_book_line_256x4low_0sub2 = {
+	1, 25,
+	_huff_lengthlist_line_256x4low_0sub2,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist_line_256x4low_0sub3[] = {
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 2, 4, 3, 5, 4,
+	 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 6, 9,
+	 7,12,11,16,13,16,12,15,13,15,12,14,12,15,15,15,
+};
+
+static static_codebook _huff_book_line_256x4low_0sub3 = {
+	1, 64,
+	_huff_lengthlist_line_256x4low_0sub3,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
Index: /libvorbis-1.2.0/lib/books/uncoupled/Makefile.am
===================================================================
--- /libvorbis-1.2.0/lib/books/uncoupled/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/lib/books/uncoupled/Makefile.am	(revision 16)
@@ -0,0 +1,3 @@
+## Process this file with automake to produce Makefile.in
+
+EXTRA_DIST = res_books_uncoupled.h
Index: /libvorbis-1.2.0/lib/books/uncoupled/Makefile.in
===================================================================
--- /libvorbis-1.2.0/lib/books/uncoupled/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/lib/books/uncoupled/Makefile.in	(revision 16)
@@ -0,0 +1,347 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = lib/books/uncoupled
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = res_books_uncoupled.h
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/books/uncoupled/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  lib/books/uncoupled/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+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
+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-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-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:
Index: /libvorbis-1.2.0/lib/books/uncoupled/res_books_uncoupled.h
===================================================================
--- /libvorbis-1.2.0/lib/books/uncoupled/res_books_uncoupled.h	(revision 16)
+++ /libvorbis-1.2.0/lib/books/uncoupled/res_books_uncoupled.h	(revision 16)
@@ -0,0 +1,11517 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: static codebooks autogenerated by huff/huffbuld
+ last modified: $Id: res_books_uncoupled.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "codebook.h"
+static long _vq_quantlist__16u0__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u0__p1_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 8, 5, 8, 8, 8,10,10, 8,
+	10,11, 5, 8, 8, 8,10,10, 8,10,10, 4, 9, 9, 9,12,
+	11, 8,11,11, 8,12,11,10,12,14,10,13,13, 7,11,11,
+	10,14,12,11,14,14, 4, 9, 9, 8,11,11, 9,11,12, 7,
+	11,11,10,13,14,10,12,14, 8,11,12,10,14,14,10,13,
+	12,
+};
+
+static float _vq_quantthresh__16u0__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16u0__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p1_0 = {
+	_vq_quantthresh__16u0__p1_0,
+	_vq_quantmap__16u0__p1_0,
+	3,
+	3
+};
+
+static static_codebook _16u0__p1_0 = {
+	4, 81,
+	_vq_lengthlist__16u0__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16u0__p1_0,
+	NULL,
+	&_vq_auxt__16u0__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u0__p2_0[] = {
+	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 9, 7,
+	 8, 9, 5, 7, 7, 7, 9, 8, 7, 9, 7, 4, 7, 7, 7, 9,
+	 9, 7, 8, 8, 6, 9, 8, 7, 8,11, 9,11,10, 6, 8, 9,
+	 8,11, 8, 9,10,11, 4, 7, 7, 7, 8, 8, 7, 9, 9, 6,
+	 9, 8, 9,11,10, 8, 8,11, 6, 8, 9, 9,10,11, 8,11,
+	 8,
+};
+
+static float _vq_quantthresh__16u0__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16u0__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p2_0 = {
+	_vq_quantthresh__16u0__p2_0,
+	_vq_quantmap__16u0__p2_0,
+	3,
+	3
+};
+
+static static_codebook _16u0__p2_0 = {
+	4, 81,
+	_vq_lengthlist__16u0__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16u0__p2_0,
+	NULL,
+	&_vq_auxt__16u0__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u0__p3_0[] = {
+	 1, 5, 5, 7, 7, 6, 7, 7, 8, 8, 6, 7, 8, 8, 8, 8,
+	 9, 9,11,11, 8, 9, 9,11,11, 6, 9, 8,10,10, 8,10,
+	10,11,11, 8,10,10,11,11,10,11,10,13,12, 9,11,10,
+	13,13, 6, 8, 9,10,10, 8,10,10,11,11, 8,10,10,11,
+	11, 9,10,11,13,12,10,10,11,12,12, 8,11,11,14,13,
+	10,12,11,15,13, 9,12,11,15,14,12,14,13,16,14,12,
+	13,13,17,14, 8,11,11,13,14, 9,11,12,14,15,10,11,
+	12,13,15,11,13,13,14,16,12,13,14,14,16, 5, 9, 9,
+	11,11, 9,11,11,12,12, 8,11,11,12,12,11,12,12,15,
+	14,10,12,12,15,15, 8,11,11,13,12,10,12,12,13,13,
+	10,12,12,14,13,12,12,13,14,15,11,13,13,17,16, 7,
+	11,11,13,13,10,12,12,14,13,10,12,12,13,14,12,13,
+	12,15,14,11,13,13,15,14, 9,12,12,16,15,11,13,13,
+	17,16,10,13,13,16,16,13,14,15,15,16,13,15,14,19,
+	17, 9,12,12,14,16,11,13,13,15,16,10,13,13,17,16,
+	13,14,13,17,15,12,15,15,16,17, 5, 9, 9,11,11, 8,
+	11,11,13,12, 9,11,11,12,12,10,12,12,14,15,11,12,
+	12,14,14, 7,11,10,13,12,10,12,12,14,13,10,11,12,
+	13,13,11,13,13,15,16,12,12,13,15,15, 7,11,11,13,
+	13,10,13,13,14,14,10,12,12,13,13,11,13,13,16,15,
+	12,13,13,15,14, 9,12,12,15,15,10,13,13,17,16,11,
+	12,13,15,15,12,15,14,18,18,13,14,14,16,17, 9,12,
+	12,15,16,10,13,13,15,16,11,13,13,15,16,13,15,15,
+	17,17,13,15,14,16,15, 7,11,11,15,16,10,13,12,16,
+	17,10,12,13,15,17,15,16,16,18,17,13,15,15,17,18,
+	 8,12,12,16,16,11,13,14,17,18,11,13,13,18,16,15,
+	17,16,17,19,14,15,15,17,16, 8,12,12,16,15,11,14,
+	13,18,17,11,13,14,18,17,15,16,16,18,17,13,16,16,
+	18,18,11,15,14,18,17,13,14,15,18, 0,12,15,15, 0,
+	17,17,16,17,17,18,14,16,18,18, 0,11,14,14,17, 0,
+	12,15,14,17,19,12,15,14,18, 0,15,18,16, 0,17,14,
+	18,16,18, 0, 7,11,11,16,15,10,12,12,18,16,10,13,
+	13,16,15,13,15,14,17,17,14,16,16,19,18, 8,12,12,
+	16,16,11,13,13,18,16,11,13,14,17,16,14,15,15,19,
+	18,15,16,16, 0,19, 8,12,12,16,17,11,13,13,17,17,
+	11,14,13,17,17,13,15,15,17,19,15,17,17,19, 0,11,
+	14,15,19,17,12,15,16,18,18,12,14,15,19,17,14,16,
+	17, 0,18,16,16,19,17, 0,11,14,14,18,19,12,15,14,
+	17,17,13,16,14,17,16,14,17,16,18,18,15,18,15, 0,
+	18,
+};
+
+static float _vq_quantthresh__16u0__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u0__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p3_0 = {
+	_vq_quantthresh__16u0__p3_0,
+	_vq_quantmap__16u0__p3_0,
+	5,
+	5
+};
+
+static static_codebook _16u0__p3_0 = {
+	4, 625,
+	_vq_lengthlist__16u0__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u0__p3_0,
+	NULL,
+	&_vq_auxt__16u0__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u0__p4_0[] = {
+	 3, 5, 5, 8, 8, 6, 6, 6, 9, 9, 6, 6, 6, 9, 9, 9,
+	10, 9,11,11, 9, 9, 9,11,11, 6, 7, 7,10,10, 7, 7,
+	 8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
+	11,12, 6, 7, 7,10,10, 7, 8, 7,10,10, 7, 8, 7,10,
+	10,10,11,10,12,11,10,10,10,13,10, 9,10,10,12,12,
+	10,11,10,14,12, 9,11,11,13,13,11,12,13,13,13,11,
+	12,12,15,13, 9,10,10,12,13, 9,11,10,12,13,10,10,
+	11,12,13,11,12,12,12,13,11,12,12,13,13, 5, 7, 7,
+	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
+	13,10,10,11,12,12, 6, 8, 8,11,10, 7, 8, 9,10,12,
+	 8, 9, 9,11,11,11,10,11,11,12,10,11,11,13,12, 7,
+	 8, 8,10,11, 8, 9, 8,11,10, 8, 9, 9,11,11,10,12,
+	10,13,11,10,11,11,13,13,10,11,10,14,13,10,10,11,
+	13,13,10,12,11,14,13,12,11,13,12,13,13,12,13,14,
+	14,10,11,11,13,13,10,11,10,12,13,10,12,12,12,14,
+	12,12,12,14,12,12,13,12,17,15, 5, 7, 7,10,10, 7,
+	 8, 8,10,10, 7, 8, 8,11,10,10,10,11,12,12,10,11,
+	11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,11,11,11,12,12,10,10,11,12,13, 6, 8, 8,10,
+	11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,12,12,13,13,
+	11,11,10,13,11, 9,11,10,14,13,11,11,11,15,13,10,
+	10,11,13,13,12,13,13,14,14,12,11,12,12,13,10,11,
+	11,12,13,10,11,12,13,13,10,11,10,13,12,12,12,13,
+	14, 0,12,13,11,13,11, 8,10,10,13,13,10,11,11,14,
+	13,10,11,11,13,12,13,14,14,14,15,12,12,12,15,14,
+	 9,11,10,13,12,10,10,11,13,14,11,11,11,15,12,13,
+	12,14,15,16,13,13,13,14,13, 9,11,11,12,12,10,12,
+	11,13,13,10,11,11,13,14,13,13,13,15,15,13,13,14,
+	17,15,11,12,12,14,14,10,11,12,13,15,12,13,13, 0,
+	15,13,11,14,12,16,14,16,14, 0,15,11,12,12,14,16,
+	11,13,12,16,15,12,13,13,14,15,12,14,12,15,13,15,
+	14,14,16,16, 8,10,10,13,13,10,11,10,13,14,10,11,
+	11,13,13,13,13,12,14,14,14,13,13,16,17, 9,10,10,
+	12,14,10,12,11,14,13,10,11,12,13,14,12,12,12,15,
+	15,13,13,13,14,14, 9,10,10,13,13,10,11,12,12,14,
+	10,11,10,13,13,13,13,13,14,16,13,13,13,14,14,11,
+	12,13,15,13,12,14,13,14,16,12,12,13,13,14,13,14,
+	14,17,15,13,12,17,13,16,11,12,13,14,15,12,13,14,
+	14,17,11,12,11,14,14,13,16,14,16, 0,14,15,11,15,
+	11,
+};
+
+static float _vq_quantthresh__16u0__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u0__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p4_0 = {
+	_vq_quantthresh__16u0__p4_0,
+	_vq_quantmap__16u0__p4_0,
+	5,
+	5
+};
+
+static static_codebook _16u0__p4_0 = {
+	4, 625,
+	_vq_lengthlist__16u0__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u0__p4_0,
+	NULL,
+	&_vq_auxt__16u0__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16u0__p5_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+	 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
+	 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 7, 8, 8,
+	 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+	 9, 9,10,10,11,11,12,12, 9, 9, 9,10,10,11,11,12,
+	12,
+};
+
+static float _vq_quantthresh__16u0__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16u0__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p5_0 = {
+	_vq_quantthresh__16u0__p5_0,
+	_vq_quantmap__16u0__p5_0,
+	9,
+	9
+};
+
+static static_codebook _16u0__p5_0 = {
+	2, 81,
+	_vq_lengthlist__16u0__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16u0__p5_0,
+	NULL,
+	&_vq_auxt__16u0__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16u0__p6_0[] = {
+	 1, 4, 4, 7, 7,10,10,12,12,13,13,18,17, 3, 6, 6,
+	 9, 9,11,11,13,13,14,14,18,17, 3, 6, 6, 9, 9,11,
+	11,13,13,14,14,17,18, 7, 9, 9,11,11,13,13,14,14,
+	15,15, 0, 0, 7, 9, 9,11,11,13,13,14,14,15,16,19,
+	18,10,11,11,13,13,14,14,16,15,17,18, 0, 0,10,11,
+	11,13,13,14,14,15,15,16,18, 0, 0,11,13,13,14,14,
+	15,15,17,17, 0,19, 0, 0,11,13,13,14,14,14,15,16,
+	18, 0,19, 0, 0,13,14,14,15,15,18,17,18,18, 0,19,
+	 0, 0,13,14,14,15,16,16,16,18,18,19, 0, 0, 0,16,
+	17,17, 0,17,19,19, 0,19, 0, 0, 0, 0,16,19,16,17,
+	18, 0,19, 0, 0, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__16u0__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__16u0__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p6_0 = {
+	_vq_quantthresh__16u0__p6_0,
+	_vq_quantmap__16u0__p6_0,
+	13,
+	13
+};
+
+static static_codebook _16u0__p6_0 = {
+	2, 169,
+	_vq_lengthlist__16u0__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__16u0__p6_0,
+	NULL,
+	&_vq_auxt__16u0__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u0__p6_1[] = {
+	 1, 4, 5, 6, 6, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6,
+	 6, 6, 7, 7, 6, 6, 6, 7, 7,
+};
+
+static float _vq_quantthresh__16u0__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u0__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p6_1 = {
+	_vq_quantthresh__16u0__p6_1,
+	_vq_quantmap__16u0__p6_1,
+	5,
+	5
+};
+
+static static_codebook _16u0__p6_1 = {
+	2, 25,
+	_vq_lengthlist__16u0__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u0__p6_1,
+	NULL,
+	&_vq_auxt__16u0__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u0__p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 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, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7,
+};
+
+static float _vq_quantthresh__16u0__p7_0[] = {
+	-157.5, 157.5, 
+};
+
+static long _vq_quantmap__16u0__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p7_0 = {
+	_vq_quantthresh__16u0__p7_0,
+	_vq_quantmap__16u0__p7_0,
+	3,
+	3
+};
+
+static static_codebook _16u0__p7_0 = {
+	4, 81,
+	_vq_lengthlist__16u0__p7_0,
+	1, -518803456, 1628680192, 2, 0,
+	_vq_quantlist__16u0__p7_0,
+	NULL,
+	&_vq_auxt__16u0__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p7_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16u0__p7_1[] = {
+	 1, 5, 5, 6, 5, 9,10,11,11,10,10,10,10,10,10, 5,
+	 8, 8, 8,10,10,10,10,10,10,10,10,10,10,10, 5, 8,
+	 9, 9, 9,10,10,10,10,10,10,10,10,10,10, 5,10, 8,
+	10,10,10,10,10,10,10,10,10,10,10,10, 4, 8, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10, 9,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,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,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,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,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,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__16u0__p7_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__16u0__p7_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p7_1 = {
+	_vq_quantthresh__16u0__p7_1,
+	_vq_quantmap__16u0__p7_1,
+	15,
+	15
+};
+
+static static_codebook _16u0__p7_1 = {
+	2, 225,
+	_vq_lengthlist__16u0__p7_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__16u0__p7_1,
+	NULL,
+	&_vq_auxt__16u0__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u0__p7_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__16u0__p7_2[] = {
+	 1, 6, 6, 7, 8, 7, 7,10, 9,10, 9,11,10, 9,11,10,
+	 9, 9, 9, 9,10, 6, 8, 7, 9, 9, 8, 8,10,10, 9,11,
+	11,12,12,10, 9,11, 9,12,10, 9, 6, 9, 8, 9,12, 8,
+	 8,11, 9,11,11,12,11,12,12,10,11,11,10,10,11, 7,
+	10, 9, 9, 9, 9, 9,10, 9,10, 9,10,10,12,10,10,10,
+	11,12,10,10, 7, 9, 9, 9,10, 9, 9,10,10, 9, 9, 9,
+	11,11,10,10,10,10, 9, 9,12, 7, 9,10, 9,11, 9,10,
+	 9,10,11,11,11,10,11,12, 9,12,11,10,10,10, 7, 9,
+	 9, 9, 9,10,12,10, 9,11,12,10,11,12,12,11, 9,10,
+	11,10,11, 7, 9,10,10,11,10, 9,10,11,11,11,10,12,
+	12,12,11,11,10,11,11,12, 8, 9,10,12,11,10,10,12,
+	12,12,12,12,10,11,11, 9,11,10,12,11,11, 8, 9,10,
+	10,11,12,11,11,10,10,10,12,12,12, 9,10,12,12,12,
+	12,12, 8,10,11,10,10,12, 9,11,12,12,11,12,12,12,
+	12,10,12,10,10,10,10, 8,12,11,11,11,10,10,11,12,
+	12,12,12,11,12,12,12,11,11,11,12,10, 9,10,10,12,
+	10,12,10,12,12,10,10,10,11,12,12,12,11,12,12,12,
+	11,10,11,12,12,12,11,12,12,11,12,12,11,12,12,12,
+	12,11,12,12,10,10,10,10,11,11,12,11,12,12,12,12,
+	12,12,12,11,12,11,10,11,11,12,11,11, 9,10,10,10,
+	12,10,10,11, 9,11,12,11,12,11,12,12,10,11,10,12,
+	 9, 9, 9,12,11,10,11,10,12,10,12,10,12,12,12,11,
+	11,11,11,11,10, 9,10,10,11,10,11,11,12,11,10,11,
+	12,12,12,11,11, 9,12,10,12, 9,10,12,10,10,11,10,
+	11,11,12,11,10,11,10,11,11,11,11,12,11,11,10, 9,
+	10,10,10, 9,11,11,10, 9,12,10,11,12,11,12,12,11,
+	12,11,12,11,10,11,10,12,11,12,11,12,11,12,10,11,
+	10,10,12,11,10,11,11,11,10,
+};
+
+static float _vq_quantthresh__16u0__p7_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__16u0__p7_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u0__p7_2 = {
+	_vq_quantthresh__16u0__p7_2,
+	_vq_quantmap__16u0__p7_2,
+	21,
+	21
+};
+
+static static_codebook _16u0__p7_2 = {
+	2, 441,
+	_vq_lengthlist__16u0__p7_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__16u0__p7_2,
+	NULL,
+	&_vq_auxt__16u0__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16u0__single[] = {
+	 3, 5, 8, 7,14, 8, 9,19, 5, 2, 5, 5, 9, 6, 9,19,
+	 8, 4, 5, 7, 8, 9,13,19, 7, 4, 6, 5, 9, 6, 9,19,
+	12, 8, 7, 9,10,11,13,19, 8, 5, 8, 6, 9, 6, 7,19,
+	 8, 8,10, 7, 7, 4, 5,19,12,17,19,15,18,13,11,18,
+};
+
+static static_codebook _huff_book__16u0__single = {
+	2, 64,
+	_huff_lengthlist__16u0__single,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16u1__long[] = {
+	 3, 6,10, 8,12, 8,14, 8,14,19, 5, 3, 5, 5, 7, 6,
+	11, 7,16,19, 7, 5, 6, 7, 7, 9,11,12,19,19, 6, 4,
+	 7, 5, 7, 6,10, 7,18,18, 8, 6, 7, 7, 7, 7, 8, 9,
+	18,18, 7, 5, 8, 5, 7, 5, 8, 6,18,18,12, 9,10, 9,
+	 9, 9, 8, 9,18,18, 8, 7,10, 6, 8, 5, 6, 4,11,18,
+	11,15,16,12,11, 8, 8, 6, 9,18,14,18,18,18,16,16,
+	16,13,16,18,
+};
+
+static static_codebook _huff_book__16u1__long = {
+	2, 100,
+	_huff_lengthlist__16u1__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u1__p1_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7,10,10, 7,
+	 9,10, 5, 7, 8, 7,10, 9, 7,10,10, 5, 8, 8, 8,10,
+	10, 8,10,10, 7,10,10,10,11,12,10,12,13, 7,10,10,
+	 9,13,11,10,12,13, 5, 8, 8, 8,10,10, 8,10,10, 7,
+	10,10,10,12,12, 9,11,12, 7,10,11,10,12,12,10,13,
+	11,
+};
+
+static float _vq_quantthresh__16u1__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16u1__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p1_0 = {
+	_vq_quantthresh__16u1__p1_0,
+	_vq_quantmap__16u1__p1_0,
+	3,
+	3
+};
+
+static static_codebook _16u1__p1_0 = {
+	4, 81,
+	_vq_lengthlist__16u1__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16u1__p1_0,
+	NULL,
+	&_vq_auxt__16u1__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u1__p2_0[] = {
+	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6,
+	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8,
+	 8, 6, 8, 8, 6, 8, 8, 7, 7,10, 8, 9, 9, 6, 8, 8,
+	 7, 9, 8, 8, 9,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
+	 8, 8, 8,10, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 7,10,
+	 8,
+};
+
+static float _vq_quantthresh__16u1__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16u1__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p2_0 = {
+	_vq_quantthresh__16u1__p2_0,
+	_vq_quantmap__16u1__p2_0,
+	3,
+	3
+};
+
+static static_codebook _16u1__p2_0 = {
+	4, 81,
+	_vq_lengthlist__16u1__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16u1__p2_0,
+	NULL,
+	&_vq_auxt__16u1__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u1__p3_0[] = {
+	 1, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
+	10, 9,11,11, 9, 9,10,11,11, 6, 8, 8,10,10, 8, 9,
+	10,11,11, 8, 9,10,11,11,10,11,11,12,13,10,11,11,
+	13,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
+	11,10,11,11,13,13,10,11,11,13,12, 9,11,11,14,13,
+	10,12,12,15,14,10,12,11,14,13,12,13,13,15,15,12,
+	13,13,16,14, 9,11,11,13,14,10,11,12,14,14,10,12,
+	12,14,15,12,13,13,14,15,12,13,14,15,16, 5, 8, 8,
+	11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
+	14,11,12,12,14,14, 8,10,10,12,12, 9,11,12,12,13,
+	10,12,12,13,13,12,12,13,14,15,11,13,13,15,15, 7,
+	10,10,12,12, 9,12,11,13,12,10,11,12,13,13,12,13,
+	12,15,14,11,12,13,15,15,10,12,12,15,14,11,13,13,
+	16,15,11,13,13,16,15,14,13,14,15,16,13,15,15,17,
+	17,10,12,12,14,15,11,12,12,15,15,11,13,13,15,16,
+	13,15,13,16,15,13,15,15,16,17, 5, 8, 8,11,11, 8,
+	10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
+	12,14,14, 7,10,10,12,12,10,12,12,14,13, 9,11,12,
+	12,13,12,13,13,15,15,12,12,13,13,15, 7,10,10,12,
+	13,10,11,12,13,13,10,12,11,13,13,11,13,13,15,15,
+	12,13,12,15,14, 9,12,12,15,14,11,13,13,15,15,11,
+	12,13,15,15,13,14,14,17,19,13,13,14,16,16,10,12,
+	12,14,15,11,13,13,15,16,11,13,12,16,15,13,15,15,
+	17,18,14,15,13,16,15, 8,11,11,15,14,10,12,12,16,
+	15,10,12,12,16,16,14,15,15,18,17,13,14,15,16,18,
+	 9,12,12,15,15,11,12,14,16,17,11,13,13,16,15,15,
+	15,15,17,18,14,15,16,17,17, 9,12,12,15,15,11,14,
+	13,16,16,11,13,13,16,16,15,16,15,17,18,14,16,15,
+	17,16,12,14,14,17,16,12,14,15,18,17,13,15,15,17,
+	17,15,15,18,16,20,15,16,17,18,18,11,14,14,16,17,
+	13,15,14,18,17,13,15,15,17,17,15,17,15,18,17,15,
+	17,16,19,18, 8,11,11,14,15,10,12,12,15,15,10,12,
+	12,16,16,13,14,14,17,16,14,15,15,17,17, 9,12,12,
+	15,16,11,13,13,16,16,11,12,13,16,16,14,16,15,20,
+	17,14,16,16,17,17, 9,12,12,15,16,11,13,13,16,17,
+	11,13,13,17,16,14,15,15,17,18,15,15,15,18,18,11,
+	14,14,17,16,13,15,15,17,17,13,14,14,18,17,15,16,
+	16,18,19,15,15,17,17,19,11,14,14,16,17,13,15,14,
+	17,19,13,15,14,18,17,15,17,16,18,18,15,17,15,18,
+	16,
+};
+
+static float _vq_quantthresh__16u1__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u1__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p3_0 = {
+	_vq_quantthresh__16u1__p3_0,
+	_vq_quantmap__16u1__p3_0,
+	5,
+	5
+};
+
+static static_codebook _16u1__p3_0 = {
+	4, 625,
+	_vq_lengthlist__16u1__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u1__p3_0,
+	NULL,
+	&_vq_auxt__16u1__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u1__p4_0[] = {
+	 4, 5, 5, 8, 8, 6, 6, 7, 9, 9, 6, 6, 6, 9, 9, 9,
+	10, 9,11,11, 9, 9,10,11,11, 6, 7, 7,10, 9, 7, 7,
+	 8, 9,10, 7, 7, 8,10,10,10,10,10,10,12, 9, 9,10,
+	11,12, 6, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 7,10,
+	10, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
+	10,10,10,12,12, 9,10,10,12,12,12,11,12,13,13,11,
+	11,12,12,13, 9,10,10,11,12, 9,10,10,12,12,10,10,
+	10,12,12,11,12,11,14,13,11,12,12,14,13, 5, 7, 7,
+	10,10, 7, 8, 8,10,10, 7, 8, 7,10,10,10,10,10,12,
+	12,10,10,10,12,12, 6, 8, 7,10,10, 7, 7, 9,10,11,
+	 8, 9, 9,11,10,10,10,11,11,13,10,10,11,12,13, 6,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,10,11,10,11,
+	10,13,11,10,11,10,12,12,10,11,10,12,11,10,10,10,
+	12,13,10,11,11,13,12,11,11,13,11,14,12,12,13,14,
+	14, 9,10,10,12,13,10,11,10,13,12,10,11,11,12,13,
+	11,12,11,14,12,12,13,13,15,14, 5, 7, 7,10,10, 7,
+	 7, 8,10,10, 7, 8, 8,10,10,10,10,10,11,12,10,10,
+	10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
+	10,11,10,11,11,12,12,10,10,11,11,13, 7, 7, 8,10,
+	10, 8, 8, 9,10,11, 7, 9, 7,11,10,10,11,11,13,12,
+	11,11,10,13,11, 9,10,10,12,12,10,11,11,13,12,10,
+	10,11,12,12,12,13,13,14,14,11,11,12,12,14,10,10,
+	11,12,12,10,11,11,12,13,10,10,10,13,12,12,13,13,
+	15,14,12,13,10,14,11, 8,10,10,12,12,10,11,10,13,
+	13, 9,10,10,12,12,12,13,13,15,14,11,12,12,13,13,
+	 9,10,10,13,12,10,10,11,13,13,10,11,10,13,12,12,
+	12,13,14,15,12,13,12,15,13, 9,10,10,12,13,10,11,
+	10,13,12,10,10,11,12,13,12,14,12,15,13,12,12,13,
+	14,15,11,12,11,14,13,11,11,12,14,15,12,13,12,15,
+	14,13,11,15,11,16,13,14,14,16,15,11,12,12,14,14,
+	11,12,11,14,13,12,12,13,14,15,13,14,12,16,12,14,
+	14,14,15,15, 8,10,10,12,12, 9,10,10,12,12,10,10,
+	11,13,13,11,12,12,13,13,12,13,13,14,15, 9,10,10,
+	13,12,10,11,11,13,12,10,10,11,13,13,12,13,12,15,
+	14,12,12,13,13,16, 9, 9,10,12,13,10,10,11,12,13,
+	10,11,10,13,13,12,12,13,13,15,13,13,12,15,13,11,
+	12,12,14,14,12,13,12,15,14,11,11,12,13,14,14,14,
+	14,16,15,13,12,15,12,16,11,11,12,13,14,12,13,13,
+	14,15,10,12,11,14,13,14,15,14,16,16,13,14,11,15,
+	11,
+};
+
+static float _vq_quantthresh__16u1__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u1__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p4_0 = {
+	_vq_quantthresh__16u1__p4_0,
+	_vq_quantmap__16u1__p4_0,
+	5,
+	5
+};
+
+static static_codebook _16u1__p4_0 = {
+	4, 625,
+	_vq_lengthlist__16u1__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u1__p4_0,
+	NULL,
+	&_vq_auxt__16u1__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16u1__p5_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+	10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
+	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
+	10, 9,11,11,12,11, 7, 8, 8, 9, 9,11,11,12,12, 9,
+	10,10,11,11,12,12,13,12, 9,10,10,11,11,12,12,12,
+	13,
+};
+
+static float _vq_quantthresh__16u1__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16u1__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p5_0 = {
+	_vq_quantthresh__16u1__p5_0,
+	_vq_quantmap__16u1__p5_0,
+	9,
+	9
+};
+
+static static_codebook _16u1__p5_0 = {
+	2, 81,
+	_vq_lengthlist__16u1__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16u1__p5_0,
+	NULL,
+	&_vq_auxt__16u1__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p6_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16u1__p6_0[] = {
+	 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 8, 8,
+	 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
+	 8, 8,10, 9, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
+	 8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
+	 9, 9,10,10,10,10,11,11, 9, 9, 9,10,10,10,10,11,
+	11,
+};
+
+static float _vq_quantthresh__16u1__p6_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16u1__p6_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p6_0 = {
+	_vq_quantthresh__16u1__p6_0,
+	_vq_quantmap__16u1__p6_0,
+	9,
+	9
+};
+
+static static_codebook _16u1__p6_0 = {
+	2, 81,
+	_vq_lengthlist__16u1__p6_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16u1__p6_0,
+	NULL,
+	&_vq_auxt__16u1__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u1__p7_0[] = {
+	 1, 4, 4, 4, 8, 8, 4, 8, 8, 5,11, 9, 8,12,11, 8,
+	12,11, 5,10,11, 8,11,12, 8,11,12, 4,11,11,11,14,
+	13,10,13,13, 8,14,13,12,14,16,12,16,15, 8,14,14,
+	13,16,14,12,15,16, 4,11,11,10,14,13,11,14,14, 8,
+	15,14,12,15,15,12,14,16, 8,14,14,11,16,15,12,15,
+	13,
+};
+
+static float _vq_quantthresh__16u1__p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__16u1__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p7_0 = {
+	_vq_quantthresh__16u1__p7_0,
+	_vq_quantmap__16u1__p7_0,
+	3,
+	3
+};
+
+static static_codebook _16u1__p7_0 = {
+	4, 81,
+	_vq_lengthlist__16u1__p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__16u1__p7_0,
+	NULL,
+	&_vq_auxt__16u1__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16u1__p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 5, 7, 7,
+	 8, 8, 8, 8, 8, 8, 4, 5, 6, 7, 7, 8, 8, 8, 8, 8,
+	 8, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 7, 8, 8, 8, 8, 9, 9, 9,10,
+	 9,10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10, 9, 8, 8, 8,
+	 9, 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,10,
+	10,10,10, 8, 8, 8, 9, 9, 9,10,10,10,10,10, 8, 8,
+	 8, 9, 9,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__16u1__p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16u1__p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p7_1 = {
+	_vq_quantthresh__16u1__p7_1,
+	_vq_quantmap__16u1__p7_1,
+	11,
+	11
+};
+
+static static_codebook _16u1__p7_1 = {
+	2, 121,
+	_vq_lengthlist__16u1__p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16u1__p7_1,
+	NULL,
+	&_vq_auxt__16u1__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p8_0[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16u1__p8_0[] = {
+	 1, 4, 4, 5, 5, 8, 8,10,10,12,12, 4, 7, 7, 8, 8,
+	 9, 9,12,11,14,13, 4, 7, 7, 7, 8, 9,10,11,11,13,
+	12, 5, 8, 8, 9, 9,11,11,12,13,15,14, 5, 7, 8, 9,
+	 9,11,11,13,13,17,15, 8, 9,10,11,11,12,13,17,14,
+	17,16, 8,10, 9,11,11,12,12,13,15,15,17,10,11,11,
+	12,13,14,15,15,16,16,17, 9,11,11,12,12,14,15,17,
+	15,15,16,11,14,12,14,15,16,15,16,16,16,15,11,13,
+	13,14,14,15,15,16,16,15,16,
+};
+
+static float _vq_quantthresh__16u1__p8_0[] = {
+	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
+	38.5, 49.5, 
+};
+
+static long _vq_quantmap__16u1__p8_0[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p8_0 = {
+	_vq_quantthresh__16u1__p8_0,
+	_vq_quantmap__16u1__p8_0,
+	11,
+	11
+};
+
+static static_codebook _16u1__p8_0 = {
+	2, 121,
+	_vq_lengthlist__16u1__p8_0,
+	1, -524582912, 1618345984, 4, 0,
+	_vq_quantlist__16u1__p8_0,
+	NULL,
+	&_vq_auxt__16u1__p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p8_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16u1__p8_1[] = {
+	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7,
+	 8, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8,
+	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7,
+	 7, 8, 8, 8, 8, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
+	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8,
+	 8, 9, 9, 9, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__16u1__p8_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16u1__p8_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p8_1 = {
+	_vq_quantthresh__16u1__p8_1,
+	_vq_quantmap__16u1__p8_1,
+	11,
+	11
+};
+
+static static_codebook _16u1__p8_1 = {
+	2, 121,
+	_vq_lengthlist__16u1__p8_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16u1__p8_1,
+	NULL,
+	&_vq_auxt__16u1__p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p9_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16u1__p9_0[] = {
+	 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8,
+};
+
+static float _vq_quantthresh__16u1__p9_0[] = {
+	-1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 
+	382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5, 
+};
+
+static long _vq_quantmap__16u1__p9_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p9_0 = {
+	_vq_quantthresh__16u1__p9_0,
+	_vq_quantmap__16u1__p9_0,
+	15,
+	15
+};
+
+static static_codebook _16u1__p9_0 = {
+	2, 225,
+	_vq_lengthlist__16u1__p9_0,
+	1, -514071552, 1627381760, 4, 0,
+	_vq_quantlist__16u1__p9_0,
+	NULL,
+	&_vq_auxt__16u1__p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16u1__p9_1[] = {
+	 1, 6, 5, 9, 9,10,10, 6, 7, 9, 9,10,10,10,10, 5,
+	10, 8,10, 8,10,10, 8, 8,10, 9,10,10,10,10, 5, 8,
+	 9,10,10,10,10, 8,10,10,10,10,10,10,10, 9,10,10,
+	10,10,10,10, 9, 9,10,10,10,10,10,10, 9, 9, 8, 9,
+	10,10,10, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10, 8,10,10,10,10,
+	10,10,10,10,10,10,10,10,10, 6, 8, 8,10,10,10, 8,
+	10,10,10,10,10,10,10,10, 5, 8, 8,10,10,10, 9, 9,
+	10,10,10,10,10,10,10,10, 9,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,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, 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,
+};
+
+static float _vq_quantthresh__16u1__p9_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__16u1__p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p9_1 = {
+	_vq_quantthresh__16u1__p9_1,
+	_vq_quantmap__16u1__p9_1,
+	15,
+	15
+};
+
+static static_codebook _16u1__p9_1 = {
+	2, 225,
+	_vq_lengthlist__16u1__p9_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__16u1__p9_1,
+	NULL,
+	&_vq_auxt__16u1__p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u1__p9_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__16u1__p9_2[] = {
+	 1, 6, 6, 7, 8, 8,11,10, 9, 9,11, 9,10, 9,11,11,
+	 9, 6, 7, 6,11, 8,11, 9,10,10,11, 9,11,10,10,10,
+	11, 9, 5, 7, 7, 8, 8,10,11, 8, 8,11, 9, 9,10,11,
+	 9,10,11, 8, 9, 6, 8, 8, 9, 9,10,10,11,11,11, 9,
+	11,10, 9,11, 8, 8, 8, 9, 8, 9,10,11, 9, 9,11,11,
+	10, 9, 9,11,10, 8,11, 8, 9, 8,11, 9,10, 9,10,11,
+	11,10,10, 9,10,10, 8, 8, 9,10,10,10, 9,11, 9,10,
+	11,11,11,11,10, 9,11, 9, 9,11,11,10, 8,11,11,11,
+	 9,10,10,11,10,11,11, 9,11,10, 9,11,10,10,10,10,
+	 9,11,10,11,10, 9, 9,10,11, 9, 8,10,11,11,10,10,
+	11, 9,11,10,11,11,10,11, 9, 9, 8,10, 8, 9,11, 9,
+	 8,10,10, 9,11,10,11,10,11, 9,11, 8,10,11,11,11,
+	11,10,10,11,11,11,11,10,11,11,10, 9, 8,10,10, 9,
+	11,10,11,11,11, 9, 9, 9,11,11,11,10,10, 9, 9,10,
+	 9,11,11,11,11, 8,10,11,10,11,11,10,11,11, 9, 9,
+	 9,10, 9,11, 9,11,11,11,11,11,10,11,11,10,11,10,
+	11,11, 9,11,10,11,10, 9,10, 9,10,10,11,11,11,11,
+	 9,10, 9,10,11,11,10,11,11,11,11,11,11,10,11,11,
+	10,
+};
+
+static float _vq_quantthresh__16u1__p9_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__16u1__p9_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u1__p9_2 = {
+	_vq_quantthresh__16u1__p9_2,
+	_vq_quantmap__16u1__p9_2,
+	17,
+	17
+};
+
+static static_codebook _16u1__p9_2 = {
+	2, 289,
+	_vq_lengthlist__16u1__p9_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__16u1__p9_2,
+	NULL,
+	&_vq_auxt__16u1__p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16u1__short[] = {
+	 5, 7,10, 9,11,10,15,11,13,16, 6, 4, 6, 6, 7, 7,
+	10, 9,12,16,10, 6, 5, 6, 6, 7,10,11,16,16, 9, 6,
+	 7, 6, 7, 7,10, 8,14,16,11, 6, 5, 4, 5, 6, 8, 9,
+	15,16, 9, 6, 6, 5, 6, 6, 9, 8,14,16,12, 7, 6, 6,
+	 5, 6, 6, 7,13,16, 8, 6, 7, 6, 5, 5, 4, 4,11,16,
+	 9, 8, 9, 9, 7, 7, 6, 5,13,16,14,14,16,15,16,15,
+	16,16,16,16,
+};
+
+static static_codebook _huff_book__16u1__short = {
+	2, 100,
+	_huff_lengthlist__16u1__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16u2__long[] = {
+	 5, 7,10,10,10,11,11,13,18,19, 6, 5, 5, 6, 7, 8,
+	 9,12,19,19, 8, 5, 4, 4, 6, 7, 9,13,19,19, 8, 5,
+	 4, 4, 5, 6, 8,12,17,19, 7, 5, 5, 4, 4, 5, 7,12,
+	18,18, 8, 7, 7, 6, 5, 5, 6,10,18,18, 9, 9, 9, 8,
+	 6, 5, 6, 9,18,18,11,13,13,13, 8, 7, 7, 9,16,18,
+	13,17,18,16,11, 9, 9, 9,17,18,15,18,18,18,15,13,
+	13,14,18,18,
+};
+
+static static_codebook _huff_book__16u2__long = {
+	2, 100,
+	_huff_lengthlist__16u2__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__16u2__short[] = {
+	 8,11,12,12,14,15,16,16,16,16, 9, 7, 7, 8, 9,11,
+	13,14,16,16,13, 7, 6, 6, 7, 9,12,13,15,16,15, 7,
+	 6, 5, 4, 6,10,11,14,16,12, 8, 7, 4, 2, 4, 7,10,
+	14,16,11, 9, 7, 5, 3, 4, 6, 9,14,16,11,10, 9, 7,
+	 5, 5, 6, 9,16,16,10,10, 9, 8, 6, 6, 7,10,16,16,
+	11,11,11,10,10,10,11,14,16,16,16,14,14,13,14,16,
+	16,16,16,16,
+};
+
+static static_codebook _huff_book__16u2__short = {
+	2, 100,
+	_huff_lengthlist__16u2__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u2_p1_0[] = {
+	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 8, 9,
+	 9, 7, 9, 9, 7, 9, 9, 9,10,10, 9,10,10, 7, 9, 9,
+	 9,10,10, 9,10,11, 5, 7, 8, 8, 9, 9, 8, 9, 9, 7,
+	 9, 9, 9,10,10, 9, 9,10, 7, 9, 9, 9,10,10, 9,11,
+	10,
+};
+
+static float _vq_quantthresh__16u2_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__16u2_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p1_0 = {
+	_vq_quantthresh__16u2_p1_0,
+	_vq_quantmap__16u2_p1_0,
+	3,
+	3
+};
+
+static static_codebook _16u2_p1_0 = {
+	4, 81,
+	_vq_lengthlist__16u2_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__16u2_p1_0,
+	NULL,
+	&_vq_auxt__16u2_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u2_p2_0[] = {
+	 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9,
+	10, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 8, 8,10,10,10,10,10,12,12, 9,10,10,
+	11,12, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,
+	10, 9,10,10,12,11,10,10,10,12,12, 9,10,10,12,12,
+	10,11,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
+	12,12,13,14, 9,10,10,12,12, 9,10,10,12,12,10,10,
+	10,12,12,11,12,12,14,13,12,13,12,14,14, 5, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,12,
+	12,10,10,11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
+	 8, 9, 9,11,11,11,11,11,12,13,10,11,11,12,13, 7,
+	 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,13,12,10,11,11,13,13, 9,11,10,13,13,10,11,11,
+	13,13,10,11,11,13,13,12,12,13,13,15,12,12,13,14,
+	15, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
+	11,13,11,14,13,12,13,13,15,15, 5, 7, 7, 9, 9, 7,
+	 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
+	11,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
+	11, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,12,
+	11,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
+	10,11,12,13,12,13,13,15,14,11,11,13,12,14,10,10,
+	11,13,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
+	14,14,12,13,12,14,13, 8,10, 9,12,12, 9,11,10,13,
+	13, 9,10,10,12,13,12,13,13,14,14,12,12,13,14,14,
+	 9,11,10,13,13,10,11,11,13,13,10,11,11,13,13,12,
+	13,13,15,15,13,13,13,14,15, 9,10,10,12,13,10,11,
+	10,13,12,10,11,11,13,13,12,13,12,15,14,13,13,13,
+	14,15,11,12,12,15,14,12,12,13,15,15,12,13,13,15,
+	14,14,13,15,14,16,13,14,15,16,16,11,12,12,14,14,
+	11,12,12,15,14,12,13,13,15,15,13,14,13,16,14,14,
+	14,14,16,16, 8, 9, 9,12,12, 9,10,10,13,12, 9,10,
+	10,13,13,12,12,12,14,14,12,12,13,15,15, 9,10,10,
+	13,12,10,11,11,13,13,10,10,11,13,14,12,13,13,15,
+	15,12,12,13,14,15, 9,10,10,13,13,10,11,11,13,13,
+	10,11,11,13,13,12,13,13,14,14,13,14,13,15,14,11,
+	12,12,14,14,12,13,13,15,14,11,12,12,14,15,14,14,
+	14,16,15,13,12,14,14,16,11,12,13,14,15,12,13,13,
+	14,16,12,13,12,15,14,13,15,14,16,16,14,15,13,16,
+	13,
+};
+
+static float _vq_quantthresh__16u2_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u2_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p2_0 = {
+	_vq_quantthresh__16u2_p2_0,
+	_vq_quantmap__16u2_p2_0,
+	5,
+	5
+};
+
+static static_codebook _16u2_p2_0 = {
+	4, 625,
+	_vq_lengthlist__16u2_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u2_p2_0,
+	NULL,
+	&_vq_auxt__16u2_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__16u2_p3_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 8, 7,
+	 9, 9, 4, 5, 5, 6, 6, 7, 8, 9, 9, 6, 6, 6, 7, 7,
+	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7,
+	 8, 8, 9, 9,10,10, 7, 8, 8, 8, 8, 9, 9,10,10, 9,
+	 9, 9,10, 9,10,10,11,11, 9, 9, 9,10,10,10,10,11,
+	11,
+};
+
+static float _vq_quantthresh__16u2_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__16u2_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p3_0 = {
+	_vq_quantthresh__16u2_p3_0,
+	_vq_quantmap__16u2_p3_0,
+	9,
+	9
+};
+
+static static_codebook _16u2_p3_0 = {
+	2, 81,
+	_vq_lengthlist__16u2_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__16u2_p3_0,
+	NULL,
+	&_vq_auxt__16u2_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__16u2_p4_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,11,
+	11, 5, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11,
+	12,11, 5, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,
+	11,12,12, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12,12,12, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,11,12,12,12, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10,11,11,12,12,13,13, 8, 9, 9, 9, 9,10, 9,10,
+	10,10,10,11,11,12,12,13,13, 9, 9, 9, 9, 9,10,10,
+	10,10,11,11,11,12,12,12,13,13, 9, 9, 9, 9, 9,10,
+	10,10,10,11,11,12,11,12,12,13,13,10,10,10,10,10,
+	11,11,11,11,11,12,12,12,12,13,13,14,10,10,10,10,
+	10,11,11,11,11,12,11,12,12,13,12,13,13,11,11,11,
+	11,11,12,12,12,12,12,12,13,13,13,13,14,14,11,11,
+	11,11,11,12,12,12,12,12,12,13,12,13,13,14,14,11,
+	12,12,12,12,12,12,13,13,13,13,13,13,14,14,14,14,
+	11,12,12,12,12,12,12,13,13,13,13,14,13,14,14,14,
+	14,
+};
+
+static float _vq_quantthresh__16u2_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__16u2_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p4_0 = {
+	_vq_quantthresh__16u2_p4_0,
+	_vq_quantmap__16u2_p4_0,
+	17,
+	17
+};
+
+static static_codebook _16u2_p4_0 = {
+	2, 289,
+	_vq_lengthlist__16u2_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__16u2_p4_0,
+	NULL,
+	&_vq_auxt__16u2_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__16u2_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10, 9, 7,
+	10, 9, 5, 8, 9, 7, 9,10, 7, 9,10, 4, 9, 9, 9,11,
+	11, 8,11,11, 7,11,11,10,10,13,10,14,13, 7,11,11,
+	10,13,11,10,13,14, 5, 9, 9, 8,11,11, 9,11,11, 7,
+	11,11,10,14,13,10,12,14, 7,11,11,10,13,13,10,13,
+	10,
+};
+
+static float _vq_quantthresh__16u2_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__16u2_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p5_0 = {
+	_vq_quantthresh__16u2_p5_0,
+	_vq_quantmap__16u2_p5_0,
+	3,
+	3
+};
+
+static static_codebook _16u2_p5_0 = {
+	4, 81,
+	_vq_lengthlist__16u2_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__16u2_p5_0,
+	NULL,
+	&_vq_auxt__16u2_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16u2_p5_1[] = {
+	 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 7, 7,
+	 7, 7, 8, 8, 8, 8, 5, 5, 6, 7, 7, 7, 7, 8, 8, 8,
+	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
+	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__16u2_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16u2_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p5_1 = {
+	_vq_quantthresh__16u2_p5_1,
+	_vq_quantmap__16u2_p5_1,
+	11,
+	11
+};
+
+static static_codebook _16u2_p5_1 = {
+	2, 121,
+	_vq_lengthlist__16u2_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16u2_p5_1,
+	NULL,
+	&_vq_auxt__16u2_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16u2_p6_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6,
+	 8, 8, 9, 9, 9, 9,10,10,12,11, 4, 6, 6, 8, 8, 9,
+	 9, 9, 9,10,10,11,12, 7, 8, 8, 9, 9,10,10,10,10,
+	12,12,13,12, 7, 8, 8, 9, 9,10,10,10,10,11,12,12,
+	12, 8, 9, 9,10,10,11,11,11,11,12,12,13,13, 8, 9,
+	 9,10,10,11,11,11,11,12,13,13,13, 8, 9, 9,10,10,
+	11,11,12,12,13,13,14,14, 8, 9, 9,10,10,11,11,12,
+	12,13,13,14,14, 9,10,10,11,12,13,12,13,14,14,14,
+	14,14, 9,10,10,11,12,12,13,13,13,14,14,14,14,10,
+	11,11,12,12,13,13,14,14,15,15,15,15,10,11,11,12,
+	12,13,13,14,14,14,14,15,15,
+};
+
+static float _vq_quantthresh__16u2_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__16u2_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p6_0 = {
+	_vq_quantthresh__16u2_p6_0,
+	_vq_quantmap__16u2_p6_0,
+	13,
+	13
+};
+
+static static_codebook _16u2_p6_0 = {
+	2, 169,
+	_vq_lengthlist__16u2_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__16u2_p6_0,
+	NULL,
+	&_vq_auxt__16u2_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__16u2_p6_1[] = {
+	 2, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+	 5, 5, 6, 6, 5, 5, 5, 6, 6,
+};
+
+static float _vq_quantthresh__16u2_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__16u2_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p6_1 = {
+	_vq_quantthresh__16u2_p6_1,
+	_vq_quantmap__16u2_p6_1,
+	5,
+	5
+};
+
+static static_codebook _16u2_p6_1 = {
+	2, 25,
+	_vq_lengthlist__16u2_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__16u2_p6_1,
+	NULL,
+	&_vq_auxt__16u2_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__16u2_p7_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 6,
+	 9, 9, 9, 9, 9, 9,10,10,11,11, 4, 6, 6, 8, 9, 9,
+	 9, 9, 9,10,11,12,11, 7, 8, 9,10,10,10,10,11,10,
+	11,12,12,13, 7, 9, 9,10,10,10,10,10,10,11,12,13,
+	13, 7, 9, 8,10,10,11,11,11,12,12,13,13,14, 7, 9,
+	 9,10,10,11,11,11,12,13,13,13,13, 8, 9, 9,10,11,
+	11,12,12,12,13,13,13,13, 8, 9, 9,10,11,11,11,12,
+	12,13,13,14,14, 9,10,10,12,11,12,13,13,13,14,13,
+	13,13, 9,10,10,11,11,12,12,13,14,13,13,14,13,10,
+	11,11,12,13,14,14,14,15,14,14,14,14,10,11,11,12,
+	12,13,13,13,14,14,14,15,14,
+};
+
+static float _vq_quantthresh__16u2_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__16u2_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p7_0 = {
+	_vq_quantthresh__16u2_p7_0,
+	_vq_quantmap__16u2_p7_0,
+	13,
+	13
+};
+
+static static_codebook _16u2_p7_0 = {
+	2, 169,
+	_vq_lengthlist__16u2_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__16u2_p7_0,
+	NULL,
+	&_vq_auxt__16u2_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__16u2_p7_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
+	 7, 7, 7, 7, 8, 8, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8,
+	 8, 6, 6, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 7, 7, 7,
+	 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
+	 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8,
+	 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__16u2_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__16u2_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p7_1 = {
+	_vq_quantthresh__16u2_p7_1,
+	_vq_quantmap__16u2_p7_1,
+	11,
+	11
+};
+
+static static_codebook _16u2_p7_1 = {
+	2, 121,
+	_vq_lengthlist__16u2_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__16u2_p7_1,
+	NULL,
+	&_vq_auxt__16u2_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__16u2_p8_0[] = {
+	 1, 5, 5, 7, 7, 8, 8, 7, 7, 8, 8,10, 9,11,11, 4,
+	 6, 6, 8, 8,10, 9, 9, 8, 9, 9,10,10,12,14, 4, 6,
+	 7, 8, 9, 9,10, 9, 8, 9, 9,10,12,12,11, 7, 8, 8,
+	10,10,10,10, 9, 9,10,10,11,13,13,12, 7, 8, 8, 9,
+	11,11,10, 9, 9,11,10,12,11,11,14, 8, 9, 9,11,10,
+	11,11,10,10,11,11,13,12,14,12, 8, 9, 9,11,12,11,
+	11,10,10,12,11,12,12,12,14, 7, 8, 8, 9, 9,10,10,
+	10,11,12,11,13,13,14,12, 7, 8, 9, 9, 9,10,10,11,
+	11,11,12,12,14,14,14, 8,10, 9,10,11,11,11,11,14,
+	12,12,13,14,14,13, 9, 9, 9,10,11,11,11,12,12,12,
+	14,12,14,13,14,10,10,10,12,11,12,11,14,13,14,13,
+	14,14,13,14, 9,10,10,11,12,11,13,12,13,13,14,14,
+	14,13,14,10,13,13,12,12,11,12,14,13,14,13,14,12,
+	14,13,10,11,11,12,11,12,12,14,14,14,13,14,14,14,
+	14,
+};
+
+static float _vq_quantthresh__16u2_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__16u2_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p8_0 = {
+	_vq_quantthresh__16u2_p8_0,
+	_vq_quantmap__16u2_p8_0,
+	15,
+	15
+};
+
+static static_codebook _16u2_p8_0 = {
+	2, 225,
+	_vq_lengthlist__16u2_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__16u2_p8_0,
+	NULL,
+	&_vq_auxt__16u2_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__16u2_p8_1[] = {
+	 2, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,10, 9, 9,
+	 9,10,10,10,10, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,
+	10, 9,10,10,10,10,10,10,11,10, 5, 6, 6, 7, 7, 8,
+	 8, 8, 9, 9,10,10,10,10,10,10,10,10,10,10,10, 7,
+	 7, 7, 8, 8, 9, 8, 9, 9,10, 9,10,10,10,10,10,10,
+	11,10,11,10, 7, 7, 7, 8, 8, 8, 9, 9, 9,10, 9,10,
+	10,10,10,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9,
+	10, 9,10,10,10,10,10,10,10,11,10,10,11,10, 8, 8,
+	 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,11,
+	11,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,
+	11,10,11,10,11,10,11,10, 8, 9, 9, 9, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,11,11,10,10,10, 9,10, 9,
+	 9,10,10,10,11,10,10,10,10,10,10,10,10,11,11,11,
+	11,11, 9, 9, 9,10, 9,10,10,10,10,10,10,11,10,11,
+	10,11,11,11,11,10,10, 9,10, 9,10,10,10,10,11,10,
+	10,10,10,10,11,10,11,10,11,10,10,11, 9,10,10,10,
+	10,10,10,10,10,10,11,10,10,11,11,10,11,11,11,11,
+	11, 9, 9,10,10,10,10,10,11,10,10,11,10,10,11,10,
+	10,11,11,11,11,11, 9,10,10,10,10,10,10,10,11,10,
+	11,10,11,10,11,11,11,11,11,10,11,10,10,10,10,10,
+	10,10,10,10,11,11,11,11,11,11,11,11,11,10,11,11,
+	10,10,10,10,10,11,10,10,10,11,10,11,11,11,11,10,
+	12,11,11,11,10,10,10,10,10,10,11,10,10,10,11,11,
+	12,11,11,11,11,11,11,11,11,11,10,10,10,11,10,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,
+	10,10,11,10,11,10,10,11,11,11,11,11,11,11,11,11,
+	11,11,11,10,10,10,10,10,10,10,11,11,10,11,11,10,
+	11,11,10,11,11,11,10,11,11,
+};
+
+static float _vq_quantthresh__16u2_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__16u2_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p8_1 = {
+	_vq_quantthresh__16u2_p8_1,
+	_vq_quantmap__16u2_p8_1,
+	21,
+	21
+};
+
+static static_codebook _16u2_p8_1 = {
+	2, 441,
+	_vq_lengthlist__16u2_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__16u2_p8_1,
+	NULL,
+	&_vq_auxt__16u2_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p9_0[] = {
+	5586,
+	4655,
+	6517,
+	3724,
+	7448,
+	2793,
+	8379,
+	1862,
+	9310,
+	931,
+	10241,
+	0,
+	11172,
+	5521,
+	5651,
+};
+
+static long _vq_lengthlist__16u2_p9_0[] = {
+	 1,10,10,10,10,10,10,10,10,10,10,10,10, 5, 4,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,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,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,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,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,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,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10, 4,10,10,10,10,10,10,10,10,10,10,10,10,
+	 6, 6, 5,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 5,
+	 5,
+};
+
+static float _vq_quantthresh__16u2_p9_0[] = {
+	-5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -498, -32.5, 32.5, 
+	498, 1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 
+};
+
+static long _vq_quantmap__16u2_p9_0[] = {
+	   11,    9,    7,    5,    3,    1,   13,    0,
+	   14,    2,    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p9_0 = {
+	_vq_quantthresh__16u2_p9_0,
+	_vq_quantmap__16u2_p9_0,
+	15,
+	15
+};
+
+static static_codebook _16u2_p9_0 = {
+	2, 225,
+	_vq_lengthlist__16u2_p9_0,
+	1, -510275072, 1611661312, 14, 0,
+	_vq_quantlist__16u2_p9_0,
+	NULL,
+	&_vq_auxt__16u2_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p9_1[] = {
+	392,
+	343,
+	441,
+	294,
+	490,
+	245,
+	539,
+	196,
+	588,
+	147,
+	637,
+	98,
+	686,
+	49,
+	735,
+	0,
+	784,
+	388,
+	396,
+};
+
+static long _vq_lengthlist__16u2_p9_1[] = {
+	 1,12,10,12,10,12,10,12,11,12,12,12,12,12,12,12,
+	12, 5, 5, 9,10,12,11,11,12,12,12,12,12,12,12,12,
+	12,12,12,12,10, 9, 9,11, 9,11,11,12,11,12,12,12,
+	12,12,12,12,12,12,12, 8, 8,10,11, 9,12,11,12,12,
+	12,12,12,12,12,12,12,12,12,12, 9, 8,10,11,12,11,
+	12,11,12,12,12,12,12,12,12,12,12,12,12, 8, 9,11,
+	11,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	 9,10,11,12,11,12,11,12,12,12,12,12,12,12,12,12,
+	12,12,12, 9, 9,11,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,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,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11, 5, 8, 9, 9, 8,11, 9,11,11,11,11,11,11,
+	11,11,11,11, 5, 5, 4, 8, 8, 8, 8,10, 9,10,10,11,
+	11,11,11,11,11,11,11, 5, 4,
+};
+
+static float _vq_quantthresh__16u2_p9_1[] = {
+	-367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, -26.5, 
+	-2, 2, 26.5, 73.5, 122.5, 171.5, 220.5, 269.5, 
+	318.5, 367.5, 
+};
+
+static long _vq_quantmap__16u2_p9_1[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	   17,    0,   18,    2,    4,    6,    8,   10,
+	   12,   14,   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p9_1 = {
+	_vq_quantthresh__16u2_p9_1,
+	_vq_quantmap__16u2_p9_1,
+	19,
+	19
+};
+
+static static_codebook _16u2_p9_1 = {
+	2, 361,
+	_vq_lengthlist__16u2_p9_1,
+	1, -518488064, 1611661312, 10, 0,
+	_vq_quantlist__16u2_p9_1,
+	NULL,
+	&_vq_auxt__16u2_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__16u2_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__16u2_p9_2[] = {
+	 1, 3, 3, 4, 7, 7, 7, 8, 7, 7, 7, 7, 8, 8, 8, 8,
+	 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 9, 9, 8, 9, 9,
+	 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,12,12,10,
+	11,
+};
+
+static float _vq_quantthresh__16u2_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__16u2_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__16u2_p9_2 = {
+	_vq_quantthresh__16u2_p9_2,
+	_vq_quantmap__16u2_p9_2,
+	49,
+	49
+};
+
+static static_codebook _16u2_p9_2 = {
+	1, 49,
+	_vq_lengthlist__16u2_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__16u2_p9_2,
+	NULL,
+	&_vq_auxt__16u2_p9_2,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8u0__p1_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+	10,10, 5, 8, 8, 7,10,10, 8,10,10, 4, 9, 8, 8,11,
+	11, 8,11,11, 7,11,11,10,11,13,10,13,13, 7,11,11,
+	10,13,12,10,13,13, 5, 9, 8, 8,11,11, 8,11,11, 7,
+	11,11, 9,13,13,10,12,13, 7,11,11,10,13,13,10,13,
+	11,
+};
+
+static float _vq_quantthresh__8u0__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__8u0__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p1_0 = {
+	_vq_quantthresh__8u0__p1_0,
+	_vq_quantmap__8u0__p1_0,
+	3,
+	3
+};
+
+static static_codebook _8u0__p1_0 = {
+	4, 81,
+	_vq_lengthlist__8u0__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__8u0__p1_0,
+	NULL,
+	&_vq_auxt__8u0__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8u0__p2_0[] = {
+	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 6, 7, 8, 6,
+	 7, 8, 5, 7, 7, 6, 8, 8, 7, 9, 7, 5, 7, 7, 7, 9,
+	 9, 7, 8, 8, 6, 9, 8, 7, 7,10, 8,10,10, 6, 8, 8,
+	 8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
+	 8, 8, 8,10,10, 8, 8,10, 6, 8, 9, 8,10,10, 7,10,
+	 8,
+};
+
+static float _vq_quantthresh__8u0__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__8u0__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p2_0 = {
+	_vq_quantthresh__8u0__p2_0,
+	_vq_quantmap__8u0__p2_0,
+	3,
+	3
+};
+
+static static_codebook _8u0__p2_0 = {
+	4, 81,
+	_vq_lengthlist__8u0__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__8u0__p2_0,
+	NULL,
+	&_vq_auxt__8u0__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8u0__p3_0[] = {
+	 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
+	10, 9,11,11, 8, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
+	10,11,11, 8,10,10,11,11,10,11,11,12,12,10,11,11,
+	12,13, 6, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
+	11, 9,10,11,12,12,10,11,11,12,12, 8,11,11,14,13,
+	10,12,11,15,13,10,12,11,14,14,12,13,12,16,14,12,
+	14,12,16,15, 8,11,11,13,14,10,11,12,13,15,10,11,
+	12,13,15,11,12,13,14,15,12,12,14,14,16, 5, 8, 8,
+	11,11, 9,11,11,12,12, 8,10,11,12,12,11,12,12,15,
+	14,11,12,12,14,14, 7,11,10,13,12,10,11,12,13,14,
+	10,12,12,14,13,12,13,13,14,15,12,13,13,15,15, 7,
+	10,11,12,13,10,12,11,14,13,10,12,13,13,15,12,13,
+	12,14,14,11,13,13,15,16, 9,12,12,15,14,11,13,13,
+	15,16,11,13,13,16,16,13,14,15,15,15,12,14,15,17,
+	16, 9,12,12,14,15,11,13,13,15,16,11,13,13,16,18,
+	13,14,14,17,16,13,15,15,17,18, 5, 8, 9,11,11, 8,
+	11,11,12,12, 8,10,11,12,12,11,12,12,14,14,11,12,
+	12,14,15, 7,11,10,12,13,10,12,12,14,13,10,11,12,
+	13,14,11,13,13,15,14,12,13,13,14,15, 7,10,11,13,
+	13,10,12,12,13,14,10,12,12,13,13,11,13,13,16,16,
+	12,13,13,15,14, 9,12,12,16,15,10,13,13,15,15,11,
+	13,13,17,15,12,15,15,18,17,13,14,14,15,16, 9,12,
+	12,15,15,11,13,13,15,16,11,13,13,15,15,12,15,15,
+	16,16,13,15,14,17,15, 7,11,11,15,15,10,13,13,16,
+	15,10,13,13,15,16,14,15,15,17,19,13,15,14,15,18,
+	 9,12,12,16,16,11,13,14,17,16,11,13,13,17,16,15,
+	15,16,17,19,13,15,16, 0,18, 9,12,12,16,15,11,14,
+	13,17,17,11,13,14,16,16,15,16,16,19,18,13,15,15,
+	17,19,11,14,14,19,16,12,14,15, 0,18,12,16,15,18,
+	17,15,15,18,16,19,14,15,17,19,19,11,14,14,18,19,
+	13,15,14,19,19,12,16,15,18,17,15,17,15, 0,16,14,
+	17,16,19, 0, 7,11,11,14,14,10,12,12,15,15,10,13,
+	13,16,15,13,15,15,17, 0,14,15,15,16,19, 9,12,12,
+	16,16,11,14,14,16,16,11,13,13,16,16,14,17,16,19,
+	 0,14,18,17,17,19, 9,12,12,15,16,11,13,13,15,17,
+	12,14,13,19,16,13,15,15,17,19,15,17,16,17,19,11,
+	14,14,19,16,12,15,15,19,17,13,14,15,17,19,14,16,
+	17,19,19,16,15,16,17,19,11,15,14,16,16,12,15,15,
+	19, 0,12,14,15,19,19,14,16,16, 0,18,15,19,14,18,
+	16,
+};
+
+static float _vq_quantthresh__8u0__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8u0__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p3_0 = {
+	_vq_quantthresh__8u0__p3_0,
+	_vq_quantmap__8u0__p3_0,
+	5,
+	5
+};
+
+static static_codebook _8u0__p3_0 = {
+	4, 625,
+	_vq_lengthlist__8u0__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8u0__p3_0,
+	NULL,
+	&_vq_auxt__8u0__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8u0__p4_0[] = {
+	 3, 5, 5, 8, 8, 5, 6, 7, 9, 9, 6, 7, 6, 9, 9, 9,
+	 9, 9,10,11, 9, 9, 9,11,10, 6, 7, 7,10,10, 7, 7,
+	 8,10,10, 7, 8, 8,10,10,10,10,10,10,11, 9,10,10,
+	11,12, 6, 7, 7,10,10, 7, 8, 8,10,10, 7, 8, 7,10,
+	10, 9,10,10,12,11,10,10,10,11,10, 9,10,10,12,11,
+	10,10,10,13,11, 9,10,10,12,12,11,11,12,12,13,11,
+	11,11,12,13, 9,10,10,12,12,10,10,11,12,12,10,10,
+	11,12,12,11,11,11,13,13,11,12,12,13,13, 5, 7, 7,
+	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,11,12,
+	12,10,11,10,12,12, 7, 8, 8,11,11, 7, 8, 9,10,11,
+	 8, 9, 9,11,11,11,10,11,10,12,10,11,11,12,13, 7,
+	 8, 8,10,11, 8, 9, 8,12,10, 8, 9, 9,11,12,10,11,
+	10,13,11,10,11,11,13,12, 9,11,10,13,12,10,10,11,
+	12,12,10,11,11,13,13,12,10,13,11,14,11,12,12,15,
+	13, 9,11,11,13,13,10,11,11,13,12,10,11,11,12,14,
+	12,13,11,14,12,12,12,12,14,14, 5, 7, 7,10,10, 7,
+	 8, 8,10,10, 7, 8, 8,11,10,10,11,11,12,12,10,11,
+	10,12,12, 7, 8, 8,10,11, 8, 9, 9,12,11, 8, 8, 9,
+	10,11,10,11,11,12,13,11,10,11,11,13, 6, 8, 8,10,
+	11, 8, 9, 9,11,11, 7, 9, 7,11,10,10,11,11,12,12,
+	10,11,10,13,10, 9,11,10,13,12,10,12,11,13,13,10,
+	10,11,12,13,11,12,13,15,14,11,11,13,12,13, 9,10,
+	11,12,13,10,11,11,12,13,10,11,10,13,12,12,13,13,
+	13,14,12,12,11,14,11, 8,10,10,12,13,10,11,11,13,
+	13,10,11,10,13,13,12,13,14,15,14,12,12,12,14,13,
+	 9,10,10,13,12,10,10,12,13,13,10,11,11,15,12,12,
+	12,13,15,14,12,13,13,15,13, 9,10,11,12,13,10,12,
+	10,13,12,10,11,11,12,13,12,14,12,15,13,12,12,12,
+	15,14,11,12,11,14,13,11,11,12,14,14,12,13,13,14,
+	13,13,11,15,11,15,14,14,14,16,15,11,12,12,13,14,
+	11,13,11,14,14,12,12,13,14,15,12,14,12,15,12,13,
+	15,14,16,15, 8,10,10,12,12,10,10,10,12,13,10,11,
+	11,13,13,12,12,12,13,14,13,13,13,15,15, 9,10,10,
+	12,12,10,11,11,13,12,10,10,11,13,13,12,12,12,14,
+	14,12,12,13,15,14, 9,10,10,13,12,10,10,12,12,13,
+	10,11,10,13,13,12,13,13,14,14,12,13,12,14,13,11,
+	12,12,14,13,12,13,12,14,14,10,12,12,14,14,14,14,
+	14,16,14,13,12,14,12,15,10,12,12,14,15,12,13,13,
+	14,16,11,12,11,15,14,13,14,14,14,15,13,14,11,14,
+	12,
+};
+
+static float _vq_quantthresh__8u0__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8u0__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p4_0 = {
+	_vq_quantthresh__8u0__p4_0,
+	_vq_quantmap__8u0__p4_0,
+	5,
+	5
+};
+
+static static_codebook _8u0__p4_0 = {
+	4, 625,
+	_vq_lengthlist__8u0__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8u0__p4_0,
+	NULL,
+	&_vq_auxt__8u0__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8u0__p5_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 7, 8, 8,
+	10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 6, 8, 8, 9, 9,
+	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8,
+	 9, 9,10,10,12,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+	10,10,11,11,11,12,12,12, 9,10,10,11,11,12,12,12,
+	12,
+};
+
+static float _vq_quantthresh__8u0__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8u0__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p5_0 = {
+	_vq_quantthresh__8u0__p5_0,
+	_vq_quantmap__8u0__p5_0,
+	9,
+	9
+};
+
+static static_codebook _8u0__p5_0 = {
+	2, 81,
+	_vq_lengthlist__8u0__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8u0__p5_0,
+	NULL,
+	&_vq_auxt__8u0__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__8u0__p6_0[] = {
+	 1, 4, 4, 7, 7, 9, 9,11,11,12,12,16,16, 3, 6, 6,
+	 9, 9,11,11,12,12,13,14,18,16, 3, 6, 7, 9, 9,11,
+	11,13,12,14,14,17,16, 7, 9, 9,11,11,12,12,14,14,
+	14,14,17,16, 7, 9, 9,11,11,13,12,13,13,14,14,17,
+	 0, 9,11,11,12,13,14,14,14,13,15,14,17,17, 9,11,
+	11,12,12,14,14,13,14,14,15, 0, 0,11,12,12,15,14,
+	15,14,15,14,15,16,17, 0,11,12,13,13,13,14,14,15,
+	14,15,15, 0, 0,12,14,14,15,15,14,16,15,15,17,16,
+	 0,18,13,14,14,15,14,15,14,15,16,17,16, 0, 0,17,
+	17,18, 0,16,18,16, 0, 0, 0,17, 0, 0,16, 0, 0,16,
+	16, 0,15, 0,17, 0, 0, 0, 0,
+};
+
+static float _vq_quantthresh__8u0__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__8u0__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p6_0 = {
+	_vq_quantthresh__8u0__p6_0,
+	_vq_quantmap__8u0__p6_0,
+	13,
+	13
+};
+
+static static_codebook _8u0__p6_0 = {
+	2, 169,
+	_vq_lengthlist__8u0__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__8u0__p6_0,
+	NULL,
+	&_vq_auxt__8u0__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8u0__p6_1[] = {
+	 1, 4, 4, 6, 6, 4, 6, 5, 7, 7, 4, 5, 6, 7, 7, 6,
+	 7, 7, 7, 7, 6, 7, 7, 7, 7,
+};
+
+static float _vq_quantthresh__8u0__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8u0__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p6_1 = {
+	_vq_quantthresh__8u0__p6_1,
+	_vq_quantmap__8u0__p6_1,
+	5,
+	5
+};
+
+static static_codebook _8u0__p6_1 = {
+	2, 25,
+	_vq_lengthlist__8u0__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8u0__p6_1,
+	NULL,
+	&_vq_auxt__8u0__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8u0__p7_0[] = {
+	 1, 8, 8, 8, 8, 8, 8, 8, 8, 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, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7,
+};
+
+static float _vq_quantthresh__8u0__p7_0[] = {
+	-157.5, 157.5, 
+};
+
+static long _vq_quantmap__8u0__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p7_0 = {
+	_vq_quantthresh__8u0__p7_0,
+	_vq_quantmap__8u0__p7_0,
+	3,
+	3
+};
+
+static static_codebook _8u0__p7_0 = {
+	4, 81,
+	_vq_lengthlist__8u0__p7_0,
+	1, -518803456, 1628680192, 2, 0,
+	_vq_quantlist__8u0__p7_0,
+	NULL,
+	&_vq_auxt__8u0__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p7_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__8u0__p7_1[] = {
+	 1, 5, 5, 5, 5,10,10,11,11,11,11,11,11,11,11, 5,
+	 7, 6, 8, 8, 9,10,11,11,11,11,11,11,11,11, 6, 6,
+	 7, 9, 7,11,10,11,11,11,11,11,11,11,11, 5, 6, 6,
+	11, 8,11,11,11,11,11,11,11,11,11,11, 5, 6, 6, 9,
+	10,11,10,11,11,11,11,11,11,11,11, 7,10,10,11,11,
+	11,11,11,11,11,11,11,11,11,11, 7,11, 8,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,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,
+};
+
+static float _vq_quantthresh__8u0__p7_1[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__8u0__p7_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p7_1 = {
+	_vq_quantthresh__8u0__p7_1,
+	_vq_quantmap__8u0__p7_1,
+	15,
+	15
+};
+
+static static_codebook _8u0__p7_1 = {
+	2, 225,
+	_vq_lengthlist__8u0__p7_1,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__8u0__p7_1,
+	NULL,
+	&_vq_auxt__8u0__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u0__p7_2[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__8u0__p7_2[] = {
+	 1, 6, 5, 7, 7, 9, 9, 9, 9,10,12,12,10,11,11,10,
+	11,11,11,10,11, 6, 8, 8, 9, 9,10,10, 9,10,11,11,
+	10,11,11,11,11,10,11,11,11,11, 6, 7, 8, 9, 9, 9,
+	10,11,10,11,12,11,10,11,11,11,11,11,11,12,10, 8,
+	 9, 9,10, 9,10,10, 9,10,10,10,10,10, 9,10,10,10,
+	10, 9,10,10, 9, 9, 9, 9,10,10, 9, 9,10,10,11,10,
+	 9,12,10,11,10, 9,10,10,10, 8, 9, 9,10, 9,10, 9,
+	 9,10,10, 9,10, 9,11,10,10,10,10,10, 9,10, 8, 8,
+	 9, 9,10, 9,11, 9, 8, 9, 9,10,11,10,10,10,11,12,
+	 9, 9,11, 8, 9, 8,11,10,11,10,10, 9,11,10,10,10,
+	10,10,10,10,11,11,11,11, 8, 9, 9, 9,10,10,10,11,
+	11,12,11,12,11,10,10,10,12,11,11,11,10, 8,10, 9,
+	11,10,10,11,12,10,11,12,11,11,12,11,12,12,10,11,
+	11,10, 9, 9,10,11,12,10,10,10,11,10,11,11,10,12,
+	12,10,11,10,11,12,10, 9,10,10,11,10,11,11,11,11,
+	11,12,11,11,11, 9,11,10,11,10,11,10, 9, 9,10,11,
+	11,11,10,10,11,12,12,11,12,11,11,11,12,12,12,12,
+	11, 9,11,11,12,10,11,11,11,11,11,11,12,11,11,12,
+	11,11,11,10,11,11, 9,11,10,11,11,11,10,10,10,11,
+	11,11,12,10,11,10,11,11,11,11,12, 9,11,10,11,11,
+	10,10,11,11, 9,11,11,12,10,10,10,10,10,11,11,10,
+	 9,10,11,11,12,11,10,10,12,11,11,12,11,12,11,11,
+	10,10,11,11,10,12,11,10,11,10,11,10,10,10,11,11,
+	10,10,11,11,11,11,10,10,10,12,11,11,11,11,10, 9,
+	10,11,11,11,12,11,11,11,12,10,11,11,11, 9,10,11,
+	11,11,11,11,11,10,10,11,11,12,11,10,11,12,11,10,
+	10,11, 9,10,11,11,11,11,11,10,11,11,10,12,11,11,
+	11,12,11,11,11,10,10,11,11,
+};
+
+static float _vq_quantthresh__8u0__p7_2[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__8u0__p7_2[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u0__p7_2 = {
+	_vq_quantthresh__8u0__p7_2,
+	_vq_quantmap__8u0__p7_2,
+	21,
+	21
+};
+
+static static_codebook _8u0__p7_2 = {
+	2, 441,
+	_vq_lengthlist__8u0__p7_2,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__8u0__p7_2,
+	NULL,
+	&_vq_auxt__8u0__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__8u0__single[] = {
+	 4, 7,11, 9,12, 8, 7,10, 6, 4, 5, 5, 7, 5, 6,16,
+	 9, 5, 5, 6, 7, 7, 9,16, 7, 4, 6, 5, 7, 5, 7,17,
+	10, 7, 7, 8, 7, 7, 8,18, 7, 5, 6, 4, 5, 4, 5,15,
+	 7, 6, 7, 5, 6, 4, 5,15,12,13,18,12,17,11, 9,17,
+};
+
+static static_codebook _huff_book__8u0__single = {
+	2, 64,
+	_huff_lengthlist__8u0__single,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8u1__p1_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9,10, 7,
+	 9, 9, 5, 8, 8, 7,10, 9, 7, 9, 9, 5, 8, 8, 8,10,
+	10, 8,10,10, 7,10,10, 9,10,12,10,12,12, 7,10,10,
+	 9,12,11,10,12,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
+	10,10,10,12,12, 9,11,12, 7,10,10,10,12,12, 9,12,
+	10,
+};
+
+static float _vq_quantthresh__8u1__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__8u1__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p1_0 = {
+	_vq_quantthresh__8u1__p1_0,
+	_vq_quantmap__8u1__p1_0,
+	3,
+	3
+};
+
+static static_codebook _8u1__p1_0 = {
+	4, 81,
+	_vq_lengthlist__8u1__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__8u1__p1_0,
+	NULL,
+	&_vq_auxt__8u1__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8u1__p2_0[] = {
+	 3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 7, 6, 6, 7, 8, 6,
+	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 7, 8,
+	 8, 6, 7, 7, 6, 8, 7, 7, 7, 9, 8, 9, 9, 6, 7, 8,
+	 7, 9, 7, 8, 9, 9, 5, 6, 6, 6, 7, 7, 7, 8, 8, 6,
+	 8, 7, 8, 9, 9, 7, 7, 9, 6, 7, 8, 8, 9, 9, 7, 9,
+	 7,
+};
+
+static float _vq_quantthresh__8u1__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__8u1__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p2_0 = {
+	_vq_quantthresh__8u1__p2_0,
+	_vq_quantmap__8u1__p2_0,
+	3,
+	3
+};
+
+static static_codebook _8u1__p2_0 = {
+	4, 81,
+	_vq_lengthlist__8u1__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__8u1__p2_0,
+	NULL,
+	&_vq_auxt__8u1__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8u1__p3_0[] = {
+	 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
+	10, 9,11,11, 9, 9, 9,11,11, 6, 8, 8,10,10, 8,10,
+	10,11,11, 8, 9,10,11,11,10,11,11,12,12,10,11,11,
+	12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10, 9,11,
+	11,10,11,11,12,12,10,11,11,12,12, 9,11,11,14,13,
+	10,12,11,14,14,10,12,11,14,13,12,13,13,15,14,12,
+	13,13,15,14, 8,11,11,13,14,10,11,12,13,15,10,11,
+	12,14,14,12,13,13,14,15,12,13,13,14,15, 5, 8, 8,
+	11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
+	13,11,12,12,13,14, 8,10,10,12,12, 9,11,12,13,14,
+	10,12,12,13,13,12,12,13,14,14,11,13,13,15,15, 7,
+	10,10,12,12, 9,12,11,14,12,10,11,12,13,14,12,13,
+	12,14,14,12,13,13,15,16,10,12,12,15,14,11,12,13,
+	15,15,11,13,13,15,16,14,14,15,15,16,13,14,15,17,
+	15, 9,12,12,14,15,11,13,12,15,15,11,13,13,15,15,
+	13,14,13,15,14,13,14,14,17, 0, 5, 8, 8,11,11, 8,
+	10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
+	12,14,14, 7,10,10,12,12,10,12,12,13,13, 9,11,12,
+	12,13,11,12,13,15,15,11,12,13,14,15, 8,10,10,12,
+	12,10,12,11,13,13,10,12,11,13,13,11,13,13,15,14,
+	12,13,12,15,13, 9,12,12,14,14,11,13,13,16,15,11,
+	12,13,16,15,13,14,15,16,16,13,13,15,15,16,10,12,
+	12,15,14,11,13,13,14,16,11,13,13,15,16,13,15,15,
+	16,17,13,15,14,16,15, 8,11,11,14,15,10,12,12,15,
+	15,10,12,12,15,16,14,15,15,16,17,13,14,14,16,16,
+	 9,12,12,15,15,11,13,14,15,17,11,13,13,15,16,14,
+	15,16,19,17,13,15,15, 0,17, 9,12,12,15,15,11,14,
+	13,16,15,11,13,13,15,16,15,15,15,18,17,13,15,15,
+	17,17,11,15,14,18,16,12,14,15,17,17,12,15,15,18,
+	18,15,15,16,15,19,14,16,16, 0, 0,11,14,14,16,17,
+	12,15,14,18,17,12,15,15,18,18,15,17,15,18,16,14,
+	16,16,18,18, 7,11,11,14,14,10,12,12,15,15,10,12,
+	13,15,15,13,14,15,16,16,14,15,15,18,18, 9,12,12,
+	15,15,11,13,13,16,15,11,12,13,16,16,14,15,15,17,
+	16,15,16,16,17,17, 9,12,12,15,15,11,13,13,15,17,
+	11,14,13,16,15,13,15,15,17,17,15,15,15,18,17,11,
+	14,14,17,15,12,14,15,17,18,13,13,15,17,17,14,16,
+	16,19,18,16,15,17,17, 0,11,14,14,17,17,12,15,15,
+	18, 0,12,15,14,18,16,14,17,17,19, 0,16,18,15, 0,
+	16,
+};
+
+static float _vq_quantthresh__8u1__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8u1__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p3_0 = {
+	_vq_quantthresh__8u1__p3_0,
+	_vq_quantmap__8u1__p3_0,
+	5,
+	5
+};
+
+static static_codebook _8u1__p3_0 = {
+	4, 625,
+	_vq_lengthlist__8u1__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8u1__p3_0,
+	NULL,
+	&_vq_auxt__8u1__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__8u1__p4_0[] = {
+	 4, 5, 5, 9, 9, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 9,
+	 9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 7,
+	 8, 9,10, 7, 7, 8, 9,10, 9, 9,10,10,11, 9, 9,10,
+	10,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 7,10,
+	 9, 9,10, 9,12,11,10,10, 9,12,10, 9,10,10,12,11,
+	 9,10,10,12,11, 9,10,10,12,12,11,11,12,12,13,11,
+	11,12,12,13, 9, 9,10,12,11, 9,10,10,12,12,10,10,
+	10,12,12,11,12,11,13,12,11,12,11,13,12, 6, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 7,10, 9,10,10,10,12,
+	12,10,10,10,12,11, 7, 8, 7,10,10, 7, 7, 9,10,11,
+	 8, 9, 9,11,10,10,10,11,10,12,10,10,11,12,12, 7,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 8, 9,11,11,10,11,
+	10,12,11,10,11,11,12,12, 9,10,10,12,12, 9,10,10,
+	12,12,10,11,11,13,12,11,10,12,10,14,12,12,12,13,
+	14, 9,10,10,12,12, 9,11,10,12,12,10,11,11,12,12,
+	11,12,11,14,12,12,12,12,14,14, 5, 7, 7, 9, 9, 7,
+	 7, 7, 9,10, 7, 8, 8,10,10,10,10,10,11,11,10,10,
+	10,12,12, 7, 8, 8,10,10, 8, 9, 8,11,10, 7, 8, 9,
+	10,11,10,10,10,11,12,10,10,11,11,13, 6, 7, 8,10,
+	10, 8, 9, 9,10,10, 7, 9, 7,11,10,10,11,10,12,12,
+	10,11,10,12,10, 9,10,10,12,12,10,11,11,13,12, 9,
+	10,10,12,12,12,12,12,14,13,11,11,12,11,14, 9,10,
+	10,11,12,10,11,11,12,13, 9,10,10,12,12,12,12,12,
+	14,13,11,12,10,14,11, 9, 9,10,11,12, 9,10,10,12,
+	12, 9,10,10,12,12,12,12,12,14,14,11,12,12,13,12,
+	 9,10, 9,12,12, 9,10,11,12,13,10,11,10,13,11,12,
+	12,13,13,14,12,12,12,13,13, 9,10,10,12,12,10,11,
+	10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,12,
+	13,14,11,12,11,14,13,10,10,11,13,13,12,12,12,14,
+	13,12,10,14,10,15,13,14,14,14,14,11,11,12,13,14,
+	10,12,11,13,13,12,12,12,13,15,12,13,11,15,12,13,
+	13,14,14,14, 9,10, 9,12,12, 9,10,10,12,12,10,10,
+	10,12,12,11,11,12,12,13,12,12,12,14,14, 9,10,10,
+	12,12,10,11,10,13,12,10,10,11,12,13,12,12,12,14,
+	13,12,12,13,13,14, 9,10,10,12,13,10,10,11,11,12,
+	 9,11,10,13,12,12,12,12,13,14,12,13,12,14,13,11,
+	12,11,13,13,12,13,12,14,13,10,11,12,13,13,13,13,
+	13,14,15,12,11,14,12,14,11,11,12,12,13,12,12,12,
+	13,14,10,12,10,14,13,13,13,13,14,15,12,14,11,15,
+	10,
+};
+
+static float _vq_quantthresh__8u1__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__8u1__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p4_0 = {
+	_vq_quantthresh__8u1__p4_0,
+	_vq_quantmap__8u1__p4_0,
+	5,
+	5
+};
+
+static static_codebook _8u1__p4_0 = {
+	4, 625,
+	_vq_lengthlist__8u1__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__8u1__p4_0,
+	NULL,
+	&_vq_auxt__8u1__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8u1__p5_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 5, 8, 7, 8, 8,
+	10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
+	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
+	 9, 9,10,10,12,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
+	10,10,11,11,11,11,13,12, 9,10,10,11,11,12,12,12,
+	13,
+};
+
+static float _vq_quantthresh__8u1__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8u1__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p5_0 = {
+	_vq_quantthresh__8u1__p5_0,
+	_vq_quantmap__8u1__p5_0,
+	9,
+	9
+};
+
+static static_codebook _8u1__p5_0 = {
+	2, 81,
+	_vq_lengthlist__8u1__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8u1__p5_0,
+	NULL,
+	&_vq_auxt__8u1__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p6_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__8u1__p6_0[] = {
+	 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7,
+	 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7,
+	 8, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
+	 8, 8, 8, 9,10,10, 7, 7, 7, 8, 8, 9, 8,10,10, 9,
+	 9, 9, 9, 9,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__8u1__p6_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__8u1__p6_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p6_0 = {
+	_vq_quantthresh__8u1__p6_0,
+	_vq_quantmap__8u1__p6_0,
+	9,
+	9
+};
+
+static static_codebook _8u1__p6_0 = {
+	2, 81,
+	_vq_lengthlist__8u1__p6_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__8u1__p6_0,
+	NULL,
+	&_vq_auxt__8u1__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__8u1__p7_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,10,10, 8,
+	10,10, 5, 9, 9, 7,10,10, 8,10,10, 4,10,10, 9,12,
+	12, 9,11,11, 7,12,11,10,11,13,10,13,13, 7,12,12,
+	10,13,12,10,13,13, 4,10,10, 9,12,12, 9,12,12, 7,
+	12,12,10,13,13,10,12,13, 7,11,12,10,13,13,10,13,
+	11,
+};
+
+static float _vq_quantthresh__8u1__p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__8u1__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p7_0 = {
+	_vq_quantthresh__8u1__p7_0,
+	_vq_quantmap__8u1__p7_0,
+	3,
+	3
+};
+
+static static_codebook _8u1__p7_0 = {
+	4, 81,
+	_vq_lengthlist__8u1__p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__8u1__p7_0,
+	NULL,
+	&_vq_auxt__8u1__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__8u1__p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
+	 8, 8, 9, 9, 9, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9,
+	 9, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9,
+	 9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
+	10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
+	 9, 9, 9, 9, 9,10,10,10,10,
+};
+
+static float _vq_quantthresh__8u1__p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__8u1__p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p7_1 = {
+	_vq_quantthresh__8u1__p7_1,
+	_vq_quantmap__8u1__p7_1,
+	11,
+	11
+};
+
+static static_codebook _8u1__p7_1 = {
+	2, 121,
+	_vq_lengthlist__8u1__p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__8u1__p7_1,
+	NULL,
+	&_vq_auxt__8u1__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p8_0[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__8u1__p8_0[] = {
+	 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
+	 9, 9,11,11,13,12, 4, 6, 6, 7, 7, 9, 9,11,11,12,
+	12, 6, 7, 7, 9, 9,11,11,12,12,13,13, 6, 7, 7, 9,
+	 9,11,11,12,12,13,13, 8, 9, 9,11,11,12,12,13,13,
+	14,14, 8, 9, 9,11,11,12,12,13,13,14,14, 9,11,11,
+	12,12,13,13,14,14,15,15, 9,11,11,12,12,13,13,14,
+	14,15,14,11,12,12,13,13,14,14,15,15,16,16,11,12,
+	12,13,13,14,14,15,15,15,15,
+};
+
+static float _vq_quantthresh__8u1__p8_0[] = {
+	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
+	38.5, 49.5, 
+};
+
+static long _vq_quantmap__8u1__p8_0[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p8_0 = {
+	_vq_quantthresh__8u1__p8_0,
+	_vq_quantmap__8u1__p8_0,
+	11,
+	11
+};
+
+static static_codebook _8u1__p8_0 = {
+	2, 121,
+	_vq_lengthlist__8u1__p8_0,
+	1, -524582912, 1618345984, 4, 0,
+	_vq_quantlist__8u1__p8_0,
+	NULL,
+	&_vq_auxt__8u1__p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p8_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__8u1__p8_1[] = {
+	 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7,
+	 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8,
+	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 9, 8, 9, 9, 7, 8, 8, 8, 8, 8, 8, 9,
+	 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8,
+	 8, 8, 8, 8, 8, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__8u1__p8_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__8u1__p8_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p8_1 = {
+	_vq_quantthresh__8u1__p8_1,
+	_vq_quantmap__8u1__p8_1,
+	11,
+	11
+};
+
+static static_codebook _8u1__p8_1 = {
+	2, 121,
+	_vq_lengthlist__8u1__p8_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__8u1__p8_1,
+	NULL,
+	&_vq_auxt__8u1__p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p9_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__8u1__p9_0[] = {
+	 1, 4, 4,11,11,11,11,11,11,11,11,11,11,11,11, 3,
+	11, 8,11,11,11,11,11,11,11,11,11,11,11,11, 3, 9,
+	 9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,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,
+};
+
+static float _vq_quantthresh__8u1__p9_0[] = {
+	-1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 
+	382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5, 
+};
+
+static long _vq_quantmap__8u1__p9_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p9_0 = {
+	_vq_quantthresh__8u1__p9_0,
+	_vq_quantmap__8u1__p9_0,
+	15,
+	15
+};
+
+static static_codebook _8u1__p9_0 = {
+	2, 225,
+	_vq_lengthlist__8u1__p9_0,
+	1, -514071552, 1627381760, 4, 0,
+	_vq_quantlist__8u1__p9_0,
+	NULL,
+	&_vq_auxt__8u1__p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__8u1__p9_1[] = {
+	 1, 4, 4, 7, 7, 9, 9, 7, 7, 8, 8,10,10,11,11, 4,
+	 7, 7, 9, 9,10,10, 8, 8,10,10,10,11,10,11, 4, 7,
+	 7, 9, 9,10,10, 8, 8,10, 9,11,11,11,11, 7, 9, 9,
+	12,12,11,12,10,10,11,10,12,11,11,11, 7, 9, 9,11,
+	11,13,12, 9, 9,11,10,11,11,12,11, 9,10,10,12,12,
+	14,14,10,10,11,12,12,11,11,11, 9,10,11,11,13,14,
+	13,10,11,11,11,12,11,12,12, 7, 8, 8,10, 9,11,10,
+	11,12,12,11,12,14,12,13, 7, 8, 8, 9,10,10,11,12,
+	12,12,11,12,12,12,13, 9, 9, 9,11,11,13,12,12,12,
+	12,11,12,12,13,12, 8,10,10,11,10,11,12,12,12,12,
+	12,12,14,12,12, 9,11,11,11,12,12,12,12,13,13,12,
+	12,13,13,12,10,11,11,12,11,12,12,12,11,12,13,12,
+	12,12,13,11,11,12,12,12,13,12,12,11,12,13,13,12,
+	12,13,12,11,12,12,13,13,12,13,12,13,13,13,13,14,
+	13,
+};
+
+static float _vq_quantthresh__8u1__p9_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__8u1__p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p9_1 = {
+	_vq_quantthresh__8u1__p9_1,
+	_vq_quantmap__8u1__p9_1,
+	15,
+	15
+};
+
+static static_codebook _8u1__p9_1 = {
+	2, 225,
+	_vq_lengthlist__8u1__p9_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__8u1__p9_1,
+	NULL,
+	&_vq_auxt__8u1__p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__8u1__p9_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__8u1__p9_2[] = {
+	 2, 5, 4, 6, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,10,10, 9, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10, 8, 8, 8, 9, 9, 9, 9,10,10,10, 9,
+	10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,10,
+	10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,10,
+	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__8u1__p9_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__8u1__p9_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__8u1__p9_2 = {
+	_vq_quantthresh__8u1__p9_2,
+	_vq_quantmap__8u1__p9_2,
+	17,
+	17
+};
+
+static static_codebook _8u1__p9_2 = {
+	2, 289,
+	_vq_lengthlist__8u1__p9_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__8u1__p9_2,
+	NULL,
+	&_vq_auxt__8u1__p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__8u1__single[] = {
+	 4, 7,13, 9,15, 9,16, 8,10,13, 7, 5, 8, 6, 9, 7,
+	10, 7,10,11,11, 6, 7, 8, 8, 9, 9, 9,12,16, 8, 5,
+	 8, 6, 8, 6, 9, 7,10,12,11, 7, 7, 7, 6, 7, 7, 7,
+	11,15, 7, 5, 8, 6, 7, 5, 7, 6, 9,13,13, 9, 9, 8,
+	 6, 6, 5, 5, 9,14, 8, 6, 8, 6, 6, 4, 5, 3, 5,13,
+	 9, 9,11, 8,10, 7, 8, 4, 5,12,11,16,17,15,17,12,
+	13, 8, 8,15,
+};
+
+static static_codebook _huff_book__8u1__single = {
+	2, 100,
+	_huff_lengthlist__8u1__single,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u0__long[] = {
+	 5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16,
+	13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18,
+	15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17,
+	 9, 8,10, 8,10, 5, 4,11,12,17,19,14,16,10, 7,12,
+};
+
+static static_codebook _huff_book__44u0__long = {
+	2, 64,
+	_huff_lengthlist__44u0__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u0__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
+	10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+	11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11,
+	10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,12, 8,
+	11,11,11,13,13,10,12,13, 8,11,11,11,14,13,11,14,
+	13,
+};
+
+static float _vq_quantthresh__44u0__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u0__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p1_0 = {
+	_vq_quantthresh__44u0__p1_0,
+	_vq_quantmap__44u0__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u0__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u0__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u0__p1_0,
+	NULL,
+	&_vq_auxt__44u0__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u0__p2_0[] = {
+	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
+	 8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8,
+	 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+	 8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
+	 8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+	 9,
+};
+
+static float _vq_quantthresh__44u0__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u0__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p2_0 = {
+	_vq_quantthresh__44u0__p2_0,
+	_vq_quantmap__44u0__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u0__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u0__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u0__p2_0,
+	NULL,
+	&_vq_auxt__44u0__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u0__p3_0[] = {
+	 1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
+	10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10,
+	10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11,
+	13,13, 5, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
+	11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
+	10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,
+	14,13,17,15, 9,11,11,14,15,10,11,12,14,16,10,11,
+	12,14,16,12,13,14,16,16,13,13,15,15,18, 5, 8, 8,
+	11,11, 8,10,10,12,12, 8,10,10,12,13,11,12,12,14,
+	14,11,12,12,15,15, 8,10,10,13,13,10,12,12,13,13,
+	10,12,12,14,14,12,13,13,15,15,12,13,13,16,16, 7,
+	10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,
+	12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,
+	16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,
+	19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,
+	14,15,15,17,17,14,15,15,17,19, 5, 8, 8,11,11, 8,
+	10,10,12,12, 8,10,10,12,12,11,12,12,16,15,11,12,
+	12,14,15, 7,10,10,13,13,10,12,12,14,13,10,11,12,
+	13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,13,
+	13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,
+	12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,
+	12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,
+	12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,
+	17,19,14,15,15,17,17, 8,11,11,16,16,10,13,12,17,
+	17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,
+	 9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,
+	17,18,19,19,15,16,16,19,19, 9,12,12,16,17,11,14,
+	13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,
+	18,18,12,15,15,19,17,14,15,16, 0,20,13,15,16,20,
+	17,18,16,20, 0, 0,15,16,19,20, 0,12,15,14,18,19,
+	13,16,15,20,19,13,16,15,20,18,17,18,17, 0,20,16,
+	17,16, 0, 0, 8,11,11,16,15,10,12,12,17,17,10,13,
+	13,17,16,14,16,15,18,20,15,16,16,19,19, 9,12,12,
+	16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,
+	20,16,16,17,19,19, 9,13,12,16,17,11,14,13,17,17,
+	11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,
+	14,15,19,18,13,15,16,18, 0,13,14,15, 0, 0,16,16,
+	17,20, 0,17,17,20,20, 0,12,15,15,19,20,13,15,15,
+	 0, 0,14,16,15, 0, 0,15,18,16, 0, 0,17,18,16, 0,
+	19,
+};
+
+static float _vq_quantthresh__44u0__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u0__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p3_0 = {
+	_vq_quantthresh__44u0__p3_0,
+	_vq_quantmap__44u0__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u0__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u0__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u0__p3_0,
+	NULL,
+	&_vq_auxt__44u0__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u0__p4_0[] = {
+	 4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9,
+	10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7,
+	 8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10,
+	12,13, 5, 7, 7,10,10, 6, 8, 7,10,10, 7, 8, 7,10,
+	10, 9,10,10,12,12,10,10,10,13,11, 9,10,10,13,13,
+	10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,
+	12,13,14,14, 9,10,10,13,13,10,10,10,13,13,10,10,
+	10,13,13,12,13,12,15,14,12,13,12,15,15, 5, 7, 6,
+	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13,
+	13,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
+	 8, 9, 9,11,11,11,10,11,11,14,11,11,11,13,13, 6,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,
+	14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,
+	15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,
+	12,13,12,15,13,13,13,14,15,16, 5, 7, 7,10,10, 7,
+	 8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,13,10,10,
+	11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,11,13, 6, 8, 8,10,
+	11, 8, 9, 9,11,11, 8, 9, 8,12,10,10,11,11,13,13,
+	10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,
+	10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,
+	11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,
+	16,16,12,13,11,15,12, 9,10,10,13,13,10,11,11,14,
+	13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,
+	 9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,
+	13,14,14,18,13,13,14,16,15, 9,10,10,13,14,10,11,
+	10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,
+	15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,
+	15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,
+	11,13,11,16,15,12,13,14,15,16,14,15,13, 0,14,14,
+	16,16, 0, 0, 9,10,10,13,13,10,11,10,14,14,10,11,
+	11,13,13,12,13,13,14,16,13,14,14,16,16, 9,10,10,
+	14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,
+	16,13,13,14,14,17, 9,10,10,13,14,10,11,11,13,15,
+	10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,
+	13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,
+	16,18,16,15,13,15,14, 0,12,12,13,14,16,13,13,14,
+	15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,
+	12,
+};
+
+static float _vq_quantthresh__44u0__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u0__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p4_0 = {
+	_vq_quantthresh__44u0__p4_0,
+	_vq_quantmap__44u0__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u0__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u0__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u0__p4_0,
+	NULL,
+	&_vq_auxt__44u0__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u0__p5_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+	 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
+	 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8,
+	 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+	 9, 9,10,10,11,11,12,12, 9, 9, 9,10,11,11,11,12,
+	12,
+};
+
+static float _vq_quantthresh__44u0__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u0__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p5_0 = {
+	_vq_quantthresh__44u0__p5_0,
+	_vq_quantmap__44u0__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u0__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u0__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u0__p5_0,
+	NULL,
+	&_vq_auxt__44u0__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u0__p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5,
+	 8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
+	 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+	12,12,16,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
+	15, 9,10,10,10,10,11,11,12,12,12,12,15,15, 9,10,
+	 9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,
+	12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,
+	12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,
+	17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,
+	15,15,15,15,16,16,16,16,17,18, 0, 0,14,15,15,15,
+	15,17,16,17,18,17,17,18, 0,
+};
+
+static float _vq_quantthresh__44u0__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u0__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p6_0 = {
+	_vq_quantthresh__44u0__p6_0,
+	_vq_quantmap__44u0__p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u0__p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u0__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u0__p6_0,
+	NULL,
+	&_vq_auxt__44u0__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u0__p6_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+	 6, 6, 6, 6, 5, 6, 6, 6, 6,
+};
+
+static float _vq_quantthresh__44u0__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u0__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p6_1 = {
+	_vq_quantthresh__44u0__p6_1,
+	_vq_quantmap__44u0__p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u0__p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u0__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u0__p6_1,
+	NULL,
+	&_vq_auxt__44u0__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p7_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u0__p7_0[] = {
+	 1, 4, 4,11,11, 9,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11, 9,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,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,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,
+	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,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,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,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,10,10,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44u0__p7_0[] = {
+	-253.5, -84.5, 84.5, 253.5, 
+};
+
+static long _vq_quantmap__44u0__p7_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p7_0 = {
+	_vq_quantthresh__44u0__p7_0,
+	_vq_quantmap__44u0__p7_0,
+	5,
+	5
+};
+
+static static_codebook _44u0__p7_0 = {
+	4, 625,
+	_vq_lengthlist__44u0__p7_0,
+	1, -518709248, 1626677248, 3, 0,
+	_vq_quantlist__44u0__p7_0,
+	NULL,
+	&_vq_auxt__44u0__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p7_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u0__p7_1[] = {
+	 1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7,
+	 8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7,
+	 7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10,
+	12,12,15,12, 6, 8, 8, 9, 9, 9, 9,11,11,12,11,14,
+	12, 7, 8, 8,10,10,12,12,13,13,13,15,13,13, 7, 8,
+	 8,10,10,11,11,13,12,14,15,15,15, 9,10,10,11,12,
+	13,13,14,15,14,15,14,15, 8,10,10,12,12,14,14,15,
+	14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,
+	15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,
+	15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,
+	15,15,15,15,15,15,15,15,15,
+};
+
+static float _vq_quantthresh__44u0__p7_1[] = {
+	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
+	32.5, 45.5, 58.5, 71.5, 
+};
+
+static long _vq_quantmap__44u0__p7_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p7_1 = {
+	_vq_quantthresh__44u0__p7_1,
+	_vq_quantmap__44u0__p7_1,
+	13,
+	13
+};
+
+static static_codebook _44u0__p7_1 = {
+	2, 169,
+	_vq_lengthlist__44u0__p7_1,
+	1, -523010048, 1618608128, 4, 0,
+	_vq_quantlist__44u0__p7_1,
+	NULL,
+	&_vq_auxt__44u0__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u0__p7_2[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u0__p7_2[] = {
+	 2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8,
+	 9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8,
+	 8, 9, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
+	 9, 9, 9,10, 9, 9,10,10, 9,
+};
+
+static float _vq_quantthresh__44u0__p7_2[] = {
+	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
+	2.5, 3.5, 4.5, 5.5, 
+};
+
+static long _vq_quantmap__44u0__p7_2[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u0__p7_2 = {
+	_vq_quantthresh__44u0__p7_2,
+	_vq_quantmap__44u0__p7_2,
+	13,
+	13
+};
+
+static static_codebook _44u0__p7_2 = {
+	2, 169,
+	_vq_lengthlist__44u0__p7_2,
+	1, -531103744, 1611661312, 4, 0,
+	_vq_quantlist__44u0__p7_2,
+	NULL,
+	&_vq_auxt__44u0__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u0__short[] = {
+	12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16,
+	 4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16,
+	 6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16,
+	11, 7, 3, 6, 4, 5, 8,16,12, 9, 4, 8, 5, 7, 9,16,
+};
+
+static static_codebook _huff_book__44u0__short = {
+	2, 64,
+	_huff_lengthlist__44u0__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u1__long[] = {
+	 5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16,
+	13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18,
+	15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17,
+	 9, 8,10, 8,10, 5, 4,11,12,17,19,14,16,10, 7,12,
+};
+
+static static_codebook _huff_book__44u1__long = {
+	2, 64,
+	_huff_lengthlist__44u1__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u1__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
+	10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+	11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11,
+	10,13,12,11,13,14, 4, 8, 8, 8,11,11, 8,11,12, 8,
+	11,11,11,13,13,10,12,13, 8,11,11,11,14,13,11,14,
+	13,
+};
+
+static float _vq_quantthresh__44u1__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u1__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p1_0 = {
+	_vq_quantthresh__44u1__p1_0,
+	_vq_quantmap__44u1__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u1__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u1__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u1__p1_0,
+	NULL,
+	&_vq_auxt__44u1__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u1__p2_0[] = {
+	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
+	 8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8,
+	 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+	 8,10, 8, 8,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 8, 6,
+	 8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+	 9,
+};
+
+static float _vq_quantthresh__44u1__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u1__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p2_0 = {
+	_vq_quantthresh__44u1__p2_0,
+	_vq_quantmap__44u1__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u1__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u1__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u1__p2_0,
+	NULL,
+	&_vq_auxt__44u1__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u1__p3_0[] = {
+	 1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
+	10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10,
+	10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11,
+	13,13, 5, 8, 8,10,10, 8,10,10,11,11, 8,10,10,11,
+	11,10,11,11,13,13,10,11,11,13,13, 9,11,11,15,14,
+	10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,
+	14,13,17,15, 9,11,11,14,15,10,11,12,14,16,10,11,
+	12,14,16,12,13,14,16,16,13,13,15,15,18, 5, 8, 8,
+	11,11, 8,10,10,12,12, 8,10,10,12,13,11,12,12,14,
+	14,11,12,12,15,15, 8,10,10,13,13,10,12,12,13,13,
+	10,12,12,14,14,12,13,13,15,15,12,13,13,16,16, 7,
+	10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,
+	12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,
+	16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,
+	19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,
+	14,15,15,17,17,14,15,15,17,19, 5, 8, 8,11,11, 8,
+	10,10,12,12, 8,10,10,12,12,11,12,12,16,15,11,12,
+	12,14,15, 7,10,10,13,13,10,12,12,14,13,10,11,12,
+	13,13,12,13,13,16,16,12,12,13,15,15, 8,10,10,13,
+	13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,
+	12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,
+	12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,
+	12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,
+	17,19,14,15,15,17,17, 8,11,11,16,16,10,13,12,17,
+	17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,
+	 9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,
+	17,18,19,19,15,16,16,19,19, 9,12,12,16,17,11,14,
+	13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,
+	18,18,12,15,15,19,17,14,15,16, 0,20,13,15,16,20,
+	17,18,16,20, 0, 0,15,16,19,20, 0,12,15,14,18,19,
+	13,16,15,20,19,13,16,15,20,18,17,18,17, 0,20,16,
+	17,16, 0, 0, 8,11,11,16,15,10,12,12,17,17,10,13,
+	13,17,16,14,16,15,18,20,15,16,16,19,19, 9,12,12,
+	16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,
+	20,16,16,17,19,19, 9,13,12,16,17,11,14,13,17,17,
+	11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,
+	14,15,19,18,13,15,16,18, 0,13,14,15, 0, 0,16,16,
+	17,20, 0,17,17,20,20, 0,12,15,15,19,20,13,15,15,
+	 0, 0,14,16,15, 0, 0,15,18,16, 0, 0,17,18,16, 0,
+	19,
+};
+
+static float _vq_quantthresh__44u1__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u1__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p3_0 = {
+	_vq_quantthresh__44u1__p3_0,
+	_vq_quantmap__44u1__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u1__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u1__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u1__p3_0,
+	NULL,
+	&_vq_auxt__44u1__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u1__p4_0[] = {
+	 4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9,
+	10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7,
+	 8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10,
+	12,13, 5, 7, 7,10,10, 6, 8, 7,10,10, 7, 8, 7,10,
+	10, 9,10,10,12,12,10,10,10,13,11, 9,10,10,13,13,
+	10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,
+	12,13,14,14, 9,10,10,13,13,10,10,10,13,13,10,10,
+	10,13,13,12,13,12,15,14,12,13,12,15,15, 5, 7, 6,
+	10,10, 7, 8, 8,10,10, 7, 8, 8,10,10,10,11,10,13,
+	13,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,10,11,
+	 8, 9, 9,11,11,11,10,11,11,14,11,11,11,13,13, 6,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,
+	14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,
+	15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,
+	12,13,12,15,13,13,13,14,15,16, 5, 7, 7,10,10, 7,
+	 8, 8,10,10, 7, 8, 8,10,10,10,10,10,13,13,10,10,
+	11,12,13, 6, 8, 8,11,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,11,13, 6, 8, 8,10,
+	11, 8, 9, 9,11,11, 8, 9, 8,12,10,10,11,11,13,13,
+	10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,
+	10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,
+	11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,
+	16,16,12,13,11,15,12, 9,10,10,13,13,10,11,11,14,
+	13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,
+	 9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,
+	13,14,14,18,13,13,14,16,15, 9,10,10,13,14,10,11,
+	10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,
+	15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,
+	15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,
+	11,13,11,16,15,12,13,14,15,16,14,15,13, 0,14,14,
+	16,16, 0, 0, 9,10,10,13,13,10,11,10,14,14,10,11,
+	11,13,13,12,13,13,14,16,13,14,14,16,16, 9,10,10,
+	14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,
+	16,13,13,14,14,17, 9,10,10,13,14,10,11,11,13,15,
+	10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,
+	13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,
+	16,18,16,15,13,15,14, 0,12,12,13,14,16,13,13,14,
+	15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,
+	12,
+};
+
+static float _vq_quantthresh__44u1__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u1__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p4_0 = {
+	_vq_quantthresh__44u1__p4_0,
+	_vq_quantmap__44u1__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u1__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u1__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u1__p4_0,
+	NULL,
+	&_vq_auxt__44u1__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u1__p5_0[] = {
+	 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8,
+	 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9,
+	 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8,
+	 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+	 9, 9,10,10,11,11,12,12, 9, 9, 9,10,11,11,11,12,
+	12,
+};
+
+static float _vq_quantthresh__44u1__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u1__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p5_0 = {
+	_vq_quantthresh__44u1__p5_0,
+	_vq_quantmap__44u1__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u1__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u1__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u1__p5_0,
+	NULL,
+	&_vq_auxt__44u1__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u1__p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5,
+	 8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9,
+	 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+	12,12,16,15, 7, 8, 8, 9, 9,10,10,11,11,12,12,15,
+	15, 9,10,10,10,10,11,11,12,12,12,12,15,15, 9,10,
+	 9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,
+	12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,
+	12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,
+	17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,
+	15,15,15,15,16,16,16,16,17,18, 0, 0,14,15,15,15,
+	15,17,16,17,18,17,17,18, 0,
+};
+
+static float _vq_quantthresh__44u1__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u1__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p6_0 = {
+	_vq_quantthresh__44u1__p6_0,
+	_vq_quantmap__44u1__p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u1__p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u1__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u1__p6_0,
+	NULL,
+	&_vq_auxt__44u1__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u1__p6_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+	 6, 6, 6, 6, 5, 6, 6, 6, 6,
+};
+
+static float _vq_quantthresh__44u1__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u1__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p6_1 = {
+	_vq_quantthresh__44u1__p6_1,
+	_vq_quantmap__44u1__p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u1__p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u1__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u1__p6_1,
+	NULL,
+	&_vq_auxt__44u1__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p7_0[] = {
+	3,
+	2,
+	4,
+	1,
+	5,
+	0,
+	6,
+};
+
+static long _vq_lengthlist__44u1__p7_0[] = {
+	 1, 3, 2, 9, 9, 7, 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,
+};
+
+static float _vq_quantthresh__44u1__p7_0[] = {
+	-422.5, -253.5, -84.5, 84.5, 253.5, 422.5, 
+};
+
+static long _vq_quantmap__44u1__p7_0[] = {
+	    5,    3,    1,    0,    2,    4,    6,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p7_0 = {
+	_vq_quantthresh__44u1__p7_0,
+	_vq_quantmap__44u1__p7_0,
+	7,
+	7
+};
+
+static static_codebook _44u1__p7_0 = {
+	2, 49,
+	_vq_lengthlist__44u1__p7_0,
+	1, -518017024, 1626677248, 3, 0,
+	_vq_quantlist__44u1__p7_0,
+	NULL,
+	&_vq_auxt__44u1__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p7_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u1__p7_1[] = {
+	 1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7,
+	 8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7,
+	 7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10,
+	12,12,15,12, 6, 8, 8, 9, 9, 9, 9,11,11,12,11,14,
+	12, 7, 8, 8,10,10,12,12,13,13,13,15,13,13, 7, 8,
+	 8,10,10,11,11,13,12,14,15,15,15, 9,10,10,11,12,
+	13,13,14,15,14,15,14,15, 8,10,10,12,12,14,14,15,
+	14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,
+	15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,
+	15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,
+	15,15,15,15,15,15,15,15,15,
+};
+
+static float _vq_quantthresh__44u1__p7_1[] = {
+	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
+	32.5, 45.5, 58.5, 71.5, 
+};
+
+static long _vq_quantmap__44u1__p7_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p7_1 = {
+	_vq_quantthresh__44u1__p7_1,
+	_vq_quantmap__44u1__p7_1,
+	13,
+	13
+};
+
+static static_codebook _44u1__p7_1 = {
+	2, 169,
+	_vq_lengthlist__44u1__p7_1,
+	1, -523010048, 1618608128, 4, 0,
+	_vq_quantlist__44u1__p7_1,
+	NULL,
+	&_vq_auxt__44u1__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u1__p7_2[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u1__p7_2[] = {
+	 2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8,
+	 9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, 8,
+	 8, 9, 8, 9, 8, 9, 9, 9, 9, 9, 9, 8, 9, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9,10, 9,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9, 9, 9, 9, 9,
+	 9, 9, 9,10, 9, 9,10,10, 9,
+};
+
+static float _vq_quantthresh__44u1__p7_2[] = {
+	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
+	2.5, 3.5, 4.5, 5.5, 
+};
+
+static long _vq_quantmap__44u1__p7_2[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u1__p7_2 = {
+	_vq_quantthresh__44u1__p7_2,
+	_vq_quantmap__44u1__p7_2,
+	13,
+	13
+};
+
+static static_codebook _44u1__p7_2 = {
+	2, 169,
+	_vq_lengthlist__44u1__p7_2,
+	1, -531103744, 1611661312, 4, 0,
+	_vq_quantlist__44u1__p7_2,
+	NULL,
+	&_vq_auxt__44u1__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u1__short[] = {
+	12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16,
+	 4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16,
+	 6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16,
+	11, 7, 3, 6, 4, 5, 8,16,12, 9, 4, 8, 5, 7, 9,16,
+};
+
+static static_codebook _huff_book__44u1__short = {
+	2, 64,
+	_huff_lengthlist__44u1__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u2__long[] = {
+	 5, 9,14,12,15,13,10,13, 7, 4, 5, 6, 8, 7, 8,12,
+	13, 4, 3, 5, 5, 6, 9,15,12, 6, 5, 6, 6, 6, 7,14,
+	14, 7, 4, 6, 4, 6, 8,15,12, 6, 6, 5, 5, 5, 6,14,
+	 9, 7, 8, 6, 7, 5, 4,10,10,13,14,14,15,10, 6, 8,
+};
+
+static static_codebook _huff_book__44u2__long = {
+	2, 64,
+	_huff_lengthlist__44u2__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u2__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8,
+	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+	11, 8,11,11, 8,11,11,11,13,14,11,13,13, 7,11,11,
+	10,13,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 8,
+	11,11,11,14,13,10,12,13, 8,11,11,11,13,13,11,13,
+	13,
+};
+
+static float _vq_quantthresh__44u2__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u2__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p1_0 = {
+	_vq_quantthresh__44u2__p1_0,
+	_vq_quantmap__44u2__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u2__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u2__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u2__p1_0,
+	NULL,
+	&_vq_auxt__44u2__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u2__p2_0[] = {
+	 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
+	 8, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8,
+	 8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+	 7,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
+	 8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+	 9,
+};
+
+static float _vq_quantthresh__44u2__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u2__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p2_0 = {
+	_vq_quantthresh__44u2__p2_0,
+	_vq_quantmap__44u2__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u2__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u2__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u2__p2_0,
+	NULL,
+	&_vq_auxt__44u2__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u2__p3_0[] = {
+	 2, 4, 4, 7, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
+	 9, 9,12,11, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9,
+	 9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11,
+	12,13, 5, 7, 7,10,10, 7, 9, 9,11,10, 7, 9, 9,11,
+	11, 9,11,10,13,13,10,11,11,13,13, 8,10,10,14,13,
+	10,11,11,15,14, 9,11,11,15,14,13,14,13,16,14,12,
+	13,13,15,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
+	11,14,15,12,13,13,15,15,12,13,14,15,16, 5, 7, 7,
+	10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
+	13,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
+	 9,11,11,13,13,12,13,12,14,14,11,12,13,15,15, 7,
+	 9, 9,12,12, 8,11,10,13,12, 9,11,11,13,13,11,13,
+	12,15,13,11,13,13,15,16, 9,12,11,15,15,11,12,12,
+	16,15,11,12,13,16,16,13,14,15,16,15,13,15,15,17,
+	17, 9,11,11,14,15,10,12,12,15,15,11,13,12,15,16,
+	13,15,14,16,16,13,15,15,17,19, 5, 7, 7,10,10, 7,
+	 9, 9,12,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
+	11,13,14, 7, 9, 9,12,12, 9,11,11,13,13, 9,10,11,
+	12,13,11,13,12,16,15,11,12,12,14,15, 7, 9, 9,12,
+	12, 9,11,11,13,13, 9,11,11,13,12,11,13,12,15,16,
+	12,13,13,15,14, 9,11,11,15,14,11,13,12,16,15,10,
+	11,12,15,15,13,14,14,18,17,13,14,14,15,17,10,11,
+	11,14,15,11,13,12,15,17,11,13,12,15,16,13,15,14,
+	18,17,14,15,15,16,18, 7,10,10,14,14,10,12,12,15,
+	15,10,12,12,15,15,14,15,15,18,17,13,15,15,16,16,
+	 9,11,11,16,15,11,13,13,16,18,11,13,13,16,16,15,
+	16,16, 0, 0,14,15,16,18,17, 9,11,11,15,15,10,13,
+	12,17,16,11,12,13,16,17,14,15,16,19,19,14,15,15,
+	 0,20,12,14,14, 0, 0,13,14,16,19,18,13,15,16,20,
+	17,16,18, 0, 0, 0,15,16,17,18,19,11,14,14, 0,19,
+	12,15,14,17,17,13,15,15, 0, 0,16,17,15,20,19,15,
+	17,16,19, 0, 8,10,10,14,15,10,12,11,15,15,10,11,
+	12,16,15,13,14,14,19,17,14,15,15, 0, 0, 9,11,11,
+	16,15,11,13,13,17,16,10,12,13,16,17,14,15,15,18,
+	18,14,15,16,20,19, 9,12,12, 0,15,11,13,13,16,17,
+	11,13,13,19,17,14,16,16,18,17,15,16,16,17,19,11,
+	14,14,18,18,13,14,15, 0, 0,12,14,15,19,18,15,16,
+	19, 0,19,15,16,19,19,17,12,14,14,16,19,13,15,15,
+	 0,17,13,15,14,18,18,15,16,15, 0,18,16,17,17, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44u2__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u2__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p3_0 = {
+	_vq_quantthresh__44u2__p3_0,
+	_vq_quantmap__44u2__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u2__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u2__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u2__p3_0,
+	NULL,
+	&_vq_auxt__44u2__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u2__p4_0[] = {
+	 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
+	 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10,
+	11,12, 5, 7, 7, 9, 9, 6, 8, 7,10,10, 7, 8, 8,10,
+	10, 9,10,10,12,11, 9,10,10,12,11, 9,10,10,12,12,
+	10,10,10,13,12, 9,10,10,12,13,12,12,12,14,14,11,
+	12,12,13,14, 9,10,10,12,12, 9,10,10,12,13,10,10,
+	10,12,13,11,12,12,14,13,12,12,12,14,13, 5, 7, 7,
+	10, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+	12,10,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
+	 8, 9, 9,11,11,10,11,11,12,13,10,11,11,13,13, 6,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,13,11,10,11,11,13,13, 9,10,10,13,13,10,11,11,
+	13,13,10,11,11,14,13,12,11,13,12,15,12,13,13,15,
+	15, 9,10,10,12,13,10,11,10,13,13,10,11,11,13,13,
+	12,13,11,15,13,12,13,13,15,15, 5, 7, 7, 9,10, 7,
+	 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12,10,10,
+	11,12,12, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
+	11, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,11,13,13,
+	10,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
+	10,11,13,13,12,13,13,15,15,12,11,13,12,14, 9,10,
+	10,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,
+	15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
+	13, 9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,
+	 9,10,10,13,13,10,11,11,13,14,10,11,11,14,12,13,
+	13,14,14,16,12,13,13,15,14, 9,10,10,13,13,10,11,
+	10,14,13,10,11,11,13,14,12,14,13,16,14,13,13,13,
+	14,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,
+	15,14,12,15,12,16,14,15,15,17,16,11,12,12,14,15,
+	11,13,11,15,14,12,13,13,15,16,13,15,12,17,13,14,
+	15,15,16,16, 8, 9, 9,12,12, 9,10,10,13,13, 9,10,
+	10,13,13,12,13,12,14,14,12,13,13,15,15, 9,10,10,
+	13,13,10,11,11,14,13,10,10,11,13,14,12,13,13,15,
+	14,12,12,14,14,16, 9,10,10,13,13,10,11,11,13,14,
+	10,11,11,14,13,13,13,13,15,15,13,14,13,16,14,11,
+	12,12,14,14,12,13,13,16,15,11,12,13,14,15,14,15,
+	15,16,16,14,13,15,13,17,11,12,12,14,15,12,13,13,
+	15,16,11,13,12,15,15,14,15,14,16,16,14,15,12,17,
+	13,
+};
+
+static float _vq_quantthresh__44u2__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u2__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p4_0 = {
+	_vq_quantthresh__44u2__p4_0,
+	_vq_quantmap__44u2__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u2__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u2__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u2__p4_0,
+	NULL,
+	&_vq_auxt__44u2__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u2__p5_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 8, 8,
+	10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9,
+	 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8,
+	 9, 9,10,11,12,12, 8, 8, 8, 9, 9,10,10,12,12,10,
+	10,10,11,11,12,12,13,13,10,10,10,11,11,12,12,13,
+	13,
+};
+
+static float _vq_quantthresh__44u2__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u2__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p5_0 = {
+	_vq_quantthresh__44u2__p5_0,
+	_vq_quantmap__44u2__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u2__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u2__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u2__p5_0,
+	NULL,
+	&_vq_auxt__44u2__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u2__p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8,10,10,11,11,14,13, 4, 6, 5,
+	 8, 8, 9, 9,11,10,12,11,15,14, 4, 5, 6, 8, 8, 9,
+	 9,11,11,11,11,14,14, 6, 8, 8,10, 9,11,11,11,11,
+	12,12,15,15, 6, 8, 8, 9, 9,11,11,11,12,12,12,15,
+	15, 8,10,10,11,11,11,11,12,12,13,13,15,16, 8,10,
+	10,11,11,11,11,12,12,13,13,16,16,10,11,11,12,12,
+	12,12,13,13,13,13,17,16,10,11,11,12,12,12,12,13,
+	13,13,14,16,17,11,12,12,13,13,13,13,14,14,15,14,
+	18,17,11,12,12,13,13,13,13,14,14,14,15,19,18,14,
+	15,15,15,15,16,16,18,19,18,18, 0, 0,14,15,15,16,
+	15,17,17,16,18,17,18, 0, 0,
+};
+
+static float _vq_quantthresh__44u2__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u2__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p6_0 = {
+	_vq_quantthresh__44u2__p6_0,
+	_vq_quantmap__44u2__p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u2__p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u2__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u2__p6_0,
+	NULL,
+	&_vq_auxt__44u2__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u2__p6_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+	 6, 5, 6, 6, 5, 5, 6, 6, 6,
+};
+
+static float _vq_quantthresh__44u2__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u2__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p6_1 = {
+	_vq_quantthresh__44u2__p6_1,
+	_vq_quantmap__44u2__p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u2__p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u2__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u2__p6_1,
+	NULL,
+	&_vq_auxt__44u2__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p7_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u2__p7_0[] = {
+	 1, 3, 2,12,12,12,12,12,12, 4,12,12,12,12,12,12,
+	12,12, 5,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,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,
+};
+
+static float _vq_quantthresh__44u2__p7_0[] = {
+	-591.5, -422.5, -253.5, -84.5, 84.5, 253.5, 422.5, 591.5, 
+};
+
+static long _vq_quantmap__44u2__p7_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p7_0 = {
+	_vq_quantthresh__44u2__p7_0,
+	_vq_quantmap__44u2__p7_0,
+	9,
+	9
+};
+
+static static_codebook _44u2__p7_0 = {
+	2, 81,
+	_vq_lengthlist__44u2__p7_0,
+	1, -516612096, 1626677248, 4, 0,
+	_vq_quantlist__44u2__p7_0,
+	NULL,
+	&_vq_auxt__44u2__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p7_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u2__p7_1[] = {
+	 1, 4, 4, 7, 6, 7, 6, 8, 7, 9, 7, 9, 8, 4, 7, 6,
+	 8, 8, 9, 8,10, 9,10,10,11,11, 4, 7, 7, 8, 8, 8,
+	 8, 9,10,11,11,11,11, 6, 8, 8,10,10,10,10,11,11,
+	12,12,12,12, 7, 8, 8,10,10,10,10,11,11,12,12,13,
+	13, 7, 9, 9,11,10,12,12,13,13,14,13,14,14, 7, 9,
+	 9,10,11,11,12,13,13,13,13,16,14, 9,10,10,12,12,
+	13,13,14,14,15,16,15,16, 9,10,10,12,12,12,13,14,
+	14,14,15,16,15,10,12,12,13,13,15,13,16,16,15,17,
+	17,17,10,11,11,12,14,14,14,15,15,17,17,15,17,11,
+	12,12,14,14,14,15,15,15,17,16,17,17,10,12,12,13,
+	14,14,14,17,15,17,17,17,17,
+};
+
+static float _vq_quantthresh__44u2__p7_1[] = {
+	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
+	32.5, 45.5, 58.5, 71.5, 
+};
+
+static long _vq_quantmap__44u2__p7_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p7_1 = {
+	_vq_quantthresh__44u2__p7_1,
+	_vq_quantmap__44u2__p7_1,
+	13,
+	13
+};
+
+static static_codebook _44u2__p7_1 = {
+	2, 169,
+	_vq_lengthlist__44u2__p7_1,
+	1, -523010048, 1618608128, 4, 0,
+	_vq_quantlist__44u2__p7_1,
+	NULL,
+	&_vq_auxt__44u2__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u2__p7_2[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u2__p7_2[] = {
+	 2, 5, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 6, 7, 7, 8,
+	 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 8, 8, 8, 8, 8,
+	 9, 9, 9, 9, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 7, 8,
+	 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__44u2__p7_2[] = {
+	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
+	2.5, 3.5, 4.5, 5.5, 
+};
+
+static long _vq_quantmap__44u2__p7_2[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u2__p7_2 = {
+	_vq_quantthresh__44u2__p7_2,
+	_vq_quantmap__44u2__p7_2,
+	13,
+	13
+};
+
+static static_codebook _44u2__p7_2 = {
+	2, 169,
+	_vq_lengthlist__44u2__p7_2,
+	1, -531103744, 1611661312, 4, 0,
+	_vq_quantlist__44u2__p7_2,
+	NULL,
+	&_vq_auxt__44u2__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u2__short[] = {
+	13,15,17,17,15,15,12,17,11, 9, 7,10,10, 9,12,17,
+	10, 6, 3, 6, 5, 7,10,17,15,10, 6, 9, 8, 9,11,17,
+	15, 8, 4, 7, 3, 5, 9,16,16,10, 5, 8, 4, 5, 8,16,
+	13,11, 5, 8, 3, 3, 5,14,13,12, 7,10, 5, 5, 7,14,
+};
+
+static static_codebook _huff_book__44u2__short = {
+	2, 64,
+	_huff_lengthlist__44u2__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u3__long[] = {
+	 6, 9,13,12,14,11,10,13, 8, 4, 5, 7, 8, 7, 8,12,
+	11, 4, 3, 5, 5, 7, 9,14,11, 6, 5, 6, 6, 6, 7,13,
+	13, 7, 5, 6, 4, 5, 7,14,11, 7, 6, 6, 5, 5, 6,13,
+	 9, 7, 8, 6, 7, 5, 3, 9, 9,12,13,12,14,10, 6, 7,
+};
+
+static static_codebook _huff_book__44u3__long = {
+	2, 64,
+	_huff_lengthlist__44u3__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u3__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
+	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+	11, 8,11,11, 8,11,11,11,13,14,11,14,14, 8,11,11,
+	10,14,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
+	11,11,11,14,14,10,12,14, 8,11,11,11,14,14,11,14,
+	13,
+};
+
+static float _vq_quantthresh__44u3__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u3__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p1_0 = {
+	_vq_quantthresh__44u3__p1_0,
+	_vq_quantmap__44u3__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u3__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u3__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u3__p1_0,
+	NULL,
+	&_vq_auxt__44u3__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u3__p2_0[] = {
+	 2, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
+	 8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 7, 8,
+	 8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+	 8,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 7, 8, 8, 6,
+	 8, 8, 8,10,10, 8, 8,10, 7, 8, 8, 8,10,10, 8,10,
+	 9,
+};
+
+static float _vq_quantthresh__44u3__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u3__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p2_0 = {
+	_vq_quantthresh__44u3__p2_0,
+	_vq_quantmap__44u3__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u3__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u3__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u3__p2_0,
+	NULL,
+	&_vq_auxt__44u3__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u3__p3_0[] = {
+	 2, 4, 4, 7, 7, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
+	 9, 9,12,12, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9,
+	 9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11,
+	13,13, 5, 7, 7,10,10, 7, 9, 9,11,10, 7, 9, 9,11,
+	11, 9,11,10,13,13,10,11,11,14,13, 8,10,10,14,13,
+	10,11,11,15,14, 9,11,11,14,14,13,14,13,16,16,12,
+	13,13,15,15, 8,10,10,13,14, 9,11,11,14,14,10,11,
+	11,14,15,12,13,13,15,15,13,14,14,15,16, 5, 7, 7,
+	10,10, 7, 9, 9,11,11, 7, 9, 9,11,12,10,11,11,14,
+	14,10,11,11,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
+	 9,11,11,13,13,12,12,13,15,15,11,12,13,15,16, 7,
+	 9, 9,11,11, 8,11,10,13,12, 9,11,11,13,13,11,13,
+	12,15,13,11,13,13,15,16, 9,12,11,15,14,11,12,13,
+	16,15,11,13,13,15,16,14,14,15,17,16,13,15,16, 0,
+	17, 9,11,11,15,15,10,13,12,15,15,11,13,13,15,16,
+	13,15,13,16,15,14,16,15, 0,19, 5, 7, 7,10,10, 7,
+	 9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,14,10,11,
+	12,14,14, 7, 9, 9,12,12, 9,11,11,14,13, 9,10,11,
+	12,13,11,13,13,16,16,11,12,13,13,16, 7, 9, 9,12,
+	12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,15,15,
+	12,13,12,15,14, 9,11,11,15,14,11,13,12,16,16,10,
+	12,12,15,15,13,15,15,17,19,13,14,15,16,17,10,12,
+	12,15,15,11,13,13,16,16,11,13,13,15,16,13,15,15,
+	 0, 0,14,15,15,16,16, 8,10,10,14,14,10,12,12,15,
+	15,10,12,11,15,16,14,15,15,19,20,13,14,14,18,16,
+	 9,11,11,15,15,11,13,13,17,16,11,13,13,16,16,15,
+	17,17,20,20,14,15,16,17,20, 9,11,11,15,15,10,13,
+	12,16,15,11,13,13,15,17,14,16,15,18, 0,14,16,15,
+	18,20,12,14,14, 0, 0,14,14,16, 0, 0,13,16,15, 0,
+	 0,17,17,18, 0, 0,16,17,19,19, 0,12,14,14,18, 0,
+	12,16,14, 0,17,13,15,15,18, 0,16,18,17, 0,17,16,
+	18,17, 0, 0, 7,10,10,14,14,10,12,11,15,15,10,12,
+	12,16,15,13,15,15,18, 0,14,15,15,17, 0, 9,11,11,
+	15,15,11,13,13,16,16,11,12,13,16,16,14,15,16,17,
+	17,14,16,16,16,18, 9,11,12,16,16,11,13,13,17,17,
+	11,14,13,20,17,15,16,16,19, 0,15,16,17, 0,19,11,
+	13,14,17,16,14,15,15,20,18,13,14,15,17,19,16,18,
+	18, 0,20,16,16,19,17, 0,12,15,14,17, 0,14,15,15,
+	18,19,13,16,15,19,20,15,18,18, 0,20,17, 0,16, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44u3__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u3__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p3_0 = {
+	_vq_quantthresh__44u3__p3_0,
+	_vq_quantmap__44u3__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u3__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u3__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u3__p3_0,
+	NULL,
+	&_vq_auxt__44u3__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u3__p4_0[] = {
+	 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
+	 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10,
+	11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
+	10, 9,10, 9,12,11, 9,10,10,12,11, 9,10, 9,12,12,
+	 9,10,10,13,12, 9,10,10,12,13,12,12,12,14,14,11,
+	12,12,13,14, 9, 9,10,12,12, 9,10,10,12,12, 9,10,
+	10,12,13,11,12,11,14,13,12,12,12,14,13, 5, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+	12, 9,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
+	 8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 6,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11,
+	13,13,10,11,11,13,13,12,12,13,12,15,12,13,13,15,
+	15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,
+	12,13,11,15,13,12,13,13,15,15, 5, 7, 7, 9, 9, 7,
+	 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10,
+	11,12,12, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
+	10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13,
+	11,11,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
+	10,11,12,13,12,13,13,15,15,12,11,13,13,14, 9,10,
+	11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,
+	15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
+	13, 9,10,10,13,13,12,13,13,15,14,12,12,12,14,13,
+	 9,10,10,13,12,10,11,11,13,13,10,11,11,14,12,13,
+	13,14,14,16,12,13,13,15,15, 9,10,10,13,13,10,11,
+	10,14,13,10,11,11,13,14,12,14,13,15,14,13,13,13,
+	15,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,
+	14,14,12,15,12,16,14,15,15,17,15,11,12,12,14,14,
+	11,13,11,15,14,12,13,13,15,15,13,15,12,17,13,14,
+	15,15,16,16, 8, 9, 9,12,12, 9,10,10,12,13, 9,10,
+	10,13,13,12,12,12,14,14,12,13,13,15,15, 9,10,10,
+	13,12,10,11,11,14,13,10,10,11,13,14,12,13,13,15,
+	15,12,12,13,14,16, 9,10,10,13,13,10,11,11,13,14,
+	10,11,11,14,13,12,13,13,14,15,13,14,13,16,14,11,
+	12,12,14,14,12,13,13,15,14,11,12,13,14,15,14,15,
+	15,16,16,13,13,15,13,16,11,12,12,14,15,12,13,13,
+	14,15,11,13,12,15,14,14,15,15,16,16,14,15,12,16,
+	13,
+};
+
+static float _vq_quantthresh__44u3__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u3__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p4_0 = {
+	_vq_quantthresh__44u3__p4_0,
+	_vq_quantmap__44u3__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u3__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u3__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u3__p4_0,
+	NULL,
+	&_vq_auxt__44u3__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u3__p5_0[] = {
+	 2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8,
+	10,10, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8,
+	 9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,10, 7, 8, 8,
+	 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+	10,10,11,10,11,11,12,12, 9,10,10,10,10,11,11,12,
+	12,
+};
+
+static float _vq_quantthresh__44u3__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u3__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p5_0 = {
+	_vq_quantthresh__44u3__p5_0,
+	_vq_quantmap__44u3__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u3__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u3__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u3__p5_0,
+	NULL,
+	&_vq_auxt__44u3__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u3__p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,13,14, 4, 6, 5,
+	 8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9,
+	 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+	12,12,15,15, 6, 8, 8, 9, 9,10,11,11,11,12,12,15,
+	15, 8, 9, 9,11,10,11,11,12,12,13,13,15,16, 8, 9,
+	 9,10,11,11,11,12,12,13,13,16,16,10,10,11,11,11,
+	12,12,13,13,13,14,17,16, 9,10,11,12,11,12,12,13,
+	13,13,13,16,18,11,12,11,12,12,13,13,13,14,15,14,
+	17,17,11,11,12,12,12,13,13,13,14,14,15,18,17,14,
+	15,15,15,15,16,16,17,17,19,18, 0,20,14,15,14,15,
+	15,16,16,16,17,18,16,20,18,
+};
+
+static float _vq_quantthresh__44u3__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u3__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p6_0 = {
+	_vq_quantthresh__44u3__p6_0,
+	_vq_quantmap__44u3__p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u3__p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u3__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u3__p6_0,
+	NULL,
+	&_vq_auxt__44u3__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u3__p6_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+	 6, 5, 6, 6, 5, 5, 6, 6, 6,
+};
+
+static float _vq_quantthresh__44u3__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u3__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p6_1 = {
+	_vq_quantthresh__44u3__p6_1,
+	_vq_quantmap__44u3__p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u3__p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u3__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u3__p6_1,
+	NULL,
+	&_vq_auxt__44u3__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p7_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u3__p7_0[] = {
+	 1, 3, 3,10,10,10,10,10,10, 4,10,10,10,10,10,10,
+	10,10, 4,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, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44u3__p7_0[] = {
+	-892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 637.5, 892.5, 
+};
+
+static long _vq_quantmap__44u3__p7_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p7_0 = {
+	_vq_quantthresh__44u3__p7_0,
+	_vq_quantmap__44u3__p7_0,
+	9,
+	9
+};
+
+static static_codebook _44u3__p7_0 = {
+	2, 81,
+	_vq_lengthlist__44u3__p7_0,
+	1, -515907584, 1627381760, 4, 0,
+	_vq_quantlist__44u3__p7_0,
+	NULL,
+	&_vq_auxt__44u3__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p7_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u3__p7_1[] = {
+	 1, 4, 4, 6, 6, 7, 6, 8, 7, 9, 8,10, 9,11,11, 4,
+	 7, 7, 8, 7, 9, 9,10,10,11,11,11,11,12,12, 4, 7,
+	 7, 7, 7, 9, 9,10,10,11,11,12,12,12,11, 6, 8, 8,
+	 9, 9,10,10,11,11,12,12,13,12,13,13, 6, 8, 8, 9,
+	 9,10,11,11,11,12,12,13,14,13,13, 8, 9, 9,11,11,
+	12,12,12,13,14,13,14,14,14,15, 8, 9, 9,11,11,11,
+	12,13,14,13,14,15,17,14,15, 9,10,10,12,12,13,13,
+	13,14,15,15,15,16,16,16, 9,11,11,12,12,13,13,14,
+	14,14,15,16,16,16,16,10,12,12,13,13,14,14,15,15,
+	15,16,17,17,17,17,10,12,11,13,13,15,14,15,14,16,
+	17,16,16,16,16,11,13,12,14,14,14,14,15,16,17,16,
+	17,17,17,17,11,13,12,14,14,14,15,17,16,17,17,17,
+	17,17,17,12,13,13,15,16,15,16,17,17,16,16,17,17,
+	17,17,12,13,13,15,15,15,16,17,17,17,16,17,16,17,
+	17,
+};
+
+static float _vq_quantthresh__44u3__p7_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__44u3__p7_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p7_1 = {
+	_vq_quantthresh__44u3__p7_1,
+	_vq_quantmap__44u3__p7_1,
+	15,
+	15
+};
+
+static static_codebook _44u3__p7_1 = {
+	2, 225,
+	_vq_lengthlist__44u3__p7_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__44u3__p7_1,
+	NULL,
+	&_vq_auxt__44u3__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u3__p7_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44u3__p7_2[] = {
+	 2, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	10,10, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9,
+	 9,10, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	10,10,10,10, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
+	 9,10,10,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10, 7, 8, 8, 9, 8, 9, 9, 9, 9,10,
+	 9,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9,10,
+	 9,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,10,
+	 9,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+	 9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,11, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,11, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9,10,10,10,10,10,10,10,10,10,10,10,11,11,11,10,
+	11,
+};
+
+static float _vq_quantthresh__44u3__p7_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44u3__p7_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u3__p7_2 = {
+	_vq_quantthresh__44u3__p7_2,
+	_vq_quantmap__44u3__p7_2,
+	17,
+	17
+};
+
+static static_codebook _44u3__p7_2 = {
+	2, 289,
+	_vq_lengthlist__44u3__p7_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44u3__p7_2,
+	NULL,
+	&_vq_auxt__44u3__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u3__short[] = {
+	14,14,14,15,13,15,12,16,10, 8, 7, 9, 9, 8,12,16,
+	10, 5, 4, 6, 5, 6, 9,16,14, 8, 6, 8, 7, 8,10,16,
+	14, 7, 4, 6, 3, 5, 8,16,15, 9, 5, 7, 4, 4, 7,16,
+	13,10, 6, 7, 4, 3, 4,13,13,12, 7, 9, 5, 5, 6,12,
+};
+
+static static_codebook _huff_book__44u3__short = {
+	2, 64,
+	_huff_lengthlist__44u3__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u4__long[] = {
+	 3, 8,12,12,13,12,11,13, 5, 4, 6, 7, 8, 8, 9,13,
+	 9, 5, 4, 5, 5, 7, 9,13, 9, 6, 5, 6, 6, 7, 8,12,
+	12, 7, 5, 6, 4, 5, 8,13,11, 7, 6, 6, 5, 5, 6,12,
+	10, 8, 8, 7, 7, 5, 3, 8,10,12,13,12,12, 9, 6, 7,
+};
+
+static static_codebook _huff_book__44u4__long = {
+	2, 64,
+	_huff_lengthlist__44u4__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u4__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
+	10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11,
+	11, 8,11,11, 8,11,11,11,13,14,11,15,14, 8,11,11,
+	10,13,12,11,14,14, 4, 8, 8, 8,11,11, 8,11,11, 7,
+	11,11,11,15,14,10,12,14, 8,11,11,11,14,14,11,14,
+	13,
+};
+
+static float _vq_quantthresh__44u4__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u4__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p1_0 = {
+	_vq_quantthresh__44u4__p1_0,
+	_vq_quantmap__44u4__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u4__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u4__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u4__p1_0,
+	NULL,
+	&_vq_auxt__44u4__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u4__p2_0[] = {
+	 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6,
+	 8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 6, 8,
+	 8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8,
+	 8,10, 8, 8,10,10, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6,
+	 8, 8, 8,10,10, 8, 8,10, 6, 8, 8, 8,10,10, 8,10,
+	 9,
+};
+
+static float _vq_quantthresh__44u4__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u4__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p2_0 = {
+	_vq_quantthresh__44u4__p2_0,
+	_vq_quantmap__44u4__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u4__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u4__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u4__p2_0,
+	NULL,
+	&_vq_auxt__44u4__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u4__p3_0[] = {
+	 2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8,
+	10, 9,12,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
+	 9,11,11, 7, 9, 9,11,11,10,12,11,14,14, 9,10,11,
+	13,14, 5, 7, 7,10,10, 7, 9, 9,11,11, 7, 9, 9,11,
+	11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,14,13,
+	10,12,12,15,14, 9,11,11,15,14,13,14,14,17,17,12,
+	14,14,16,16, 8,10,10,14,14, 9,11,11,14,15,10,12,
+	12,14,15,12,14,13,16,16,13,14,15,15,18, 4, 7, 7,
+	10,10, 7, 9, 9,12,11, 7, 9, 9,11,12,10,12,11,15,
+	14,10,11,12,14,15, 7, 9, 9,12,12, 9,11,12,13,13,
+	 9,11,12,13,13,12,13,13,15,16,11,13,13,15,16, 7,
+	 9, 9,12,12, 9,11,10,13,12, 9,11,12,13,14,11,13,
+	12,16,14,12,13,13,15,16,10,12,12,16,15,11,13,13,
+	17,16,11,13,13,17,16,14,15,15,17,17,14,16,16,18,
+	20, 9,11,11,15,16,11,13,12,16,16,11,13,13,16,17,
+	14,15,14,18,16,14,16,16,17,20, 5, 7, 7,10,10, 7,
+	 9, 9,12,11, 7, 9,10,11,12,10,12,11,15,15,10,12,
+	12,14,14, 7, 9, 9,12,12, 9,12,11,14,13, 9,10,11,
+	12,13,12,13,14,16,16,11,12,13,14,16, 7, 9, 9,12,
+	12, 9,12,11,13,13, 9,12,11,13,13,11,13,13,16,16,
+	12,13,13,16,15, 9,11,11,16,14,11,13,13,16,16,11,
+	12,13,16,16,14,16,16,17,17,13,14,15,16,17,10,12,
+	12,15,15,11,13,13,16,17,11,13,13,16,16,14,16,15,
+	19,19,14,15,15,17,18, 8,10,10,14,14,10,12,12,15,
+	15,10,12,12,16,16,14,16,15,20,19,13,15,15,17,16,
+	 9,12,12,16,16,11,13,13,16,18,11,14,13,16,17,16,
+	17,16,20, 0,15,16,18,18,20, 9,11,11,15,15,11,14,
+	12,17,16,11,13,13,17,17,15,17,15,20,20,14,16,16,
+	17, 0,13,15,14,18,16,14,15,16, 0,18,14,16,16, 0,
+	 0,18,16, 0, 0,20,16,18,18, 0, 0,12,14,14,17,18,
+	13,15,14,20,18,14,16,15,19,19,16,20,16, 0,18,16,
+	19,17,19, 0, 8,10,10,14,14,10,12,12,16,15,10,12,
+	12,16,16,13,15,15,18,17,14,16,16,19, 0, 9,11,11,
+	16,15,11,14,13,18,17,11,12,13,17,18,14,17,16,18,
+	18,15,16,17,18,18, 9,12,12,16,16,11,13,13,16,18,
+	11,14,13,17,17,15,16,16,18,20,16,17,17,20,20,12,
+	14,14,18,17,14,16,16, 0,19,13,14,15,18, 0,16, 0,
+	 0, 0, 0,16,16, 0,19,20,13,15,14, 0, 0,14,16,16,
+	18,19,14,16,15, 0,20,16,20,18, 0,20,17,20,17, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44u4__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u4__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p3_0 = {
+	_vq_quantthresh__44u4__p3_0,
+	_vq_quantmap__44u4__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u4__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u4__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u4__p3_0,
+	NULL,
+	&_vq_auxt__44u4__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u4__p4_0[] = {
+	 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9,
+	 9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10,
+	11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
+	10, 9,10,10,12,11, 9,10,10,12,11, 9,10, 9,12,12,
+	 9,10,10,13,12, 9,10,10,12,12,12,12,12,14,14,11,
+	12,12,13,14, 9, 9,10,12,12, 9,10,10,13,13, 9,10,
+	10,12,13,11,12,12,14,13,11,12,12,14,14, 5, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,
+	12, 9,10,10,12,12, 7, 8, 8,11,10, 8, 8, 9,11,11,
+	 8, 9, 9,11,11,11,11,11,12,13,10,11,11,13,13, 6,
+	 8, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,13,11,10,11,11,13,13, 9,11,10,13,12,10,11,11,
+	13,14,10,11,11,14,13,12,12,13,12,15,12,13,13,15,
+	15, 9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,
+	12,13,11,15,13,13,13,13,15,15, 5, 7, 7, 9, 9, 7,
+	 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12,10,10,
+	11,12,13, 6, 8, 8,10,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,11,13, 7, 8, 8,10,
+	11, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,11,13,13,
+	11,12,11,13,12, 9,10,10,13,12,10,11,11,14,13,10,
+	10,11,12,13,12,13,13,15,15,12,11,13,13,14, 9,10,
+	11,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,
+	15,15,12,13,12,15,12, 8, 9, 9,12,12, 9,11,10,13,
+	13, 9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,
+	 9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,
+	13,14,14,16,13,13,13,15,15, 9,10,10,13,13,10,11,
+	10,14,13,10,11,11,13,14,12,14,13,16,14,12,13,13,
+	14,15,11,12,12,15,14,11,12,13,14,15,12,13,13,16,
+	15,14,12,15,12,16,14,15,15,16,16,11,12,12,14,14,
+	11,13,12,15,14,12,13,13,15,16,13,15,13,17,13,14,
+	15,15,16,17, 8, 9, 9,12,12, 9,10,10,12,13, 9,10,
+	10,13,13,12,12,12,14,14,12,13,13,15,15, 9,10,10,
+	13,12,10,11,11,14,13,10,10,11,13,14,13,13,13,15,
+	15,12,13,14,14,16, 9,10,10,13,13,10,11,11,13,14,
+	10,11,11,14,14,13,13,13,15,15,13,14,13,16,14,11,
+	12,12,15,14,12,13,13,16,15,11,12,13,14,15,14,15,
+	15,17,16,13,13,15,13,16,11,12,13,14,15,13,13,13,
+	15,16,11,13,12,15,14,14,15,15,16,16,14,15,12,17,
+	13,
+};
+
+static float _vq_quantthresh__44u4__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u4__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p4_0 = {
+	_vq_quantthresh__44u4__p4_0,
+	_vq_quantmap__44u4__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u4__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u4__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u4__p4_0,
+	NULL,
+	&_vq_auxt__44u4__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u4__p5_0[] = {
+	 2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8,
+	10, 9, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8,
+	 9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,11, 7, 8, 8,
+	 9, 9,10,10,11,11, 7, 8, 8, 9, 9,10,10,11,11, 9,
+	10,10,11,10,11,11,12,12, 9,10,10,10,11,11,11,12,
+	12,
+};
+
+static float _vq_quantthresh__44u4__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u4__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p5_0 = {
+	_vq_quantthresh__44u4__p5_0,
+	_vq_quantmap__44u4__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u4__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u4__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u4__p5_0,
+	NULL,
+	&_vq_auxt__44u4__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u4__p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9, 9,11,10,13,13, 4, 6, 5,
+	 8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9,
+	 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11,
+	12,12,15,15, 6, 8, 8, 9, 9,10,11,11,11,12,12,15,
+	15, 8, 9, 9,11,10,11,11,12,12,13,13,16,16, 8, 9,
+	 9,10,10,11,11,12,12,13,13,16,16,10,10,10,12,11,
+	12,12,13,13,14,14,16,16,10,10,10,11,12,12,12,13,
+	13,13,14,16,17,11,12,11,12,12,13,13,14,14,15,14,
+	18,17,11,11,12,12,12,13,13,14,14,14,15,19,18,14,
+	15,14,15,15,17,16,17,17,17,17,21, 0,14,15,15,16,
+	16,16,16,17,17,18,17,20,21,
+};
+
+static float _vq_quantthresh__44u4__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u4__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p6_0 = {
+	_vq_quantthresh__44u4__p6_0,
+	_vq_quantmap__44u4__p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u4__p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u4__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u4__p6_0,
+	NULL,
+	&_vq_auxt__44u4__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u4__p6_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5,
+	 6, 5, 6, 6, 5, 5, 6, 6, 6,
+};
+
+static float _vq_quantthresh__44u4__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u4__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p6_1 = {
+	_vq_quantthresh__44u4__p6_1,
+	_vq_quantmap__44u4__p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u4__p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u4__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u4__p6_1,
+	NULL,
+	&_vq_auxt__44u4__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u4__p7_0[] = {
+	 1, 3, 3,12,12,12,12,12,12,12,12,12,12, 3,12,11,
+	12,12,12,12,12,12,12,12,12,12, 4,11,10,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
+	12,12,12,12,12,12,12,12,12,12,12,12,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,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,
+};
+
+static float _vq_quantthresh__44u4__p7_0[] = {
+	-1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 
+	637.5, 892.5, 1147.5, 1402.5, 
+};
+
+static long _vq_quantmap__44u4__p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p7_0 = {
+	_vq_quantthresh__44u4__p7_0,
+	_vq_quantmap__44u4__p7_0,
+	13,
+	13
+};
+
+static static_codebook _44u4__p7_0 = {
+	2, 169,
+	_vq_lengthlist__44u4__p7_0,
+	1, -514332672, 1627381760, 4, 0,
+	_vq_quantlist__44u4__p7_0,
+	NULL,
+	&_vq_auxt__44u4__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p7_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u4__p7_1[] = {
+	 1, 4, 4, 6, 6, 7, 7, 9, 8,10, 8,10, 9,11,11, 4,
+	 7, 6, 8, 7, 9, 9,10,10,11,10,11,10,12,10, 4, 6,
+	 7, 8, 8, 9, 9,10,10,11,11,11,11,12,12, 6, 8, 8,
+	10, 9,11,10,12,11,12,12,12,12,13,13, 6, 8, 8,10,
+	10,10,11,11,11,12,12,13,12,13,13, 8, 9, 9,11,11,
+	12,11,12,12,13,13,13,13,13,13, 8, 9, 9,11,11,11,
+	12,12,12,13,13,13,13,13,13, 9,10,10,12,11,13,13,
+	13,13,14,13,13,14,14,14, 9,10,11,11,12,12,13,13,
+	13,13,13,14,15,14,14,10,11,11,12,12,13,13,14,14,
+	14,14,14,15,16,16,10,11,11,12,13,13,13,13,15,14,
+	14,15,16,15,16,10,12,12,13,13,14,14,14,15,15,15,
+	15,15,15,16,11,12,12,13,13,14,14,14,15,15,15,16,
+	15,17,16,11,12,12,13,13,13,15,15,14,16,16,16,16,
+	16,17,11,12,12,13,13,14,14,15,14,15,15,17,17,16,
+	16,
+};
+
+static float _vq_quantthresh__44u4__p7_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__44u4__p7_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p7_1 = {
+	_vq_quantthresh__44u4__p7_1,
+	_vq_quantmap__44u4__p7_1,
+	15,
+	15
+};
+
+static static_codebook _44u4__p7_1 = {
+	2, 225,
+	_vq_lengthlist__44u4__p7_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__44u4__p7_1,
+	NULL,
+	&_vq_auxt__44u4__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u4__p7_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44u4__p7_2[] = {
+	 2, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	10,10,10,10, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,
+	 9,10, 9,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,11,10,10,10, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9, 9,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	10, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9,10, 9,10,10,10,10,10,10,10,10,10,10,11,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44u4__p7_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44u4__p7_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u4__p7_2 = {
+	_vq_quantthresh__44u4__p7_2,
+	_vq_quantmap__44u4__p7_2,
+	17,
+	17
+};
+
+static static_codebook _44u4__p7_2 = {
+	2, 289,
+	_vq_lengthlist__44u4__p7_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44u4__p7_2,
+	NULL,
+	&_vq_auxt__44u4__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u4__short[] = {
+	14,17,15,17,16,14,13,16,10, 7, 7,10,13,10,15,16,
+	 9, 4, 4, 6, 5, 7, 9,16,12, 8, 7, 8, 8, 8,11,16,
+	14, 7, 4, 6, 3, 5, 8,15,13, 8, 5, 7, 4, 5, 7,16,
+	12, 9, 6, 8, 3, 3, 5,16,14,13, 7,10, 5, 5, 7,15,
+};
+
+static static_codebook _huff_book__44u4__short = {
+	2, 64,
+	_huff_lengthlist__44u4__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u5__long[] = {
+	 3, 8,13,12,14,12,16,11,13,14, 5, 4, 5, 6, 7, 8,
+	10, 9,12,15,10, 5, 5, 5, 6, 8, 9, 9,13,15,10, 5,
+	 5, 6, 6, 7, 8, 8,11,13,12, 7, 5, 6, 4, 6, 7, 7,
+	11,14,11, 7, 7, 6, 6, 6, 7, 6,10,14,14, 9, 8, 8,
+	 6, 7, 7, 7,11,16,11, 8, 8, 7, 6, 6, 7, 4, 7,12,
+	10,10,12,10,10, 9,10, 5, 6, 9,10,12,15,13,14,14,
+	14, 8, 7, 8,
+};
+
+static static_codebook _huff_book__44u5__long = {
+	2, 100,
+	_huff_lengthlist__44u5__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u5__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+	 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10,
+	10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
+	10,13,11,10,13,13, 4, 8, 8, 8,11,10, 8,10,10, 7,
+	10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
+	12,
+};
+
+static float _vq_quantthresh__44u5__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u5__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p1_0 = {
+	_vq_quantthresh__44u5__p1_0,
+	_vq_quantmap__44u5__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u5__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u5__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u5__p1_0,
+	NULL,
+	&_vq_auxt__44u5__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u5__p2_0[] = {
+	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
+	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
+	 8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7,
+	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
+	 8, 7, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44u5__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u5__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p2_0 = {
+	_vq_quantthresh__44u5__p2_0,
+	_vq_quantmap__44u5__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u5__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u5__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u5__p2_0,
+	NULL,
+	&_vq_auxt__44u5__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u5__p3_0[] = {
+	 2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+	10, 9,13,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9,
+	 9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11,
+	13,14, 5, 7, 7, 9,10, 7, 9, 8,11,11, 7, 9, 9,11,
+	11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,13,13,
+	10,11,11,15,14, 9,11,11,14,14,13,14,14,17,16,12,
+	13,13,15,16, 8,10,10,13,13, 9,11,11,14,15,10,11,
+	11,14,15,12,14,13,16,16,13,15,14,15,17, 5, 7, 7,
+	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,
+	14,10,11,12,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
+	 9,11,11,13,13,12,13,13,15,16,11,12,13,15,16, 6,
+	 9, 9,11,11, 8,11,10,13,12, 9,11,11,13,14,11,13,
+	12,16,14,11,13,13,16,17,10,12,11,15,15,11,13,13,
+	16,16,11,13,13,17,16,14,15,15,17,17,14,16,16,17,
+	18, 9,11,11,14,15,10,12,12,15,15,11,13,13,16,17,
+	13,15,13,17,15,14,15,16,18, 0, 5, 7, 7,10,10, 7,
+	 9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
+	12,14,15, 6, 9, 9,12,11, 9,11,11,13,13, 8,10,11,
+	12,13,11,13,13,16,15,11,12,13,14,15, 7, 9, 9,11,
+	12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,15,16,
+	11,13,13,15,14, 9,11,11,15,14,11,13,13,17,15,10,
+	12,12,15,15,14,16,16,17,17,13,13,15,15,17,10,11,
+	12,15,15,11,13,13,16,16,11,13,13,15,15,14,15,15,
+	18,18,14,15,15,17,17, 8,10,10,13,13,10,12,11,15,
+	15,10,11,12,15,15,14,15,15,18,18,13,14,14,18,18,
+	 9,11,11,15,16,11,13,13,17,17,11,13,13,16,16,15,
+	15,16,17, 0,14,15,17, 0, 0, 9,11,11,15,15,10,13,
+	12,18,16,11,13,13,15,16,14,16,15,20,20,14,15,16,
+	17, 0,13,14,14,20,16,14,15,16,19,18,14,15,15,19,
+	 0,18,16, 0,20,20,16,18,18, 0, 0,12,14,14,18,18,
+	13,15,14,18,16,14,15,16,18,20,16,19,16, 0,17,17,
+	18,18,19, 0, 8,10,10,14,14,10,11,11,14,15,10,11,
+	12,15,15,13,15,14,19,17,13,15,15,17, 0, 9,11,11,
+	16,15,11,13,13,16,16,10,12,13,15,17,14,16,16,18,
+	18,14,15,15,18, 0, 9,11,11,15,15,11,13,13,16,17,
+	11,13,13,18,17,14,18,16,18,18,15,17,17,18, 0,12,
+	14,14,18,18,14,15,15,20, 0,13,14,15,17, 0,16,18,
+	17, 0, 0,16,16, 0,17,20,12,14,14,18,18,14,16,15,
+	 0,18,14,16,15,18, 0,16,19,17, 0, 0,17,18,16, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44u5__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u5__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p3_0 = {
+	_vq_quantthresh__44u5__p3_0,
+	_vq_quantmap__44u5__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u5__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u5__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u5__p3_0,
+	NULL,
+	&_vq_auxt__44u5__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u5__p4_0[] = {
+	 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
+	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10,
+	11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
+	10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,12,11,
+	 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
+	11,12,13,14, 8, 9, 9,11,12, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,11,14,13,11,12,12,13,13, 5, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
+	12, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,10,11,
+	 8, 9, 9,11,11,10,10,11,11,13,10,11,11,12,13, 6,
+	 7, 8,10,10, 7, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
+	12,13,10,11,11,13,13,12,11,13,12,15,12,13,13,14,
+	15, 9,10,10,12,12, 9,11,10,13,12,10,11,11,13,13,
+	11,13,11,14,12,12,13,13,14,15, 5, 7, 7, 9, 9, 7,
+	 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
+	10,12,12, 6, 8, 7,10,10, 8, 9, 9,11,11, 7, 8, 9,
+	10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10,
+	10, 8, 9, 9,11,11, 8, 9, 8,11,10,10,11,11,13,12,
+	10,11,10,13,11, 9,10,10,12,12,10,11,11,13,12, 9,
+	10,10,12,13,12,13,13,14,15,11,11,13,12,14, 9,10,
+	10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,
+	14,14,12,13,11,14,12, 8, 9, 9,12,12, 9,10,10,12,
+	12, 9,10,10,12,12,12,12,12,14,14,11,12,12,14,13,
+	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,
+	12,13,14,15,12,13,13,15,14, 9,10,10,12,12,10,11,
+	10,13,12,10,11,11,12,13,12,13,12,15,13,12,13,13,
+	14,15,11,12,12,14,13,11,12,12,14,15,12,13,13,15,
+	14,13,12,14,12,16,13,14,14,15,15,11,11,12,14,14,
+	11,12,11,14,13,12,13,13,14,15,13,14,12,16,12,14,
+	14,15,16,16, 8, 9, 9,11,12, 9,10,10,12,12, 9,10,
+	10,12,13,11,12,12,13,13,12,12,13,14,14, 9,10,10,
+	12,12,10,11,10,13,12,10,10,11,12,13,12,13,13,15,
+	14,12,12,13,13,15, 9,10,10,12,13,10,11,11,12,13,
+	10,11,11,13,13,12,13,13,14,15,12,13,12,15,14,11,
+	12,11,14,13,12,13,13,15,14,11,11,12,13,14,14,15,
+	14,16,15,13,12,14,13,16,11,12,12,13,14,12,13,13,
+	14,15,11,12,11,14,14,14,14,14,15,16,13,15,12,16,
+	12,
+};
+
+static float _vq_quantthresh__44u5__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u5__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p4_0 = {
+	_vq_quantthresh__44u5__p4_0,
+	_vq_quantmap__44u5__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u5__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u5__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u5__p4_0,
+	NULL,
+	&_vq_auxt__44u5__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u5__p5_0[] = {
+	 2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
+	11,10, 3, 5, 5, 7, 8, 8, 8,10,11, 6, 8, 7,10, 9,
+	10,10,11,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
+	10,10,11,11,13,12, 8, 8, 9, 9,10,11,11,12,13,10,
+	11,10,12,11,13,12,14,14,10,10,11,11,12,12,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44u5__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u5__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p5_0 = {
+	_vq_quantthresh__44u5__p5_0,
+	_vq_quantmap__44u5__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u5__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u5__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u5__p5_0,
+	NULL,
+	&_vq_auxt__44u5__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p6_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u5__p6_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
+	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
+	 8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
+	 9, 9,10,10,11,10,11,11, 9, 9, 9,10,10,11,10,11,
+	11,
+};
+
+static float _vq_quantthresh__44u5__p6_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u5__p6_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p6_0 = {
+	_vq_quantthresh__44u5__p6_0,
+	_vq_quantmap__44u5__p6_0,
+	9,
+	9
+};
+
+static static_codebook _44u5__p6_0 = {
+	2, 81,
+	_vq_lengthlist__44u5__p6_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u5__p6_0,
+	NULL,
+	&_vq_auxt__44u5__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u5__p7_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,11,10, 7,
+	11,10, 5, 9, 9, 7,10,10, 8,10,11, 4, 9, 9, 9,12,
+	12, 9,12,12, 8,12,12,11,12,12,10,12,13, 7,12,12,
+	11,12,12,10,12,13, 4, 9, 9, 9,12,12, 9,12,12, 7,
+	12,11,10,13,13,11,12,12, 7,12,12,10,13,13,11,12,
+	12,
+};
+
+static float _vq_quantthresh__44u5__p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44u5__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p7_0 = {
+	_vq_quantthresh__44u5__p7_0,
+	_vq_quantmap__44u5__p7_0,
+	3,
+	3
+};
+
+static static_codebook _44u5__p7_0 = {
+	4, 81,
+	_vq_lengthlist__44u5__p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44u5__p7_0,
+	NULL,
+	&_vq_auxt__44u5__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u5__p7_1[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7,
+	 8, 8, 9, 8, 8, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 8,
+	 9, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 6, 7, 7, 8,
+	 8, 9, 9, 9, 9, 9, 9, 7, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9,
+	 9, 9, 9, 9,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
+	10,10,10, 8, 9, 9, 9, 9, 9, 9,10,10,10,10, 8, 9,
+	 9, 9, 9, 9, 9,10,10,10,10,
+};
+
+static float _vq_quantthresh__44u5__p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u5__p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p7_1 = {
+	_vq_quantthresh__44u5__p7_1,
+	_vq_quantmap__44u5__p7_1,
+	11,
+	11
+};
+
+static static_codebook _44u5__p7_1 = {
+	2, 121,
+	_vq_lengthlist__44u5__p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u5__p7_1,
+	NULL,
+	&_vq_auxt__44u5__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p8_0[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u5__p8_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
+	 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
+	11, 6, 8, 7, 9, 9,10,10,11,11,13,12, 6, 8, 8, 9,
+	 9,10,10,11,11,12,13, 8, 9, 9,10,10,12,12,13,12,
+	14,13, 8, 9, 9,10,10,12,12,13,13,14,14, 9,11,11,
+	12,12,13,13,14,14,15,14, 9,11,11,12,12,13,13,14,
+	14,15,14,11,12,12,13,13,14,14,15,14,15,14,11,11,
+	12,13,13,14,14,14,14,15,15,
+};
+
+static float _vq_quantthresh__44u5__p8_0[] = {
+	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
+	38.5, 49.5, 
+};
+
+static long _vq_quantmap__44u5__p8_0[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p8_0 = {
+	_vq_quantthresh__44u5__p8_0,
+	_vq_quantmap__44u5__p8_0,
+	11,
+	11
+};
+
+static static_codebook _44u5__p8_0 = {
+	2, 121,
+	_vq_lengthlist__44u5__p8_0,
+	1, -524582912, 1618345984, 4, 0,
+	_vq_quantlist__44u5__p8_0,
+	NULL,
+	&_vq_auxt__44u5__p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p8_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u5__p8_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 6,
+	 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8,
+	 8, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44u5__p8_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u5__p8_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p8_1 = {
+	_vq_quantthresh__44u5__p8_1,
+	_vq_quantmap__44u5__p8_1,
+	11,
+	11
+};
+
+static static_codebook _44u5__p8_1 = {
+	2, 121,
+	_vq_lengthlist__44u5__p8_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u5__p8_1,
+	NULL,
+	&_vq_auxt__44u5__p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p9_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u5__p9_0[] = {
+	 1, 3, 2,12,10,13,13,13,13,13,13,13,13, 4, 9, 9,
+	13,13,13,13,13,13,13,13,13,13, 5,10, 9,13,13,13,
+	13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,
+	13,13,13,13,11,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
+	13,13,13,13,13,13,13,13,13,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,12,12,12,12,12,12,
+};
+
+static float _vq_quantthresh__44u5__p9_0[] = {
+	-1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 382.5, 
+	637.5, 892.5, 1147.5, 1402.5, 
+};
+
+static long _vq_quantmap__44u5__p9_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p9_0 = {
+	_vq_quantthresh__44u5__p9_0,
+	_vq_quantmap__44u5__p9_0,
+	13,
+	13
+};
+
+static static_codebook _44u5__p9_0 = {
+	2, 169,
+	_vq_lengthlist__44u5__p9_0,
+	1, -514332672, 1627381760, 4, 0,
+	_vq_quantlist__44u5__p9_0,
+	NULL,
+	&_vq_auxt__44u5__p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u5__p9_1[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 7, 8, 7, 9, 8, 9, 9, 4,
+	 7, 6, 9, 8,10,10, 9, 8, 9, 9, 9, 9, 9, 8, 5, 6,
+	 6, 8, 9,10,10, 9, 9, 9,10,10,10,10,11, 7, 8, 8,
+	10,10,11,11,10,10,11,11,11,12,11,11, 7, 8, 8,10,
+	10,11,11,10,10,11,11,12,11,11,11, 8, 9, 9,11,11,
+	12,12,11,11,12,11,12,12,12,12, 8, 9,10,11,11,12,
+	12,11,11,12,12,12,12,12,12, 8, 9, 9,10,10,12,11,
+	12,12,12,12,12,12,12,13, 8, 9, 9,11,11,11,11,12,
+	12,12,12,13,12,13,13, 9,10,10,11,11,12,12,12,13,
+	12,13,13,13,14,13, 9,10,10,11,11,12,12,12,13,13,
+	12,13,13,14,13, 9,11,10,12,11,13,12,12,13,13,13,
+	13,13,13,14, 9,10,10,12,12,12,12,12,13,13,13,13,
+	13,14,14,10,11,11,12,12,12,13,13,13,14,14,13,14,
+	14,14,10,11,11,12,12,12,12,13,12,13,14,13,14,14,
+	14,
+};
+
+static float _vq_quantthresh__44u5__p9_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__44u5__p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p9_1 = {
+	_vq_quantthresh__44u5__p9_1,
+	_vq_quantmap__44u5__p9_1,
+	15,
+	15
+};
+
+static static_codebook _44u5__p9_1 = {
+	2, 225,
+	_vq_lengthlist__44u5__p9_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__44u5__p9_1,
+	NULL,
+	&_vq_auxt__44u5__p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u5__p9_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44u5__p9_2[] = {
+	 2, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 7, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9,10, 9,10,10,10, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9,
+	 9, 9,10, 9,10, 9,10, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,10, 9,10,10,10,10,10, 8, 9, 9, 9, 9, 9, 9,10,
+	 9,10, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,10, 9,
+	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9,
+	 9,10, 9,10, 9,10,10,10,10,10,10, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+	 9, 9,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9,
+	 9,10,10, 9,10,10,10,10,10,10,10,10,10,10, 9, 9,
+	 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9, 9, 9,10, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44u5__p9_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44u5__p9_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u5__p9_2 = {
+	_vq_quantthresh__44u5__p9_2,
+	_vq_quantmap__44u5__p9_2,
+	17,
+	17
+};
+
+static static_codebook _44u5__p9_2 = {
+	2, 289,
+	_vq_lengthlist__44u5__p9_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44u5__p9_2,
+	NULL,
+	&_vq_auxt__44u5__p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u5__short[] = {
+	 4,10,17,13,17,13,17,17,17,17, 3, 6, 8, 9,11, 9,
+	15,12,16,17, 6, 5, 5, 7, 7, 8,10,11,17,17, 7, 8,
+	 7, 9, 9,10,13,13,17,17, 8, 6, 5, 7, 4, 7, 5, 8,
+	14,17, 9, 9, 8, 9, 7, 9, 8,10,16,17,12,10, 7, 8,
+	 4, 7, 4, 7,16,17,12,11, 9,10, 6, 9, 5, 7,14,17,
+	14,13,10,15, 4, 8, 3, 5,14,17,17,14,11,15, 6,10,
+	 6, 8,15,17,
+};
+
+static static_codebook _huff_book__44u5__short = {
+	2, 100,
+	_huff_lengthlist__44u5__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u6__long[] = {
+	 3, 9,14,13,14,13,16,12,13,14, 5, 4, 6, 6, 8, 9,
+	11,10,12,15,10, 5, 5, 6, 6, 8,10,10,13,16,10, 6,
+	 6, 6, 6, 8, 9, 9,12,14,13, 7, 6, 6, 4, 6, 6, 7,
+	11,14,10, 7, 7, 7, 6, 6, 6, 7,10,13,15,10, 9, 8,
+	 5, 6, 5, 6,10,14,10, 9, 8, 8, 6, 6, 5, 4, 6,11,
+	11,11,12,11,10, 9, 9, 5, 5, 9,10,12,15,13,13,13,
+	13, 8, 7, 7,
+};
+
+static static_codebook _huff_book__44u6__long = {
+	2, 100,
+	_huff_lengthlist__44u6__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u6__p1_0[] = {
+	 1, 4, 4, 4, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+	 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10,
+	10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
+	10,13,11,10,13,13, 5, 8, 8, 8,11,10, 8,10,10, 7,
+	10,10,10,13,13,10,11,13, 8,10,11,10,13,13,10,13,
+	12,
+};
+
+static float _vq_quantthresh__44u6__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u6__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p1_0 = {
+	_vq_quantthresh__44u6__p1_0,
+	_vq_quantmap__44u6__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u6__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u6__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u6__p1_0,
+	NULL,
+	&_vq_auxt__44u6__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u6__p2_0[] = {
+	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
+	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
+	 8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7,
+	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
+	 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44u6__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u6__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p2_0 = {
+	_vq_quantthresh__44u6__p2_0,
+	_vq_quantmap__44u6__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u6__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u6__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u6__p2_0,
+	NULL,
+	&_vq_auxt__44u6__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u6__p3_0[] = {
+	 2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+	 9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
+	 9,11,11, 7, 8, 9,11,11,10,11,11,14,14, 9,10,11,
+	13,14, 5, 7, 7, 9,10, 6, 9, 8,11,11, 7, 9, 9,11,
+	11, 9,11,10,14,13,10,11,11,14,13, 8,10,10,13,13,
+	10,11,11,15,15, 9,11,11,14,14,13,14,14,17,16,12,
+	13,14,16,16, 8,10,10,13,14, 9,11,11,14,15,10,11,
+	12,14,15,12,14,13,16,15,13,14,14,15,17, 5, 7, 7,
+	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,
+	14,10,11,11,14,14, 7, 9, 9,12,11, 9,11,11,13,13,
+	 9,11,11,13,13,11,13,13,14,15,11,12,13,15,16, 6,
+	 9, 9,11,12, 8,11,10,13,12, 9,11,11,13,14,11,13,
+	12,16,14,11,13,13,15,16,10,12,11,14,15,11,13,13,
+	15,17,11,13,13,17,16,15,15,16,17,16,14,15,16,18,
+	 0, 9,11,11,14,15,10,12,12,16,15,11,13,13,16,16,
+	13,15,14,18,15,14,16,16, 0, 0, 5, 7, 7,10,10, 7,
+	 9, 9,11,11, 7, 9, 9,11,11,10,11,11,14,14,10,11,
+	12,14,14, 6, 9, 9,11,11, 9,11,11,13,13, 8,10,11,
+	12,13,11,13,13,16,15,11,12,13,14,16, 7, 9, 9,11,
+	12, 9,11,11,13,13, 9,11,11,13,13,11,13,13,16,15,
+	11,13,12,15,15, 9,11,11,15,14,11,13,13,17,16,10,
+	12,13,15,16,14,16,16, 0,18,14,14,15,15,17,10,11,
+	12,15,15,11,13,13,16,16,11,13,13,16,16,14,16,16,
+	19,17,14,15,15,17,17, 8,10,10,14,14,10,12,11,15,
+	15,10,11,12,16,15,14,15,15,18,20,13,14,16,17,18,
+	 9,11,11,15,16,11,13,13,17,17,11,13,13,17,16,15,
+	16,16, 0, 0,15,16,16, 0, 0, 9,11,11,15,15,10,13,
+	12,17,15,11,13,13,17,16,15,17,15,20,19,15,16,16,
+	19, 0,13,15,14, 0,17,14,15,16, 0,20,15,16,16, 0,
+	19,17,18, 0, 0, 0,16,17,18, 0, 0,12,14,14,19,18,
+	13,15,14, 0,17,14,15,16,19,19,16,18,16, 0,19,19,
+	20,17,20, 0, 8,10,10,13,14,10,11,11,15,15,10,12,
+	12,15,16,14,15,14,19,16,14,15,15, 0,18, 9,11,11,
+	16,15,11,13,13, 0,16,11,12,13,16,17,14,16,17, 0,
+	19,15,16,16,18, 0, 9,11,11,15,16,11,13,13,16,16,
+	11,14,13,18,17,15,16,16,18,20,15,17,19, 0, 0,12,
+	14,14,17,17,14,16,15, 0, 0,13,14,15,19, 0,16,18,
+	20, 0, 0,16,16,18,18, 0,12,14,14,17,20,14,16,16,
+	19, 0,14,16,14, 0,20,16,20,17, 0, 0,17, 0,15, 0,
+	19,
+};
+
+static float _vq_quantthresh__44u6__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u6__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p3_0 = {
+	_vq_quantthresh__44u6__p3_0,
+	_vq_quantmap__44u6__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u6__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u6__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u6__p3_0,
+	NULL,
+	&_vq_auxt__44u6__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u6__p4_0[] = {
+	 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
+	 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 7, 8, 9,10, 9,10,10,11,11, 9, 9,10,
+	11,12, 6, 7, 7, 9, 9, 7, 8, 7,10, 9, 7, 8, 8,10,
+	10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
+	 9,10,10,12,12, 9,10,10,12,12,11,12,12,14,13,11,
+	11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,11,13,12,11,12,12,13,13, 5, 7, 7,
+	 9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,
+	11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 8, 9,11,11,
+	 8, 9, 9,11,11,10,10,11,12,13,10,10,11,12,12, 6,
+	 7, 7,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
+	10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
+	13,13,10,11,11,12,13,12,12,12,13,14,12,12,13,14,
+	14, 9,10,10,12,12, 9,10,10,13,12,10,11,11,13,13,
+	11,12,11,14,12,12,13,13,14,14, 6, 7, 7, 9, 9, 7,
+	 8, 7,10,10, 7, 8, 8,10,10, 9,10,10,12,11, 9,10,
+	10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
+	10,11,10,11,11,12,12,10,10,11,11,13, 7, 8, 8,10,
+	10, 8, 9, 9,11,11, 8, 9, 8,11,11,10,11,10,13,12,
+	10,11,11,13,12, 9,10,10,12,12,10,11,11,13,12, 9,
+	10,10,12,13,12,13,12,14,14,11,11,12,12,14, 9,10,
+	10,12,12,10,11,11,13,13,10,11,10,13,12,12,12,12,
+	14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
+	12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,
+	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
+	12,13,14,15,12,12,13,14,14, 9,10,10,12,12, 9,11,
+	10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,13,
+	14,15,11,12,12,14,13,11,12,12,14,14,12,13,13,14,
+	14,13,13,14,14,16,13,14,14,15,15,11,12,11,13,13,
+	11,12,11,14,13,12,12,13,14,15,12,14,12,15,12,13,
+	14,15,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,12,14,13,11,12,12,13,13, 9,10,10,
+	12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
+	14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
+	10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,
+	11,11,13,13,12,13,12,14,14,11,11,12,13,14,14,14,
+	14,16,15,12,12,14,12,15,11,12,12,13,14,12,13,13,
+	14,15,11,12,12,14,14,13,14,14,16,16,13,14,13,16,
+	13,
+};
+
+static float _vq_quantthresh__44u6__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u6__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p4_0 = {
+	_vq_quantthresh__44u6__p4_0,
+	_vq_quantmap__44u6__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u6__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u6__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u6__p4_0,
+	NULL,
+	&_vq_auxt__44u6__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u6__p5_0[] = {
+	 2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
+	11,11, 3, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7, 9, 9,
+	10, 9,12,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8,
+	10, 9,12,11,13,13, 8, 8, 9, 9,10,11,12,13,13,10,
+	11,11,12,12,13,13,14,14,10,10,11,11,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44u6__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u6__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p5_0 = {
+	_vq_quantthresh__44u6__p5_0,
+	_vq_quantmap__44u6__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u6__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u6__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u6__p5_0,
+	NULL,
+	&_vq_auxt__44u6__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p6_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u6__p6_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
+	 9, 9, 4, 4, 5, 6, 6, 7, 8, 9, 9, 5, 6, 6, 7, 7,
+	 8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
+	 8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9,10,10,11, 9,
+	 9, 9,10,10,11,11,12,11, 9, 9, 9,10,10,11,11,11,
+	12,
+};
+
+static float _vq_quantthresh__44u6__p6_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u6__p6_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p6_0 = {
+	_vq_quantthresh__44u6__p6_0,
+	_vq_quantmap__44u6__p6_0,
+	9,
+	9
+};
+
+static static_codebook _44u6__p6_0 = {
+	2, 81,
+	_vq_lengthlist__44u6__p6_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u6__p6_0,
+	NULL,
+	&_vq_auxt__44u6__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u6__p7_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10,10, 8,
+	10,10, 5, 8, 9, 7,10,10, 7,10, 9, 4, 8, 8, 9,11,
+	11, 8,11,11, 7,11,11,10,10,13,10,13,13, 7,11,11,
+	10,13,12,10,13,13, 5, 9, 8, 8,11,11, 9,11,11, 7,
+	11,11,10,13,13,10,12,13, 7,11,11,10,13,13, 9,13,
+	10,
+};
+
+static float _vq_quantthresh__44u6__p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44u6__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p7_0 = {
+	_vq_quantthresh__44u6__p7_0,
+	_vq_quantmap__44u6__p7_0,
+	3,
+	3
+};
+
+static static_codebook _44u6__p7_0 = {
+	4, 81,
+	_vq_lengthlist__44u6__p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44u6__p7_0,
+	NULL,
+	&_vq_auxt__44u6__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u6__p7_1[] = {
+	 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 6,
+	 8, 8, 8, 8, 8, 8, 4, 5, 5, 6, 7, 8, 8, 8, 8, 8,
+	 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 9, 9,
+	 9, 9, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8,
+	 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__44u6__p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u6__p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p7_1 = {
+	_vq_quantthresh__44u6__p7_1,
+	_vq_quantmap__44u6__p7_1,
+	11,
+	11
+};
+
+static static_codebook _44u6__p7_1 = {
+	2, 121,
+	_vq_lengthlist__44u6__p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u6__p7_1,
+	NULL,
+	&_vq_auxt__44u6__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p8_0[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u6__p8_0[] = {
+	 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7,
+	 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11,
+	11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9,
+	 9,10,10,11,11,12,12, 8, 9, 9,10,10,11,11,12,12,
+	13,13, 8, 9, 9,10,10,11,11,12,12,13,13,10,10,10,
+	11,11,13,13,13,13,15,14, 9,10,10,12,11,12,13,13,
+	13,14,15,11,12,12,13,13,13,13,15,14,15,15,11,11,
+	12,13,13,14,14,14,15,15,15,
+};
+
+static float _vq_quantthresh__44u6__p8_0[] = {
+	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
+	38.5, 49.5, 
+};
+
+static long _vq_quantmap__44u6__p8_0[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p8_0 = {
+	_vq_quantthresh__44u6__p8_0,
+	_vq_quantmap__44u6__p8_0,
+	11,
+	11
+};
+
+static static_codebook _44u6__p8_0 = {
+	2, 121,
+	_vq_lengthlist__44u6__p8_0,
+	1, -524582912, 1618345984, 4, 0,
+	_vq_quantlist__44u6__p8_0,
+	NULL,
+	&_vq_auxt__44u6__p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p8_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u6__p8_1[] = {
+	 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 7,
+	 7, 7, 8, 7, 8, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8,
+	 8, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 6, 7, 7,
+	 7, 7, 8, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
+	 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44u6__p8_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u6__p8_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p8_1 = {
+	_vq_quantthresh__44u6__p8_1,
+	_vq_quantmap__44u6__p8_1,
+	11,
+	11
+};
+
+static static_codebook _44u6__p8_1 = {
+	2, 121,
+	_vq_lengthlist__44u6__p8_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u6__p8_1,
+	NULL,
+	&_vq_auxt__44u6__p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p9_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u6__p9_0[] = {
+	 1, 3, 2, 9, 8,15,15,15,15,15,15,15,15,15,15, 4,
+	 8, 9,13,14,14,14,14,14,14,14,14,14,14,14, 5, 8,
+	 9,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
+	14,
+};
+
+static float _vq_quantthresh__44u6__p9_0[] = {
+	-1657.5, -1402.5, -1147.5, -892.5, -637.5, -382.5, -127.5, 127.5, 
+	382.5, 637.5, 892.5, 1147.5, 1402.5, 1657.5, 
+};
+
+static long _vq_quantmap__44u6__p9_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p9_0 = {
+	_vq_quantthresh__44u6__p9_0,
+	_vq_quantmap__44u6__p9_0,
+	15,
+	15
+};
+
+static static_codebook _44u6__p9_0 = {
+	2, 225,
+	_vq_lengthlist__44u6__p9_0,
+	1, -514071552, 1627381760, 4, 0,
+	_vq_quantlist__44u6__p9_0,
+	NULL,
+	&_vq_auxt__44u6__p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p9_1[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u6__p9_1[] = {
+	 1, 4, 4, 7, 7, 8, 9, 8, 8, 9, 8, 9, 8, 9, 9, 4,
+	 7, 6, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 7,
+	 6, 9, 9,10,10, 9, 9,10,10,10,10,11,11, 7, 9, 8,
+	10,10,11,11,10,10,11,11,11,11,11,11, 7, 8, 9,10,
+	10,11,11,10,10,11,11,11,11,11,12, 8,10,10,11,11,
+	12,12,11,11,12,12,12,12,13,12, 8,10,10,11,11,12,
+	11,11,11,11,12,12,12,12,13, 8, 9, 9,11,10,11,11,
+	12,12,12,12,13,12,13,12, 8, 9, 9,11,11,11,11,12,
+	12,12,12,12,13,13,13, 9,10,10,11,12,12,12,12,12,
+	13,13,13,13,13,13, 9,10,10,11,11,12,12,12,12,13,
+	13,13,13,14,13,10,10,10,12,11,12,12,13,13,13,13,
+	13,13,13,13,10,10,11,11,11,12,12,13,13,13,13,13,
+	13,13,13,10,11,11,12,12,13,12,12,13,13,13,13,13,
+	13,14,10,11,11,12,12,13,12,13,13,13,14,13,13,14,
+	13,
+};
+
+static float _vq_quantthresh__44u6__p9_1[] = {
+	-110.5, -93.5, -76.5, -59.5, -42.5, -25.5, -8.5, 8.5, 
+	25.5, 42.5, 59.5, 76.5, 93.5, 110.5, 
+};
+
+static long _vq_quantmap__44u6__p9_1[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p9_1 = {
+	_vq_quantthresh__44u6__p9_1,
+	_vq_quantmap__44u6__p9_1,
+	15,
+	15
+};
+
+static static_codebook _44u6__p9_1 = {
+	2, 225,
+	_vq_lengthlist__44u6__p9_1,
+	1, -522338304, 1620115456, 4, 0,
+	_vq_quantlist__44u6__p9_1,
+	NULL,
+	&_vq_auxt__44u6__p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u6__p9_2[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44u6__p9_2[] = {
+	 3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 9,
+	 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+	 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9,
+	 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10, 9, 9, 9,10, 9, 9,10, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 9,10, 9,10,10,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10,10, 9, 9,
+	10,
+};
+
+static float _vq_quantthresh__44u6__p9_2[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44u6__p9_2[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u6__p9_2 = {
+	_vq_quantthresh__44u6__p9_2,
+	_vq_quantmap__44u6__p9_2,
+	17,
+	17
+};
+
+static static_codebook _44u6__p9_2 = {
+	2, 289,
+	_vq_lengthlist__44u6__p9_2,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44u6__p9_2,
+	NULL,
+	&_vq_auxt__44u6__p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u6__short[] = {
+	 4,11,16,13,17,13,17,16,17,17, 4, 7, 9, 9,13,10,
+	16,12,16,17, 7, 6, 5, 7, 8, 9,12,12,16,17, 6, 9,
+	 7, 9,10,10,15,15,17,17, 6, 7, 5, 7, 5, 7, 7,10,
+	16,17, 7, 9, 8, 9, 8,10,11,11,15,17, 7, 7, 7, 8,
+	 5, 8, 8, 9,15,17, 8, 7, 9, 9, 7, 8, 7, 2, 7,15,
+	14,13,13,15, 5,10, 4, 3, 6,17,17,15,13,17, 7,11,
+	 7, 6, 9,16,
+};
+
+static static_codebook _huff_book__44u6__short = {
+	2, 100,
+	_huff_lengthlist__44u6__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u7__long[] = {
+	 3, 9,14,13,15,14,16,13,13,14, 5, 5, 7, 7, 8, 9,
+	11,10,12,15,10, 6, 5, 6, 6, 9,10,10,13,16,10, 6,
+	 6, 6, 6, 8, 9, 9,12,15,14, 7, 6, 6, 5, 6, 6, 8,
+	12,15,10, 8, 7, 7, 6, 7, 7, 7,11,13,14,10, 9, 8,
+	 5, 6, 4, 5, 9,12,10, 9, 9, 8, 6, 6, 5, 3, 6,11,
+	12,11,12,12,10, 9, 8, 5, 5, 8,10,11,15,13,13,13,
+	12, 8, 6, 7,
+};
+
+static static_codebook _huff_book__44u7__long = {
+	2, 100,
+	_huff_lengthlist__44u7__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u7__p1_0[] = {
+	 1, 4, 4, 4, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7,
+	10,10, 5, 8, 8, 7,10,10, 8,10,10, 5, 8, 8, 8,11,
+	10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10,
+	10,13,12,10,13,13, 5, 8, 8, 8,11,10, 8,10,11, 7,
+	10,10,10,13,13,10,12,13, 8,11,11,10,13,13,10,13,
+	12,
+};
+
+static float _vq_quantthresh__44u7__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u7__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p1_0 = {
+	_vq_quantthresh__44u7__p1_0,
+	_vq_quantmap__44u7__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u7__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u7__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u7__p1_0,
+	NULL,
+	&_vq_auxt__44u7__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u7__p2_0[] = {
+	 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6,
+	 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8,
+	 7, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7,
+	 7, 9, 8, 8, 9, 9, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6,
+	 8, 8, 8, 9, 9, 7, 8, 9, 6, 8, 8, 8, 9, 9, 8, 9,
+	 9,
+};
+
+static float _vq_quantthresh__44u7__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u7__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p2_0 = {
+	_vq_quantthresh__44u7__p2_0,
+	_vq_quantmap__44u7__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44u7__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44u7__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u7__p2_0,
+	NULL,
+	&_vq_auxt__44u7__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u7__p3_0[] = {
+	 2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+	 9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9,
+	 9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11,
+	13,14, 5, 7, 7, 9, 9, 7, 9, 8,11,11, 7, 9, 9,11,
+	11, 9,11,10,14,13,10,11,11,14,14, 8,10,10,14,13,
+	10,11,12,15,14, 9,11,11,15,14,13,14,14,16,16,12,
+	13,14,17,16, 8,10,10,13,13, 9,11,11,14,15,10,11,
+	12,14,15,12,14,13,16,16,13,14,15,15,17, 5, 7, 7,
+	10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,15,
+	14,10,11,12,14,14, 7, 9, 9,12,12, 9,11,11,13,13,
+	 9,11,11,13,13,11,13,13,14,17,11,13,13,15,16, 6,
+	 9, 9,11,11, 8,11,10,13,12, 9,11,11,13,13,11,13,
+	12,16,14,11,13,13,16,16,10,12,12,15,15,11,13,13,
+	16,16,11,13,13,16,15,14,16,17,17,19,14,16,16,18,
+	 0, 9,11,11,14,15,10,13,12,16,15,11,13,13,16,16,
+	14,15,14, 0,16,14,16,16,18, 0, 5, 7, 7,10,10, 7,
+	 9, 9,12,11, 7, 9, 9,11,12,10,11,11,15,14,10,11,
+	12,14,14, 6, 9, 9,11,11, 9,11,11,13,13, 8,10,11,
+	12,13,11,13,13,17,15,11,12,13,14,15, 7, 9, 9,11,
+	12, 9,11,11,13,13, 9,11,11,13,13,11,13,12,16,16,
+	11,13,13,15,14, 9,11,11,14,15,11,13,13,16,15,10,
+	12,13,16,16,15,16,16, 0, 0,14,13,15,16,18,10,11,
+	11,15,15,11,13,14,16,18,11,13,13,16,15,15,16,16,
+	19, 0,14,15,15,16,16, 8,10,10,13,13,10,12,11,16,
+	15,10,11,11,16,15,13,15,16,18, 0,13,14,15,17,17,
+	 9,11,11,15,15,11,13,13,16,18,11,13,13,16,17,15,
+	16,16, 0, 0,15,18,16, 0,17, 9,11,11,15,15,11,13,
+	12,17,15,11,13,14,16,17,15,18,15, 0,17,15,16,16,
+	18,19,13,15,14, 0,18,14,16,16,19,18,14,16,15,19,
+	19,16,18,19, 0, 0,16,17, 0, 0, 0,12,14,14,17,17,
+	13,16,14, 0,18,14,16,15,18, 0,16,18,16,19,17,18,
+	19,17, 0, 0, 8,10,10,14,14, 9,12,11,15,15,10,11,
+	12,15,17,13,15,15,18,16,14,16,15,18,17, 9,11,11,
+	16,15,11,13,13, 0,16,11,12,13,16,15,15,16,16, 0,
+	17,15,15,16,18,17, 9,12,11,15,17,11,13,13,16,16,
+	11,14,13,16,16,15,15,16,18,19,16,18,16, 0, 0,12,
+	14,14, 0,16,14,16,16, 0,18,13,14,15,16, 0,17,16,
+	18, 0, 0,16,16,17,19, 0,13,14,14,17, 0,14,17,16,
+	 0,19,14,15,15,18,19,17,16,18, 0, 0,15,19,16, 0,
+	 0,
+};
+
+static float _vq_quantthresh__44u7__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u7__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p3_0 = {
+	_vq_quantthresh__44u7__p3_0,
+	_vq_quantmap__44u7__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44u7__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44u7__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u7__p3_0,
+	NULL,
+	&_vq_auxt__44u7__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u7__p4_0[] = {
+	 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8,
+	 9, 9,11,11, 8, 9, 9,10,11, 6, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 6, 7, 8, 9,10, 9,10,10,12,12, 9, 9,10,
+	11,12, 6, 7, 7, 9, 9, 6, 8, 7,10, 9, 7, 8, 8,10,
+	10, 9,10, 9,12,11, 9,10,10,12,11, 8, 9, 9,11,11,
+	 9,10,10,12,12, 9,10,10,12,12,11,12,12,13,14,11,
+	11,12,13,13, 8, 9, 9,11,11, 9,10,10,12,11, 9,10,
+	10,12,12,11,12,11,13,13,11,12,12,13,13, 6, 7, 7,
+	 9, 9, 7, 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,
+	11, 9,10,10,12,12, 7, 8, 8,10,10, 8, 8, 9,11,11,
+	 8, 9, 9,11,11,10,11,11,12,12,10,10,11,12,13, 6,
+	 7, 7,10,10, 7, 9, 8,11,10, 8, 8, 9,10,11,10,11,
+	10,13,11,10,11,11,12,12, 9,10,10,12,12,10,10,11,
+	13,13,10,11,11,13,12,12,12,13,13,14,12,12,13,14,
+	14, 9,10,10,12,12, 9,10,10,12,12,10,11,11,13,13,
+	11,12,11,14,12,12,13,13,14,14, 6, 7, 7, 9, 9, 7,
+	 8, 7,10,10, 7, 7, 8,10,10, 9,10,10,12,11, 9,10,
+	10,11,12, 6, 7, 7,10,10, 8, 9, 8,11,10, 7, 8, 9,
+	10,11,10,11,11,13,12,10,10,11,11,13, 7, 8, 8,10,
+	10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,10,13,12,
+	10,11,11,12,12, 9,10,10,12,12,10,11,11,13,12, 9,
+	10,10,12,13,12,13,12,14,14,11,11,12,12,14, 9,10,
+	10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,12,
+	14,14,12,13,12,14,13, 8, 9, 9,11,11, 9,10,10,12,
+	12, 9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,
+	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,
+	13,13,14,14,12,12,13,14,14, 9,10,10,12,12, 9,11,
+	10,13,12,10,10,11,12,13,11,13,12,14,13,12,12,13,
+	14,14,11,12,12,13,13,11,12,13,14,14,12,13,13,14,
+	14,13,13,14,14,16,13,14,14,16,16,11,11,11,13,13,
+	11,12,11,14,13,12,12,13,14,15,13,14,12,16,13,14,
+	14,14,15,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,12,14,13,11,12,12,13,14, 9,10,10,
+	12,12,10,11,10,13,12, 9,10,11,12,13,12,13,12,14,
+	14,12,12,13,13,14, 9,10,10,12,12,10,11,11,12,13,
+	10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,
+	12,12,13,13,12,13,12,14,14,11,11,12,13,14,13,15,
+	14,16,15,13,12,14,13,16,11,12,12,13,13,12,13,13,
+	14,14,12,12,12,14,14,13,14,14,15,15,13,14,13,16,
+	14,
+};
+
+static float _vq_quantthresh__44u7__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u7__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p4_0 = {
+	_vq_quantthresh__44u7__p4_0,
+	_vq_quantmap__44u7__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44u7__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44u7__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u7__p4_0,
+	NULL,
+	&_vq_auxt__44u7__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u7__p5_0[] = {
+	 2, 3, 3, 6, 6, 7, 8,10,10, 4, 5, 5, 8, 7, 8, 8,
+	11,11, 3, 5, 5, 7, 7, 8, 9,11,11, 6, 8, 7, 9, 9,
+	10,10,12,12, 6, 7, 8, 9,10,10,10,12,12, 8, 8, 8,
+	10,10,12,11,13,13, 8, 8, 9,10,10,11,11,13,13,10,
+	11,11,12,12,13,13,14,14,10,11,11,12,12,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44u7__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u7__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p5_0 = {
+	_vq_quantthresh__44u7__p5_0,
+	_vq_quantmap__44u7__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44u7__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44u7__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u7__p5_0,
+	NULL,
+	&_vq_auxt__44u7__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p6_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u7__p6_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 8, 7,
+	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+	 8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7,
+	 8, 8,10, 9,11,11, 7, 7, 8, 8, 8, 9,10,11,11, 9,
+	 9, 9,10,10,11,10,12,11, 9, 9, 9,10,10,11,11,11,
+	12,
+};
+
+static float _vq_quantthresh__44u7__p6_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u7__p6_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p6_0 = {
+	_vq_quantthresh__44u7__p6_0,
+	_vq_quantmap__44u7__p6_0,
+	9,
+	9
+};
+
+static static_codebook _44u7__p6_0 = {
+	2, 81,
+	_vq_lengthlist__44u7__p6_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u7__p6_0,
+	NULL,
+	&_vq_auxt__44u7__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p7_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u7__p7_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8, 9, 9, 7,
+	10,10, 5, 8, 9, 7, 9,10, 8, 9, 9, 4, 9, 9, 9,11,
+	10, 8,10,10, 7,11,10,10,10,12,10,12,12, 7,10,10,
+	10,12,11,10,12,12, 5, 9, 9, 8,10,10, 9,11,11, 7,
+	11,10,10,12,12,10,11,12, 7,10,11,10,12,12,10,12,
+	10,
+};
+
+static float _vq_quantthresh__44u7__p7_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44u7__p7_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p7_0 = {
+	_vq_quantthresh__44u7__p7_0,
+	_vq_quantmap__44u7__p7_0,
+	3,
+	3
+};
+
+static static_codebook _44u7__p7_0 = {
+	4, 81,
+	_vq_lengthlist__44u7__p7_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44u7__p7_0,
+	NULL,
+	&_vq_auxt__44u7__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u7__p7_1[] = {
+	 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6,
+	 8, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8,
+	 8, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 6, 6, 7, 7,
+	 7, 8, 8, 9, 9, 9, 9, 7, 8, 7, 8, 8, 9, 9, 9, 9,
+	 9, 9, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 8, 8, 8,
+	 9, 9, 9, 9,10, 9, 9, 9, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9,10, 8, 8, 8, 9, 9, 9, 9,10, 9,10,10, 8, 8,
+	 8, 9, 9, 9, 9, 9,10,10,10,
+};
+
+static float _vq_quantthresh__44u7__p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u7__p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p7_1 = {
+	_vq_quantthresh__44u7__p7_1,
+	_vq_quantmap__44u7__p7_1,
+	11,
+	11
+};
+
+static static_codebook _44u7__p7_1 = {
+	2, 121,
+	_vq_lengthlist__44u7__p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u7__p7_1,
+	NULL,
+	&_vq_auxt__44u7__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p8_0[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u7__p8_0[] = {
+	 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7,
+	 9, 9,11,10,12,12, 5, 6, 5, 7, 7, 9, 9,10,11,12,
+	12, 6, 7, 7, 8, 8,10,10,11,11,13,13, 6, 7, 7, 8,
+	 8,10,10,11,12,13,13, 8, 9, 9,10,10,11,11,12,12,
+	14,14, 8, 9, 9,10,10,11,11,12,12,14,14,10,10,10,
+	11,11,13,12,14,14,15,15,10,10,10,12,12,13,13,14,
+	14,15,15,11,12,12,13,13,14,14,15,14,16,15,11,12,
+	12,13,13,14,14,15,15,15,16,
+};
+
+static float _vq_quantthresh__44u7__p8_0[] = {
+	-49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 27.5, 
+	38.5, 49.5, 
+};
+
+static long _vq_quantmap__44u7__p8_0[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p8_0 = {
+	_vq_quantthresh__44u7__p8_0,
+	_vq_quantmap__44u7__p8_0,
+	11,
+	11
+};
+
+static static_codebook _44u7__p8_0 = {
+	2, 121,
+	_vq_lengthlist__44u7__p8_0,
+	1, -524582912, 1618345984, 4, 0,
+	_vq_quantlist__44u7__p8_0,
+	NULL,
+	&_vq_auxt__44u7__p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p8_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u7__p8_1[] = {
+	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
+	 7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7,
+	 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
+	 7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 7, 8, 8,
+	 8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+	 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
+	 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44u7__p8_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u7__p8_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p8_1 = {
+	_vq_quantthresh__44u7__p8_1,
+	_vq_quantmap__44u7__p8_1,
+	11,
+	11
+};
+
+static static_codebook _44u7__p8_1 = {
+	2, 121,
+	_vq_lengthlist__44u7__p8_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u7__p8_1,
+	NULL,
+	&_vq_auxt__44u7__p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p9_0[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u7__p9_0[] = {
+	 1, 3, 3,10,10,10,10,10,10,10,10, 4,10,10,10,10,
+	10,10,10,10,10,10, 4,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,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,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,10,10,10,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,
+};
+
+static float _vq_quantthresh__44u7__p9_0[] = {
+	-2866.5, -2229.5, -1592.5, -955.5, -318.5, 318.5, 955.5, 1592.5, 
+	2229.5, 2866.5, 
+};
+
+static long _vq_quantmap__44u7__p9_0[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p9_0 = {
+	_vq_quantthresh__44u7__p9_0,
+	_vq_quantmap__44u7__p9_0,
+	11,
+	11
+};
+
+static static_codebook _44u7__p9_0 = {
+	2, 121,
+	_vq_lengthlist__44u7__p9_0,
+	1, -512171520, 1630791680, 4, 0,
+	_vq_quantlist__44u7__p9_0,
+	NULL,
+	&_vq_auxt__44u7__p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p9_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u7__p9_1[] = {
+	 1, 4, 4, 6, 5, 8, 6, 9, 8,10, 9,11,10, 4, 6, 6,
+	 8, 8, 9, 9,11,10,11,11,11,11, 4, 6, 6, 8, 8,10,
+	 9,11,11,11,11,11,12, 6, 8, 8,10,10,11,11,12,12,
+	13,12,13,13, 6, 8, 8,10,10,11,11,12,12,12,13,14,
+	13, 8,10,10,11,11,12,13,14,14,14,14,15,15, 8,10,
+	10,11,12,12,13,13,14,14,14,14,15, 9,11,11,13,13,
+	14,14,15,14,16,15,17,15, 9,11,11,12,13,14,14,15,
+	14,15,15,15,16,10,12,12,13,14,15,15,15,15,16,17,
+	16,17,10,13,12,13,14,14,16,16,16,16,15,16,17,11,
+	13,13,14,15,14,17,15,16,17,17,17,17,11,13,13,14,
+	15,15,15,15,17,17,16,17,16,
+};
+
+static float _vq_quantthresh__44u7__p9_1[] = {
+	-269.5, -220.5, -171.5, -122.5, -73.5, -24.5, 24.5, 73.5, 
+	122.5, 171.5, 220.5, 269.5, 
+};
+
+static long _vq_quantmap__44u7__p9_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p9_1 = {
+	_vq_quantthresh__44u7__p9_1,
+	_vq_quantmap__44u7__p9_1,
+	13,
+	13
+};
+
+static static_codebook _44u7__p9_1 = {
+	2, 169,
+	_vq_lengthlist__44u7__p9_1,
+	1, -518889472, 1622704128, 4, 0,
+	_vq_quantlist__44u7__p9_1,
+	NULL,
+	&_vq_auxt__44u7__p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u7__p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44u7__p9_2[] = {
+	 2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+	 6, 6, 6, 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, 8, 8, 8,
+	 8,
+};
+
+static float _vq_quantthresh__44u7__p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44u7__p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u7__p9_2 = {
+	_vq_quantthresh__44u7__p9_2,
+	_vq_quantmap__44u7__p9_2,
+	49,
+	49
+};
+
+static static_codebook _44u7__p9_2 = {
+	1, 49,
+	_vq_lengthlist__44u7__p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44u7__p9_2,
+	NULL,
+	&_vq_auxt__44u7__p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u7__short[] = {
+	 5,12,17,16,16,17,17,17,17,17, 4, 7,11,11,12, 9,
+	17,10,17,17, 7, 7, 8, 9, 7, 9,11,10,15,17, 7, 9,
+	10,11,10,12,14,12,16,17, 7, 8, 5, 7, 4, 7, 7, 8,
+	16,16, 6,10, 9,10, 7,10,11,11,16,17, 6, 8, 8, 9,
+	 5, 7, 5, 8,16,17, 5, 5, 8, 7, 6, 7, 7, 6, 6,14,
+	12,10,12,11, 7,11, 4, 4, 2, 7,17,15,15,15, 8,15,
+	 6, 8, 5, 9,
+};
+
+static static_codebook _huff_book__44u7__short = {
+	2, 100,
+	_huff_lengthlist__44u7__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u8__long[] = {
+	 3, 9,13,14,14,15,14,14,15,15, 5, 4, 6, 8,10,12,
+	12,14,15,15, 9, 5, 4, 5, 8,10,11,13,16,16,10, 7,
+	 4, 3, 5, 7, 9,11,13,13,10, 9, 7, 4, 4, 6, 8,10,
+	12,14,13,11, 9, 6, 5, 5, 6, 8,12,14,13,11,10, 8,
+	 7, 6, 6, 7,10,14,13,11,12,10, 8, 7, 6, 6, 9,13,
+	12,11,14,12,11, 9, 8, 7, 9,11,11,12,14,13,14,11,
+	10, 8, 8, 9,
+};
+
+static static_codebook _huff_book__44u8__long = {
+	2, 100,
+	_huff_lengthlist__44u8__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u8__short[] = {
+	 6,14,18,18,17,17,17,17,17,17, 4, 7, 9, 9,10,13,
+	15,17,17,17, 6, 7, 5, 6, 8,11,16,17,16,17, 5, 7,
+	 5, 4, 6,10,14,17,17,17, 6, 6, 6, 5, 7,10,13,16,
+	17,17, 7, 6, 7, 7, 7, 8, 7,10,15,16,12, 9, 9, 6,
+	 6, 5, 3, 5,11,15,14,14,13, 5, 5, 7, 3, 4, 8,15,
+	17,17,13, 7, 7,10, 6, 6,10,15,17,17,16,10,11,14,
+	10,10,15,17,
+};
+
+static static_codebook _huff_book__44u8__short = {
+	2, 100,
+	_huff_lengthlist__44u8__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u8_p1_0[] = {
+	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 7, 9,
+	 9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,11,10, 7, 9, 9,
+	 9,11,10, 9,10,11, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7,
+	 9, 9, 9,11,10, 9,10,10, 8, 9, 9, 9,11,11, 9,11,
+	10,
+};
+
+static float _vq_quantthresh__44u8_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u8_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p1_0 = {
+	_vq_quantthresh__44u8_p1_0,
+	_vq_quantmap__44u8_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u8_p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u8_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u8_p1_0,
+	NULL,
+	&_vq_auxt__44u8_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u8_p2_0[] = {
+	 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8,
+	 9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,10,
+	11,12, 5, 7, 7, 9, 9, 7, 8, 7,10,10, 7, 8, 8,10,
+	10, 9,10, 9,12,11, 9,10,10,12,12, 8, 9, 9,12,11,
+	 9,10,10,12,12, 9,10,10,12,12,11,12,12,14,14,11,
+	11,12,13,14, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,11,13,13,11,12,12,14,14, 5, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
+	12, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
+	 8, 9, 9,11,11,10,11,11,12,13,10,11,11,12,13, 6,
+	 8, 8,10,10, 8, 9, 8,11,10, 8, 9, 9,11,11,10,11,
+	10,13,12,10,11,11,13,13, 9,10,10,12,12,10,11,11,
+	13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,
+	14, 9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,
+	11,13,12,14,13,12,13,13,14,14, 5, 7, 7, 9, 9, 7,
+	 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,
+	10,12,12, 7, 8, 8,10,10, 8, 9, 9,11,11, 8, 8, 9,
+	10,11,10,11,11,13,13,10,10,11,12,13, 7, 8, 8,10,
+	10, 8, 9, 9,11,11, 8, 9, 9,11,11,10,11,11,13,13,
+	10,11,11,13,12, 9,10,10,12,12,10,11,11,13,13,10,
+	10,11,12,13,12,13,13,14,14,12,12,13,13,14, 9,10,
+	10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,
+	15,14,12,13,13,14,13, 8, 9, 9,11,11, 9,10,10,12,
+	12, 9,10,10,12,12,12,12,12,14,13,11,12,12,14,14,
+	 9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,
+	13,13,14,15,12,13,13,14,15, 9,10,10,12,12,10,11,
+	10,13,12,10,11,11,13,13,12,13,12,15,14,12,13,13,
+	14,15,11,12,12,14,14,12,13,13,14,14,12,13,13,15,
+	14,14,14,14,14,16,14,14,15,16,16,11,12,12,14,14,
+	11,12,12,14,14,12,13,13,14,15,13,14,13,16,14,14,
+	14,14,16,16, 8, 9, 9,11,11, 9,10,10,12,12, 9,10,
+	10,12,12,11,12,12,14,13,11,12,12,14,14, 9,10,10,
+	12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,15,
+	14,12,12,13,13,14, 9,10,10,12,12,10,11,11,13,13,
+	10,11,11,13,13,12,13,13,14,14,12,13,13,15,14,11,
+	12,12,14,13,12,13,13,15,14,11,12,12,13,14,14,15,
+	14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,
+	14,15,12,13,12,15,14,14,14,14,16,15,14,15,13,16,
+	14,
+};
+
+static float _vq_quantthresh__44u8_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u8_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p2_0 = {
+	_vq_quantthresh__44u8_p2_0,
+	_vq_quantmap__44u8_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44u8_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44u8_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u8_p2_0,
+	NULL,
+	&_vq_auxt__44u8_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u8_p3_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7,
+	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+	 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7,
+	 8, 8, 9, 9,11,10, 7, 7, 7, 8, 8, 9, 9,10,11, 9,
+	 9, 9,10,10,11,10,12,11, 9, 9, 9, 9,10,11,11,11,
+	12,
+};
+
+static float _vq_quantthresh__44u8_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u8_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p3_0 = {
+	_vq_quantthresh__44u8_p3_0,
+	_vq_quantmap__44u8_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44u8_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44u8_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u8_p3_0,
+	NULL,
+	&_vq_auxt__44u8_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44u8_p4_0[] = {
+	 4, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,11,11,11,
+	11, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,
+	12,12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,
+	11,12,12, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,
+	11,11,12,12, 6, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,
+	10,11,11,12,12, 7, 7, 7, 8, 8, 9, 8,10, 9,10, 9,
+	11,10,12,11,13,12, 7, 7, 7, 8, 8, 8, 9, 9,10, 9,
+	10,10,11,11,12,12,13, 8, 8, 8, 9, 9, 9, 9,10,10,
+	11,10,11,11,12,12,13,13, 8, 8, 8, 9, 9, 9,10,10,
+	10,10,11,11,11,12,12,12,13, 8, 9, 9, 9, 9,10, 9,
+	11,10,11,11,12,11,13,12,13,13, 8, 9, 9, 9, 9, 9,
+	10,10,11,11,11,11,12,12,13,13,13,10,10,10,10,10,
+	11,10,11,11,12,11,13,12,13,13,14,13,10,10,10,10,
+	10,10,11,11,11,11,12,12,13,13,13,13,14,11,11,11,
+	11,11,12,11,12,12,13,12,13,13,14,13,14,14,11,11,
+	11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,11,
+	12,12,12,12,13,12,13,12,13,13,14,13,14,14,14,14,
+	11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,
+	14,
+};
+
+static float _vq_quantthresh__44u8_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44u8_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p4_0 = {
+	_vq_quantthresh__44u8_p4_0,
+	_vq_quantmap__44u8_p4_0,
+	17,
+	17
+};
+
+static static_codebook _44u8_p4_0 = {
+	2, 289,
+	_vq_lengthlist__44u8_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44u8_p4_0,
+	NULL,
+	&_vq_auxt__44u8_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u8_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7,
+	 9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10,
+	10, 8,10,10, 7,10,10, 9,10,12, 9,12,11, 7,10,10,
+	 9,11,10, 9,11,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
+	10,10, 9,11,11, 9,10,11, 7,10,10, 9,11,11,10,12,
+	10,
+};
+
+static float _vq_quantthresh__44u8_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44u8_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p5_0 = {
+	_vq_quantthresh__44u8_p5_0,
+	_vq_quantmap__44u8_p5_0,
+	3,
+	3
+};
+
+static static_codebook _44u8_p5_0 = {
+	4, 81,
+	_vq_lengthlist__44u8_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44u8_p5_0,
+	NULL,
+	&_vq_auxt__44u8_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u8_p5_1[] = {
+	 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 5, 5, 6, 6,
+	 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8,
+	 8, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7,
+	 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8,
+	 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 8, 7,
+	 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8,
+	 8, 8, 8, 8, 8, 8, 8, 9, 9,
+};
+
+static float _vq_quantthresh__44u8_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u8_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p5_1 = {
+	_vq_quantthresh__44u8_p5_1,
+	_vq_quantmap__44u8_p5_1,
+	11,
+	11
+};
+
+static static_codebook _44u8_p5_1 = {
+	2, 121,
+	_vq_lengthlist__44u8_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u8_p5_1,
+	NULL,
+	&_vq_auxt__44u8_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u8_p6_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9,10,10, 6, 7, 7, 7, 8, 8, 8, 8, 9,
+	 9,10,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 8,10, 9,11,
+	10, 7, 8, 8, 8, 8, 8, 9, 9, 9,10,10,11,11, 7, 8,
+	 8, 8, 8, 9, 8, 9, 9,10,10,11,11, 8, 8, 8, 9, 9,
+	 9, 9, 9,10,10,10,11,11, 8, 8, 8, 9, 9, 9, 9,10,
+	 9,10,10,11,11, 9, 9, 9, 9,10,10,10,10,10,10,11,
+	11,12, 9, 9, 9,10, 9,10,10,10,10,11,10,12,11,10,
+	10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,
+	11,11,11,11,11,12,11,12,12,
+};
+
+static float _vq_quantthresh__44u8_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u8_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p6_0 = {
+	_vq_quantthresh__44u8_p6_0,
+	_vq_quantmap__44u8_p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u8_p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u8_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u8_p6_0,
+	NULL,
+	&_vq_auxt__44u8_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u8_p6_1[] = {
+	 3, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static float _vq_quantthresh__44u8_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u8_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p6_1 = {
+	_vq_quantthresh__44u8_p6_1,
+	_vq_quantmap__44u8_p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u8_p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u8_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u8_p6_1,
+	NULL,
+	&_vq_auxt__44u8_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u8_p7_0[] = {
+	 1, 4, 5, 6, 6, 7, 7, 8, 8,10,10,11,11, 5, 6, 6,
+	 7, 7, 8, 8, 9, 9,11,10,12,11, 5, 6, 6, 7, 7, 8,
+	 8, 9, 9,10,11,11,12, 6, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,12,12, 6, 7, 7, 8, 8, 9, 9,10,10,11,12,13,
+	12, 7, 8, 8, 9, 9,10,10,11,11,12,12,13,13, 8, 8,
+	 8, 9, 9,10,10,11,11,12,12,13,13, 9, 9, 9,10,10,
+	11,11,12,12,13,13,14,14, 9, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,10,11,11,12,11,13,12,13,13,14,14,
+	15,15,10,11,11,11,12,12,13,13,14,14,14,15,15,11,
+	12,12,13,13,14,13,15,14,15,15,16,15,11,11,12,13,
+	13,13,14,14,14,15,15,15,16,
+};
+
+static float _vq_quantthresh__44u8_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__44u8_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p7_0 = {
+	_vq_quantthresh__44u8_p7_0,
+	_vq_quantmap__44u8_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44u8_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44u8_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__44u8_p7_0,
+	NULL,
+	&_vq_auxt__44u8_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u8_p7_1[] = {
+	 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7,
+	 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7,
+	 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8,
+	 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7,
+	 8, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8,
+	 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
+	 7, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44u8_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u8_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p7_1 = {
+	_vq_quantthresh__44u8_p7_1,
+	_vq_quantmap__44u8_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44u8_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44u8_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u8_p7_1,
+	NULL,
+	&_vq_auxt__44u8_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u8_p8_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8,10, 9,11,10, 4,
+	 6, 6, 8, 8,10, 9, 9, 9,10,10,11,10,12,10, 4, 6,
+	 6, 8, 8,10,10, 9, 9,10,10,11,11,11,12, 7, 8, 8,
+	10,10,11,11,11,10,12,11,12,12,13,11, 7, 8, 8,10,
+	10,11,11,10,10,11,11,12,12,13,13, 8,10,10,11,11,
+	12,11,12,11,13,12,13,12,14,13, 8,10, 9,11,11,12,
+	12,12,12,12,12,13,13,14,13, 8, 9, 9,11,10,12,11,
+	13,12,13,13,14,13,14,13, 8, 9, 9,10,11,12,12,12,
+	12,13,13,14,15,14,14, 9,10,10,12,11,13,12,13,13,
+	14,13,14,14,14,14, 9,10,10,12,12,12,12,13,13,14,
+	14,14,15,14,14,10,11,11,13,12,13,12,14,14,14,14,
+	14,14,15,15,10,11,11,12,12,13,13,14,14,14,15,15,
+	14,16,15,11,12,12,13,12,14,14,14,13,15,14,15,15,
+	15,17,11,12,12,13,13,14,14,14,15,15,14,15,15,14,
+	17,
+};
+
+static float _vq_quantthresh__44u8_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44u8_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p8_0 = {
+	_vq_quantthresh__44u8_p8_0,
+	_vq_quantmap__44u8_p8_0,
+	15,
+	15
+};
+
+static static_codebook _44u8_p8_0 = {
+	2, 225,
+	_vq_lengthlist__44u8_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44u8_p8_0,
+	NULL,
+	&_vq_auxt__44u8_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44u8_p8_1[] = {
+	 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8,
+	 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
+	 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10, 9,10, 8, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
+	10, 9,10, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,
+	10,10,10,10,10,10,10,10, 8, 9, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10,10, 9,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
+	10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,
+	10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,
+	10, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10, 9, 9, 9,10, 9,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,10,
+	 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10, 9, 9, 9,10, 9,10, 9,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44u8_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44u8_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p8_1 = {
+	_vq_quantthresh__44u8_p8_1,
+	_vq_quantmap__44u8_p8_1,
+	21,
+	21
+};
+
+static static_codebook _44u8_p8_1 = {
+	2, 441,
+	_vq_lengthlist__44u8_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44u8_p8_1,
+	NULL,
+	&_vq_auxt__44u8_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p9_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u8_p9_0[] = {
+	 1, 3, 3, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9,
+	 9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8,
+	 8,
+};
+
+static float _vq_quantthresh__44u8_p9_0[] = {
+	-3258.5, -2327.5, -1396.5, -465.5, 465.5, 1396.5, 2327.5, 3258.5, 
+};
+
+static long _vq_quantmap__44u8_p9_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p9_0 = {
+	_vq_quantthresh__44u8_p9_0,
+	_vq_quantmap__44u8_p9_0,
+	9,
+	9
+};
+
+static static_codebook _44u8_p9_0 = {
+	2, 81,
+	_vq_lengthlist__44u8_p9_0,
+	1, -511895552, 1631393792, 4, 0,
+	_vq_quantlist__44u8_p9_0,
+	NULL,
+	&_vq_auxt__44u8_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p9_1[] = {
+	9,
+	8,
+	10,
+	7,
+	11,
+	6,
+	12,
+	5,
+	13,
+	4,
+	14,
+	3,
+	15,
+	2,
+	16,
+	1,
+	17,
+	0,
+	18,
+};
+
+static long _vq_lengthlist__44u8_p9_1[] = {
+	 1, 4, 4, 7, 7, 8, 7, 8, 6, 9, 7,10, 8,11,10,11,
+	11,11,11, 4, 7, 6, 9, 9,10, 9, 9, 9,10,10,11,10,
+	11,10,11,11,13,11, 4, 7, 7, 9, 9, 9, 9, 9, 9,10,
+	10,11,10,11,11,11,12,11,12, 7, 9, 8,11,11,11,11,
+	10,10,11,11,12,12,12,12,12,12,14,13, 7, 8, 9,10,
+	11,11,11,10,10,11,11,11,11,12,12,14,12,13,14, 8,
+	 9, 9,11,11,11,11,11,11,12,12,14,12,15,14,14,14,
+	15,14, 8, 9, 9,11,11,11,11,12,11,12,12,13,13,13,
+	13,13,13,14,14, 8, 9, 9,11,10,12,11,12,12,13,13,
+	13,13,15,14,14,14,16,16, 8, 9, 9,10,11,11,12,12,
+	12,13,13,13,14,14,14,15,16,15,15, 9,10,10,11,12,
+	12,13,13,13,14,14,16,14,14,16,16,16,16,15, 9,10,
+	10,11,11,12,13,13,14,15,14,16,14,15,16,16,16,16,
+	15,10,11,11,12,13,13,14,15,15,15,15,15,16,15,16,
+	15,16,15,15,10,11,11,13,13,14,13,13,15,14,15,15,
+	16,15,15,15,16,15,16,10,12,12,14,14,14,14,14,16,
+	16,15,15,15,16,16,16,16,16,16,11,12,12,14,14,14,
+	14,15,15,16,15,16,15,16,15,16,16,16,16,12,12,13,
+	14,14,15,16,16,16,16,16,16,15,16,16,16,16,16,16,
+	12,13,13,14,14,14,14,15,16,15,16,16,16,16,16,16,
+	16,16,16,12,13,14,14,14,16,15,16,15,16,16,16,16,
+	16,16,16,16,16,16,12,14,13,14,15,15,15,16,15,16,
+	16,15,16,16,16,16,16,16,16,
+};
+
+static float _vq_quantthresh__44u8_p9_1[] = {
+	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
+	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
+	367.5, 416.5, 
+};
+
+static long _vq_quantmap__44u8_p9_1[] = {
+	   17,   15,   13,   11,    9,    7,    5,    3,
+	    1,    0,    2,    4,    6,    8,   10,   12,
+	   14,   16,   18,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p9_1 = {
+	_vq_quantthresh__44u8_p9_1,
+	_vq_quantmap__44u8_p9_1,
+	19,
+	19
+};
+
+static static_codebook _44u8_p9_1 = {
+	2, 361,
+	_vq_lengthlist__44u8_p9_1,
+	1, -518287360, 1622704128, 5, 0,
+	_vq_quantlist__44u8_p9_1,
+	NULL,
+	&_vq_auxt__44u8_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u8_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44u8_p9_2[] = {
+	 2, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+	 6, 6, 6, 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,
+};
+
+static float _vq_quantthresh__44u8_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44u8_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u8_p9_2 = {
+	_vq_quantthresh__44u8_p9_2,
+	_vq_quantmap__44u8_p9_2,
+	49,
+	49
+};
+
+static static_codebook _44u8_p9_2 = {
+	1, 49,
+	_vq_lengthlist__44u8_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44u8_p9_2,
+	NULL,
+	&_vq_auxt__44u8_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u9__long[] = {
+	 3, 9,13,13,14,15,14,14,15,15, 5, 5, 9,10,12,12,
+	13,14,16,15,10, 6, 6, 6, 8,11,12,13,16,15,11, 7,
+	 5, 3, 5, 8,10,12,15,15,10,10, 7, 4, 3, 5, 8,10,
+	12,12,12,12, 9, 7, 5, 4, 6, 8,10,13,13,12,11, 9,
+	 7, 5, 5, 6, 9,12,14,12,12,10, 8, 6, 6, 6, 7,11,
+	13,12,14,13,10, 8, 7, 7, 7,10,11,11,12,13,12,11,
+	10, 8, 8, 9,
+};
+
+static static_codebook _huff_book__44u9__long = {
+	2, 100,
+	_huff_lengthlist__44u9__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44u9__short[] = {
+	 9,16,18,18,17,17,17,17,17,17, 5, 8,11,12,11,12,
+	17,17,16,16, 6, 6, 8, 8, 9,10,14,15,16,16, 6, 7,
+	 7, 4, 6, 9,13,16,16,16, 6, 6, 7, 4, 5, 8,11,15,
+	17,16, 7, 6, 7, 6, 6, 8, 9,10,14,16,11, 8, 8, 7,
+	 6, 6, 3, 4,10,15,14,12,12,10, 5, 6, 3, 3, 8,13,
+	15,17,15,11, 6, 8, 6, 6, 9,14,17,15,15,12, 8,10,
+	 9, 9,12,15,
+};
+
+static static_codebook _huff_book__44u9__short = {
+	2, 100,
+	_huff_lengthlist__44u9__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u9_p1_0[] = {
+	 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7,
+	 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9,
+	 9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,11,11, 7, 9, 9,
+	 9,11,10, 9,11,11, 5, 7, 7, 7, 9, 9, 8, 9,10, 7,
+	 9, 9, 9,11,11, 9,10,11, 7, 9,10, 9,11,11, 9,11,
+	10,
+};
+
+static float _vq_quantthresh__44u9_p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44u9_p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p1_0 = {
+	_vq_quantthresh__44u9_p1_0,
+	_vq_quantmap__44u9_p1_0,
+	3,
+	3
+};
+
+static static_codebook _44u9_p1_0 = {
+	4, 81,
+	_vq_lengthlist__44u9_p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44u9_p1_0,
+	NULL,
+	&_vq_auxt__44u9_p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p2_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u9_p2_0[] = {
+	 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8,
+	 9, 9,11,10, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8,
+	 8,10,10, 7, 8, 8, 9,10, 9,10,10,11,11, 9, 9,10,
+	11,11, 6, 7, 7, 9, 9, 7, 8, 8,10, 9, 7, 8, 8,10,
+	10, 9,10, 9,11,11, 9,10,10,11,11, 8, 9, 9,11,11,
+	 9,10,10,12,11, 9,10,10,11,12,11,11,11,13,13,11,
+	11,11,12,13, 8, 9, 9,11,11, 9,10,10,11,11, 9,10,
+	10,12,11,11,12,11,13,12,11,11,12,13,13, 6, 7, 7,
+	 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,
+	11, 9,10,10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,11,
+	 8, 9, 9,10,10,10,11,11,12,12,10,10,11,12,12, 7,
+	 8, 8,10,10, 8, 9, 8,10,10, 8, 9, 9,10,10,10,11,
+	10,12,11,10,10,11,12,12, 9,10,10,11,12,10,11,11,
+	12,12,10,11,10,12,12,12,12,12,13,13,11,12,12,13,
+	13, 9,10,10,11,11, 9,10,10,12,12,10,11,11,12,13,
+	11,12,11,13,12,12,12,12,13,14, 6, 7, 7, 9, 9, 7,
+	 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,11,11, 9,10,
+	10,11,12, 7, 8, 8,10,10, 8, 9, 9,11,10, 8, 8, 9,
+	10,10,10,11,10,12,12,10,10,11,11,12, 7, 8, 8,10,
+	10, 8, 9, 9,10,10, 8, 9, 9,10,10,10,11,10,12,12,
+	10,11,10,12,12, 9,10,10,12,11,10,11,11,12,12, 9,
+	10,10,12,12,12,12,12,13,13,11,11,12,12,14, 9,10,
+	10,11,12,10,11,11,12,12,10,11,11,12,12,11,12,12,
+	14,14,12,12,12,13,13, 8, 9, 9,11,11, 9,10,10,12,
+	11, 9,10,10,12,12,11,12,11,13,13,11,11,12,13,13,
+	 9,10,10,12,12,10,11,11,12,12,10,11,11,12,12,12,
+	12,12,14,14,12,12,12,13,13, 9,10,10,12,11,10,11,
+	10,12,12,10,11,11,12,12,11,12,12,14,13,12,12,12,
+	13,14,11,12,11,13,13,11,12,12,13,13,12,12,12,14,
+	14,13,13,13,13,15,13,13,14,15,15,11,11,11,13,13,
+	11,12,11,13,13,11,12,12,13,13,12,13,12,15,13,13,
+	13,14,14,15, 8, 9, 9,11,11, 9,10,10,11,12, 9,10,
+	10,11,12,11,12,11,13,13,11,12,12,13,13, 9,10,10,
+	11,12,10,11,10,12,12,10,10,11,12,13,12,12,12,14,
+	13,11,12,12,13,14, 9,10,10,12,12,10,11,11,12,12,
+	10,11,11,12,12,12,12,12,14,13,12,12,12,14,13,11,
+	11,11,13,13,11,12,12,14,13,11,11,12,13,13,13,13,
+	13,15,14,12,12,13,13,15,11,12,12,13,13,12,12,12,
+	13,14,11,12,12,13,13,13,13,14,14,15,13,13,13,14,
+	14,
+};
+
+static float _vq_quantthresh__44u9_p2_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u9_p2_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p2_0 = {
+	_vq_quantthresh__44u9_p2_0,
+	_vq_quantmap__44u9_p2_0,
+	5,
+	5
+};
+
+static static_codebook _44u9_p2_0 = {
+	4, 625,
+	_vq_lengthlist__44u9_p2_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u9_p2_0,
+	NULL,
+	&_vq_auxt__44u9_p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p3_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44u9_p3_0[] = {
+	 3, 4, 4, 5, 5, 7, 7, 8, 8, 4, 5, 5, 6, 6, 7, 7,
+	 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7,
+	 8, 8, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7,
+	 8, 8, 9, 9,10,10, 7, 7, 7, 8, 8, 9, 9,10,10, 8,
+	 9, 9,10, 9,10,10,11,11, 8, 9, 9, 9,10,10,10,11,
+	11,
+};
+
+static float _vq_quantthresh__44u9_p3_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44u9_p3_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p3_0 = {
+	_vq_quantthresh__44u9_p3_0,
+	_vq_quantmap__44u9_p3_0,
+	9,
+	9
+};
+
+static static_codebook _44u9_p3_0 = {
+	2, 81,
+	_vq_lengthlist__44u9_p3_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44u9_p3_0,
+	NULL,
+	&_vq_auxt__44u9_p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p4_0[] = {
+	8,
+	7,
+	9,
+	6,
+	10,
+	5,
+	11,
+	4,
+	12,
+	3,
+	13,
+	2,
+	14,
+	1,
+	15,
+	0,
+	16,
+};
+
+static long _vq_lengthlist__44u9_p4_0[] = {
+	 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11,
+	11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,
+	11,11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,
+	10,11,11, 6, 6, 6, 7, 6, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,12,11, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9,10,
+	10,11,11,11,12, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,
+	10,10,11,11,12,12, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9,
+	 9,10,10,11,11,12,12, 8, 8, 8, 8, 8, 9, 8,10, 9,
+	10,10,11,10,12,11,13,12, 8, 8, 8, 8, 8, 9, 9, 9,
+	10,10,10,10,11,11,12,12,12, 8, 8, 8, 9, 9, 9, 9,
+	10,10,11,10,12,11,12,12,13,12, 8, 8, 8, 9, 9, 9,
+	 9,10,10,10,11,11,11,12,12,12,13, 9, 9, 9,10,10,
+	10,10,11,10,11,11,12,11,13,12,13,13, 9, 9,10,10,
+	10,10,10,10,11,11,11,11,12,12,13,13,13,10,11,10,
+	11,11,11,11,12,11,12,12,13,12,13,13,14,13,10,10,
+	10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,11,
+	11,11,12,11,12,12,12,12,13,13,13,13,14,13,14,14,
+	11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,
+	14,
+};
+
+static float _vq_quantthresh__44u9_p4_0[] = {
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+};
+
+static long _vq_quantmap__44u9_p4_0[] = {
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p4_0 = {
+	_vq_quantthresh__44u9_p4_0,
+	_vq_quantmap__44u9_p4_0,
+	17,
+	17
+};
+
+static static_codebook _44u9_p4_0 = {
+	2, 289,
+	_vq_lengthlist__44u9_p4_0,
+	1, -529530880, 1611661312, 5, 0,
+	_vq_quantlist__44u9_p4_0,
+	NULL,
+	&_vq_auxt__44u9_p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p5_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44u9_p5_0[] = {
+	 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7,
+	 9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10,
+	10, 8,10,10, 7,10,10, 9,10,12, 9,11,11, 7,10,10,
+	 9,11,10, 9,11,12, 5, 8, 8, 8,10,10, 8,10,10, 7,
+	10,10, 9,12,11, 9,10,11, 7,10,10, 9,11,11,10,12,
+	10,
+};
+
+static float _vq_quantthresh__44u9_p5_0[] = {
+	-5.5, 5.5, 
+};
+
+static long _vq_quantmap__44u9_p5_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p5_0 = {
+	_vq_quantthresh__44u9_p5_0,
+	_vq_quantmap__44u9_p5_0,
+	3,
+	3
+};
+
+static static_codebook _44u9_p5_0 = {
+	4, 81,
+	_vq_lengthlist__44u9_p5_0,
+	1, -529137664, 1618345984, 2, 0,
+	_vq_quantlist__44u9_p5_0,
+	NULL,
+	&_vq_auxt__44u9_p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p5_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u9_p5_1[] = {
+	 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 6,
+	 7, 7, 7, 7, 8, 7, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7,
+	 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 6, 6, 6, 7,
+	 7, 7, 7, 7, 7, 8, 8, 7, 7, 7, 7, 7, 8, 7, 8, 8,
+	 8, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 7, 7, 7,
+	 8, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8,
+	 8, 8, 8, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8,
+	 8, 8, 8, 8, 8, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44u9_p5_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u9_p5_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p5_1 = {
+	_vq_quantthresh__44u9_p5_1,
+	_vq_quantmap__44u9_p5_1,
+	11,
+	11
+};
+
+static static_codebook _44u9_p5_1 = {
+	2, 121,
+	_vq_lengthlist__44u9_p5_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u9_p5_1,
+	NULL,
+	&_vq_auxt__44u9_p5_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u9_p6_0[] = {
+	 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5,
+	 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 5, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	10,10,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10,
+	10, 7, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9,10,10,11,11, 8, 8, 8, 9, 9,
+	 9, 9, 9,10,10,10,11,11, 8, 8, 8, 9, 9, 9, 9,10,
+	 9,10,10,11,11, 9, 9, 9,10,10,10,10,10,11,11,11,
+	11,12, 9, 9, 9,10,10,10,10,10,10,11,10,12,11,10,
+	10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,
+	10,11,11,11,11,12,11,12,12,
+};
+
+static float _vq_quantthresh__44u9_p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44u9_p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p6_0 = {
+	_vq_quantthresh__44u9_p6_0,
+	_vq_quantmap__44u9_p6_0,
+	13,
+	13
+};
+
+static static_codebook _44u9_p6_0 = {
+	2, 169,
+	_vq_lengthlist__44u9_p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44u9_p6_0,
+	NULL,
+	&_vq_auxt__44u9_p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44u9_p6_1[] = {
+	 4, 4, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5,
+	 5, 5, 5, 5, 5, 5, 5, 5, 5,
+};
+
+static float _vq_quantthresh__44u9_p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44u9_p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p6_1 = {
+	_vq_quantthresh__44u9_p6_1,
+	_vq_quantmap__44u9_p6_1,
+	5,
+	5
+};
+
+static static_codebook _44u9_p6_1 = {
+	2, 25,
+	_vq_lengthlist__44u9_p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44u9_p6_1,
+	NULL,
+	&_vq_auxt__44u9_p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p7_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44u9_p7_0[] = {
+	 1, 4, 5, 6, 6, 7, 7, 8, 9,10,10,11,11, 5, 6, 6,
+	 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8,
+	 8, 9, 9,10,10,11,11, 6, 7, 7, 8, 8, 9, 9,10,10,
+	11,11,12,12, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,12,
+	12, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13, 8, 8,
+	 8, 9, 9,10,10,11,11,12,12,13,13, 9, 9, 9,10,10,
+	11,11,12,12,13,13,13,13, 9, 9, 9,10,10,11,11,12,
+	12,13,13,14,14,10,10,10,11,11,12,12,13,13,14,13,
+	15,14,10,10,10,11,11,12,12,13,13,14,14,14,14,11,
+	11,12,12,12,13,13,14,14,14,14,15,15,11,11,12,12,
+	12,13,13,14,14,14,15,15,15,
+};
+
+static float _vq_quantthresh__44u9_p7_0[] = {
+	-60.5, -49.5, -38.5, -27.5, -16.5, -5.5, 5.5, 16.5, 
+	27.5, 38.5, 49.5, 60.5, 
+};
+
+static long _vq_quantmap__44u9_p7_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p7_0 = {
+	_vq_quantthresh__44u9_p7_0,
+	_vq_quantmap__44u9_p7_0,
+	13,
+	13
+};
+
+static static_codebook _44u9_p7_0 = {
+	2, 169,
+	_vq_lengthlist__44u9_p7_0,
+	1, -523206656, 1618345984, 4, 0,
+	_vq_quantlist__44u9_p7_0,
+	NULL,
+	&_vq_auxt__44u9_p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p7_1[] = {
+	5,
+	4,
+	6,
+	3,
+	7,
+	2,
+	8,
+	1,
+	9,
+	0,
+	10,
+};
+
+static long _vq_lengthlist__44u9_p7_1[] = {
+	 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7,
+	 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+	 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 7,
+	 7, 7, 7, 7, 7, 8, 8, 8, 8,
+};
+
+static float _vq_quantthresh__44u9_p7_1[] = {
+	-4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 
+	3.5, 4.5, 
+};
+
+static long _vq_quantmap__44u9_p7_1[] = {
+	    9,    7,    5,    3,    1,    0,    2,    4,
+	    6,    8,   10,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p7_1 = {
+	_vq_quantthresh__44u9_p7_1,
+	_vq_quantmap__44u9_p7_1,
+	11,
+	11
+};
+
+static static_codebook _44u9_p7_1 = {
+	2, 121,
+	_vq_lengthlist__44u9_p7_1,
+	1, -531365888, 1611661312, 4, 0,
+	_vq_quantlist__44u9_p7_1,
+	NULL,
+	&_vq_auxt__44u9_p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p8_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u9_p8_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,11,10, 4,
+	 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10,12,10, 4, 6,
+	 6, 8, 8, 9,10, 9, 9,10,10,11,11,12,12, 7, 8, 8,
+	10,10,11,11,10,10,11,11,12,12,13,12, 7, 8, 8,10,
+	10,11,11,10,10,11,11,12,12,12,13, 8,10, 9,11,11,
+	12,12,11,11,12,12,13,13,14,13, 8, 9, 9,11,11,12,
+	12,11,12,12,12,13,13,14,13, 8, 9, 9,10,10,12,11,
+	13,12,13,13,14,13,15,14, 8, 9, 9,10,10,11,12,12,
+	12,13,13,13,14,14,14, 9,10,10,12,11,13,12,13,13,
+	14,13,14,14,14,15, 9,10,10,11,12,12,12,13,13,14,
+	14,14,15,15,15,10,11,11,12,12,13,13,14,14,14,14,
+	15,14,16,15,10,11,11,12,12,13,13,13,14,14,14,14,
+	14,15,16,11,12,12,13,13,14,13,14,14,15,14,15,16,
+	16,16,11,12,12,13,13,14,13,14,14,15,15,15,16,15,
+	15,
+};
+
+static float _vq_quantthresh__44u9_p8_0[] = {
+	-136.5, -115.5, -94.5, -73.5, -52.5, -31.5, -10.5, 10.5, 
+	31.5, 52.5, 73.5, 94.5, 115.5, 136.5, 
+};
+
+static long _vq_quantmap__44u9_p8_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p8_0 = {
+	_vq_quantthresh__44u9_p8_0,
+	_vq_quantmap__44u9_p8_0,
+	15,
+	15
+};
+
+static static_codebook _44u9_p8_0 = {
+	2, 225,
+	_vq_lengthlist__44u9_p8_0,
+	1, -520986624, 1620377600, 4, 0,
+	_vq_quantlist__44u9_p8_0,
+	NULL,
+	&_vq_auxt__44u9_p8_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p8_1[] = {
+	10,
+	9,
+	11,
+	8,
+	12,
+	7,
+	13,
+	6,
+	14,
+	5,
+	15,
+	4,
+	16,
+	3,
+	17,
+	2,
+	18,
+	1,
+	19,
+	0,
+	20,
+};
+
+static long _vq_lengthlist__44u9_p8_1[] = {
+	 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7,
+	 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10, 8, 8,
+	 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9,10,10, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	10, 9,10, 9,10,10,10,10, 8, 8, 8, 9, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9,10,10, 9,10,10,10,10,10, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
+	10,10, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,
+	10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9,
+	 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+	10, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10,10,10,
+	10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9,10,10,
+	10,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	 9, 9, 9, 9,10, 9, 9,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10, 9, 9, 9,10, 9,10, 9,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10, 9, 9, 9,10, 9,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 9,
+	 9, 9, 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10, 9, 9, 9,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44u9_p8_1[] = {
+	-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, 
+	-1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
+	6.5, 7.5, 8.5, 9.5, 
+};
+
+static long _vq_quantmap__44u9_p8_1[] = {
+	   19,   17,   15,   13,   11,    9,    7,    5,
+	    3,    1,    0,    2,    4,    6,    8,   10,
+	   12,   14,   16,   18,   20,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p8_1 = {
+	_vq_quantthresh__44u9_p8_1,
+	_vq_quantmap__44u9_p8_1,
+	21,
+	21
+};
+
+static static_codebook _44u9_p8_1 = {
+	2, 441,
+	_vq_lengthlist__44u9_p8_1,
+	1, -529268736, 1611661312, 5, 0,
+	_vq_quantlist__44u9_p8_1,
+	NULL,
+	&_vq_auxt__44u9_p8_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p9_0[] = {
+	7,
+	6,
+	8,
+	5,
+	9,
+	4,
+	10,
+	3,
+	11,
+	2,
+	12,
+	1,
+	13,
+	0,
+	14,
+};
+
+static long _vq_lengthlist__44u9_p9_0[] = {
+	 1, 3, 3,11,11,11,11,11,11,11,11,11,11,11,11, 4,
+	10,11,11,11,11,11,11,11,11,11,11,11,11,11, 4,10,
+	10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,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,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44u9_p9_0[] = {
+	-6051.5, -5120.5, -4189.5, -3258.5, -2327.5, -1396.5, -465.5, 465.5, 
+	1396.5, 2327.5, 3258.5, 4189.5, 5120.5, 6051.5, 
+};
+
+static long _vq_quantmap__44u9_p9_0[] = {
+	   13,   11,    9,    7,    5,    3,    1,    0,
+	    2,    4,    6,    8,   10,   12,   14,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p9_0 = {
+	_vq_quantthresh__44u9_p9_0,
+	_vq_quantmap__44u9_p9_0,
+	15,
+	15
+};
+
+static static_codebook _44u9_p9_0 = {
+	2, 225,
+	_vq_lengthlist__44u9_p9_0,
+	1, -510036736, 1631393792, 4, 0,
+	_vq_quantlist__44u9_p9_0,
+	NULL,
+	&_vq_auxt__44u9_p9_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p9_1[] = {
+	9,
+	8,
+	10,
+	7,
+	11,
+	6,
+	12,
+	5,
+	13,
+	4,
+	14,
+	3,
+	15,
+	2,
+	16,
+	1,
+	17,
+	0,
+	18,
+};
+
+static long _vq_lengthlist__44u9_p9_1[] = {
+	 1, 4, 4, 7, 7, 8, 7, 8, 7, 9, 8,10, 9,10,10,11,
+	11,12,12, 4, 7, 6, 9, 9,10, 9, 9, 8,10,10,11,10,
+	12,10,13,12,13,12, 4, 6, 6, 9, 9, 9, 9, 9, 9,10,
+	10,11,11,11,12,12,12,12,12, 7, 9, 8,11,10,10,10,
+	11,10,11,11,12,12,13,12,13,13,13,13, 7, 8, 9,10,
+	10,11,11,10,10,11,11,11,12,13,13,13,13,14,14, 8,
+	 9, 9,11,11,12,11,12,12,13,12,12,13,13,14,15,14,
+	14,14, 8, 9, 9,10,11,11,11,12,12,13,12,13,13,14,
+	14,14,15,14,16, 8, 9, 9,11,10,12,12,12,12,15,13,
+	13,13,17,14,15,15,15,14, 8, 9, 9,10,11,11,12,13,
+	12,13,13,13,14,15,14,14,14,16,15, 9,11,10,12,12,
+	13,13,13,13,14,14,16,15,14,14,14,15,15,17, 9,10,
+	10,11,11,13,13,13,14,14,13,15,14,15,14,15,16,15,
+	16,10,11,11,12,12,13,14,15,14,15,14,14,15,17,16,
+	15,15,17,17,10,12,11,13,12,14,14,13,14,15,15,15,
+	15,16,17,17,15,17,16,11,12,12,14,13,15,14,15,16,
+	17,15,17,15,17,15,15,16,17,15,11,11,12,14,14,14,
+	14,14,15,15,16,15,17,17,17,16,17,16,15,12,12,13,
+	14,14,14,15,14,15,15,16,16,17,16,17,15,17,17,16,
+	12,14,12,14,14,15,15,15,14,14,16,16,16,15,16,16,
+	15,17,15,12,13,13,14,15,14,15,17,15,17,16,17,17,
+	17,16,17,16,17,17,12,13,13,14,16,15,15,15,16,15,
+	17,17,15,17,15,17,16,16,17,
+};
+
+static float _vq_quantthresh__44u9_p9_1[] = {
+	-416.5, -367.5, -318.5, -269.5, -220.5, -171.5, -122.5, -73.5, 
+	-24.5, 24.5, 73.5, 122.5, 171.5, 220.5, 269.5, 318.5, 
+	367.5, 416.5, 
+};
+
+static long _vq_quantmap__44u9_p9_1[] = {
+	   17,   15,   13,   11,    9,    7,    5,    3,
+	    1,    0,    2,    4,    6,    8,   10,   12,
+	   14,   16,   18,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p9_1 = {
+	_vq_quantthresh__44u9_p9_1,
+	_vq_quantmap__44u9_p9_1,
+	19,
+	19
+};
+
+static static_codebook _44u9_p9_1 = {
+	2, 361,
+	_vq_lengthlist__44u9_p9_1,
+	1, -518287360, 1622704128, 5, 0,
+	_vq_quantlist__44u9_p9_1,
+	NULL,
+	&_vq_auxt__44u9_p9_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44u9_p9_2[] = {
+	24,
+	23,
+	25,
+	22,
+	26,
+	21,
+	27,
+	20,
+	28,
+	19,
+	29,
+	18,
+	30,
+	17,
+	31,
+	16,
+	32,
+	15,
+	33,
+	14,
+	34,
+	13,
+	35,
+	12,
+	36,
+	11,
+	37,
+	10,
+	38,
+	9,
+	39,
+	8,
+	40,
+	7,
+	41,
+	6,
+	42,
+	5,
+	43,
+	4,
+	44,
+	3,
+	45,
+	2,
+	46,
+	1,
+	47,
+	0,
+	48,
+};
+
+static long _vq_lengthlist__44u9_p9_2[] = {
+	 2, 4, 4, 5, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
+	 6, 6, 6, 7, 6, 7, 6, 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,
+};
+
+static float _vq_quantthresh__44u9_p9_2[] = {
+	-23.5, -22.5, -21.5, -20.5, -19.5, -18.5, -17.5, -16.5, 
+	-15.5, -14.5, -13.5, -12.5, -11.5, -10.5, -9.5, -8.5, 
+	-7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 
+	0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 
+	8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 
+	16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 
+};
+
+static long _vq_quantmap__44u9_p9_2[] = {
+	   47,   45,   43,   41,   39,   37,   35,   33,
+	   31,   29,   27,   25,   23,   21,   19,   17,
+	   15,   13,   11,    9,    7,    5,    3,    1,
+	    0,    2,    4,    6,    8,   10,   12,   14,
+	   16,   18,   20,   22,   24,   26,   28,   30,
+	   32,   34,   36,   38,   40,   42,   44,   46,
+	   48,
+};
+
+static encode_aux_threshmatch _vq_auxt__44u9_p9_2 = {
+	_vq_quantthresh__44u9_p9_2,
+	_vq_quantmap__44u9_p9_2,
+	49,
+	49
+};
+
+static static_codebook _44u9_p9_2 = {
+	1, 49,
+	_vq_lengthlist__44u9_p9_2,
+	1, -526909440, 1611661312, 6, 0,
+	_vq_quantlist__44u9_p9_2,
+	NULL,
+	&_vq_auxt__44u9_p9_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44un1__long[] = {
+	 5, 6,12, 9,14, 9, 9,19, 6, 1, 5, 5, 8, 7, 9,19,
+	12, 4, 4, 7, 7, 9,11,18, 9, 5, 6, 6, 8, 7, 8,17,
+	14, 8, 7, 8, 8,10,12,18, 9, 6, 8, 6, 8, 6, 8,18,
+	 9, 8,11, 8,11, 7, 5,15,16,18,18,18,17,15,11,18,
+};
+
+static static_codebook _huff_book__44un1__long = {
+	2, 64,
+	_huff_lengthlist__44un1__long,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p1_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44un1__p1_0[] = {
+	 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8,
+	10,11, 5, 8, 8, 8,11,10, 8,11,10, 4, 9, 9, 8,11,
+	11, 8,11,11, 8,12,11,10,12,14,11,13,13, 7,11,11,
+	10,13,11,11,13,14, 4, 8, 9, 8,11,11, 8,11,12, 7,
+	11,11,11,14,13,10,11,13, 8,11,12,11,13,13,10,14,
+	12,
+};
+
+static float _vq_quantthresh__44un1__p1_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44un1__p1_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p1_0 = {
+	_vq_quantthresh__44un1__p1_0,
+	_vq_quantmap__44un1__p1_0,
+	3,
+	3
+};
+
+static static_codebook _44un1__p1_0 = {
+	4, 81,
+	_vq_lengthlist__44un1__p1_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44un1__p1_0,
+	NULL,
+	&_vq_auxt__44un1__p1_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p2_0[] = {
+	1,
+	0,
+	2,
+};
+
+static long _vq_lengthlist__44un1__p2_0[] = {
+	 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6,
+	 7, 9, 5, 7, 7, 6, 8, 7, 7, 9, 8, 4, 7, 7, 7, 9,
+	 8, 7, 8, 8, 7, 9, 8, 8, 8,10, 9,10,10, 6, 8, 8,
+	 7,10, 8, 9,10,10, 5, 7, 7, 7, 8, 8, 7, 8, 9, 6,
+	 8, 8, 9,10,10, 7, 8,10, 6, 8, 9, 9,10,10, 8,10,
+	 8,
+};
+
+static float _vq_quantthresh__44un1__p2_0[] = {
+	-0.5, 0.5, 
+};
+
+static long _vq_quantmap__44un1__p2_0[] = {
+	    1,    0,    2,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p2_0 = {
+	_vq_quantthresh__44un1__p2_0,
+	_vq_quantmap__44un1__p2_0,
+	3,
+	3
+};
+
+static static_codebook _44un1__p2_0 = {
+	4, 81,
+	_vq_lengthlist__44un1__p2_0,
+	1, -535822336, 1611661312, 2, 0,
+	_vq_quantlist__44un1__p2_0,
+	NULL,
+	&_vq_auxt__44un1__p2_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p3_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44un1__p3_0[] = {
+	 1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9,
+	10, 9,12,12, 9, 9,10,11,12, 6, 8, 8,10,10, 8,10,
+	10,11,11, 8, 9,10,11,11,10,11,11,13,13,10,11,11,
+	12,13, 6, 8, 8,10,10, 8,10, 9,11,11, 8,10,10,11,
+	11,10,11,11,13,12,10,11,11,13,12, 9,11,11,15,13,
+	10,12,11,15,13,10,11,11,15,14,12,14,13,16,15,12,
+	13,13,17,16, 9,11,11,13,15,10,11,12,14,15,10,11,
+	12,14,15,12,13,13,15,16,12,13,13,16,16, 5, 8, 8,
+	11,11, 8,10,10,12,12, 8,10,10,12,12,11,12,12,14,
+	14,11,12,12,14,14, 8,11,10,13,12,10,11,12,12,13,
+	10,12,12,13,13,12,12,13,13,15,11,12,13,15,14, 7,
+	10,10,12,12, 9,12,11,13,12,10,12,12,13,14,12,13,
+	12,15,13,11,13,12,14,15,10,12,12,16,14,11,12,12,
+	16,15,11,13,12,17,16,13,13,15,15,17,13,15,15,20,
+	17,10,12,12,14,16,11,12,12,15,15,11,13,13,15,18,
+	13,14,13,15,15,13,15,14,16,16, 5, 8, 8,11,11, 8,
+	10,10,12,12, 8,10,10,12,12,11,12,12,14,14,11,12,
+	12,14,15, 7,10,10,13,12,10,12,12,14,13, 9,10,12,
+	12,13,11,13,13,15,15,11,12,13,13,15, 8,10,10,12,
+	13,10,12,12,13,13,10,12,11,13,13,11,13,12,15,15,
+	12,13,12,15,13,10,12,12,16,14,11,12,12,16,15,10,
+	12,12,16,14,14,15,14,18,16,13,13,14,15,16,10,12,
+	12,14,16,11,13,13,16,16,11,13,12,14,16,13,15,15,
+	18,18,13,15,13,16,14, 8,11,11,16,16,10,13,13,17,
+	16,10,12,12,16,15,14,16,15,20,17,13,14,14,17,17,
+	 9,12,12,16,16,11,13,14,16,17,11,13,13,16,16,15,
+	15,19,18, 0,14,15,15,18,18, 9,12,12,17,16,11,13,
+	12,17,16,11,12,13,15,17,15,16,15, 0,19,14,15,14,
+	19,18,12,14,14, 0,16,13,14,14,19,18,13,15,16,17,
+	16,15,15,17,18, 0,14,16,16,19, 0,12,14,14,16,18,
+	13,15,13,17,18,13,15,14,17,18,15,18,14,18,18,16,
+	17,16, 0,17, 8,11,11,15,15,10,12,12,16,16,10,13,
+	13,16,16,13,15,14,17,17,14,15,17,17,18, 9,12,12,
+	16,15,11,13,13,16,16,11,12,13,17,17,14,14,15,17,
+	17,14,15,16, 0,18, 9,12,12,16,17,11,13,13,16,17,
+	11,14,13,18,17,14,16,14,17,17,15,17,17,18,18,12,
+	14,14, 0,16,13,15,15,19, 0,12,13,15, 0, 0,14,17,
+	16,19, 0,16,15,18,18, 0,12,14,14,17, 0,13,14,14,
+	17, 0,13,15,14, 0,18,15,16,16, 0,18,15,18,15, 0,
+	17,
+};
+
+static float _vq_quantthresh__44un1__p3_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44un1__p3_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p3_0 = {
+	_vq_quantthresh__44un1__p3_0,
+	_vq_quantmap__44un1__p3_0,
+	5,
+	5
+};
+
+static static_codebook _44un1__p3_0 = {
+	4, 625,
+	_vq_lengthlist__44un1__p3_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44un1__p3_0,
+	NULL,
+	&_vq_auxt__44un1__p3_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p4_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44un1__p4_0[] = {
+	 3, 5, 5, 9, 9, 5, 6, 6,10, 9, 5, 6, 6, 9,10,10,
+	10,10,12,11, 9,10,10,12,12, 5, 7, 7,10,10, 7, 7,
+	 8,10,11, 7, 7, 8,10,11,10,10,11,11,13,10,10,11,
+	11,13, 6, 7, 7,10,10, 7, 8, 7,11,10, 7, 8, 7,10,
+	10,10,11, 9,13,11,10,11,10,13,11,10,10,10,14,13,
+	10,11,11,14,13,10,10,11,13,14,12,12,13,15,15,12,
+	12,13,13,14,10,10,10,12,13,10,11,10,13,13,10,11,
+	11,13,13,12,13,12,14,13,12,13,13,14,13, 5, 7, 7,
+	10,10, 7, 8, 8,11,10, 7, 8, 8,10,10,11,11,11,13,
+	13,10,11,11,12,12, 7, 8, 8,11,11, 7, 8, 9,10,12,
+	 8, 9, 9,11,11,11,10,12,11,14,11,11,12,13,13, 6,
+	 8, 8,10,11, 7, 9, 7,12,10, 8, 9,10,11,12,10,12,
+	10,14,11,11,12,11,13,13,10,11,11,14,14,10,10,11,
+	13,14,11,12,12,15,13,12,11,14,12,16,12,13,14,15,
+	16,10,10,11,13,14,10,11,10,14,12,11,12,12,13,14,
+	12,13,11,15,12,14,14,14,15,15, 5, 7, 7,10,10, 7,
+	 8, 8,10,10, 7, 8, 8,10,11,10,11,10,12,12,10,11,
+	11,12,13, 6, 8, 8,11,11, 8, 9, 9,12,11, 7, 7, 9,
+	10,12,11,11,11,12,13,11,10,12,11,15, 7, 8, 8,11,
+	11, 8, 9, 9,11,11, 7, 9, 8,12,10,11,12,11,13,12,
+	11,12,10,15,11,10,11,10,14,12,11,12,11,14,13,10,
+	10,11,13,14,13,13,13,17,15,12,11,14,12,15,10,10,
+	11,13,14,11,12,12,14,14,10,11,10,14,13,13,14,13,
+	16,17,12,14,11,16,12, 9,10,10,14,13,10,11,10,14,
+	14,10,11,11,13,13,13,14,14,16,15,12,13,13,14,14,
+	 9,11,10,14,13,10,10,12,13,14,11,12,11,14,13,13,
+	14,14,14,15,13,14,14,15,15, 9,10,11,13,14,10,11,
+	10,15,13,11,11,12,12,15,13,14,12,15,14,13,13,14,
+	14,15,12,13,12,16,14,11,11,12,15,14,13,15,13,16,
+	14,13,12,15,12,17,15,16,15,16,16,12,12,13,13,15,
+	11,13,11,15,14,13,13,14,15,17,13,14,12, 0,13,14,
+	15,14,15, 0, 9,10,10,13,13,10,11,11,13,13,10,11,
+	11,13,13,12,13,12,14,14,13,14,14,15,17, 9,10,10,
+	13,13,11,12,11,15,12,10,10,11,13,16,13,14,13,15,
+	14,13,13,14,15,16,10,10,11,13,14,11,11,12,13,14,
+	10,12,11,14,14,13,13,13,14,15,13,15,13,16,15,12,
+	13,12,15,13,12,15,13,15,15,11,11,13,14,15,15,15,
+	15,15,17,13,12,14,13,17,12,12,14,14,15,13,13,14,
+	14,16,11,13,11,16,15,14,16,16,17, 0,14,13,11,16,
+	12,
+};
+
+static float _vq_quantthresh__44un1__p4_0[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44un1__p4_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p4_0 = {
+	_vq_quantthresh__44un1__p4_0,
+	_vq_quantmap__44un1__p4_0,
+	5,
+	5
+};
+
+static static_codebook _44un1__p4_0 = {
+	4, 625,
+	_vq_lengthlist__44un1__p4_0,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44un1__p4_0,
+	NULL,
+	&_vq_auxt__44un1__p4_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p5_0[] = {
+	4,
+	3,
+	5,
+	2,
+	6,
+	1,
+	7,
+	0,
+	8,
+};
+
+static long _vq_lengthlist__44un1__p5_0[] = {
+	 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 7, 8, 8,
+	10, 9, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 7, 9, 9,
+	 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 8, 8, 8,
+	 9, 9,10,10,11,11, 8, 8, 8, 9, 9,10,10,11,11, 9,
+	10,10,11,10,11,11,12,12, 9,10,10,10,11,11,11,12,
+	12,
+};
+
+static float _vq_quantthresh__44un1__p5_0[] = {
+	-3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 
+};
+
+static long _vq_quantmap__44un1__p5_0[] = {
+	    7,    5,    3,    1,    0,    2,    4,    6,
+	    8,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p5_0 = {
+	_vq_quantthresh__44un1__p5_0,
+	_vq_quantmap__44un1__p5_0,
+	9,
+	9
+};
+
+static static_codebook _44un1__p5_0 = {
+	2, 81,
+	_vq_lengthlist__44un1__p5_0,
+	1, -531628032, 1611661312, 4, 0,
+	_vq_quantlist__44un1__p5_0,
+	NULL,
+	&_vq_auxt__44un1__p5_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p6_0[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44un1__p6_0[] = {
+	 1, 4, 4, 6, 6, 8, 8,10,10,11,11,15,15, 4, 5, 5,
+	 8, 8, 9, 9,11,11,12,12,16,16, 4, 5, 6, 8, 8, 9,
+	 9,11,11,12,12,14,14, 7, 8, 8, 9, 9,10,10,11,12,
+	13,13,16,17, 7, 8, 8, 9, 9,10,10,12,12,12,13,15,
+	15, 9,10,10,10,10,11,11,12,12,13,13,15,16, 9, 9,
+	 9,10,10,11,11,13,12,13,13,17,17,10,11,11,11,12,
+	12,12,13,13,14,15, 0,18,10,11,11,12,12,12,13,14,
+	13,14,14,17,16,11,12,12,13,13,14,14,14,14,15,16,
+	17,16,11,12,12,13,13,14,14,14,14,15,15,17,17,14,
+	15,15,16,16,16,17,17,16, 0,17, 0,18,14,15,15,16,
+	16, 0,15,18,18, 0,16, 0, 0,
+};
+
+static float _vq_quantthresh__44un1__p6_0[] = {
+	-27.5, -22.5, -17.5, -12.5, -7.5, -2.5, 2.5, 7.5, 
+	12.5, 17.5, 22.5, 27.5, 
+};
+
+static long _vq_quantmap__44un1__p6_0[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p6_0 = {
+	_vq_quantthresh__44un1__p6_0,
+	_vq_quantmap__44un1__p6_0,
+	13,
+	13
+};
+
+static static_codebook _44un1__p6_0 = {
+	2, 169,
+	_vq_lengthlist__44un1__p6_0,
+	1, -526516224, 1616117760, 4, 0,
+	_vq_quantlist__44un1__p6_0,
+	NULL,
+	&_vq_auxt__44un1__p6_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p6_1[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44un1__p6_1[] = {
+	 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 6, 5, 5,
+	 6, 5, 6, 6, 5, 6, 6, 6, 6,
+};
+
+static float _vq_quantthresh__44un1__p6_1[] = {
+	-1.5, -0.5, 0.5, 1.5, 
+};
+
+static long _vq_quantmap__44un1__p6_1[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p6_1 = {
+	_vq_quantthresh__44un1__p6_1,
+	_vq_quantmap__44un1__p6_1,
+	5,
+	5
+};
+
+static static_codebook _44un1__p6_1 = {
+	2, 25,
+	_vq_lengthlist__44un1__p6_1,
+	1, -533725184, 1611661312, 3, 0,
+	_vq_quantlist__44un1__p6_1,
+	NULL,
+	&_vq_auxt__44un1__p6_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p7_0[] = {
+	2,
+	1,
+	3,
+	0,
+	4,
+};
+
+static long _vq_lengthlist__44un1__p7_0[] = {
+	 1, 5, 3,11,11,11,11,11,11,11, 8,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,10,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,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11, 8,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,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,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11, 7,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,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
+	11,11,11,11,11,11,11,11,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,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,
+};
+
+static float _vq_quantthresh__44un1__p7_0[] = {
+	-253.5, -84.5, 84.5, 253.5, 
+};
+
+static long _vq_quantmap__44un1__p7_0[] = {
+	    3,    1,    0,    2,    4,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p7_0 = {
+	_vq_quantthresh__44un1__p7_0,
+	_vq_quantmap__44un1__p7_0,
+	5,
+	5
+};
+
+static static_codebook _44un1__p7_0 = {
+	4, 625,
+	_vq_lengthlist__44un1__p7_0,
+	1, -518709248, 1626677248, 3, 0,
+	_vq_quantlist__44un1__p7_0,
+	NULL,
+	&_vq_auxt__44un1__p7_0,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p7_1[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44un1__p7_1[] = {
+	 1, 4, 4, 6, 6, 6, 6, 9, 8, 9, 8, 8, 8, 5, 7, 7,
+	 7, 7, 8, 8, 8,10, 8,10, 8, 9, 5, 7, 7, 8, 7, 7,
+	 8,10,10,11,10,12,11, 7, 8, 8, 9, 9, 9,10,11,11,
+	11,11,11,11, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,
+	12, 7, 8, 8, 9, 9,10,11,11,12,11,12,11,11, 7, 8,
+	 8, 9, 9,10,10,11,11,11,12,12,11, 8,10,10,10,10,
+	11,11,14,11,12,12,12,13, 9,10,10,10,10,12,11,14,
+	11,14,11,12,13,10,11,11,11,11,13,11,14,14,13,13,
+	13,14,11,11,11,12,11,12,12,12,13,14,14,13,14,12,
+	11,12,12,12,12,13,13,13,14,13,14,14,11,12,12,14,
+	12,13,13,12,13,13,14,14,14,
+};
+
+static float _vq_quantthresh__44un1__p7_1[] = {
+	-71.5, -58.5, -45.5, -32.5, -19.5, -6.5, 6.5, 19.5, 
+	32.5, 45.5, 58.5, 71.5, 
+};
+
+static long _vq_quantmap__44un1__p7_1[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p7_1 = {
+	_vq_quantthresh__44un1__p7_1,
+	_vq_quantmap__44un1__p7_1,
+	13,
+	13
+};
+
+static static_codebook _44un1__p7_1 = {
+	2, 169,
+	_vq_lengthlist__44un1__p7_1,
+	1, -523010048, 1618608128, 4, 0,
+	_vq_quantlist__44un1__p7_1,
+	NULL,
+	&_vq_auxt__44un1__p7_1,
+	NULL,
+	0
+};
+
+static long _vq_quantlist__44un1__p7_2[] = {
+	6,
+	5,
+	7,
+	4,
+	8,
+	3,
+	9,
+	2,
+	10,
+	1,
+	11,
+	0,
+	12,
+};
+
+static long _vq_lengthlist__44un1__p7_2[] = {
+	 3, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 8, 4, 5, 5,
+	 6, 6, 8, 8, 9, 8, 9, 9, 9, 9, 4, 5, 5, 7, 6, 8,
+	 8, 8, 8, 9, 8, 9, 8, 6, 7, 7, 7, 8, 8, 8, 9, 9,
+	 9, 9, 9, 9, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9,
+	 9, 7, 8, 8, 8, 8, 9, 8, 9, 9,10, 9, 9,10, 7, 8,
+	 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10, 8, 9, 9, 9, 9,
+	 9, 9, 9, 9,10,10, 9,10, 8, 9, 9, 9, 9, 9, 9, 9,
+	 9, 9, 9,10,10, 9, 9, 9,10, 9, 9,10, 9, 9,10,10,
+	10,10, 9, 9, 9, 9, 9, 9, 9,10, 9,10,10,10,10, 9,
+	 9, 9,10, 9, 9,10,10, 9,10,10,10,10, 9, 9, 9,10,
+	 9, 9, 9,10,10,10,10,10,10,
+};
+
+static float _vq_quantthresh__44un1__p7_2[] = {
+	-5.5, -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 
+	2.5, 3.5, 4.5, 5.5, 
+};
+
+static long _vq_quantmap__44un1__p7_2[] = {
+	   11,    9,    7,    5,    3,    1,    0,    2,
+	    4,    6,    8,   10,   12,
+};
+
+static encode_aux_threshmatch _vq_auxt__44un1__p7_2 = {
+	_vq_quantthresh__44un1__p7_2,
+	_vq_quantmap__44un1__p7_2,
+	13,
+	13
+};
+
+static static_codebook _44un1__p7_2 = {
+	2, 169,
+	_vq_lengthlist__44un1__p7_2,
+	1, -531103744, 1611661312, 4, 0,
+	_vq_quantlist__44un1__p7_2,
+	NULL,
+	&_vq_auxt__44un1__p7_2,
+	NULL,
+	0
+};
+
+static long _huff_lengthlist__44un1__short[] = {
+	12,12,14,12,14,14,14,14,12, 6, 6, 8, 9, 9,11,14,
+	12, 4, 2, 6, 6, 7,11,14,13, 6, 5, 7, 8, 9,11,14,
+	13, 8, 5, 8, 6, 8,12,14,12, 7, 7, 8, 8, 8,10,14,
+	12, 6, 3, 4, 4, 4, 7,14,11, 7, 4, 6, 6, 6, 8,14,
+};
+
+static static_codebook _huff_book__44un1__short = {
+	2, 64,
+	_huff_lengthlist__44un1__short,
+	0, 0, 0, 0, 0,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	0
+};
+
Index: /libvorbis-1.2.0/lib/codebook.c
===================================================================
--- /libvorbis-1.2.0/lib/codebook.c	(revision 16)
+++ /libvorbis-1.2.0/lib/codebook.c	(revision 16)
@@ -0,0 +1,634 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: basic codebook pack/unpack/code/decode operations
+ last mod: $Id: codebook.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codebook.h"
+#include "scales.h"
+#include "misc.h"
+#include "os.h"
+
+/* packs the given codebook into the bitstream **************************/
+
+int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){
+  long i,j;
+  int ordered=0;
+
+  /* first the basic parameters */
+  oggpack_write(opb,0x564342,24);
+  oggpack_write(opb,c->dim,16);
+  oggpack_write(opb,c->entries,24);
+
+  /* pack the codewords.  There are two packings; length ordered and
+     length random.  Decide between the two now. */
+  
+  for(i=1;i<c->entries;i++)
+    if(c->lengthlist[i-1]==0 || c->lengthlist[i]<c->lengthlist[i-1])break;
+  if(i==c->entries)ordered=1;
+  
+  if(ordered){
+    /* length ordered.  We only need to say how many codewords of
+       each length.  The actual codewords are generated
+       deterministically */
+
+    long count=0;
+    oggpack_write(opb,1,1);  /* ordered */
+    oggpack_write(opb,c->lengthlist[0]-1,5); /* 1 to 32 */
+
+    for(i=1;i<c->entries;i++){
+      long this=c->lengthlist[i];
+      long last=c->lengthlist[i-1];
+      if(this>last){
+	for(j=last;j<this;j++){
+	  oggpack_write(opb,i-count,_ilog(c->entries-count));
+	  count=i;
+	}
+      }
+    }
+    oggpack_write(opb,i-count,_ilog(c->entries-count));
+    
+  }else{
+    /* length random.  Again, we don't code the codeword itself, just
+       the length.  This time, though, we have to encode each length */
+    oggpack_write(opb,0,1);   /* unordered */
+    
+    /* algortihmic mapping has use for 'unused entries', which we tag
+       here.  The algorithmic mapping happens as usual, but the unused
+       entry has no codeword. */
+    for(i=0;i<c->entries;i++)
+      if(c->lengthlist[i]==0)break;
+
+    if(i==c->entries){
+      oggpack_write(opb,0,1); /* no unused entries */
+      for(i=0;i<c->entries;i++)
+	oggpack_write(opb,c->lengthlist[i]-1,5);
+    }else{
+      oggpack_write(opb,1,1); /* we have unused entries; thus we tag */
+      for(i=0;i<c->entries;i++){
+	if(c->lengthlist[i]==0){
+	  oggpack_write(opb,0,1);
+	}else{
+	  oggpack_write(opb,1,1);
+	  oggpack_write(opb,c->lengthlist[i]-1,5);
+	}
+      }
+    }
+  }
+
+  /* is the entry number the desired return value, or do we have a
+     mapping? If we have a mapping, what type? */
+  oggpack_write(opb,c->maptype,4);
+  switch(c->maptype){
+  case 0:
+    /* no mapping */
+    break;
+  case 1:case 2:
+    /* implicitly populated value mapping */
+    /* explicitly populated value mapping */
+    
+    if(!c->quantlist){
+      /* no quantlist?  error */
+      return(-1);
+    }
+    
+    /* values that define the dequantization */
+    oggpack_write(opb,c->q_min,32);
+    oggpack_write(opb,c->q_delta,32);
+    oggpack_write(opb,c->q_quant-1,4);
+    oggpack_write(opb,c->q_sequencep,1);
+    
+    {
+      int quantvals;
+      switch(c->maptype){
+      case 1:
+	/* a single column of (c->entries/c->dim) quantized values for
+	   building a full value list algorithmically (square lattice) */
+	quantvals=_book_maptype1_quantvals(c);
+	break;
+      case 2:
+	/* every value (c->entries*c->dim total) specified explicitly */
+	quantvals=c->entries*c->dim;
+	break;
+      default: /* NOT_REACHABLE */
+	quantvals=-1;
+      }
+
+      /* quantized values */
+      for(i=0;i<quantvals;i++)
+	oggpack_write(opb,labs(c->quantlist[i]),c->q_quant);
+
+    }
+    break;
+  default:
+    /* error case; we don't have any other map types now */
+    return(-1);
+  }
+
+  return(0);
+}
+
+/* unpacks a codebook from the packet buffer into the codebook struct,
+   readies the codebook auxiliary structures for decode *************/
+int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
+  long i,j;
+  memset(s,0,sizeof(*s));
+  s->allocedp=1;
+
+  /* make sure alignment is correct */
+  if(oggpack_read(opb,24)!=0x564342)goto _eofout;
+
+  /* first the basic parameters */
+  s->dim=oggpack_read(opb,16);
+  s->entries=oggpack_read(opb,24);
+  if(s->entries==-1)goto _eofout;
+
+  /* codeword ordering.... length ordered or unordered? */
+  switch((int)oggpack_read(opb,1)){
+  case 0:
+    /* unordered */
+    s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
+
+    /* allocated but unused entries? */
+    if(oggpack_read(opb,1)){
+      /* yes, unused entries */
+
+      for(i=0;i<s->entries;i++){
+	if(oggpack_read(opb,1)){
+	  long num=oggpack_read(opb,5);
+	  if(num==-1)goto _eofout;
+	  s->lengthlist[i]=num+1;
+	}else
+	  s->lengthlist[i]=0;
+      }
+    }else{
+      /* all entries used; no tagging */
+      for(i=0;i<s->entries;i++){
+	long num=oggpack_read(opb,5);
+	if(num==-1)goto _eofout;
+	s->lengthlist[i]=num+1;
+      }
+    }
+    
+    break;
+  case 1:
+    /* ordered */
+    {
+      long length=oggpack_read(opb,5)+1;
+      s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
+
+      for(i=0;i<s->entries;){
+	long num=oggpack_read(opb,_ilog(s->entries-i));
+	if(num==-1)goto _eofout;
+	for(j=0;j<num && i<s->entries;j++,i++)
+	  s->lengthlist[i]=length;
+	length++;
+      }
+    }
+    break;
+  default:
+    /* EOF */
+    return(-1);
+  }
+  
+  /* Do we have a mapping to unpack? */
+  switch((s->maptype=oggpack_read(opb,4))){
+  case 0:
+    /* no mapping */
+    break;
+  case 1: case 2:
+    /* implicitly populated value mapping */
+    /* explicitly populated value mapping */
+
+    s->q_min=oggpack_read(opb,32);
+    s->q_delta=oggpack_read(opb,32);
+    s->q_quant=oggpack_read(opb,4)+1;
+    s->q_sequencep=oggpack_read(opb,1);
+
+    {
+      int quantvals=0;
+      switch(s->maptype){
+      case 1:
+	quantvals=_book_maptype1_quantvals(s);
+	break;
+      case 2:
+	quantvals=s->entries*s->dim;
+	break;
+      }
+      
+      /* quantized values */
+      s->quantlist=_ogg_malloc(sizeof(*s->quantlist)*quantvals);
+      for(i=0;i<quantvals;i++)
+	s->quantlist[i]=oggpack_read(opb,s->q_quant);
+      
+      if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout;
+    }
+    break;
+  default:
+    goto _errout;
+  }
+
+  /* all set */
+  return(0);
+  
+ _errout:
+ _eofout:
+  vorbis_staticbook_clear(s);
+  return(-1); 
+}
+
+/* returns the number of bits ************************************************/
+int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){
+  if(a<0 || a>=book->c->entries)return(0);
+  oggpack_write(b,book->codelist[a],book->c->lengthlist[a]);
+  return(book->c->lengthlist[a]);
+}
+
+/* One the encode side, our vector writers are each designed for a
+specific purpose, and the encoder is not flexible without modification:
+
+The LSP vector coder uses a single stage nearest-match with no
+interleave, so no step and no error return.  This is specced by floor0
+and doesn't change.
+
+Residue0 encoding interleaves, uses multiple stages, and each stage
+peels of a specific amount of resolution from a lattice (thus we want
+to match by threshold, not nearest match).  Residue doesn't *have* to
+be encoded that way, but to change it, one will need to add more
+infrastructure on the encode side (decode side is specced and simpler) */
+
+/* floor0 LSP (single stage, non interleaved, nearest match) */
+/* returns entry number and *modifies a* to the quantization value *****/
+int vorbis_book_errorv(codebook *book,float *a){
+  int dim=book->dim,k;
+  int best=_best(book,a,1);
+  for(k=0;k<dim;k++)
+    a[k]=(book->valuelist+best*dim)[k];
+  return(best);
+}
+
+/* returns the number of bits and *modifies a* to the quantization value *****/
+int vorbis_book_encodev(codebook *book,int best,float *a,oggpack_buffer *b){
+  int k,dim=book->dim;
+  for(k=0;k<dim;k++)
+    a[k]=(book->valuelist+best*dim)[k];
+  return(vorbis_book_encode(book,best,b));
+}
+
+/* the 'eliminate the decode tree' optimization actually requires the
+   codewords to be MSb first, not LSb.  This is an annoying inelegancy
+   (and one of the first places where carefully thought out design
+   turned out to be wrong; Vorbis II and future Ogg codecs should go
+   to an MSb bitpacker), but not actually the huge hit it appears to
+   be.  The first-stage decode table catches most words so that
+   bitreverse is not in the main execution path. */
+
+static ogg_uint32_t bitreverse(ogg_uint32_t x){
+  x=    ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000);
+  x=    ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00);
+  x=    ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0);
+  x=    ((x>> 2)&0x33333333) | ((x<< 2)&0xcccccccc);
+  return((x>> 1)&0x55555555) | ((x<< 1)&0xaaaaaaaa);
+}
+
+STIN long decode_packed_entry_number(codebook *book, oggpack_buffer *b){
+  int  read=book->dec_maxlength;
+  long lo,hi;
+  long lok = oggpack_look(b,book->dec_firsttablen);
+  
+  if (lok >= 0) {
+    long entry = book->dec_firsttable[lok];
+    if(entry&0x80000000UL){
+      lo=(entry>>15)&0x7fff;
+      hi=book->used_entries-(entry&0x7fff);
+    }else{
+      oggpack_adv(b, book->dec_codelengths[entry-1]);
+      return(entry-1);
+    }
+  }else{
+    lo=0;
+    hi=book->used_entries;
+  }
+  
+  lok = oggpack_look(b, read);
+  
+  while(lok<0 && read>1)
+    lok = oggpack_look(b, --read);
+  if(lok<0)return -1;
+  
+  /* bisect search for the codeword in the ordered list */
+  {
+    ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok);
+    
+    while(hi-lo>1){
+      long p=(hi-lo)>>1;
+      long test=book->codelist[lo+p]>testword;    
+      lo+=p&(test-1);
+      hi-=p&(-test);
+      }
+    
+    if(book->dec_codelengths[lo]<=read){
+      oggpack_adv(b, book->dec_codelengths[lo]);
+      return(lo);
+    }
+  }
+  
+  oggpack_adv(b, read);
+
+  return(-1);
+}
+
+/* Decode side is specced and easier, because we don't need to find
+   matches using different criteria; we simply read and map.  There are
+   two things we need to do 'depending':
+   
+   We may need to support interleave.  We don't really, but it's
+   convenient to do it here rather than rebuild the vector later.
+
+   Cascades may be additive or multiplicitive; this is not inherent in
+   the codebook, but set in the code using the codebook.  Like
+   interleaving, it's easiest to do it here.  
+   addmul==0 -> declarative (set the value)
+   addmul==1 -> additive
+   addmul==2 -> multiplicitive */
+
+/* returns the [original, not compacted] entry number or -1 on eof *********/
+long vorbis_book_decode(codebook *book, oggpack_buffer *b){
+  if(book->used_entries>0){
+    long packed_entry=decode_packed_entry_number(book,b);
+    if(packed_entry>=0)
+      return(book->dec_index[packed_entry]);
+  }
+
+  /* if there's no dec_index, the codebook unpacking isn't collapsed */
+  return(-1);
+}
+
+/* returns 0 on OK or -1 on eof *************************************/
+long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
+  if(book->used_entries>0){
+    int step=n/book->dim;
+    long *entry = alloca(sizeof(*entry)*step);
+    float **t = alloca(sizeof(*t)*step);
+    int i,j,o;
+    
+    for (i = 0; i < step; i++) {
+      entry[i]=decode_packed_entry_number(book,b);
+      if(entry[i]==-1)return(-1);
+      t[i] = book->valuelist+entry[i]*book->dim;
+    }
+    for(i=0,o=0;i<book->dim;i++,o+=step)
+      for (j=0;j<step;j++)
+	a[o+j]+=t[j][i];
+  }
+  return(0);
+}
+
+long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
+  if(book->used_entries>0){
+    int i,j,entry;
+    float *t;
+    
+    if(book->dim>8){
+      for(i=0;i<n;){
+	entry = decode_packed_entry_number(book,b);
+	if(entry==-1)return(-1);
+	t     = book->valuelist+entry*book->dim;
+	for (j=0;j<book->dim;)
+	  a[i++]+=t[j++];
+      }
+    }else{
+      for(i=0;i<n;){
+	entry = decode_packed_entry_number(book,b);
+	if(entry==-1)return(-1);
+	t     = book->valuelist+entry*book->dim;
+	j=0;
+	switch((int)book->dim){
+	case 8:
+	  a[i++]+=t[j++];
+	case 7:
+	  a[i++]+=t[j++];
+	case 6:
+	  a[i++]+=t[j++];
+	case 5:
+	  a[i++]+=t[j++];
+	case 4:
+	  a[i++]+=t[j++];
+	case 3:
+	  a[i++]+=t[j++];
+	case 2:
+	  a[i++]+=t[j++];
+	case 1:
+	  a[i++]+=t[j++];
+	case 0:
+	  break;
+	}
+      }
+    }    
+  }
+  return(0);
+}
+
+long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){
+  if(book->used_entries>0){
+    int i,j,entry;
+    float *t;
+    
+    for(i=0;i<n;){
+      entry = decode_packed_entry_number(book,b);
+      if(entry==-1)return(-1);
+      t     = book->valuelist+entry*book->dim;
+      for (j=0;j<book->dim;)
+	a[i++]=t[j++];
+    }
+  }else{
+    int i,j;
+    
+    for(i=0;i<n;){
+      for (j=0;j<book->dim;)
+	a[i++]=0.f;
+    }
+  }
+  return(0);
+}
+
+long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
+			      oggpack_buffer *b,int n){
+
+  long i,j,entry;
+  int chptr=0;
+  if(book->used_entries>0){
+    for(i=offset/ch;i<(offset+n)/ch;){
+      entry = decode_packed_entry_number(book,b);
+      if(entry==-1)return(-1);
+      {
+	const float *t = book->valuelist+entry*book->dim;
+	for (j=0;j<book->dim;j++){
+	  a[chptr++][i]+=t[j];
+	  if(chptr==ch){
+	    chptr=0;
+	    i++;
+	  }
+	}
+      }
+    }
+  }
+  return(0);
+}
+
+#ifdef _V_SELFTEST
+/* Simple enough; pack a few candidate codebooks, unpack them.  Code a
+   number of vectors through (keeping track of the quantized values),
+   and decode using the unpacked book.  quantized version of in should
+   exactly equal out */
+
+#include <stdio.h>
+
+#include "vorbis/book/lsp20_0.vqh"
+#include "vorbis/book/res0a_13.vqh"
+#define TESTSIZE 40
+
+float test1[TESTSIZE]={
+  0.105939f,
+  0.215373f,
+  0.429117f,
+  0.587974f,
+
+  0.181173f,
+  0.296583f,
+  0.515707f,
+  0.715261f,
+
+  0.162327f,
+  0.263834f,
+  0.342876f,
+  0.406025f,
+
+  0.103571f,
+  0.223561f,
+  0.368513f,
+  0.540313f,
+
+  0.136672f,
+  0.395882f,
+  0.587183f,
+  0.652476f,
+
+  0.114338f,
+  0.417300f,
+  0.525486f,
+  0.698679f,
+
+  0.147492f,
+  0.324481f,
+  0.643089f,
+  0.757582f,
+
+  0.139556f,
+  0.215795f,
+  0.324559f,
+  0.399387f,
+
+  0.120236f,
+  0.267420f,
+  0.446940f,
+  0.608760f,
+
+  0.115587f,
+  0.287234f,
+  0.571081f,
+  0.708603f,
+};
+
+float test3[TESTSIZE]={
+  0,1,-2,3,4,-5,6,7,8,9,
+  8,-2,7,-1,4,6,8,3,1,-9,
+  10,11,12,13,14,15,26,17,18,19,
+  30,-25,-30,-1,-5,-32,4,3,-2,0};
+
+static_codebook *testlist[]={&_vq_book_lsp20_0,
+			     &_vq_book_res0a_13,NULL};
+float   *testvec[]={test1,test3};
+
+int main(){
+  oggpack_buffer write;
+  oggpack_buffer read;
+  long ptr=0,i;
+  oggpack_writeinit(&write);
+  
+  fprintf(stderr,"Testing codebook abstraction...:\n");
+
+  while(testlist[ptr]){
+    codebook c;
+    static_codebook s;
+    float *qv=alloca(sizeof(*qv)*TESTSIZE);
+    float *iv=alloca(sizeof(*iv)*TESTSIZE);
+    memcpy(qv,testvec[ptr],sizeof(*qv)*TESTSIZE);
+    memset(iv,0,sizeof(*iv)*TESTSIZE);
+
+    fprintf(stderr,"\tpacking/coding %ld... ",ptr);
+
+    /* pack the codebook, write the testvector */
+    oggpack_reset(&write);
+    vorbis_book_init_encode(&c,testlist[ptr]); /* get it into memory
+                                                  we can write */
+    vorbis_staticbook_pack(testlist[ptr],&write);
+    fprintf(stderr,"Codebook size %ld bytes... ",oggpack_bytes(&write));
+    for(i=0;i<TESTSIZE;i+=c.dim){
+      int best=_best(&c,qv+i,1);
+      vorbis_book_encodev(&c,best,qv+i,&write);
+    }
+    vorbis_book_clear(&c);
+    
+    fprintf(stderr,"OK.\n");
+    fprintf(stderr,"\tunpacking/decoding %ld... ",ptr);
+
+    /* transfer the write data to a read buffer and unpack/read */
+    oggpack_readinit(&read,oggpack_get_buffer(&write),oggpack_bytes(&write));
+    if(vorbis_staticbook_unpack(&read,&s)){
+      fprintf(stderr,"Error unpacking codebook.\n");
+      exit(1);
+    }
+    if(vorbis_book_init_decode(&c,&s)){
+      fprintf(stderr,"Error initializing codebook.\n");
+      exit(1);
+    }
+
+    for(i=0;i<TESTSIZE;i+=c.dim)
+      if(vorbis_book_decodev_set(&c,iv+i,&read,c.dim)==-1){
+	fprintf(stderr,"Error reading codebook test data (EOP).\n");
+	exit(1);
+      }
+    for(i=0;i<TESTSIZE;i++)
+      if(fabs(qv[i]-iv[i])>.000001){
+	fprintf(stderr,"read (%g) != written (%g) at position (%ld)\n",
+		iv[i],qv[i],i);
+	exit(1);
+      }
+	  
+    fprintf(stderr,"OK\n");
+    ptr++;
+  }
+
+  /* The above is the trivial stuff; now try unquantizing a log scale codebook */
+
+  exit(0);
+}
+
+#endif
Index: /libvorbis-1.2.0/lib/codebook.h
===================================================================
--- /libvorbis-1.2.0/lib/codebook.h	(revision 16)
+++ /libvorbis-1.2.0/lib/codebook.h	(revision 16)
@@ -0,0 +1,160 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: codebook.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_CODEBOOK_H_
+#define _V_CODEBOOK_H_
+
+#include <ogg/ogg.h>
+
+/* This structure encapsulates huffman and VQ style encoding books; it
+   doesn't do anything specific to either.
+
+   valuelist/quantlist are nonNULL (and q_* significant) only if
+   there's entry->value mapping to be done.
+
+   If encode-side mapping must be done (and thus the entry needs to be
+   hunted), the auxiliary encode pointer will point to a decision
+   tree.  This is true of both VQ and huffman, but is mostly useful
+   with VQ.
+
+*/
+
+typedef struct static_codebook{
+  long   dim;            /* codebook dimensions (elements per vector) */
+  long   entries;        /* codebook entries */
+  long  *lengthlist;     /* codeword lengths in bits */
+
+  /* mapping ***************************************************************/
+  int    maptype;        /* 0=none
+			    1=implicitly populated values from map column 
+			    2=listed arbitrary values */
+
+  /* The below does a linear, single monotonic sequence mapping. */
+  long     q_min;       /* packed 32 bit float; quant value 0 maps to minval */
+  long     q_delta;     /* packed 32 bit float; val 1 - val 0 == delta */
+  int      q_quant;     /* bits: 0 < quant <= 16 */
+  int      q_sequencep; /* bitflag */
+
+  long     *quantlist;  /* map == 1: (int)(entries^(1/dim)) element column map
+			   map == 2: list of dim*entries quantized entry vals
+			*/
+
+  /* encode helpers ********************************************************/
+  struct encode_aux_nearestmatch *nearest_tree;
+  struct encode_aux_threshmatch  *thresh_tree;
+  struct encode_aux_pigeonhole  *pigeon_tree;
+
+  int allocedp;
+} static_codebook;
+
+/* this structures an arbitrary trained book to quickly find the
+   nearest cell match */
+typedef struct encode_aux_nearestmatch{
+  /* pre-calculated partitioning tree */
+  long   *ptr0;
+  long   *ptr1;
+
+  long   *p;         /* decision points (each is an entry) */
+  long   *q;         /* decision points (each is an entry) */
+  long   aux;        /* number of tree entries */
+  long   alloc;       
+} encode_aux_nearestmatch;
+
+/* assumes a maptype of 1; encode side only, so that's OK */
+typedef struct encode_aux_threshmatch{
+  float *quantthresh;
+  long   *quantmap;
+  int     quantvals; 
+  int     threshvals; 
+} encode_aux_threshmatch;
+
+typedef struct encode_aux_pigeonhole{
+  float min;
+  float del;
+
+  int  mapentries;
+  int  quantvals;
+  long *pigeonmap;
+
+  long fittotal;
+  long *fitlist;
+  long *fitmap;
+  long *fitlength;
+} encode_aux_pigeonhole;
+
+typedef struct codebook{
+  long dim;           /* codebook dimensions (elements per vector) */
+  long entries;       /* codebook entries */
+  long used_entries;  /* populated codebook entries */
+  const static_codebook *c;
+
+  /* for encode, the below are entry-ordered, fully populated */
+  /* for decode, the below are ordered by bitreversed codeword and only
+     used entries are populated */
+  float        *valuelist;  /* list of dim*entries actual entry values */  
+  ogg_uint32_t *codelist;   /* list of bitstream codewords for each entry */
+
+  int          *dec_index;  /* only used if sparseness collapsed */
+  char         *dec_codelengths;
+  ogg_uint32_t *dec_firsttable;
+  int           dec_firsttablen;
+  int           dec_maxlength;
+
+} codebook;
+
+extern void vorbis_staticbook_clear(static_codebook *b);
+extern void vorbis_staticbook_destroy(static_codebook *b);
+extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
+extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
+extern void vorbis_book_clear(codebook *b);
+
+extern float *_book_unquantize(const static_codebook *b,int n,int *map);
+extern float *_book_logdist(const static_codebook *b,float *vals);
+extern float _float32_unpack(long val);
+extern long   _float32_pack(float val);
+extern int  _best(codebook *book, float *a, int step);
+extern int _ilog(unsigned int v);
+extern long _book_maptype1_quantvals(const static_codebook *b);
+
+extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
+extern long vorbis_book_codeword(codebook *book,int entry);
+extern long vorbis_book_codelen(codebook *book,int entry);
+
+
+
+extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
+extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
+
+extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
+extern int vorbis_book_errorv(codebook *book, float *a);
+extern int vorbis_book_encodev(codebook *book, int best,float *a, 
+			       oggpack_buffer *b);
+
+extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
+extern long vorbis_book_decodevs_add(codebook *book, float *a, 
+				     oggpack_buffer *b,int n);
+extern long vorbis_book_decodev_set(codebook *book, float *a, 
+				    oggpack_buffer *b,int n);
+extern long vorbis_book_decodev_add(codebook *book, float *a, 
+				    oggpack_buffer *b,int n);
+extern long vorbis_book_decodevv_add(codebook *book, float **a,
+				     long off,int ch, 
+				    oggpack_buffer *b,int n);
+
+
+
+#endif
Index: /libvorbis-1.2.0/lib/codec_internal.h
===================================================================
--- /libvorbis-1.2.0/lib/codec_internal.h	(revision 16)
+++ /libvorbis-1.2.0/lib/codec_internal.h	(revision 16)
@@ -0,0 +1,137 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: libvorbis codec headers
+ last mod: $Id: codec_internal.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_CODECI_H_
+#define _V_CODECI_H_
+
+#include "envelope.h"
+#include "codebook.h"
+
+#define BLOCKTYPE_IMPULSE    0
+#define BLOCKTYPE_PADDING    1
+#define BLOCKTYPE_TRANSITION 0 
+#define BLOCKTYPE_LONG       1
+
+#define PACKETBLOBS 15
+
+typedef struct vorbis_block_internal{
+  float  **pcmdelay;  /* this is a pointer into local storage */ 
+  float  ampmax;
+  int    blocktype;
+
+  oggpack_buffer *packetblob[PACKETBLOBS]; /* initialized, must be freed; 
+					      blob [PACKETBLOBS/2] points to
+					      the oggpack_buffer in the 
+					      main vorbis_block */
+} vorbis_block_internal;
+
+typedef void vorbis_look_floor;
+typedef void vorbis_look_residue;
+typedef void vorbis_look_transform;
+
+/* mode ************************************************************/
+typedef struct {
+  int blockflag;
+  int windowtype;
+  int transformtype;
+  int mapping;
+} vorbis_info_mode;
+
+typedef void vorbis_info_floor;
+typedef void vorbis_info_residue;
+typedef void vorbis_info_mapping;
+
+#include "psy.h"
+#include "bitrate.h"
+
+typedef struct private_state {
+  /* local lookup storage */
+  envelope_lookup        *ve; /* envelope lookup */    
+  int                     window[2];
+  vorbis_look_transform **transform[2];    /* block, type */
+  drft_lookup             fft_look[2];
+
+  int                     modebits;
+  vorbis_look_floor     **flr;
+  vorbis_look_residue   **residue;
+  vorbis_look_psy        *psy;
+  vorbis_look_psy_global *psy_g_look;
+
+  /* local storage, only used on the encoding side.  This way the
+     application does not need to worry about freeing some packets'
+     memory and not others'; packet storage is always tracked.
+     Cleared next call to a _dsp_ function */
+  unsigned char *header;
+  unsigned char *header1;
+  unsigned char *header2;
+
+  bitrate_manager_state bms;
+
+  ogg_int64_t sample_count;
+} private_state;
+
+/* codec_setup_info contains all the setup information specific to the
+   specific compression/decompression mode in progress (eg,
+   psychoacoustic settings, channel setup, options, codebook
+   etc).  
+*********************************************************************/
+
+#include "highlevel.h"
+typedef struct codec_setup_info {
+
+  /* Vorbis supports only short and long blocks, but allows the
+     encoder to choose the sizes */
+
+  long blocksizes[2];
+
+  /* modes are the primary means of supporting on-the-fly different
+     blocksizes, different channel mappings (LR or M/A),
+     different residue backends, etc.  Each mode consists of a
+     blocksize flag and a mapping (along with the mapping setup */
+
+  int        modes;
+  int        maps;
+  int        floors;
+  int        residues;
+  int        books;
+  int        psys;     /* encode only */
+
+  vorbis_info_mode       *mode_param[64];
+  int                     map_type[64];
+  vorbis_info_mapping    *map_param[64];
+  int                     floor_type[64];
+  vorbis_info_floor      *floor_param[64];
+  int                     residue_type[64];
+  vorbis_info_residue    *residue_param[64];
+  static_codebook        *book_param[256];
+  codebook               *fullbooks;
+
+  vorbis_info_psy        *psy_param[4]; /* encode only */
+  vorbis_info_psy_global psy_g_param;
+
+  bitrate_manager_info   bi;
+  highlevel_encode_setup hi; /* used only by vorbisenc.c.  It's a
+                                highly redundant structure, but
+                                improves clarity of program flow. */
+  int         halfrate_flag; /* painless downsample for decode */  
+} codec_setup_info;
+
+extern vorbis_look_psy_global *_vp_global_look(vorbis_info *vi);
+extern void _vp_global_free(vorbis_look_psy_global *look);
+
+#endif
+
Index: /libvorbis-1.2.0/lib/envelope.c
===================================================================
--- /libvorbis-1.2.0/lib/envelope.c	(revision 16)
+++ /libvorbis-1.2.0/lib/envelope.c	(revision 16)
@@ -0,0 +1,382 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: PCM data envelope analysis 
+ last mod: $Id: envelope.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+
+#include "os.h"
+#include "scales.h"
+#include "envelope.h"
+#include "mdct.h"
+#include "misc.h"
+
+void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi){
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy_global *gi=&ci->psy_g_param;
+  int ch=vi->channels;
+  int i,j;
+  int n=e->winlength=128;
+  e->searchstep=64; /* not random */
+
+  e->minenergy=gi->preecho_minenergy;
+  e->ch=ch;
+  e->storage=128;
+  e->cursor=ci->blocksizes[1]/2;
+  e->mdct_win=_ogg_calloc(n,sizeof(*e->mdct_win));
+  mdct_init(&e->mdct,n);
+
+  for(i=0;i<n;i++){
+    e->mdct_win[i]=sin(i/(n-1.)*M_PI);
+    e->mdct_win[i]*=e->mdct_win[i];
+  }
+
+  /* magic follows */
+  e->band[0].begin=2;  e->band[0].end=4;
+  e->band[1].begin=4;  e->band[1].end=5;
+  e->band[2].begin=6;  e->band[2].end=6;
+  e->band[3].begin=9;  e->band[3].end=8;
+  e->band[4].begin=13;  e->band[4].end=8;
+  e->band[5].begin=17;  e->band[5].end=8;
+  e->band[6].begin=22;  e->band[6].end=8;
+
+  for(j=0;j<VE_BANDS;j++){
+    n=e->band[j].end;
+    e->band[j].window=_ogg_malloc(n*sizeof(*e->band[0].window));
+    for(i=0;i<n;i++){
+      e->band[j].window[i]=sin((i+.5)/n*M_PI);
+      e->band[j].total+=e->band[j].window[i];
+    }
+    e->band[j].total=1./e->band[j].total;
+  }
+  
+  e->filter=_ogg_calloc(VE_BANDS*ch,sizeof(*e->filter));
+  e->mark=_ogg_calloc(e->storage,sizeof(*e->mark));
+
+}
+
+void _ve_envelope_clear(envelope_lookup *e){
+  int i;
+  mdct_clear(&e->mdct);
+  for(i=0;i<VE_BANDS;i++)
+    _ogg_free(e->band[i].window);
+  _ogg_free(e->mdct_win);
+  _ogg_free(e->filter);
+  _ogg_free(e->mark);
+  memset(e,0,sizeof(*e));
+}
+
+/* fairly straight threshhold-by-band based until we find something
+   that works better and isn't patented. */
+
+static int _ve_amp(envelope_lookup *ve,
+		   vorbis_info_psy_global *gi,
+		   float *data,
+		   envelope_band *bands,
+		   envelope_filter_state *filters,
+		   long pos){
+  long n=ve->winlength;
+  int ret=0;
+  long i,j;
+  float decay;
+
+  /* we want to have a 'minimum bar' for energy, else we're just
+     basing blocks on quantization noise that outweighs the signal
+     itself (for low power signals) */
+
+  float minV=ve->minenergy;
+  float *vec=alloca(n*sizeof(*vec));
+
+  /* stretch is used to gradually lengthen the number of windows
+     considered prevoius-to-potential-trigger */
+  int stretch=max(VE_MINSTRETCH,ve->stretch/2);
+  float penalty=gi->stretch_penalty-(ve->stretch/2-VE_MINSTRETCH);
+  if(penalty<0.f)penalty=0.f;
+  if(penalty>gi->stretch_penalty)penalty=gi->stretch_penalty;
+  
+  /*_analysis_output_always("lpcm",seq2,data,n,0,0,
+    totalshift+pos*ve->searchstep);*/
+  
+ /* window and transform */
+  for(i=0;i<n;i++)
+    vec[i]=data[i]*ve->mdct_win[i];
+  mdct_forward(&ve->mdct,vec,vec);
+  
+  /*_analysis_output_always("mdct",seq2,vec,n/2,0,1,0); */
+
+  /* near-DC spreading function; this has nothing to do with
+     psychoacoustics, just sidelobe leakage and window size */
+  {
+    float temp=vec[0]*vec[0]+.7*vec[1]*vec[1]+.2*vec[2]*vec[2];
+    int ptr=filters->nearptr;
+
+    /* the accumulation is regularly refreshed from scratch to avoid
+       floating point creep */
+    if(ptr==0){
+      decay=filters->nearDC_acc=filters->nearDC_partialacc+temp;
+      filters->nearDC_partialacc=temp;
+    }else{
+      decay=filters->nearDC_acc+=temp;
+      filters->nearDC_partialacc+=temp;
+    }
+    filters->nearDC_acc-=filters->nearDC[ptr];
+    filters->nearDC[ptr]=temp;
+
+    decay*=(1./(VE_NEARDC+1));
+    filters->nearptr++;
+    if(filters->nearptr>=VE_NEARDC)filters->nearptr=0;
+    decay=todB(&decay)*.5-15.f;
+  }
+  
+  /* perform spreading and limiting, also smooth the spectrum.  yes,
+     the MDCT results in all real coefficients, but it still *behaves*
+     like real/imaginary pairs */
+  for(i=0;i<n/2;i+=2){
+    float val=vec[i]*vec[i]+vec[i+1]*vec[i+1];
+    val=todB(&val)*.5f;
+    if(val<decay)val=decay;
+    if(val<minV)val=minV;
+    vec[i>>1]=val;
+    decay-=8.;
+  }
+
+  /*_analysis_output_always("spread",seq2++,vec,n/4,0,0,0);*/
+  
+  /* perform preecho/postecho triggering by band */
+  for(j=0;j<VE_BANDS;j++){
+    float acc=0.;
+    float valmax,valmin;
+
+    /* accumulate amplitude */
+    for(i=0;i<bands[j].end;i++)
+      acc+=vec[i+bands[j].begin]*bands[j].window[i];
+   
+    acc*=bands[j].total;
+
+    /* convert amplitude to delta */
+    {
+      int p,this=filters[j].ampptr;
+      float postmax,postmin,premax=-99999.f,premin=99999.f;
+      
+      p=this;
+      p--;
+      if(p<0)p+=VE_AMP;
+      postmax=max(acc,filters[j].ampbuf[p]);
+      postmin=min(acc,filters[j].ampbuf[p]);
+      
+      for(i=0;i<stretch;i++){
+	p--;
+	if(p<0)p+=VE_AMP;
+	premax=max(premax,filters[j].ampbuf[p]);
+	premin=min(premin,filters[j].ampbuf[p]);
+      }
+      
+      valmin=postmin-premin;
+      valmax=postmax-premax;
+
+      /*filters[j].markers[pos]=valmax;*/
+      filters[j].ampbuf[this]=acc;
+      filters[j].ampptr++;
+      if(filters[j].ampptr>=VE_AMP)filters[j].ampptr=0;
+    }
+
+    /* look at min/max, decide trigger */
+    if(valmax>gi->preecho_thresh[j]+penalty){
+      ret|=1;
+      ret|=4;
+    }
+    if(valmin<gi->postecho_thresh[j]-penalty)ret|=2;
+  }
+ 
+  return(ret);
+}
+
+#if 0
+static int seq=0;
+static ogg_int64_t totalshift=-1024;
+#endif
+
+long _ve_envelope_search(vorbis_dsp_state *v){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy_global *gi=&ci->psy_g_param;
+  envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
+  long i,j;
+
+  int first=ve->current/ve->searchstep;
+  int last=v->pcm_current/ve->searchstep-VE_WIN;
+  if(first<0)first=0;
+
+  /* make sure we have enough storage to match the PCM */
+  if(last+VE_WIN+VE_POST>ve->storage){
+    ve->storage=last+VE_WIN+VE_POST; /* be sure */
+    ve->mark=_ogg_realloc(ve->mark,ve->storage*sizeof(*ve->mark));
+  }
+
+  for(j=first;j<last;j++){
+    int ret=0;
+
+    ve->stretch++;
+    if(ve->stretch>VE_MAXSTRETCH*2)
+      ve->stretch=VE_MAXSTRETCH*2;
+    
+    for(i=0;i<ve->ch;i++){
+      float *pcm=v->pcm[i]+ve->searchstep*(j);
+      ret|=_ve_amp(ve,gi,pcm,ve->band,ve->filter+i*VE_BANDS,j);
+    }
+
+    ve->mark[j+VE_POST]=0;
+    if(ret&1){
+      ve->mark[j]=1;
+      ve->mark[j+1]=1;
+    }
+
+    if(ret&2){
+      ve->mark[j]=1;
+      if(j>0)ve->mark[j-1]=1;
+    }
+
+    if(ret&4)ve->stretch=-1;
+  }
+
+  ve->current=last*ve->searchstep;
+
+  {
+    long centerW=v->centerW;
+    long testW=
+      centerW+
+      ci->blocksizes[v->W]/4+
+      ci->blocksizes[1]/2+
+      ci->blocksizes[0]/4;
+    
+    j=ve->cursor;
+    
+    while(j<ve->current-(ve->searchstep)){/* account for postecho
+                                             working back one window */
+      if(j>=testW)return(1);
+ 
+      ve->cursor=j;
+
+      if(ve->mark[j/ve->searchstep]){
+	if(j>centerW){
+
+#if 0
+	  if(j>ve->curmark){
+	    float *marker=alloca(v->pcm_current*sizeof(*marker));
+	    int l,m;
+	    memset(marker,0,sizeof(*marker)*v->pcm_current);
+	    fprintf(stderr,"mark! seq=%d, cursor:%fs time:%fs\n",
+		    seq,
+		    (totalshift+ve->cursor)/44100.,
+		    (totalshift+j)/44100.);
+	    _analysis_output_always("pcmL",seq,v->pcm[0],v->pcm_current,0,0,totalshift);
+	    _analysis_output_always("pcmR",seq,v->pcm[1],v->pcm_current,0,0,totalshift);
+
+	    _analysis_output_always("markL",seq,v->pcm[0],j,0,0,totalshift);
+	    _analysis_output_always("markR",seq,v->pcm[1],j,0,0,totalshift);
+	    
+	    for(m=0;m<VE_BANDS;m++){
+	      char buf[80];
+	      sprintf(buf,"delL%d",m);
+	      for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m].markers[l]*.1;
+	      _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
+	    }
+
+	    for(m=0;m<VE_BANDS;m++){
+	      char buf[80];
+	      sprintf(buf,"delR%d",m);
+	      for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->filter[m+VE_BANDS].markers[l]*.1;
+	      _analysis_output_always(buf,seq,marker,v->pcm_current,0,0,totalshift);
+	    }
+
+	    for(l=0;l<last;l++)marker[l*ve->searchstep]=ve->mark[l]*.4;
+	    _analysis_output_always("mark",seq,marker,v->pcm_current,0,0,totalshift);
+	   
+	    
+	    seq++;
+	    
+	  }
+#endif
+
+	  ve->curmark=j;
+	  if(j>=testW)return(1);
+	  return(0);
+	}
+      }
+      j+=ve->searchstep;
+    }
+  }
+  
+  return(-1);
+}
+
+int _ve_envelope_mark(vorbis_dsp_state *v){
+  envelope_lookup *ve=((private_state *)(v->backend_state))->ve;
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  long centerW=v->centerW;
+  long beginW=centerW-ci->blocksizes[v->W]/4;
+  long endW=centerW+ci->blocksizes[v->W]/4;
+  if(v->W){
+    beginW-=ci->blocksizes[v->lW]/4;
+    endW+=ci->blocksizes[v->nW]/4;
+  }else{
+    beginW-=ci->blocksizes[0]/4;
+    endW+=ci->blocksizes[0]/4;
+  }
+
+  if(ve->curmark>=beginW && ve->curmark<endW)return(1);
+  {
+    long first=beginW/ve->searchstep;
+    long last=endW/ve->searchstep;
+    long i;
+    for(i=first;i<last;i++)
+      if(ve->mark[i])return(1);
+  }
+  return(0);
+}
+
+void _ve_envelope_shift(envelope_lookup *e,long shift){
+  int smallsize=e->current/e->searchstep+VE_POST; /* adjust for placing marks
+						     ahead of ve->current */
+  int smallshift=shift/e->searchstep;
+
+  memmove(e->mark,e->mark+smallshift,(smallsize-smallshift)*sizeof(*e->mark));
+  
+#if 0
+  for(i=0;i<VE_BANDS*e->ch;i++)
+    memmove(e->filter[i].markers,
+	    e->filter[i].markers+smallshift,
+	    (1024-smallshift)*sizeof(*(*e->filter).markers));
+  totalshift+=shift;
+#endif 
+
+  e->current-=shift;
+  if(e->curmark>=0)
+    e->curmark-=shift;
+  e->cursor-=shift;
+}
+
+
+
+
+
+
Index: /libvorbis-1.2.0/lib/envelope.h
===================================================================
--- /libvorbis-1.2.0/lib/envelope.h	(revision 16)
+++ /libvorbis-1.2.0/lib/envelope.h	(revision 16)
@@ -0,0 +1,81 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: PCM data envelope analysis and manipulation
+ last mod: $Id: envelope.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_ENVELOPE_
+#define _V_ENVELOPE_
+
+#include "mdct.h"
+
+#define VE_PRE    16
+#define VE_WIN    4
+#define VE_POST   2
+#define VE_AMP    (VE_PRE+VE_POST-1)
+
+#define VE_BANDS  7
+#define VE_NEARDC 15
+
+#define VE_MINSTRETCH 2   /* a bit less than short block */
+#define VE_MAXSTRETCH 12  /* one-third full block */
+
+typedef struct {
+  float ampbuf[VE_AMP];
+  int   ampptr;
+
+  float nearDC[VE_NEARDC];
+  float nearDC_acc;
+  float nearDC_partialacc;
+  int   nearptr;
+
+} envelope_filter_state;
+
+typedef struct {
+  int begin;
+  int end;
+  float *window;
+  float total;
+} envelope_band;
+
+typedef struct {
+  int ch;
+  int winlength;
+  int searchstep;
+  float minenergy;
+
+  mdct_lookup  mdct;
+  float       *mdct_win;
+
+  envelope_band          band[VE_BANDS];
+  envelope_filter_state *filter;
+  int   stretch;
+
+  int                   *mark;
+
+  long storage;
+  long current;
+  long curmark;
+  long cursor;
+} envelope_lookup;
+
+extern void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi);
+extern void _ve_envelope_clear(envelope_lookup *e);
+extern long _ve_envelope_search(vorbis_dsp_state *v);
+extern void _ve_envelope_shift(envelope_lookup *e,long shift);
+extern int  _ve_envelope_mark(vorbis_dsp_state *v);
+
+
+#endif
+
Index: /libvorbis-1.2.0/lib/floor0.c
===================================================================
--- /libvorbis-1.2.0/lib/floor0.c	(revision 16)
+++ /libvorbis-1.2.0/lib/floor0.c	(revision 16)
@@ -0,0 +1,223 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: floor backend 0 implementation
+ last mod: $Id: floor0.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "lpc.h"
+#include "lsp.h"
+#include "codebook.h"
+#include "scales.h"
+#include "misc.h"
+#include "os.h"
+
+#include "misc.h"
+#include <stdio.h>
+
+typedef struct {
+  int ln;
+  int  m;
+  int **linearmap;
+  int  n[2];
+
+  vorbis_info_floor0 *vi;
+
+  long bits;
+  long frames;
+} vorbis_look_floor0;
+
+
+/***********************************************/
+
+static void floor0_free_info(vorbis_info_floor *i){
+  vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+  if(info){
+    memset(info,0,sizeof(*info));
+    _ogg_free(info);
+  }
+}
+
+static void floor0_free_look(vorbis_look_floor *i){
+  vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+  if(look){
+
+    if(look->linearmap){
+
+      if(look->linearmap[0])_ogg_free(look->linearmap[0]);
+      if(look->linearmap[1])_ogg_free(look->linearmap[1]);
+
+      _ogg_free(look->linearmap);
+    }
+    memset(look,0,sizeof(*look));
+    _ogg_free(look);
+  }
+}
+
+static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
+  codec_setup_info     *ci=vi->codec_setup;
+  int j;
+
+  vorbis_info_floor0 *info=_ogg_malloc(sizeof(*info));
+  info->order=oggpack_read(opb,8);
+  info->rate=oggpack_read(opb,16);
+  info->barkmap=oggpack_read(opb,16);
+  info->ampbits=oggpack_read(opb,6);
+  info->ampdB=oggpack_read(opb,8);
+  info->numbooks=oggpack_read(opb,4)+1;
+  
+  if(info->order<1)goto err_out;
+  if(info->rate<1)goto err_out;
+  if(info->barkmap<1)goto err_out;
+  if(info->numbooks<1)goto err_out;
+    
+  for(j=0;j<info->numbooks;j++){
+    info->books[j]=oggpack_read(opb,8);
+    if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
+  }
+  return(info);
+
+ err_out:
+  floor0_free_info(info);
+  return(NULL);
+}
+
+/* initialize Bark scale and normalization lookups.  We could do this
+   with static tables, but Vorbis allows a number of possible
+   combinations, so it's best to do it computationally.
+
+   The below is authoritative in terms of defining scale mapping.
+   Note that the scale depends on the sampling rate as well as the
+   linear block and mapping sizes */
+
+static void floor0_map_lazy_init(vorbis_block      *vb,
+				 vorbis_info_floor *infoX,
+				 vorbis_look_floor0 *look){
+  if(!look->linearmap[vb->W]){
+    vorbis_dsp_state   *vd=vb->vd;
+    vorbis_info        *vi=vd->vi;
+    codec_setup_info   *ci=vi->codec_setup;
+    vorbis_info_floor0 *info=(vorbis_info_floor0 *)infoX;
+    int W=vb->W;
+    int n=ci->blocksizes[W]/2,j;
+
+    /* we choose a scaling constant so that:
+       floor(bark(rate/2-1)*C)=mapped-1
+     floor(bark(rate/2)*C)=mapped */
+    float scale=look->ln/toBARK(info->rate/2.f);
+    
+    /* the mapping from a linear scale to a smaller bark scale is
+       straightforward.  We do *not* make sure that the linear mapping
+       does not skip bark-scale bins; the decoder simply skips them and
+       the encoder may do what it wishes in filling them.  They're
+       necessary in some mapping combinations to keep the scale spacing
+       accurate */
+    look->linearmap[W]=_ogg_malloc((n+1)*sizeof(**look->linearmap));
+    for(j=0;j<n;j++){
+      int val=floor( toBARK((info->rate/2.f)/n*j) 
+		     *scale); /* bark numbers represent band edges */
+      if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
+      look->linearmap[W][j]=val;
+    }
+    look->linearmap[W][j]=-1;
+    look->n[W]=n;
+  }
+}
+
+static vorbis_look_floor *floor0_look(vorbis_dsp_state *vd,
+				      vorbis_info_floor *i){
+  vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+  vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look));
+  look->m=info->order;
+  look->ln=info->barkmap;
+  look->vi=info;
+
+  look->linearmap=_ogg_calloc(2,sizeof(*look->linearmap));
+
+  return look;
+}
+
+static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){
+  vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+  vorbis_info_floor0 *info=look->vi;
+  int j,k;
+
+  int ampraw=oggpack_read(&vb->opb,info->ampbits);
+  if(ampraw>0){ /* also handles the -1 out of data case */
+    long maxval=(1<<info->ampbits)-1;
+    float amp=(float)ampraw/maxval*info->ampdB;
+    int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks));
+    
+    if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
+      codec_setup_info  *ci=vb->vd->vi->codec_setup;
+      codebook *b=ci->fullbooks+info->books[booknum];
+      float last=0.f;
+
+      /* the additional b->dim is a guard against any possible stack
+         smash; b->dim is provably more than we can overflow the
+         vector */
+      float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+b->dim+1));
+            
+      for(j=0;j<look->m;j+=b->dim)
+	if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop;
+      for(j=0;j<look->m;){
+	for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
+	last=lsp[j-1];
+      }
+      
+      lsp[look->m]=amp;
+      return(lsp);
+    }
+  }
+ eop:
+  return(NULL);
+}
+
+static int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
+			   void *memo,float *out){
+  vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+  vorbis_info_floor0 *info=look->vi;
+  
+  floor0_map_lazy_init(vb,info,look);
+
+  if(memo){
+    float *lsp=(float *)memo;
+    float amp=lsp[look->m];
+
+    /* take the coefficients back to a spectral envelope curve */
+    vorbis_lsp_to_curve(out,
+			look->linearmap[vb->W],
+			look->n[vb->W],
+			look->ln,
+			lsp,look->m,amp,(float)info->ampdB);
+    return(1);
+  }
+  memset(out,0,sizeof(*out)*look->n[vb->W]);
+  return(0);
+}
+
+/* export hooks */
+vorbis_func_floor floor0_exportbundle={
+  NULL,&floor0_unpack,&floor0_look,&floor0_free_info,
+  &floor0_free_look,&floor0_inverse1,&floor0_inverse2
+};
+
+
+
Index: /libvorbis-1.2.0/lib/floor1.c
===================================================================
--- /libvorbis-1.2.0/lib/floor1.c	(revision 16)
+++ /libvorbis-1.2.0/lib/floor1.c	(revision 16)
@@ -0,0 +1,1094 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: floor backend 1 implementation
+ last mod: $Id: floor1.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "codebook.h"
+#include "misc.h"
+#include "scales.h"
+
+#include <stdio.h>
+
+#define floor1_rangedB 140 /* floor 1 fixed at -140dB to 0dB range */
+
+typedef struct {
+  int sorted_index[VIF_POSIT+2];
+  int forward_index[VIF_POSIT+2];
+  int reverse_index[VIF_POSIT+2];
+  
+  int hineighbor[VIF_POSIT];
+  int loneighbor[VIF_POSIT];
+  int posts;
+
+  int n;
+  int quant_q;
+  vorbis_info_floor1 *vi;
+
+  long phrasebits;
+  long postbits;
+  long frames;
+} vorbis_look_floor1;
+
+typedef struct lsfit_acc{
+  long x0;
+  long x1;
+
+  long xa;
+  long ya;
+  long x2a;
+  long y2a;
+  long xya; 
+  long an;
+} lsfit_acc;
+
+/***********************************************/
+ 
+static void floor1_free_info(vorbis_info_floor *i){
+  vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
+  if(info){
+    memset(info,0,sizeof(*info));
+    _ogg_free(info);
+  }
+}
+
+static void floor1_free_look(vorbis_look_floor *i){
+  vorbis_look_floor1 *look=(vorbis_look_floor1 *)i;
+  if(look){
+    /*fprintf(stderr,"floor 1 bit usage %f:%f (%f total)\n",
+	    (float)look->phrasebits/look->frames,
+	    (float)look->postbits/look->frames,
+	    (float)(look->postbits+look->phrasebits)/look->frames);*/
+
+    memset(look,0,sizeof(*look));
+    _ogg_free(look);
+  }
+}
+
+static int ilog(unsigned int v){
+  int ret=0;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+static int ilog2(unsigned int v){
+  int ret=0;
+  if(v)--v;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){
+  vorbis_info_floor1 *info=(vorbis_info_floor1 *)i;
+  int j,k;
+  int count=0;
+  int rangebits;
+  int maxposit=info->postlist[1];
+  int maxclass=-1;
+
+  /* save out partitions */
+  oggpack_write(opb,info->partitions,5); /* only 0 to 31 legal */
+  for(j=0;j<info->partitions;j++){
+    oggpack_write(opb,info->partitionclass[j],4); /* only 0 to 15 legal */
+    if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
+  }
+
+  /* save out partition classes */
+  for(j=0;j<maxclass+1;j++){
+    oggpack_write(opb,info->class_dim[j]-1,3); /* 1 to 8 */
+    oggpack_write(opb,info->class_subs[j],2); /* 0 to 3 */
+    if(info->class_subs[j])oggpack_write(opb,info->class_book[j],8);
+    for(k=0;k<(1<<info->class_subs[j]);k++)
+      oggpack_write(opb,info->class_subbook[j][k]+1,8);
+  }
+
+  /* save out the post list */
+  oggpack_write(opb,info->mult-1,2);     /* only 1,2,3,4 legal now */ 
+  oggpack_write(opb,ilog2(maxposit),4);
+  rangebits=ilog2(maxposit);
+
+  for(j=0,k=0;j<info->partitions;j++){
+    count+=info->class_dim[info->partitionclass[j]]; 
+    for(;k<count;k++)
+      oggpack_write(opb,info->postlist[k+2],rangebits);
+  }
+}
+
+
+static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){
+  codec_setup_info     *ci=vi->codec_setup;
+  int j,k,count=0,maxclass=-1,rangebits;
+
+  vorbis_info_floor1 *info=_ogg_calloc(1,sizeof(*info));
+  /* read partitions */
+  info->partitions=oggpack_read(opb,5); /* only 0 to 31 legal */
+  for(j=0;j<info->partitions;j++){
+    info->partitionclass[j]=oggpack_read(opb,4); /* only 0 to 15 legal */
+    if(maxclass<info->partitionclass[j])maxclass=info->partitionclass[j];
+  }
+
+  /* read partition classes */
+  for(j=0;j<maxclass+1;j++){
+    info->class_dim[j]=oggpack_read(opb,3)+1; /* 1 to 8 */
+    info->class_subs[j]=oggpack_read(opb,2); /* 0,1,2,3 bits */
+    if(info->class_subs[j]<0)
+      goto err_out;
+    if(info->class_subs[j])info->class_book[j]=oggpack_read(opb,8);
+    if(info->class_book[j]<0 || info->class_book[j]>=ci->books)
+      goto err_out;
+    for(k=0;k<(1<<info->class_subs[j]);k++){
+      info->class_subbook[j][k]=oggpack_read(opb,8)-1;
+      if(info->class_subbook[j][k]<-1 || info->class_subbook[j][k]>=ci->books)
+	goto err_out;
+    }
+  }
+
+  /* read the post list */
+  info->mult=oggpack_read(opb,2)+1;     /* only 1,2,3,4 legal now */ 
+  rangebits=oggpack_read(opb,4);
+
+  for(j=0,k=0;j<info->partitions;j++){
+    count+=info->class_dim[info->partitionclass[j]]; 
+    for(;k<count;k++){
+      int t=info->postlist[k+2]=oggpack_read(opb,rangebits);
+      if(t<0 || t>=(1<<rangebits))
+	goto err_out;
+    }
+  }
+  info->postlist[0]=0;
+  info->postlist[1]=1<<rangebits;
+
+  return(info);
+  
+ err_out:
+  floor1_free_info(info);
+  return(NULL);
+}
+
+static int icomp(const void *a,const void *b){
+  return(**(int **)a-**(int **)b);
+}
+
+static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,
+				      vorbis_info_floor *in){
+
+  int *sortpointer[VIF_POSIT+2];
+  vorbis_info_floor1 *info=(vorbis_info_floor1 *)in;
+  vorbis_look_floor1 *look=_ogg_calloc(1,sizeof(*look));
+  int i,j,n=0;
+
+  look->vi=info;
+  look->n=info->postlist[1];
+ 
+  /* we drop each position value in-between already decoded values,
+     and use linear interpolation to predict each new value past the
+     edges.  The positions are read in the order of the position
+     list... we precompute the bounding positions in the lookup.  Of
+     course, the neighbors can change (if a position is declined), but
+     this is an initial mapping */
+
+  for(i=0;i<info->partitions;i++)n+=info->class_dim[info->partitionclass[i]];
+  n+=2;
+  look->posts=n;
+
+  /* also store a sorted position index */
+  for(i=0;i<n;i++)sortpointer[i]=info->postlist+i;
+  qsort(sortpointer,n,sizeof(*sortpointer),icomp);
+
+  /* points from sort order back to range number */
+  for(i=0;i<n;i++)look->forward_index[i]=sortpointer[i]-info->postlist;
+  /* points from range order to sorted position */
+  for(i=0;i<n;i++)look->reverse_index[look->forward_index[i]]=i;
+  /* we actually need the post values too */
+  for(i=0;i<n;i++)look->sorted_index[i]=info->postlist[look->forward_index[i]];
+  
+  /* quantize values to multiplier spec */
+  switch(info->mult){
+  case 1: /* 1024 -> 256 */
+    look->quant_q=256;
+    break;
+  case 2: /* 1024 -> 128 */
+    look->quant_q=128;
+    break;
+  case 3: /* 1024 -> 86 */
+    look->quant_q=86;
+    break;
+  case 4: /* 1024 -> 64 */
+    look->quant_q=64;
+    break;
+  }
+
+  /* discover our neighbors for decode where we don't use fit flags
+     (that would push the neighbors outward) */
+  for(i=0;i<n-2;i++){
+    int lo=0;
+    int hi=1;
+    int lx=0;
+    int hx=look->n;
+    int currentx=info->postlist[i+2];
+    for(j=0;j<i+2;j++){
+      int x=info->postlist[j];
+      if(x>lx && x<currentx){
+	lo=j;
+	lx=x;
+      }
+      if(x<hx && x>currentx){
+	hi=j;
+	hx=x;
+      }
+    }
+    look->loneighbor[i]=lo;
+    look->hineighbor[i]=hi;
+  }
+
+  return(look);
+}
+
+static int render_point(int x0,int x1,int y0,int y1,int x){
+  y0&=0x7fff; /* mask off flag */
+  y1&=0x7fff;
+    
+  {
+    int dy=y1-y0;
+    int adx=x1-x0;
+    int ady=abs(dy);
+    int err=ady*(x-x0);
+    
+    int off=err/adx;
+    if(dy<0)return(y0-off);
+    return(y0+off);
+  }
+}
+
+static int vorbis_dBquant(const float *x){
+  int i= *x*7.3142857f+1023.5f;
+  if(i>1023)return(1023);
+  if(i<0)return(0);
+  return i;
+}
+
+static float FLOOR1_fromdB_LOOKUP[256]={
+  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F, 
+  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F, 
+  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F, 
+  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F, 
+  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F, 
+  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F, 
+  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F, 
+  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F, 
+  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F, 
+  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F, 
+  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F, 
+  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F, 
+  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F, 
+  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F, 
+  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F, 
+  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F, 
+  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F, 
+  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F, 
+  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F, 
+  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F, 
+  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F, 
+  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F, 
+  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F, 
+  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F, 
+  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F, 
+  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F, 
+  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F, 
+  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F, 
+  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F, 
+  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F, 
+  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F, 
+  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F, 
+  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F, 
+  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F, 
+  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F, 
+  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F, 
+  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F, 
+  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 
+  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 
+  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 
+  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F, 
+  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F, 
+  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F, 
+  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F, 
+  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F, 
+  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F, 
+  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 
+  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F, 
+  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F, 
+  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F, 
+  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F, 
+  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F, 
+  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F, 
+  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F, 
+  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F, 
+  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 
+  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F, 
+  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F, 
+  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F, 
+  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F, 
+  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F, 
+  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F, 
+  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F, 
+  0.82788260F, 0.88168307F, 0.9389798F, 1.F, 
+};
+
+static void render_line(int n, int x0,int x1,int y0,int y1,float *d){
+  int dy=y1-y0;
+  int adx=x1-x0;
+  int ady=abs(dy);
+  int base=dy/adx;
+  int sy=(dy<0?base-1:base+1);
+  int x=x0;
+  int y=y0;
+  int err=0;
+
+  ady-=abs(base*adx);
+
+  if(n>x1)n=x1;
+
+  if(x<n)
+    d[x]*=FLOOR1_fromdB_LOOKUP[y];
+
+  while(++x<n){
+    err=err+ady;
+    if(err>=adx){
+      err-=adx;
+      y+=sy;
+    }else{
+      y+=base;
+    }
+    d[x]*=FLOOR1_fromdB_LOOKUP[y];
+  }
+}
+
+static void render_line0(int x0,int x1,int y0,int y1,int *d){
+  int dy=y1-y0;
+  int adx=x1-x0;
+  int ady=abs(dy);
+  int base=dy/adx;
+  int sy=(dy<0?base-1:base+1);
+  int x=x0;
+  int y=y0;
+  int err=0;
+
+  ady-=abs(base*adx);
+
+  d[x]=y;
+  while(++x<x1){
+    err=err+ady;
+    if(err>=adx){
+      err-=adx;
+      y+=sy;
+    }else{
+      y+=base;
+    }
+    d[x]=y;
+  }
+}
+
+/* the floor has already been filtered to only include relevant sections */
+static int accumulate_fit(const float *flr,const float *mdct,
+			  int x0, int x1,lsfit_acc *a,
+			  int n,vorbis_info_floor1 *info){
+  long i;
+  int quantized=vorbis_dBquant(flr+x0);
+
+  long xa=0,ya=0,x2a=0,y2a=0,xya=0,na=0, xb=0,yb=0,x2b=0,y2b=0,xyb=0,nb=0;
+
+  memset(a,0,sizeof(*a));
+  a->x0=x0;
+  a->x1=x1;
+  if(x1>=n)x1=n-1;
+
+  for(i=x0;i<=x1;i++){
+    int quantized=vorbis_dBquant(flr+i);
+    if(quantized){
+      if(mdct[i]+info->twofitatten>=flr[i]){
+	xa  += i;
+	ya  += quantized;
+	x2a += i*i;
+	y2a += quantized*quantized;
+	xya += i*quantized;
+	na++;
+      }else{
+	xb  += i;
+	yb  += quantized;
+	x2b += i*i;
+	y2b += quantized*quantized;
+	xyb += i*quantized;
+	nb++;
+      }
+    }
+  }
+
+  xb+=xa;
+  yb+=ya;
+  x2b+=x2a;
+  y2b+=y2a;
+  xyb+=xya;
+  nb+=na;
+
+  /* weight toward the actually used frequencies if we meet the threshhold */
+  {
+    int weight=nb*info->twofitweight/(na+1);
+
+    a->xa=xa*weight+xb;
+    a->ya=ya*weight+yb;
+    a->x2a=x2a*weight+x2b;
+    a->y2a=y2a*weight+y2b;
+    a->xya=xya*weight+xyb;
+    a->an=na*weight+nb;
+  }
+
+  return(na);
+}
+
+static void fit_line(lsfit_acc *a,int fits,int *y0,int *y1){
+  long x=0,y=0,x2=0,y2=0,xy=0,an=0,i;
+  long x0=a[0].x0;
+  long x1=a[fits-1].x1;
+
+  for(i=0;i<fits;i++){
+    x+=a[i].xa;
+    y+=a[i].ya;
+    x2+=a[i].x2a;
+    y2+=a[i].y2a;
+    xy+=a[i].xya;
+    an+=a[i].an;
+  }
+
+  if(*y0>=0){
+    x+=   x0;
+    y+=  *y0;
+    x2+=  x0 *  x0;
+    y2+= *y0 * *y0;
+    xy+= *y0 *  x0;
+    an++;
+  }
+
+  if(*y1>=0){
+    x+=   x1;
+    y+=  *y1;
+    x2+=  x1 *  x1;
+    y2+= *y1 * *y1;
+    xy+= *y1 *  x1;
+    an++;
+  }
+  
+  if(an){
+    /* need 64 bit multiplies, which C doesn't give portably as int */
+    double fx=x;
+    double fy=y;
+    double fx2=x2;
+    double fxy=xy;
+    double denom=1./(an*fx2-fx*fx);
+    double a=(fy*fx2-fxy*fx)*denom;
+    double b=(an*fxy-fx*fy)*denom;
+    *y0=rint(a+b*x0);
+    *y1=rint(a+b*x1);
+    
+    /* limit to our range! */
+    if(*y0>1023)*y0=1023;
+    if(*y1>1023)*y1=1023;
+    if(*y0<0)*y0=0;
+    if(*y1<0)*y1=0;
+    
+  }else{
+    *y0=0;
+    *y1=0;
+  }
+}
+
+/*static void fit_line_point(lsfit_acc *a,int fits,int *y0,int *y1){
+  long y=0;
+  int i;
+
+  for(i=0;i<fits && y==0;i++)
+    y+=a[i].ya;
+  
+  *y0=*y1=y;
+  }*/
+
+static int inspect_error(int x0,int x1,int y0,int y1,const float *mask,
+			 const float *mdct,
+			 vorbis_info_floor1 *info){
+  int dy=y1-y0;
+  int adx=x1-x0;
+  int ady=abs(dy);
+  int base=dy/adx;
+  int sy=(dy<0?base-1:base+1);
+  int x=x0;
+  int y=y0;
+  int err=0;
+  int val=vorbis_dBquant(mask+x);
+  int mse=0;
+  int n=0;
+
+  ady-=abs(base*adx);
+  
+  mse=(y-val);
+  mse*=mse;
+  n++;
+  if(mdct[x]+info->twofitatten>=mask[x]){
+    if(y+info->maxover<val)return(1);
+    if(y-info->maxunder>val)return(1);
+  }
+
+  while(++x<x1){
+    err=err+ady;
+    if(err>=adx){
+      err-=adx;
+      y+=sy;
+    }else{
+      y+=base;
+    }
+
+    val=vorbis_dBquant(mask+x);
+    mse+=((y-val)*(y-val));
+    n++;
+    if(mdct[x]+info->twofitatten>=mask[x]){
+      if(val){
+	if(y+info->maxover<val)return(1);
+	if(y-info->maxunder>val)return(1);
+      }
+    }
+  }
+  
+  if(info->maxover*info->maxover/n>info->maxerr)return(0);
+  if(info->maxunder*info->maxunder/n>info->maxerr)return(0);
+  if(mse/n>info->maxerr)return(1);
+  return(0);
+}
+
+static int post_Y(int *A,int *B,int pos){
+  if(A[pos]<0)
+    return B[pos];
+  if(B[pos]<0)
+    return A[pos];
+
+  return (A[pos]+B[pos])>>1;
+}
+
+static int seq=0;
+
+int *floor1_fit(vorbis_block *vb,vorbis_look_floor1 *look,
+			  const float *logmdct,   /* in */
+			  const float *logmask){
+  long i,j;
+  vorbis_info_floor1 *info=look->vi;
+  long n=look->n;
+  long posts=look->posts;
+  long nonzero=0;
+  lsfit_acc fits[VIF_POSIT+1];
+  int fit_valueA[VIF_POSIT+2]; /* index by range list position */
+  int fit_valueB[VIF_POSIT+2]; /* index by range list position */
+
+  int loneighbor[VIF_POSIT+2]; /* sorted index of range list position (+2) */
+  int hineighbor[VIF_POSIT+2]; 
+  int *output=NULL;
+  int memo[VIF_POSIT+2];
+
+  for(i=0;i<posts;i++)fit_valueA[i]=-200; /* mark all unused */
+  for(i=0;i<posts;i++)fit_valueB[i]=-200; /* mark all unused */
+  for(i=0;i<posts;i++)loneighbor[i]=0; /* 0 for the implicit 0 post */
+  for(i=0;i<posts;i++)hineighbor[i]=1; /* 1 for the implicit post at n */
+  for(i=0;i<posts;i++)memo[i]=-1;      /* no neighbor yet */
+
+  /* quantize the relevant floor points and collect them into line fit
+     structures (one per minimal division) at the same time */
+  if(posts==0){
+    nonzero+=accumulate_fit(logmask,logmdct,0,n,fits,n,info);
+  }else{
+    for(i=0;i<posts-1;i++)
+      nonzero+=accumulate_fit(logmask,logmdct,look->sorted_index[i],
+			      look->sorted_index[i+1],fits+i,
+			      n,info);
+  }
+  
+  if(nonzero){
+    /* start by fitting the implicit base case.... */
+    int y0=-200;
+    int y1=-200;
+    fit_line(fits,posts-1,&y0,&y1);
+
+    fit_valueA[0]=y0;
+    fit_valueB[0]=y0;
+    fit_valueB[1]=y1;
+    fit_valueA[1]=y1;
+
+    /* Non degenerate case */
+    /* start progressive splitting.  This is a greedy, non-optimal
+       algorithm, but simple and close enough to the best
+       answer. */
+    for(i=2;i<posts;i++){
+      int sortpos=look->reverse_index[i];
+      int ln=loneighbor[sortpos];
+      int hn=hineighbor[sortpos];
+      
+      /* eliminate repeat searches of a particular range with a memo */
+      if(memo[ln]!=hn){
+	/* haven't performed this error search yet */
+	int lsortpos=look->reverse_index[ln];
+	int hsortpos=look->reverse_index[hn];
+	memo[ln]=hn;
+		
+	{
+	  /* A note: we want to bound/minimize *local*, not global, error */
+	  int lx=info->postlist[ln];
+	  int hx=info->postlist[hn];	  
+	  int ly=post_Y(fit_valueA,fit_valueB,ln);
+	  int hy=post_Y(fit_valueA,fit_valueB,hn);
+	  
+	  if(ly==-1 || hy==-1){
+	    exit(1);
+	  }
+
+	  if(inspect_error(lx,hx,ly,hy,logmask,logmdct,info)){
+	    /* outside error bounds/begin search area.  Split it. */
+	    int ly0=-200;
+	    int ly1=-200;
+	    int hy0=-200;
+	    int hy1=-200;
+	    fit_line(fits+lsortpos,sortpos-lsortpos,&ly0,&ly1);
+	    fit_line(fits+sortpos,hsortpos-sortpos,&hy0,&hy1);
+	    
+	    /* store new edge values */
+	    fit_valueB[ln]=ly0;
+	    if(ln==0)fit_valueA[ln]=ly0;
+	    fit_valueA[i]=ly1;
+	    fit_valueB[i]=hy0;
+	    fit_valueA[hn]=hy1;
+	    if(hn==1)fit_valueB[hn]=hy1;
+	    
+	    if(ly1>=0 || hy0>=0){
+	      /* store new neighbor values */
+	      for(j=sortpos-1;j>=0;j--)
+		if(hineighbor[j]==hn)
+		  hineighbor[j]=i;
+		else
+		  break;
+	      for(j=sortpos+1;j<posts;j++)
+		if(loneighbor[j]==ln)
+		  loneighbor[j]=i;
+		else
+		  break;
+	      
+	    }
+	  }else{
+	    
+	    fit_valueA[i]=-200;
+	    fit_valueB[i]=-200;
+	  }
+	}
+      }
+    }
+  
+    output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
+    
+    output[0]=post_Y(fit_valueA,fit_valueB,0);
+    output[1]=post_Y(fit_valueA,fit_valueB,1);
+    
+    /* fill in posts marked as not using a fit; we will zero
+       back out to 'unused' when encoding them so long as curve
+       interpolation doesn't force them into use */
+    for(i=2;i<posts;i++){
+      int ln=look->loneighbor[i-2];
+      int hn=look->hineighbor[i-2];
+      int x0=info->postlist[ln];
+      int x1=info->postlist[hn];
+      int y0=output[ln];
+      int y1=output[hn];
+      
+      int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
+      int vx=post_Y(fit_valueA,fit_valueB,i);
+      
+      if(vx>=0 && predicted!=vx){ 
+	output[i]=vx;
+      }else{
+	output[i]= predicted|0x8000;
+      }
+    }
+  }
+
+  return(output);
+  
+}
+		
+int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor1 *look,
+			  int *A,int *B,
+			  int del){
+
+  long i;
+  long posts=look->posts;
+  int *output=NULL;
+  
+  if(A && B){
+    output=_vorbis_block_alloc(vb,sizeof(*output)*posts);
+    
+    for(i=0;i<posts;i++){
+      output[i]=((65536-del)*(A[i]&0x7fff)+del*(B[i]&0x7fff)+32768)>>16;
+      if(A[i]&0x8000 && B[i]&0x8000)output[i]|=0x8000;
+    }
+  }
+
+  return(output);
+}
+
+
+int floor1_encode(oggpack_buffer *opb,vorbis_block *vb,
+		  vorbis_look_floor1 *look,
+		  int *post,int *ilogmask){
+
+  long i,j;
+  vorbis_info_floor1 *info=look->vi;
+  long n=look->n;
+  long posts=look->posts;
+  codec_setup_info *ci=vb->vd->vi->codec_setup;
+  int out[VIF_POSIT+2];
+  static_codebook **sbooks=ci->book_param;
+  codebook *books=ci->fullbooks;
+  static long seq=0; 
+
+  /* quantize values to multiplier spec */
+  if(post){
+    for(i=0;i<posts;i++){
+      int val=post[i]&0x7fff;
+      switch(info->mult){
+      case 1: /* 1024 -> 256 */
+	val>>=2;
+	break;
+      case 2: /* 1024 -> 128 */
+	val>>=3;
+	break;
+      case 3: /* 1024 -> 86 */
+	val/=12;
+	break;
+      case 4: /* 1024 -> 64 */
+	val>>=4;
+	break;
+      }
+      post[i]=val | (post[i]&0x8000);
+    }
+
+    out[0]=post[0];
+    out[1]=post[1];
+
+    /* find prediction values for each post and subtract them */
+    for(i=2;i<posts;i++){
+      int ln=look->loneighbor[i-2];
+      int hn=look->hineighbor[i-2];
+      int x0=info->postlist[ln];
+      int x1=info->postlist[hn];
+      int y0=post[ln];
+      int y1=post[hn];
+      
+      int predicted=render_point(x0,x1,y0,y1,info->postlist[i]);
+      
+      if((post[i]&0x8000) || (predicted==post[i])){
+	post[i]=predicted|0x8000; /* in case there was roundoff jitter
+				     in interpolation */
+	out[i]=0;
+      }else{
+	int headroom=(look->quant_q-predicted<predicted?
+		      look->quant_q-predicted:predicted);
+	
+	int val=post[i]-predicted;
+	
+	/* at this point the 'deviation' value is in the range +/- max
+	   range, but the real, unique range can always be mapped to
+	   only [0-maxrange).  So we want to wrap the deviation into
+	   this limited range, but do it in the way that least screws
+	   an essentially gaussian probability distribution. */
+	
+	if(val<0)
+	  if(val<-headroom)
+	    val=headroom-val-1;
+	  else
+	    val=-1-(val<<1);
+	else
+	  if(val>=headroom)
+	    val= val+headroom;
+	  else
+	    val<<=1;
+	
+	out[i]=val;
+	post[ln]&=0x7fff;
+	post[hn]&=0x7fff;
+      }
+    }
+    
+    /* we have everything we need. pack it out */
+    /* mark nontrivial floor */
+    oggpack_write(opb,1,1);
+      
+    /* beginning/end post */
+    look->frames++;
+    look->postbits+=ilog(look->quant_q-1)*2;
+    oggpack_write(opb,out[0],ilog(look->quant_q-1));
+    oggpack_write(opb,out[1],ilog(look->quant_q-1));
+      
+      
+    /* partition by partition */
+    for(i=0,j=2;i<info->partitions;i++){
+      int class=info->partitionclass[i];
+      int cdim=info->class_dim[class];
+      int csubbits=info->class_subs[class];
+      int csub=1<<csubbits;
+      int bookas[8]={0,0,0,0,0,0,0,0};
+      int cval=0;
+      int cshift=0;
+      int k,l;
+
+      /* generate the partition's first stage cascade value */
+      if(csubbits){
+	int maxval[8];
+	for(k=0;k<csub;k++){
+	  int booknum=info->class_subbook[class][k];
+	  if(booknum<0){
+	    maxval[k]=1;
+	  }else{
+	    maxval[k]=sbooks[info->class_subbook[class][k]]->entries;
+	  }
+	}
+	for(k=0;k<cdim;k++){
+	  for(l=0;l<csub;l++){
+	    int val=out[j+k];
+	    if(val<maxval[l]){
+	      bookas[k]=l;
+	      break;
+	    }
+	  }
+	  cval|= bookas[k]<<cshift;
+	  cshift+=csubbits;
+	}
+	/* write it */
+	look->phrasebits+=
+	  vorbis_book_encode(books+info->class_book[class],cval,opb);
+	
+#ifdef TRAIN_FLOOR1
+	{
+	  FILE *of;
+	  char buffer[80];
+	  sprintf(buffer,"line_%dx%ld_class%d.vqd",
+		  vb->pcmend/2,posts-2,class);
+	  of=fopen(buffer,"a");
+	  fprintf(of,"%d\n",cval);
+	  fclose(of);
+	}
+#endif
+      }
+	
+      /* write post values */
+      for(k=0;k<cdim;k++){
+	int book=info->class_subbook[class][bookas[k]];
+	if(book>=0){
+	  /* hack to allow training with 'bad' books */
+	  if(out[j+k]<(books+book)->entries)
+	    look->postbits+=vorbis_book_encode(books+book,
+					       out[j+k],opb);
+	  /*else
+	    fprintf(stderr,"+!");*/
+	  
+#ifdef TRAIN_FLOOR1
+	  {
+	    FILE *of;
+	    char buffer[80];
+	    sprintf(buffer,"line_%dx%ld_%dsub%d.vqd",
+		    vb->pcmend/2,posts-2,class,bookas[k]);
+	    of=fopen(buffer,"a");
+	    fprintf(of,"%d\n",out[j+k]);
+	    fclose(of);
+	  }
+#endif
+	}
+      }
+      j+=cdim;
+    }
+    
+    {
+      /* generate quantized floor equivalent to what we'd unpack in decode */
+      /* render the lines */
+      int hx=0;
+      int lx=0;
+      int ly=post[0]*info->mult;
+      for(j=1;j<look->posts;j++){
+	int current=look->forward_index[j];
+	int hy=post[current]&0x7fff;
+	if(hy==post[current]){
+	  
+	  hy*=info->mult;
+	  hx=info->postlist[current];
+	
+	  render_line0(lx,hx,ly,hy,ilogmask);
+	
+	  lx=hx;
+	  ly=hy;
+	}
+      }
+      for(j=hx;j<vb->pcmend/2;j++)ilogmask[j]=ly; /* be certain */    
+      seq++;
+      return(1);
+    }
+  }else{
+    oggpack_write(opb,0,1);
+    memset(ilogmask,0,vb->pcmend/2*sizeof(*ilogmask));
+    seq++;
+    return(0);
+  }
+}
+
+static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){
+  vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
+  vorbis_info_floor1 *info=look->vi;
+  codec_setup_info   *ci=vb->vd->vi->codec_setup;
+  
+  int i,j,k;
+  codebook *books=ci->fullbooks;   
+
+  /* unpack wrapped/predicted values from stream */
+  if(oggpack_read(&vb->opb,1)==1){
+    int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value));
+
+    fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
+    fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1));
+
+    /* partition by partition */
+    for(i=0,j=2;i<info->partitions;i++){
+      int class=info->partitionclass[i];
+      int cdim=info->class_dim[class];
+      int csubbits=info->class_subs[class];
+      int csub=1<<csubbits;
+      int cval=0;
+
+      /* decode the partition's first stage cascade value */
+      if(csubbits){
+	cval=vorbis_book_decode(books+info->class_book[class],&vb->opb);
+
+	if(cval==-1)goto eop;
+      }
+
+      for(k=0;k<cdim;k++){
+	int book=info->class_subbook[class][cval&(csub-1)];
+	cval>>=csubbits;
+	if(book>=0){
+	  if((fit_value[j+k]=vorbis_book_decode(books+book,&vb->opb))==-1)
+	    goto eop;
+	}else{
+	  fit_value[j+k]=0;
+	}
+      }
+      j+=cdim;
+    }
+
+    /* unwrap positive values and reconsitute via linear interpolation */
+    for(i=2;i<look->posts;i++){
+      int predicted=render_point(info->postlist[look->loneighbor[i-2]],
+				 info->postlist[look->hineighbor[i-2]],
+				 fit_value[look->loneighbor[i-2]],
+				 fit_value[look->hineighbor[i-2]],
+				 info->postlist[i]);
+      int hiroom=look->quant_q-predicted;
+      int loroom=predicted;
+      int room=(hiroom<loroom?hiroom:loroom)<<1;
+      int val=fit_value[i];
+
+      if(val){
+	if(val>=room){
+	  if(hiroom>loroom){
+	    val = val-loroom;
+	  }else{
+	    val = -1-(val-hiroom);
+	  }
+	}else{
+	  if(val&1){
+	    val= -((val+1)>>1);
+	  }else{
+	    val>>=1;
+	  }
+	}
+
+	fit_value[i]=val+predicted;
+	fit_value[look->loneighbor[i-2]]&=0x7fff;
+	fit_value[look->hineighbor[i-2]]&=0x7fff;
+
+      }else{
+	fit_value[i]=predicted|0x8000;
+      }
+	
+    }
+
+    return(fit_value);
+  }
+ eop:
+  return(NULL);
+}
+
+static int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
+			  float *out){
+  vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
+  vorbis_info_floor1 *info=look->vi;
+
+  codec_setup_info   *ci=vb->vd->vi->codec_setup;
+  int                  n=ci->blocksizes[vb->W]/2;
+  int j;
+
+  if(memo){
+    /* render the lines */
+    int *fit_value=(int *)memo;
+    int hx=0;
+    int lx=0;
+    int ly=fit_value[0]*info->mult;
+    for(j=1;j<look->posts;j++){
+      int current=look->forward_index[j];
+      int hy=fit_value[current]&0x7fff;
+      if(hy==fit_value[current]){
+	
+	hy*=info->mult;
+	hx=info->postlist[current];
+	
+	render_line(n,lx,hx,ly,hy,out);
+	
+	lx=hx;
+	ly=hy;
+      }
+    }
+    for(j=hx;j<n;j++)out[j]*=FLOOR1_fromdB_LOOKUP[ly]; /* be certain */    
+    return(1);
+  }
+  memset(out,0,sizeof(*out)*n);
+  return(0);
+}
+
+/* export hooks */
+vorbis_func_floor floor1_exportbundle={
+  &floor1_pack,&floor1_unpack,&floor1_look,&floor1_free_info,
+  &floor1_free_look,&floor1_inverse1,&floor1_inverse2
+};
+
+
Index: /libvorbis-1.2.0/lib/highlevel.h
===================================================================
--- /libvorbis-1.2.0/lib/highlevel.h	(revision 16)
+++ /libvorbis-1.2.0/lib/highlevel.h	(revision 16)
@@ -0,0 +1,57 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: highlevel encoder setup struct seperated out for vorbisenc clarity
+ last mod: $Id: highlevel.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+typedef struct highlevel_byblocktype {
+  double tone_mask_setting;
+  double tone_peaklimit_setting;
+  double noise_bias_setting;
+  double noise_compand_setting;
+} highlevel_byblocktype;
+  
+typedef struct highlevel_encode_setup {
+  void *setup;
+  int   set_in_stone;
+
+  double base_setting;
+  double long_setting;
+  double short_setting;
+  double impulse_noisetune;
+
+  int    managed;
+  long   bitrate_min;
+  long   bitrate_av;
+  double bitrate_av_damp;
+  long   bitrate_max;
+  long   bitrate_reservoir;
+  double bitrate_reservoir_bias;
+  
+  int impulse_block_p;
+  int noise_normalize_p;
+
+  double stereo_point_setting;
+  double lowpass_kHz;
+
+  double ath_floating_dB;
+  double ath_absolute_dB;
+
+  double amplitude_track_dBpersec;
+  double trigger_setting;
+  
+  highlevel_byblocktype block[4]; /* padding, impulse, transition, long */
+
+} highlevel_encode_setup;
+
Index: /libvorbis-1.2.0/lib/info.c
===================================================================
--- /libvorbis-1.2.0/lib/info.c	(revision 16)
+++ /libvorbis-1.2.0/lib/info.c	(revision 16)
@@ -0,0 +1,644 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: maintain the info structure, info <-> header packets
+ last mod: $Id: info.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* general handling of the header and the vorbis_info structure (and
+   substructures) */
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "codebook.h"
+#include "registry.h"
+#include "window.h"
+#include "psy.h"
+#include "misc.h"
+#include "os.h"
+
+/* helpers */
+static int ilog2(unsigned int v){
+  int ret=0;
+  if(v)--v;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+static void _v_writestring(oggpack_buffer *o,char *s, int bytes){
+
+  while(bytes--){
+    oggpack_write(o,*s++,8);
+  }
+}
+
+static void _v_readstring(oggpack_buffer *o,char *buf,int bytes){
+  while(bytes--){
+    *buf++=oggpack_read(o,8);
+  }
+}
+
+void vorbis_comment_init(vorbis_comment *vc){
+  memset(vc,0,sizeof(*vc));
+}
+
+void vorbis_comment_add(vorbis_comment *vc,char *comment){
+  vc->user_comments=_ogg_realloc(vc->user_comments,
+			    (vc->comments+2)*sizeof(*vc->user_comments));
+  vc->comment_lengths=_ogg_realloc(vc->comment_lengths,
+      			    (vc->comments+2)*sizeof(*vc->comment_lengths));
+  vc->comment_lengths[vc->comments]=strlen(comment);
+  vc->user_comments[vc->comments]=_ogg_malloc(vc->comment_lengths[vc->comments]+1);
+  strcpy(vc->user_comments[vc->comments], comment);
+  vc->comments++;
+  vc->user_comments[vc->comments]=NULL;
+}
+
+void vorbis_comment_add_tag(vorbis_comment *vc, char *tag, char *contents){
+  char *comment=alloca(strlen(tag)+strlen(contents)+2); /* +2 for = and \0 */
+  strcpy(comment, tag);
+  strcat(comment, "=");
+  strcat(comment, contents);
+  vorbis_comment_add(vc, comment);
+}
+
+/* This is more or less the same as strncasecmp - but that doesn't exist
+ * everywhere, and this is a fairly trivial function, so we include it */
+static int tagcompare(const char *s1, const char *s2, int n){
+  int c=0;
+  while(c < n){
+    if(toupper(s1[c]) != toupper(s2[c]))
+      return !0;
+    c++;
+  }
+  return 0;
+}
+
+char *vorbis_comment_query(vorbis_comment *vc, char *tag, int count){
+  long i;
+  int found = 0;
+  int taglen = strlen(tag)+1; /* +1 for the = we append */
+  char *fulltag = alloca(taglen+ 1);
+
+  strcpy(fulltag, tag);
+  strcat(fulltag, "=");
+  
+  for(i=0;i<vc->comments;i++){
+    if(!tagcompare(vc->user_comments[i], fulltag, taglen)){
+      if(count == found)
+	/* We return a pointer to the data, not a copy */
+      	return vc->user_comments[i] + taglen;
+      else
+	found++;
+    }
+  }
+  return NULL; /* didn't find anything */
+}
+
+int vorbis_comment_query_count(vorbis_comment *vc, char *tag){
+  int i,count=0;
+  int taglen = strlen(tag)+1; /* +1 for the = we append */
+  char *fulltag = alloca(taglen+1);
+  strcpy(fulltag,tag);
+  strcat(fulltag, "=");
+
+  for(i=0;i<vc->comments;i++){
+    if(!tagcompare(vc->user_comments[i], fulltag, taglen))
+      count++;
+  }
+
+  return count;
+}
+
+void vorbis_comment_clear(vorbis_comment *vc){
+  if(vc){
+    long i;
+    for(i=0;i<vc->comments;i++)
+      if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
+    if(vc->user_comments)_ogg_free(vc->user_comments);
+	if(vc->comment_lengths)_ogg_free(vc->comment_lengths);
+    if(vc->vendor)_ogg_free(vc->vendor);
+    memset(vc,0,sizeof(*vc));
+  }
+}
+
+/* blocksize 0 is guaranteed to be short, 1 is guaranteed to be long.
+   They may be equal, but short will never ge greater than long */
+int vorbis_info_blocksize(vorbis_info *vi,int zo){
+  codec_setup_info *ci = vi->codec_setup;
+  return ci ? ci->blocksizes[zo] : -1;
+}
+
+/* used by synthesis, which has a full, alloced vi */
+void vorbis_info_init(vorbis_info *vi){
+  memset(vi,0,sizeof(*vi));
+  vi->codec_setup=_ogg_calloc(1,sizeof(codec_setup_info));
+}
+
+void vorbis_info_clear(vorbis_info *vi){
+  codec_setup_info     *ci=vi->codec_setup;
+  int i;
+
+  if(ci){
+
+    for(i=0;i<ci->modes;i++)
+      if(ci->mode_param[i])_ogg_free(ci->mode_param[i]);
+
+    for(i=0;i<ci->maps;i++) /* unpack does the range checking */
+      if(ci->map_param[i]) /* this may be cleaning up an aborted
+			      unpack, in which case the below type
+			      cannot be trusted */
+	_mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
+
+    for(i=0;i<ci->floors;i++) /* unpack does the range checking */
+      if(ci->floor_param[i]) /* this may be cleaning up an aborted
+				unpack, in which case the below type
+				cannot be trusted */
+	_floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
+    
+    for(i=0;i<ci->residues;i++) /* unpack does the range checking */
+      if(ci->residue_param[i]) /* this may be cleaning up an aborted
+				  unpack, in which case the below type
+				  cannot be trusted */
+	_residue_P[ci->residue_type[i]]->free_info(ci->residue_param[i]);
+    
+    for(i=0;i<ci->books;i++){
+      if(ci->book_param[i]){
+	/* knows if the book was not alloced */
+	vorbis_staticbook_destroy(ci->book_param[i]);
+      }
+      if(ci->fullbooks)
+	vorbis_book_clear(ci->fullbooks+i);
+    }
+    if(ci->fullbooks)
+	_ogg_free(ci->fullbooks);
+    
+    for(i=0;i<ci->psys;i++)
+      _vi_psy_free(ci->psy_param[i]);
+
+    _ogg_free(ci);
+  }
+
+  memset(vi,0,sizeof(*vi));
+}
+
+/* Header packing/unpacking ********************************************/
+
+static int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
+  codec_setup_info     *ci=vi->codec_setup;
+  if(!ci)return(OV_EFAULT);
+
+  vi->version=oggpack_read(opb,32);
+  if(vi->version!=0)return(OV_EVERSION);
+
+  vi->channels=oggpack_read(opb,8);
+  vi->rate=oggpack_read(opb,32);
+
+  vi->bitrate_upper=oggpack_read(opb,32);
+  vi->bitrate_nominal=oggpack_read(opb,32);
+  vi->bitrate_lower=oggpack_read(opb,32);
+
+  ci->blocksizes[0]=1<<oggpack_read(opb,4);
+  ci->blocksizes[1]=1<<oggpack_read(opb,4);
+  
+  if(vi->rate<1)goto err_out;
+  if(vi->channels<1)goto err_out;
+  if(ci->blocksizes[0]<64)goto err_out; 
+  if(ci->blocksizes[1]<ci->blocksizes[0])goto err_out;
+  if(ci->blocksizes[1]>8192)goto err_out;
+
+  if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
+
+  return(0);
+ err_out:
+  vorbis_info_clear(vi);
+  return(OV_EBADHEADER);
+}
+
+static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){
+  int i;
+  int vendorlen=oggpack_read(opb,32);
+  if(vendorlen<0)goto err_out;
+  vc->vendor=_ogg_calloc(vendorlen+1,1);
+  _v_readstring(opb,vc->vendor,vendorlen);
+  vc->comments=oggpack_read(opb,32);
+  if(vc->comments<0)goto err_out;
+  vc->user_comments=_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments));
+  vc->comment_lengths=_ogg_calloc(vc->comments+1, sizeof(*vc->comment_lengths));
+	    
+  for(i=0;i<vc->comments;i++){
+    int len=oggpack_read(opb,32);
+    if(len<0)goto err_out;
+	vc->comment_lengths[i]=len;
+    vc->user_comments[i]=_ogg_calloc(len+1,1);
+    _v_readstring(opb,vc->user_comments[i],len);
+  }	  
+  if(oggpack_read(opb,1)!=1)goto err_out; /* EOP check */
+
+  return(0);
+ err_out:
+  vorbis_comment_clear(vc);
+  return(OV_EBADHEADER);
+}
+
+/* all of the real encoding details are here.  The modes, books,
+   everything */
+static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){
+  codec_setup_info     *ci=vi->codec_setup;
+  int i;
+  if(!ci)return(OV_EFAULT);
+
+  /* codebooks */
+  ci->books=oggpack_read(opb,8)+1;
+  /*ci->book_param=_ogg_calloc(ci->books,sizeof(*ci->book_param));*/
+  for(i=0;i<ci->books;i++){
+    ci->book_param[i]=_ogg_calloc(1,sizeof(*ci->book_param[i]));
+    if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out;
+  }
+
+  /* time backend settings; hooks are unused */
+  {
+    int times=oggpack_read(opb,6)+1;
+    for(i=0;i<times;i++){
+      int test=oggpack_read(opb,16);
+      if(test<0 || test>=VI_TIMEB)goto err_out;
+    }
+  }
+
+  /* floor backend settings */
+  ci->floors=oggpack_read(opb,6)+1;
+  /*ci->floor_type=_ogg_malloc(ci->floors*sizeof(*ci->floor_type));*/
+  /*ci->floor_param=_ogg_calloc(ci->floors,sizeof(void *));*/
+  for(i=0;i<ci->floors;i++){
+    ci->floor_type[i]=oggpack_read(opb,16);
+    if(ci->floor_type[i]<0 || ci->floor_type[i]>=VI_FLOORB)goto err_out;
+    ci->floor_param[i]=_floor_P[ci->floor_type[i]]->unpack(vi,opb);
+    if(!ci->floor_param[i])goto err_out;
+  }
+
+  /* residue backend settings */
+  ci->residues=oggpack_read(opb,6)+1;
+  /*ci->residue_type=_ogg_malloc(ci->residues*sizeof(*ci->residue_type));*/
+  /*ci->residue_param=_ogg_calloc(ci->residues,sizeof(void *));*/
+  for(i=0;i<ci->residues;i++){
+    ci->residue_type[i]=oggpack_read(opb,16);
+    if(ci->residue_type[i]<0 || ci->residue_type[i]>=VI_RESB)goto err_out;
+    ci->residue_param[i]=_residue_P[ci->residue_type[i]]->unpack(vi,opb);
+    if(!ci->residue_param[i])goto err_out;
+  }
+
+  /* map backend settings */
+  ci->maps=oggpack_read(opb,6)+1;
+  /*ci->map_type=_ogg_malloc(ci->maps*sizeof(*ci->map_type));*/
+  /*ci->map_param=_ogg_calloc(ci->maps,sizeof(void *));*/
+  for(i=0;i<ci->maps;i++){
+    ci->map_type[i]=oggpack_read(opb,16);
+    if(ci->map_type[i]<0 || ci->map_type[i]>=VI_MAPB)goto err_out;
+    ci->map_param[i]=_mapping_P[ci->map_type[i]]->unpack(vi,opb);
+    if(!ci->map_param[i])goto err_out;
+  }
+  
+  /* mode settings */
+  ci->modes=oggpack_read(opb,6)+1;
+  /*vi->mode_param=_ogg_calloc(vi->modes,sizeof(void *));*/
+  for(i=0;i<ci->modes;i++){
+    ci->mode_param[i]=_ogg_calloc(1,sizeof(*ci->mode_param[i]));
+    ci->mode_param[i]->blockflag=oggpack_read(opb,1);
+    ci->mode_param[i]->windowtype=oggpack_read(opb,16);
+    ci->mode_param[i]->transformtype=oggpack_read(opb,16);
+    ci->mode_param[i]->mapping=oggpack_read(opb,8);
+
+    if(ci->mode_param[i]->windowtype>=VI_WINDOWB)goto err_out;
+    if(ci->mode_param[i]->transformtype>=VI_WINDOWB)goto err_out;
+    if(ci->mode_param[i]->mapping>=ci->maps)goto err_out;
+  }
+  
+  if(oggpack_read(opb,1)!=1)goto err_out; /* top level EOP check */
+
+  return(0);
+ err_out:
+  vorbis_info_clear(vi);
+  return(OV_EBADHEADER);
+}
+
+/* Is this packet a vorbis ID header? */
+int vorbis_synthesis_idheader(ogg_packet *op){
+  oggpack_buffer opb;
+  char buffer[6];
+
+  if(op){
+    oggpack_readinit(&opb,op->packet,op->bytes);
+
+    if(!op->b_o_s)
+      return(0); /* Not the initial packet */
+
+    if(oggpack_read(&opb,8) != 1)
+      return 0; /* not an ID header */
+
+    memset(buffer,0,6);
+    _v_readstring(&opb,buffer,6);
+    if(memcmp(buffer,"vorbis",6))
+      return 0; /* not vorbis */
+
+    return 1;
+  }
+
+  return 0;
+}
+
+/* The Vorbis header is in three packets; the initial small packet in
+   the first page that identifies basic parameters, a second packet
+   with bitstream comments and a third packet that holds the
+   codebook. */
+
+int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op){
+  oggpack_buffer opb;
+  
+  if(op){
+    oggpack_readinit(&opb,op->packet,op->bytes);
+
+    /* Which of the three types of header is this? */
+    /* Also verify header-ness, vorbis */
+    {
+      char buffer[6];
+      int packtype=oggpack_read(&opb,8);
+      memset(buffer,0,6);
+      _v_readstring(&opb,buffer,6);
+      if(memcmp(buffer,"vorbis",6)){
+	/* not a vorbis header */
+	return(OV_ENOTVORBIS);
+      }
+      switch(packtype){
+      case 0x01: /* least significant *bit* is read first */
+	if(!op->b_o_s){
+	  /* Not the initial packet */
+	  return(OV_EBADHEADER);
+	}
+	if(vi->rate!=0){
+	  /* previously initialized info header */
+	  return(OV_EBADHEADER);
+	}
+
+	return(_vorbis_unpack_info(vi,&opb));
+
+      case 0x03: /* least significant *bit* is read first */
+	if(vi->rate==0){
+	  /* um... we didn't get the initial header */
+	  return(OV_EBADHEADER);
+	}
+
+	return(_vorbis_unpack_comment(vc,&opb));
+
+      case 0x05: /* least significant *bit* is read first */
+	if(vi->rate==0 || vc->vendor==NULL){
+	  /* um... we didn;t get the initial header or comments yet */
+	  return(OV_EBADHEADER);
+	}
+
+	return(_vorbis_unpack_books(vi,&opb));
+
+      default:
+	/* Not a valid vorbis header type */
+	return(OV_EBADHEADER);
+	break;
+      }
+    }
+  }
+  return(OV_EBADHEADER);
+}
+
+/* pack side **********************************************************/
+
+static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
+  codec_setup_info     *ci=vi->codec_setup;
+  if(!ci)return(OV_EFAULT);
+
+  /* preamble */  
+  oggpack_write(opb,0x01,8);
+  _v_writestring(opb,"vorbis", 6);
+
+  /* basic information about the stream */
+  oggpack_write(opb,0x00,32);
+  oggpack_write(opb,vi->channels,8);
+  oggpack_write(opb,vi->rate,32);
+
+  oggpack_write(opb,vi->bitrate_upper,32);
+  oggpack_write(opb,vi->bitrate_nominal,32);
+  oggpack_write(opb,vi->bitrate_lower,32);
+
+  oggpack_write(opb,ilog2(ci->blocksizes[0]),4);
+  oggpack_write(opb,ilog2(ci->blocksizes[1]),4);
+  oggpack_write(opb,1,1);
+
+  return(0);
+}
+
+static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
+  char temp[]="Xiph.Org libVorbis I 20070622";
+  int bytes = strlen(temp);
+
+  /* preamble */  
+  oggpack_write(opb,0x03,8);
+  _v_writestring(opb,"vorbis", 6);
+
+  /* vendor */
+  oggpack_write(opb,bytes,32);
+  _v_writestring(opb,temp, bytes);
+  
+  /* comments */
+
+  oggpack_write(opb,vc->comments,32);
+  if(vc->comments){
+    int i;
+    for(i=0;i<vc->comments;i++){
+      if(vc->user_comments[i]){
+	oggpack_write(opb,vc->comment_lengths[i],32);
+	_v_writestring(opb,vc->user_comments[i], vc->comment_lengths[i]);
+      }else{
+	oggpack_write(opb,0,32);
+      }
+    }
+  }
+  oggpack_write(opb,1,1);
+
+  return(0);
+}
+ 
+static int _vorbis_pack_books(oggpack_buffer *opb,vorbis_info *vi){
+  codec_setup_info     *ci=vi->codec_setup;
+  int i;
+  if(!ci)return(OV_EFAULT);
+
+  oggpack_write(opb,0x05,8);
+  _v_writestring(opb,"vorbis", 6);
+
+  /* books */
+  oggpack_write(opb,ci->books-1,8);
+  for(i=0;i<ci->books;i++)
+    if(vorbis_staticbook_pack(ci->book_param[i],opb))goto err_out;
+
+  /* times; hook placeholders */
+  oggpack_write(opb,0,6);
+  oggpack_write(opb,0,16);
+
+  /* floors */
+  oggpack_write(opb,ci->floors-1,6);
+  for(i=0;i<ci->floors;i++){
+    oggpack_write(opb,ci->floor_type[i],16);
+    if(_floor_P[ci->floor_type[i]]->pack)
+      _floor_P[ci->floor_type[i]]->pack(ci->floor_param[i],opb);
+    else
+      goto err_out;
+  }
+
+  /* residues */
+  oggpack_write(opb,ci->residues-1,6);
+  for(i=0;i<ci->residues;i++){
+    oggpack_write(opb,ci->residue_type[i],16);
+    _residue_P[ci->residue_type[i]]->pack(ci->residue_param[i],opb);
+  }
+
+  /* maps */
+  oggpack_write(opb,ci->maps-1,6);
+  for(i=0;i<ci->maps;i++){
+    oggpack_write(opb,ci->map_type[i],16);
+    _mapping_P[ci->map_type[i]]->pack(vi,ci->map_param[i],opb);
+  }
+
+  /* modes */
+  oggpack_write(opb,ci->modes-1,6);
+  for(i=0;i<ci->modes;i++){
+    oggpack_write(opb,ci->mode_param[i]->blockflag,1);
+    oggpack_write(opb,ci->mode_param[i]->windowtype,16);
+    oggpack_write(opb,ci->mode_param[i]->transformtype,16);
+    oggpack_write(opb,ci->mode_param[i]->mapping,8);
+  }
+  oggpack_write(opb,1,1);
+
+  return(0);
+err_out:
+  return(-1);
+} 
+
+int vorbis_commentheader_out(vorbis_comment *vc,
+    				      ogg_packet *op){
+
+  oggpack_buffer opb;
+
+  oggpack_writeinit(&opb);
+  if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL;
+
+  op->packet = _ogg_malloc(oggpack_bytes(&opb));
+  memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
+
+  op->bytes=oggpack_bytes(&opb);
+  op->b_o_s=0;
+  op->e_o_s=0;
+  op->granulepos=0;
+  op->packetno=1;
+
+  return 0;
+}
+
+int vorbis_analysis_headerout(vorbis_dsp_state *v,
+			      vorbis_comment *vc,
+			      ogg_packet *op,
+			      ogg_packet *op_comm,
+			      ogg_packet *op_code){
+  int ret=OV_EIMPL;
+  vorbis_info *vi=v->vi;
+  oggpack_buffer opb;
+  private_state *b=v->backend_state;
+
+  if(!b){
+    ret=OV_EFAULT;
+    goto err_out;
+  }
+
+  /* first header packet **********************************************/
+
+  oggpack_writeinit(&opb);
+  if(_vorbis_pack_info(&opb,vi))goto err_out;
+
+  /* build the packet */
+  if(b->header)_ogg_free(b->header);
+  b->header=_ogg_malloc(oggpack_bytes(&opb));
+  memcpy(b->header,opb.buffer,oggpack_bytes(&opb));
+  op->packet=b->header;
+  op->bytes=oggpack_bytes(&opb);
+  op->b_o_s=1;
+  op->e_o_s=0;
+  op->granulepos=0;
+  op->packetno=0;
+
+  /* second header packet (comments) **********************************/
+
+  oggpack_reset(&opb);
+  if(_vorbis_pack_comment(&opb,vc))goto err_out;
+
+  if(b->header1)_ogg_free(b->header1);
+  b->header1=_ogg_malloc(oggpack_bytes(&opb));
+  memcpy(b->header1,opb.buffer,oggpack_bytes(&opb));
+  op_comm->packet=b->header1;
+  op_comm->bytes=oggpack_bytes(&opb);
+  op_comm->b_o_s=0;
+  op_comm->e_o_s=0;
+  op_comm->granulepos=0;
+  op_comm->packetno=1;
+
+  /* third header packet (modes/codebooks) ****************************/
+
+  oggpack_reset(&opb);
+  if(_vorbis_pack_books(&opb,vi))goto err_out;
+
+  if(b->header2)_ogg_free(b->header2);
+  b->header2=_ogg_malloc(oggpack_bytes(&opb));
+  memcpy(b->header2,opb.buffer,oggpack_bytes(&opb));
+  op_code->packet=b->header2;
+  op_code->bytes=oggpack_bytes(&opb);
+  op_code->b_o_s=0;
+  op_code->e_o_s=0;
+  op_code->granulepos=0;
+  op_code->packetno=2;
+
+  oggpack_writeclear(&opb);
+  return(0);
+ err_out:
+  oggpack_writeclear(&opb);
+  memset(op,0,sizeof(*op));
+  memset(op_comm,0,sizeof(*op_comm));
+  memset(op_code,0,sizeof(*op_code));
+
+  if(b){
+    if(b->header)_ogg_free(b->header);
+    if(b->header1)_ogg_free(b->header1);
+    if(b->header2)_ogg_free(b->header2);
+    b->header=NULL;
+    b->header1=NULL;
+    b->header2=NULL;
+  }
+  return(ret);
+}
+
+double vorbis_granule_time(vorbis_dsp_state *v,ogg_int64_t granulepos){
+  if(granulepos>=0)
+    return((double)granulepos/v->vi->rate);
+  return(-1);
+}
Index: /libvorbis-1.2.0/lib/lookup.c
===================================================================
--- /libvorbis-1.2.0/lib/lookup.c	(revision 16)
+++ /libvorbis-1.2.0/lib/lookup.c	(revision 16)
@@ -0,0 +1,94 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: lookup based functions
+  last mod: $Id: lookup.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <math.h>
+#include "lookup.h"
+#include "lookup_data.h"
+#include "os.h"
+#include "misc.h"
+
+#ifdef FLOAT_LOOKUP
+
+/* interpolated lookup based cos function, domain 0 to PI only */
+float vorbis_coslook(float a){
+  double d=a*(.31830989*(float)COS_LOOKUP_SZ);
+  int i=vorbis_ftoi(d-.5);
+
+  return COS_LOOKUP[i]+ (d-i)*(COS_LOOKUP[i+1]-COS_LOOKUP[i]);
+}
+
+/* interpolated 1./sqrt(p) where .5 <= p < 1. */
+float vorbis_invsqlook(float a){
+  double d=a*(2.f*(float)INVSQ_LOOKUP_SZ)-(float)INVSQ_LOOKUP_SZ;
+  int i=vorbis_ftoi(d-.5f);
+  return INVSQ_LOOKUP[i]+ (d-i)*(INVSQ_LOOKUP[i+1]-INVSQ_LOOKUP[i]);
+}
+
+/* interpolated 1./sqrt(p) where .5 <= p < 1. */
+float vorbis_invsq2explook(int a){
+  return INVSQ2EXP_LOOKUP[a-INVSQ2EXP_LOOKUP_MIN];
+}
+
+#include <stdio.h>
+/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
+float vorbis_fromdBlook(float a){
+  int i=vorbis_ftoi(a*((float)(-(1<<FROMdB2_SHIFT)))-.5f);
+  return (i<0)?1.f:
+    ((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f:
+     FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]);
+}
+
+#endif
+
+#ifdef INT_LOOKUP
+/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
+   16.16 format 
+
+   returns in m.8 format */
+long vorbis_invsqlook_i(long a,long e){
+  long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); 
+  long d=(a&INVSQ_LOOKUP_I_MASK)<<(16-INVSQ_LOOKUP_I_SHIFT); /*  0.16 */
+  long val=INVSQ_LOOKUP_I[i]-                                /*  1.16 */
+    (((INVSQ_LOOKUP_I[i]-INVSQ_LOOKUP_I[i+1])*               /*  0.16 */
+      d)>>16);                                               /* result 1.16 */
+  
+  e+=32;
+  if(e&1)val=(val*5792)>>13; /* multiply val by 1/sqrt(2) */
+  e=(e>>1)-8;
+
+  return(val>>e);
+}
+
+/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
+/* a is in n.12 format */
+float vorbis_fromdBlook_i(long a){
+  int i=(-a)>>(12-FROMdB2_SHIFT);
+  return (i<0)?1.f:
+    ((i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))?0.f:
+     FROMdB_LOOKUP[i>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]);
+}
+
+/* interpolated lookup based cos function, domain 0 to PI only */
+/* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */
+long vorbis_coslook_i(long a){
+  int i=a>>COS_LOOKUP_I_SHIFT;
+  int d=a&COS_LOOKUP_I_MASK;
+  return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
+			   COS_LOOKUP_I_SHIFT);
+}
+
+#endif
Index: /libvorbis-1.2.0/lib/lookup.h
===================================================================
--- /libvorbis-1.2.0/lib/lookup.h	(revision 16)
+++ /libvorbis-1.2.0/lib/lookup.h	(revision 16)
@@ -0,0 +1,32 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: lookup based functions
+  last mod: $Id: lookup.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_LOOKUP_H_
+
+#ifdef FLOAT_LOOKUP
+extern float vorbis_coslook(float a);
+extern float vorbis_invsqlook(float a);
+extern float vorbis_invsq2explook(int a);
+extern float vorbis_fromdBlook(float a);
+#endif
+#ifdef INT_LOOKUP
+extern long vorbis_invsqlook_i(long a,long e);
+extern long vorbis_coslook_i(long a);
+extern float vorbis_fromdBlook_i(long a);
+#endif 
+
+#endif
Index: /libvorbis-1.2.0/lib/lookup_data.h
===================================================================
--- /libvorbis-1.2.0/lib/lookup_data.h	(revision 16)
+++ /libvorbis-1.2.0/lib/lookup_data.h	(revision 16)
@@ -0,0 +1,189 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: lookup data; generated by lookups.pl; edit there
+  last mod: $Id: lookup_data.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_LOOKUP_DATA_H_
+
+#ifdef FLOAT_LOOKUP
+#define COS_LOOKUP_SZ 128
+static float COS_LOOKUP[COS_LOOKUP_SZ+1]={
+	+1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f,
+	+0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f,
+	+0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f,
+	+0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f,
+	+0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f,
+	+0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f,
+	+0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f,
+	+0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f,
+	+0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f,
+	+0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f,
+	+0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f,
+	+0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f,
+	+0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f,
+	+0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f,
+	+0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f,
+	+0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f,
+	+0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f,
+	-0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f,
+	-0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f,
+	-0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f,
+	-0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f,
+	-0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f,
+	-0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f,
+	-0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f,
+	-0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f,
+	-0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f,
+	-0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f,
+	-0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f,
+	-0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f,
+	-0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f,
+	-0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f,
+	-0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f,
+	-1.0000000000000f,
+};
+
+#define INVSQ_LOOKUP_SZ 32
+static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={
+	1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f,
+	1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f,
+	1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f,
+	1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f,
+	1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f,
+	1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f,
+	1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f,
+	1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f,
+	1.000000000000f,
+};
+
+#define INVSQ2EXP_LOOKUP_MIN (-32)
+#define INVSQ2EXP_LOOKUP_MAX 32
+static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\
+                              INVSQ2EXP_LOOKUP_MIN+1]={
+	         65536.f,    46340.95001f,         32768.f,    23170.47501f,
+	         16384.f,     11585.2375f,          8192.f,    5792.618751f,
+	          4096.f,    2896.309376f,          2048.f,    1448.154688f,
+	          1024.f,    724.0773439f,           512.f,     362.038672f,
+	           256.f,     181.019336f,           128.f,    90.50966799f,
+	            64.f,      45.254834f,            32.f,      22.627417f,
+	            16.f,     11.3137085f,             8.f,    5.656854249f,
+	             4.f,    2.828427125f,             2.f,    1.414213562f,
+	             1.f,   0.7071067812f,            0.5f,   0.3535533906f,
+	           0.25f,   0.1767766953f,          0.125f,  0.08838834765f,
+	         0.0625f,  0.04419417382f,        0.03125f,  0.02209708691f,
+	       0.015625f,  0.01104854346f,      0.0078125f, 0.005524271728f,
+	     0.00390625f, 0.002762135864f,    0.001953125f, 0.001381067932f,
+	   0.0009765625f, 0.000690533966f,  0.00048828125f, 0.000345266983f,
+	 0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f,
+	6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f,
+	1.525878906e-05f,
+};
+
+#endif
+
+#define FROMdB_LOOKUP_SZ 35
+#define FROMdB2_LOOKUP_SZ 32
+#define FROMdB_SHIFT 5
+#define FROMdB2_SHIFT 3
+#define FROMdB2_MASK 31
+static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
+	             1.f,   0.6309573445f,   0.3981071706f,   0.2511886432f,
+	   0.1584893192f,            0.1f,  0.06309573445f,  0.03981071706f,
+	  0.02511886432f,  0.01584893192f,           0.01f, 0.006309573445f,
+	 0.003981071706f, 0.002511886432f, 0.001584893192f,          0.001f,
+	0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f,
+	         0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f,
+	1.584893192e-05f,          1e-05f,6.309573445e-06f,3.981071706e-06f,
+	2.511886432e-06f,1.584893192e-06f,          1e-06f,6.309573445e-07f,
+	3.981071706e-07f,2.511886432e-07f,1.584893192e-07f,
+};
+
+static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
+	   0.9928302478f,   0.9786445908f,   0.9646616199f,   0.9508784391f,
+	   0.9372921937f,     0.92390007f,   0.9106992942f,   0.8976871324f,
+	   0.8848608897f,   0.8722179097f,   0.8597555737f,   0.8474713009f,
+	    0.835362547f,   0.8234268041f,   0.8116616003f,   0.8000644989f,
+	   0.7886330981f,   0.7773650302f,   0.7662579617f,    0.755309592f,
+	   0.7445176537f,   0.7338799116f,   0.7233941627f,   0.7130582353f,
+	   0.7028699885f,   0.6928273125f,   0.6829281272f,   0.6731703824f,
+	   0.6635520573f,   0.6540711597f,   0.6447257262f,   0.6355138211f,
+};
+
+#ifdef INT_LOOKUP
+
+#define INVSQ_LOOKUP_I_SHIFT 10
+#define INVSQ_LOOKUP_I_MASK 1023
+static long INVSQ_LOOKUP_I[64+1]={
+	   92682l,   91966l,   91267l,   90583l,
+	   89915l,   89261l,   88621l,   87995l,
+	   87381l,   86781l,   86192l,   85616l,
+	   85051l,   84497l,   83953l,   83420l,
+	   82897l,   82384l,   81880l,   81385l,
+	   80899l,   80422l,   79953l,   79492l,
+	   79039l,   78594l,   78156l,   77726l,
+	   77302l,   76885l,   76475l,   76072l,
+	   75674l,   75283l,   74898l,   74519l,
+	   74146l,   73778l,   73415l,   73058l,
+	   72706l,   72359l,   72016l,   71679l,
+	   71347l,   71019l,   70695l,   70376l,
+	   70061l,   69750l,   69444l,   69141l,
+	   68842l,   68548l,   68256l,   67969l,
+	   67685l,   67405l,   67128l,   66855l,
+	   66585l,   66318l,   66054l,   65794l,
+	   65536l,
+};
+
+#define COS_LOOKUP_I_SHIFT 9
+#define COS_LOOKUP_I_MASK 511
+#define COS_LOOKUP_I_SZ 128
+static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
+	   16384l,   16379l,   16364l,   16340l,
+	   16305l,   16261l,   16207l,   16143l,
+	   16069l,   15986l,   15893l,   15791l,
+	   15679l,   15557l,   15426l,   15286l,
+	   15137l,   14978l,   14811l,   14635l,
+	   14449l,   14256l,   14053l,   13842l,
+	   13623l,   13395l,   13160l,   12916l,
+	   12665l,   12406l,   12140l,   11866l,
+	   11585l,   11297l,   11003l,   10702l,
+	   10394l,   10080l,    9760l,    9434l,
+	    9102l,    8765l,    8423l,    8076l,
+	    7723l,    7366l,    7005l,    6639l,
+	    6270l,    5897l,    5520l,    5139l,
+	    4756l,    4370l,    3981l,    3590l,
+	    3196l,    2801l,    2404l,    2006l,
+	    1606l,    1205l,     804l,     402l,
+	       0l,    -401l,    -803l,   -1204l,
+	   -1605l,   -2005l,   -2403l,   -2800l,
+	   -3195l,   -3589l,   -3980l,   -4369l,
+	   -4755l,   -5138l,   -5519l,   -5896l,
+	   -6269l,   -6638l,   -7004l,   -7365l,
+	   -7722l,   -8075l,   -8422l,   -8764l,
+	   -9101l,   -9433l,   -9759l,  -10079l,
+	  -10393l,  -10701l,  -11002l,  -11296l,
+	  -11584l,  -11865l,  -12139l,  -12405l,
+	  -12664l,  -12915l,  -13159l,  -13394l,
+	  -13622l,  -13841l,  -14052l,  -14255l,
+	  -14448l,  -14634l,  -14810l,  -14977l,
+	  -15136l,  -15285l,  -15425l,  -15556l,
+	  -15678l,  -15790l,  -15892l,  -15985l,
+	  -16068l,  -16142l,  -16206l,  -16260l,
+	  -16304l,  -16339l,  -16363l,  -16378l,
+	  -16383l,
+};
+
+#endif
+
+#endif
Index: /libvorbis-1.2.0/lib/lookups.pl
===================================================================
--- /libvorbis-1.2.0/lib/lookups.pl	(revision 16)
+++ /libvorbis-1.2.0/lib/lookups.pl	(revision 16)
@@ -0,0 +1,142 @@
+#!/usr/bin/perl
+print <<'EOD';
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: lookup data; generated by lookups.pl; edit there
+  last mod: $Id: lookups.pl 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_LOOKUP_DATA_H_
+
+#ifdef FLOAT_LOOKUP
+EOD
+
+$cos_sz=128;
+$invsq_sz=32;
+$invsq2exp_min=-32;
+$invsq2exp_max=32;
+
+$fromdB_sz=35;
+$fromdB_shift=5;
+$fromdB2_shift=3;
+
+$invsq_i_shift=10;
+$cos_i_shift=9;
+$delta_shift=6;
+
+print "#define COS_LOOKUP_SZ $cos_sz\n";
+print "static float COS_LOOKUP[COS_LOOKUP_SZ+1]={\n";
+
+for($i=0;$i<=$cos_sz;){
+    print "\t";
+    for($j=0;$j<4 && $i<=$cos_sz;$j++){
+	printf "%+.13f,", cos(3.14159265358979323846*($i++)/$cos_sz) ;
+    }
+    print "\n";
+}
+print "};\n\n";
+
+print "#define INVSQ_LOOKUP_SZ $invsq_sz\n";
+print "static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={\n";
+
+for($i=0;$i<=$invsq_sz;){
+    print "\t";
+    for($j=0;$j<4 && $i<=$invsq_sz;$j++){
+	my$indexmap=$i++/$invsq_sz*.5+.5;
+	printf "%.12f,", 1./sqrt($indexmap);
+    }
+    print "\n";
+}
+print "};\n\n";
+
+print "#define INVSQ2EXP_LOOKUP_MIN $invsq2exp_min\n";
+print "#define INVSQ2EXP_LOOKUP_MAX $invsq2exp_max\n";
+print "static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-\\\n".
+      "                              INVSQ2EXP_LOOKUP_MIN+1]={\n";
+
+for($i=$invsq2exp_min;$i<=$invsq2exp_max;){
+    print "\t";
+    for($j=0;$j<4 && $i<=$invsq2exp_max;$j++){
+	printf "%15.10g,", 2**($i++*-.5);
+    }
+    print "\n";
+}
+print "};\n\n#endif\n\n";
+
+
+# 0 to -140 dB
+$fromdB2_sz=1<<$fromdB_shift;
+$fromdB_gran=1<<($fromdB_shift-$fromdB2_shift);
+print "#define FROMdB_LOOKUP_SZ $fromdB_sz\n";
+print "#define FROMdB2_LOOKUP_SZ $fromdB2_sz\n";
+print "#define FROMdB_SHIFT $fromdB_shift\n";
+print "#define FROMdB2_SHIFT $fromdB2_shift\n";
+print "#define FROMdB2_MASK ".((1<<$fromdB_shift)-1)."\n";
+
+print "static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={\n";
+
+for($i=0;$i<$fromdB_sz;){
+    print "\t";
+    for($j=0;$j<4 && $i<$fromdB_sz;$j++){
+	printf "%15.10g,", 10**(.05*(-$fromdB_gran*$i++));
+    }
+    print "\n";
+}
+print "};\n\n";
+
+print "static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={\n";
+
+for($i=0;$i<$fromdB2_sz;){
+    print "\t";
+    for($j=0;$j<4 && $i<$fromdB_sz;$j++){
+	printf "%15.10g,", 10**(.05*(-$fromdB_gran/$fromdB2_sz*(.5+$i++)));
+    }
+    print "\n";
+}
+print "};\n\n#ifdef INT_LOOKUP\n\n";
+
+
+$iisz=0x10000>>$invsq_i_shift;
+print "#define INVSQ_LOOKUP_I_SHIFT $invsq_i_shift\n";
+print "#define INVSQ_LOOKUP_I_MASK ".(0x0ffff>>(16-$invsq_i_shift))."\n";
+print "static long INVSQ_LOOKUP_I[$iisz+1]={\n";
+for($i=0;$i<=$iisz;){
+    print "\t";
+    for($j=0;$j<4 && $i<=$iisz;$j++){
+	my$indexmap=$i++/$iisz*.5+.5;
+	printf "%8d,", int(1./sqrt($indexmap)*65536.+.5);
+    }
+    print "\n";
+}
+print "};\n\n";
+
+$cisz=0x10000>>$cos_i_shift;
+print "#define COS_LOOKUP_I_SHIFT $cos_i_shift\n";
+print "#define COS_LOOKUP_I_MASK ".(0x0ffff>>(16-$cos_i_shift))."\n";
+print "#define COS_LOOKUP_I_SZ $cisz\n";
+print "static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={\n";
+
+for($i=0;$i<=$cisz;){
+    print "\t";
+    for($j=0;$j<4 && $i<=$cisz;$j++){
+	printf "%8d,", int(cos(3.14159265358979323846*($i++)/$cos_sz)*16384.+.5) ;
+    }
+    print "\n";
+}
+print "};\n\n";
+
+
+print "#endif\n\n#endif\n";
+
+
Index: /libvorbis-1.2.0/lib/lpc.c
===================================================================
--- /libvorbis-1.2.0/lib/lpc.c	(revision 16)
+++ /libvorbis-1.2.0/lib/lpc.c	(revision 16)
@@ -0,0 +1,149 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: LPC low level routines
+  last mod: $Id: lpc.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* Some of these routines (autocorrelator, LPC coefficient estimator)
+   are derived from code written by Jutta Degener and Carsten Bormann;
+   thus we include their copyright below.  The entirety of this file
+   is freely redistributable on the condition that both of these
+   copyright notices are preserved without modification.  */
+
+/* Preserved Copyright: *********************************************/
+
+/* Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
+Technische Universita"t Berlin
+
+Any use of this software is permitted provided that this notice is not
+removed and that neither the authors nor the Technische Universita"t
+Berlin are deemed to have made any representations as to the
+suitability of this software for any purpose nor are held responsible
+for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR
+THIS SOFTWARE.
+
+As a matter of courtesy, the authors request to be informed about uses
+this software has found, about bugs in this software, and about any
+improvements that may be of general interest.
+
+Berlin, 28.11.1994
+Jutta Degener
+Carsten Bormann
+
+*********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "os.h"
+#include "smallft.h"
+#include "lpc.h"
+#include "scales.h"
+#include "misc.h"
+
+/* Autocorrelation LPC coeff generation algorithm invented by
+   N. Levinson in 1947, modified by J. Durbin in 1959. */
+
+/* Input : n elements of time doamin data
+   Output: m lpc coefficients, excitation energy */
+
+float vorbis_lpc_from_data(float *data,float *lpci,int n,int m){
+  double *aut=alloca(sizeof(*aut)*(m+1));
+  double *lpc=alloca(sizeof(*lpc)*(m));
+  double error;
+  int i,j;
+
+  /* autocorrelation, p+1 lag coefficients */
+  j=m+1;
+  while(j--){
+    double d=0; /* double needed for accumulator depth */
+    for(i=j;i<n;i++)d+=(double)data[i]*data[i-j];
+    aut[j]=d;
+  }
+  
+  /* Generate lpc coefficients from autocorr values */
+
+  error=aut[0];
+  
+  for(i=0;i<m;i++){
+    double r= -aut[i+1];
+
+    if(error==0){
+      memset(lpci,0,m*sizeof(*lpci));
+      return 0;
+    }
+
+    /* Sum up this iteration's reflection coefficient; note that in
+       Vorbis we don't save it.  If anyone wants to recycle this code
+       and needs reflection coefficients, save the results of 'r' from
+       each iteration. */
+
+    for(j=0;j<i;j++)r-=lpc[j]*aut[i-j];
+    r/=error; 
+
+    /* Update LPC coefficients and total error */
+    
+    lpc[i]=r;
+    for(j=0;j<i/2;j++){
+      double tmp=lpc[j];
+
+      lpc[j]+=r*lpc[i-1-j];
+      lpc[i-1-j]+=r*tmp;
+    }
+    if(i%2)lpc[j]+=lpc[j]*r;
+
+    error*=1.f-r*r;
+  }
+
+  for(j=0;j<m;j++)lpci[j]=(float)lpc[j];
+
+  /* we need the error value to know how big an impulse to hit the
+     filter with later */
+  
+  return error;
+}
+
+void vorbis_lpc_predict(float *coeff,float *prime,int m,
+                     float *data,long n){
+
+  /* in: coeff[0...m-1] LPC coefficients 
+         prime[0...m-1] initial values (allocated size of n+m-1)
+    out: data[0...n-1] data samples */
+
+  long i,j,o,p;
+  float y;
+  float *work=alloca(sizeof(*work)*(m+n));
+
+  if(!prime)
+    for(i=0;i<m;i++)
+      work[i]=0.f;
+  else
+    for(i=0;i<m;i++)
+      work[i]=prime[i];
+
+  for(i=0;i<n;i++){
+    y=0;
+    o=i;
+    p=m;
+    for(j=0;j<m;j++)
+      y-=work[o++]*coeff[--p];
+    
+    data[i]=work[o]=y;
+  }
+}
+
+
+
+
+
Index: /libvorbis-1.2.0/lib/lpc.h
===================================================================
--- /libvorbis-1.2.0/lib/lpc.h	(revision 16)
+++ /libvorbis-1.2.0/lib/lpc.h	(revision 16)
@@ -0,0 +1,29 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: LPC low level routines
+  last mod: $Id: lpc.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_LPC_H_
+#define _V_LPC_H_
+
+#include "vorbis/codec.h"
+
+/* simple linear scale LPC code */
+extern float vorbis_lpc_from_data(float *data,float *lpc,int n,int m);
+
+extern void vorbis_lpc_predict(float *coeff,float *prime,int m,
+			       float *data,long n);
+
+#endif
Index: /libvorbis-1.2.0/lib/lsp.c
===================================================================
--- /libvorbis-1.2.0/lib/lsp.c	(revision 16)
+++ /libvorbis-1.2.0/lib/lsp.c	(revision 16)
@@ -0,0 +1,455 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: LSP (also called LSF) conversion routines
+  last mod: $Id: lsp.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+  The LSP generation code is taken (with minimal modification and a
+  few bugfixes) from "On the Computation of the LSP Frequencies" by
+  Joseph Rothweiler (see http://www.rothweiler.us for contact info).
+  The paper is available at:
+
+  http://www.myown1.com/joe/lsf
+
+ ********************************************************************/
+
+/* Note that the lpc-lsp conversion finds the roots of polynomial with
+   an iterative root polisher (CACM algorithm 283).  It *is* possible
+   to confuse this algorithm into not converging; that should only
+   happen with absurdly closely spaced roots (very sharp peaks in the
+   LPC f response) which in turn should be impossible in our use of
+   the code.  If this *does* happen anyway, it's a bug in the floor
+   finder; find the cause of the confusion (probably a single bin
+   spike or accidental near-float-limit resolution problems) and
+   correct it. */
+
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+#include "lsp.h"
+#include "os.h"
+#include "misc.h"
+#include "lookup.h"
+#include "scales.h"
+
+/* three possible LSP to f curve functions; the exact computation
+   (float), a lookup based float implementation, and an integer
+   implementation.  The float lookup is likely the optimal choice on
+   any machine with an FPU.  The integer implementation is *not* fixed
+   point (due to the need for a large dynamic range and thus a
+   seperately tracked exponent) and thus much more complex than the
+   relatively simple float implementations. It's mostly for future
+   work on a fully fixed point implementation for processors like the
+   ARM family. */
+
+/* undefine both for the 'old' but more precise implementation */
+#define   FLOAT_LOOKUP
+#undef    INT_LOOKUP
+
+#ifdef FLOAT_LOOKUP
+#include "lookup.c" /* catch this in the build system; we #include for
+                       compilers (like gcc) that can't inline across
+                       modules */
+
+/* side effect: changes *lsp to cosines of lsp */
+void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
+			    float amp,float ampoffset){
+  int i;
+  float wdel=M_PI/ln;
+  vorbis_fpu_control fpu;
+  
+  vorbis_fpu_setround(&fpu);
+  for(i=0;i<m;i++)lsp[i]=vorbis_coslook(lsp[i]);
+
+  i=0;
+  while(i<n){
+    int k=map[i];
+    int qexp;
+    float p=.7071067812f;
+    float q=.7071067812f;
+    float w=vorbis_coslook(wdel*k);
+    float *ftmp=lsp;
+    int c=m>>1;
+
+    do{
+      q*=ftmp[0]-w;
+      p*=ftmp[1]-w;
+      ftmp+=2;
+    }while(--c);
+
+    if(m&1){
+      /* odd order filter; slightly assymetric */
+      /* the last coefficient */
+      q*=ftmp[0]-w;
+      q*=q;
+      p*=p*(1.f-w*w);
+    }else{
+      /* even order filter; still symmetric */
+      q*=q*(1.f+w);
+      p*=p*(1.f-w);
+    }
+
+    q=frexp(p+q,&qexp);
+    q=vorbis_fromdBlook(amp*             
+			vorbis_invsqlook(q)*
+			vorbis_invsq2explook(qexp+m)- 
+			ampoffset);
+
+    do{
+      curve[i++]*=q;
+    }while(map[i]==k);
+  }
+  vorbis_fpu_restore(fpu);
+}
+
+#else
+
+#ifdef INT_LOOKUP
+#include "lookup.c" /* catch this in the build system; we #include for
+                       compilers (like gcc) that can't inline across
+                       modules */
+
+static int MLOOP_1[64]={
+   0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13,
+  14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14,
+  15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
+  15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
+};
+
+static int MLOOP_2[64]={
+  0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7,
+  8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8,
+  9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
+  9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
+};
+
+static int MLOOP_3[8]={0,1,2,2,3,3,3,3};
+
+
+/* side effect: changes *lsp to cosines of lsp */
+void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
+			    float amp,float ampoffset){
+
+  /* 0 <= m < 256 */
+
+  /* set up for using all int later */
+  int i;
+  int ampoffseti=rint(ampoffset*4096.f);
+  int ampi=rint(amp*16.f);
+  long *ilsp=alloca(m*sizeof(*ilsp));
+  for(i=0;i<m;i++)ilsp[i]=vorbis_coslook_i(lsp[i]/M_PI*65536.f+.5f);
+
+  i=0;
+  while(i<n){
+    int j,k=map[i];
+    unsigned long pi=46341; /* 2**-.5 in 0.16 */
+    unsigned long qi=46341;
+    int qexp=0,shift;
+    long wi=vorbis_coslook_i(k*65536/ln);
+
+    qi*=labs(ilsp[0]-wi);
+    pi*=labs(ilsp[1]-wi);
+
+    for(j=3;j<m;j+=2){
+      if(!(shift=MLOOP_1[(pi|qi)>>25]))
+	if(!(shift=MLOOP_2[(pi|qi)>>19]))
+	  shift=MLOOP_3[(pi|qi)>>16];
+      qi=(qi>>shift)*labs(ilsp[j-1]-wi);
+      pi=(pi>>shift)*labs(ilsp[j]-wi);
+      qexp+=shift;
+    }
+    if(!(shift=MLOOP_1[(pi|qi)>>25]))
+      if(!(shift=MLOOP_2[(pi|qi)>>19]))
+	shift=MLOOP_3[(pi|qi)>>16];
+
+    /* pi,qi normalized collectively, both tracked using qexp */
+
+    if(m&1){
+      /* odd order filter; slightly assymetric */
+      /* the last coefficient */
+      qi=(qi>>shift)*labs(ilsp[j-1]-wi);
+      pi=(pi>>shift)<<14;
+      qexp+=shift;
+
+      if(!(shift=MLOOP_1[(pi|qi)>>25]))
+	if(!(shift=MLOOP_2[(pi|qi)>>19]))
+	  shift=MLOOP_3[(pi|qi)>>16];
+      
+      pi>>=shift;
+      qi>>=shift;
+      qexp+=shift-14*((m+1)>>1);
+
+      pi=((pi*pi)>>16);
+      qi=((qi*qi)>>16);
+      qexp=qexp*2+m;
+
+      pi*=(1<<14)-((wi*wi)>>14);
+      qi+=pi>>14;
+
+    }else{
+      /* even order filter; still symmetric */
+
+      /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't
+	 worth tracking step by step */
+      
+      pi>>=shift;
+      qi>>=shift;
+      qexp+=shift-7*m;
+
+      pi=((pi*pi)>>16);
+      qi=((qi*qi)>>16);
+      qexp=qexp*2+m;
+      
+      pi*=(1<<14)-wi;
+      qi*=(1<<14)+wi;
+      qi=(qi+pi)>>14;
+      
+    }
+    
+
+    /* we've let the normalization drift because it wasn't important;
+       however, for the lookup, things must be normalized again.  We
+       need at most one right shift or a number of left shifts */
+
+    if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
+      qi>>=1; qexp++; 
+    }else
+      while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/
+	qi<<=1; qexp--; 
+      }
+
+    amp=vorbis_fromdBlook_i(ampi*                     /*  n.4         */
+			    vorbis_invsqlook_i(qi,qexp)- 
+			                              /*  m.8, m+n<=8 */
+			    ampoffseti);              /*  8.12[0]     */
+
+    curve[i]*=amp;
+    while(map[++i]==k)curve[i]*=amp;
+  }
+}
+
+#else 
+
+/* old, nonoptimized but simple version for any poor sap who needs to
+   figure out what the hell this code does, or wants the other
+   fraction of a dB precision */
+
+/* side effect: changes *lsp to cosines of lsp */
+void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,float *lsp,int m,
+			    float amp,float ampoffset){
+  int i;
+  float wdel=M_PI/ln;
+  for(i=0;i<m;i++)lsp[i]=2.f*cos(lsp[i]);
+
+  i=0;
+  while(i<n){
+    int j,k=map[i];
+    float p=.5f;
+    float q=.5f;
+    float w=2.f*cos(wdel*k);
+    for(j=1;j<m;j+=2){
+      q *= w-lsp[j-1];
+      p *= w-lsp[j];
+    }
+    if(j==m){
+      /* odd order filter; slightly assymetric */
+      /* the last coefficient */
+      q*=w-lsp[j-1];
+      p*=p*(4.f-w*w);
+      q*=q;
+    }else{
+      /* even order filter; still symmetric */
+      p*=p*(2.f-w);
+      q*=q*(2.f+w);
+    }
+
+    q=fromdB(amp/sqrt(p+q)-ampoffset);
+
+    curve[i]*=q;
+    while(map[++i]==k)curve[i]*=q;
+  }
+}
+
+#endif
+#endif
+
+static void cheby(float *g, int ord) {
+  int i, j;
+
+  g[0] *= .5f;
+  for(i=2; i<= ord; i++) {
+    for(j=ord; j >= i; j--) {
+      g[j-2] -= g[j];
+      g[j] += g[j]; 
+    }
+  }
+}
+
+static int comp(const void *a,const void *b){
+  return (*(float *)a<*(float *)b)-(*(float *)a>*(float *)b);
+}
+
+/* Newton-Raphson-Maehly actually functioned as a decent root finder,
+   but there are root sets for which it gets into limit cycles
+   (exacerbated by zero suppression) and fails.  We can't afford to
+   fail, even if the failure is 1 in 100,000,000, so we now use
+   Laguerre and later polish with Newton-Raphson (which can then
+   afford to fail) */
+
+#define EPSILON 10e-7
+static int Laguerre_With_Deflation(float *a,int ord,float *r){
+  int i,m;
+  double lastdelta=0.f;
+  double *defl=alloca(sizeof(*defl)*(ord+1));
+  for(i=0;i<=ord;i++)defl[i]=a[i];
+
+  for(m=ord;m>0;m--){
+    double new=0.f,delta;
+
+    /* iterate a root */
+    while(1){
+      double p=defl[m],pp=0.f,ppp=0.f,denom;
+      
+      /* eval the polynomial and its first two derivatives */
+      for(i=m;i>0;i--){
+	ppp = new*ppp + pp;
+	pp  = new*pp  + p;
+	p   = new*p   + defl[i-1];
+      }
+      
+      /* Laguerre's method */
+      denom=(m-1) * ((m-1)*pp*pp - m*p*ppp);
+      if(denom<0)
+	return(-1);  /* complex root!  The LPC generator handed us a bad filter */
+
+      if(pp>0){
+	denom = pp + sqrt(denom);
+	if(denom<EPSILON)denom=EPSILON;
+      }else{
+	denom = pp - sqrt(denom);
+	if(denom>-(EPSILON))denom=-(EPSILON);
+      }
+
+      delta  = m*p/denom;
+      new   -= delta;
+
+      if(delta<0.f)delta*=-1;
+
+      if(fabs(delta/new)<10e-12)break; 
+      lastdelta=delta;
+    }
+
+    r[m-1]=new;
+
+    /* forward deflation */
+    
+    for(i=m;i>0;i--)
+      defl[i-1]+=new*defl[i];
+    defl++;
+
+  }
+  return(0);
+}
+
+
+/* for spit-and-polish only */
+static int Newton_Raphson(float *a,int ord,float *r){
+  int i, k, count=0;
+  double error=1.f;
+  double *root=alloca(ord*sizeof(*root));
+
+  for(i=0; i<ord;i++) root[i] = r[i];
+  
+  while(error>1e-20){
+    error=0;
+    
+    for(i=0; i<ord; i++) { /* Update each point. */
+      double pp=0.,delta;
+      double rooti=root[i];
+      double p=a[ord];
+      for(k=ord-1; k>= 0; k--) {
+
+	pp= pp* rooti + p;
+	p = p * rooti + a[k];
+      }
+
+      delta = p/pp;
+      root[i] -= delta;
+      error+= delta*delta;
+    }
+    
+    if(count>40)return(-1);
+     
+    count++;
+  }
+
+  /* Replaced the original bubble sort with a real sort.  With your
+     help, we can eliminate the bubble sort in our lifetime. --Monty */
+
+  for(i=0; i<ord;i++) r[i] = root[i];
+  return(0);
+}
+
+
+/* Convert lpc coefficients to lsp coefficients */
+int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m){
+  int order2=(m+1)>>1;
+  int g1_order,g2_order;
+  float *g1=alloca(sizeof(*g1)*(order2+1));
+  float *g2=alloca(sizeof(*g2)*(order2+1));
+  float *g1r=alloca(sizeof(*g1r)*(order2+1));
+  float *g2r=alloca(sizeof(*g2r)*(order2+1));
+  int i;
+
+  /* even and odd are slightly different base cases */
+  g1_order=(m+1)>>1;
+  g2_order=(m)  >>1;
+
+  /* Compute the lengths of the x polynomials. */
+  /* Compute the first half of K & R F1 & F2 polynomials. */
+  /* Compute half of the symmetric and antisymmetric polynomials. */
+  /* Remove the roots at +1 and -1. */
+  
+  g1[g1_order] = 1.f;
+  for(i=1;i<=g1_order;i++) g1[g1_order-i] = lpc[i-1]+lpc[m-i];
+  g2[g2_order] = 1.f;
+  for(i=1;i<=g2_order;i++) g2[g2_order-i] = lpc[i-1]-lpc[m-i];
+  
+  if(g1_order>g2_order){
+    for(i=2; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+2];
+  }else{
+    for(i=1; i<=g1_order;i++) g1[g1_order-i] -= g1[g1_order-i+1];
+    for(i=1; i<=g2_order;i++) g2[g2_order-i] += g2[g2_order-i+1];
+  }
+
+  /* Convert into polynomials in cos(alpha) */
+  cheby(g1,g1_order);
+  cheby(g2,g2_order);
+
+  /* Find the roots of the 2 even polynomials.*/
+  if(Laguerre_With_Deflation(g1,g1_order,g1r) ||
+     Laguerre_With_Deflation(g2,g2_order,g2r))
+    return(-1);
+
+  Newton_Raphson(g1,g1_order,g1r); /* if it fails, it leaves g1r alone */
+  Newton_Raphson(g2,g2_order,g2r); /* if it fails, it leaves g2r alone */
+
+  qsort(g1r,g1_order,sizeof(*g1r),comp);
+  qsort(g2r,g2_order,sizeof(*g2r),comp);
+
+  for(i=0;i<g1_order;i++)
+    lsp[i*2] = acos(g1r[i]);
+
+  for(i=0;i<g2_order;i++)
+    lsp[i*2+1] = acos(g2r[i]);
+  return(0);
+}
Index: /libvorbis-1.2.0/lib/lsp.h
===================================================================
--- /libvorbis-1.2.0/lib/lsp.h	(revision 16)
+++ /libvorbis-1.2.0/lib/lsp.h	(revision 16)
@@ -0,0 +1,28 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: LSP (also called LSF) conversion routines
+  last mod: $Id: lsp.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+
+#ifndef _V_LSP_H_
+#define _V_LSP_H_
+
+extern int vorbis_lpc_to_lsp(float *lpc,float *lsp,int m);
+
+extern void vorbis_lsp_to_curve(float *curve,int *map,int n,int ln,
+				float *lsp,int m,
+				float amp,float ampoffset);
+  
+#endif
Index: /libvorbis-1.2.0/lib/mapping0.c
===================================================================
--- /libvorbis-1.2.0/lib/mapping0.c	(revision 16)
+++ /libvorbis-1.2.0/lib/mapping0.c	(revision 16)
@@ -0,0 +1,844 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: channel mapping 0 implementation
+ last mod: $Id: mapping0.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "codebook.h"
+#include "window.h"
+#include "registry.h"
+#include "psy.h"
+#include "misc.h"
+
+/* simplistic, wasteful way of doing this (unique lookup for each
+   mode/submapping); there should be a central repository for
+   identical lookups.  That will require minor work, so I'm putting it
+   off as low priority.
+
+   Why a lookup for each backend in a given mode?  Because the
+   blocksize is set by the mode, and low backend lookups may require
+   parameters from other areas of the mode/mapping */
+
+static void mapping0_free_info(vorbis_info_mapping *i){
+  vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)i;
+  if(info){
+    memset(info,0,sizeof(*info));
+    _ogg_free(info);
+  }
+}
+
+static int ilog(unsigned int v){
+  int ret=0;
+  if(v)--v;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm,
+			  oggpack_buffer *opb){
+  int i;
+  vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)vm;
+
+  /* another 'we meant to do it this way' hack...  up to beta 4, we
+     packed 4 binary zeros here to signify one submapping in use.  We
+     now redefine that to mean four bitflags that indicate use of
+     deeper features; bit0:submappings, bit1:coupling,
+     bit2,3:reserved. This is backward compatable with all actual uses
+     of the beta code. */
+
+  if(info->submaps>1){
+    oggpack_write(opb,1,1);
+    oggpack_write(opb,info->submaps-1,4);
+  }else
+    oggpack_write(opb,0,1);
+
+  if(info->coupling_steps>0){
+    oggpack_write(opb,1,1);
+    oggpack_write(opb,info->coupling_steps-1,8);
+    
+    for(i=0;i<info->coupling_steps;i++){
+      oggpack_write(opb,info->coupling_mag[i],ilog(vi->channels));
+      oggpack_write(opb,info->coupling_ang[i],ilog(vi->channels));
+    }
+  }else
+    oggpack_write(opb,0,1);
+  
+  oggpack_write(opb,0,2); /* 2,3:reserved */
+
+  /* we don't write the channel submappings if we only have one... */
+  if(info->submaps>1){
+    for(i=0;i<vi->channels;i++)
+      oggpack_write(opb,info->chmuxlist[i],4);
+  }
+  for(i=0;i<info->submaps;i++){
+    oggpack_write(opb,0,8); /* time submap unused */
+    oggpack_write(opb,info->floorsubmap[i],8);
+    oggpack_write(opb,info->residuesubmap[i],8);
+  }
+}
+
+/* also responsible for range checking */
+static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){
+  int i;
+  vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(*info));
+  codec_setup_info     *ci=vi->codec_setup;
+  memset(info,0,sizeof(*info));
+
+  if(oggpack_read(opb,1))
+    info->submaps=oggpack_read(opb,4)+1;
+  else
+    info->submaps=1;
+
+  if(oggpack_read(opb,1)){
+    info->coupling_steps=oggpack_read(opb,8)+1;
+
+    for(i=0;i<info->coupling_steps;i++){
+      int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels));
+      int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels));
+
+      if(testM<0 || 
+	 testA<0 || 
+	 testM==testA || 
+	 testM>=vi->channels ||
+	 testA>=vi->channels) goto err_out;
+    }
+
+  }
+
+  if(oggpack_read(opb,2)>0)goto err_out; /* 2,3:reserved */
+    
+  if(info->submaps>1){
+    for(i=0;i<vi->channels;i++){
+      info->chmuxlist[i]=oggpack_read(opb,4);
+      if(info->chmuxlist[i]>=info->submaps)goto err_out;
+    }
+  }
+  for(i=0;i<info->submaps;i++){
+    oggpack_read(opb,8); /* time submap unused */
+    info->floorsubmap[i]=oggpack_read(opb,8);
+    if(info->floorsubmap[i]>=ci->floors)goto err_out;
+    info->residuesubmap[i]=oggpack_read(opb,8);
+    if(info->residuesubmap[i]>=ci->residues)goto err_out;
+  }
+
+  return info;
+
+ err_out:
+  mapping0_free_info(info);
+  return(NULL);
+}
+
+#include "os.h"
+#include "lpc.h"
+#include "lsp.h"
+#include "envelope.h"
+#include "mdct.h"
+#include "psy.h"
+#include "scales.h"
+
+#if 0
+static long seq=0;
+static ogg_int64_t total=0;
+static float FLOOR1_fromdB_LOOKUP[256]={
+  1.0649863e-07F, 1.1341951e-07F, 1.2079015e-07F, 1.2863978e-07F, 
+  1.3699951e-07F, 1.4590251e-07F, 1.5538408e-07F, 1.6548181e-07F, 
+  1.7623575e-07F, 1.8768855e-07F, 1.9988561e-07F, 2.128753e-07F, 
+  2.2670913e-07F, 2.4144197e-07F, 2.5713223e-07F, 2.7384213e-07F, 
+  2.9163793e-07F, 3.1059021e-07F, 3.3077411e-07F, 3.5226968e-07F, 
+  3.7516214e-07F, 3.9954229e-07F, 4.2550680e-07F, 4.5315863e-07F, 
+  4.8260743e-07F, 5.1396998e-07F, 5.4737065e-07F, 5.8294187e-07F, 
+  6.2082472e-07F, 6.6116941e-07F, 7.0413592e-07F, 7.4989464e-07F, 
+  7.9862701e-07F, 8.5052630e-07F, 9.0579828e-07F, 9.6466216e-07F, 
+  1.0273513e-06F, 1.0941144e-06F, 1.1652161e-06F, 1.2409384e-06F, 
+  1.3215816e-06F, 1.4074654e-06F, 1.4989305e-06F, 1.5963394e-06F, 
+  1.7000785e-06F, 1.8105592e-06F, 1.9282195e-06F, 2.0535261e-06F, 
+  2.1869758e-06F, 2.3290978e-06F, 2.4804557e-06F, 2.6416497e-06F, 
+  2.8133190e-06F, 2.9961443e-06F, 3.1908506e-06F, 3.3982101e-06F, 
+  3.6190449e-06F, 3.8542308e-06F, 4.1047004e-06F, 4.3714470e-06F, 
+  4.6555282e-06F, 4.9580707e-06F, 5.2802740e-06F, 5.6234160e-06F, 
+  5.9888572e-06F, 6.3780469e-06F, 6.7925283e-06F, 7.2339451e-06F, 
+  7.7040476e-06F, 8.2047000e-06F, 8.7378876e-06F, 9.3057248e-06F, 
+  9.9104632e-06F, 1.0554501e-05F, 1.1240392e-05F, 1.1970856e-05F, 
+  1.2748789e-05F, 1.3577278e-05F, 1.4459606e-05F, 1.5399272e-05F, 
+  1.6400004e-05F, 1.7465768e-05F, 1.8600792e-05F, 1.9809576e-05F, 
+  2.1096914e-05F, 2.2467911e-05F, 2.3928002e-05F, 2.5482978e-05F, 
+  2.7139006e-05F, 2.8902651e-05F, 3.0780908e-05F, 3.2781225e-05F, 
+  3.4911534e-05F, 3.7180282e-05F, 3.9596466e-05F, 4.2169667e-05F, 
+  4.4910090e-05F, 4.7828601e-05F, 5.0936773e-05F, 5.4246931e-05F, 
+  5.7772202e-05F, 6.1526565e-05F, 6.5524908e-05F, 6.9783085e-05F, 
+  7.4317983e-05F, 7.9147585e-05F, 8.4291040e-05F, 8.9768747e-05F, 
+  9.5602426e-05F, 0.00010181521F, 0.00010843174F, 0.00011547824F, 
+  0.00012298267F, 0.00013097477F, 0.00013948625F, 0.00014855085F, 
+  0.00015820453F, 0.00016848555F, 0.00017943469F, 0.00019109536F, 
+  0.00020351382F, 0.00021673929F, 0.00023082423F, 0.00024582449F, 
+  0.00026179955F, 0.00027881276F, 0.00029693158F, 0.00031622787F, 
+  0.00033677814F, 0.00035866388F, 0.00038197188F, 0.00040679456F, 
+  0.00043323036F, 0.00046138411F, 0.00049136745F, 0.00052329927F, 
+  0.00055730621F, 0.00059352311F, 0.00063209358F, 0.00067317058F, 
+  0.00071691700F, 0.00076350630F, 0.00081312324F, 0.00086596457F, 
+  0.00092223983F, 0.00098217216F, 0.0010459992F, 0.0011139742F, 
+  0.0011863665F, 0.0012634633F, 0.0013455702F, 0.0014330129F, 
+  0.0015261382F, 0.0016253153F, 0.0017309374F, 0.0018434235F, 
+  0.0019632195F, 0.0020908006F, 0.0022266726F, 0.0023713743F, 
+  0.0025254795F, 0.0026895994F, 0.0028643847F, 0.0030505286F, 
+  0.0032487691F, 0.0034598925F, 0.0036847358F, 0.0039241906F, 
+  0.0041792066F, 0.0044507950F, 0.0047400328F, 0.0050480668F, 
+  0.0053761186F, 0.0057254891F, 0.0060975636F, 0.0064938176F, 
+  0.0069158225F, 0.0073652516F, 0.0078438871F, 0.0083536271F, 
+  0.0088964928F, 0.009474637F, 0.010090352F, 0.010746080F, 
+  0.011444421F, 0.012188144F, 0.012980198F, 0.013823725F, 
+  0.014722068F, 0.015678791F, 0.016697687F, 0.017782797F, 
+  0.018938423F, 0.020169149F, 0.021479854F, 0.022875735F, 
+  0.024362330F, 0.025945531F, 0.027631618F, 0.029427276F, 
+  0.031339626F, 0.033376252F, 0.035545228F, 0.037855157F, 
+  0.040315199F, 0.042935108F, 0.045725273F, 0.048696758F, 
+  0.051861348F, 0.055231591F, 0.058820850F, 0.062643361F, 
+  0.066714279F, 0.071049749F, 0.075666962F, 0.080584227F, 
+  0.085821044F, 0.091398179F, 0.097337747F, 0.10366330F, 
+  0.11039993F, 0.11757434F, 0.12521498F, 0.13335215F, 
+  0.14201813F, 0.15124727F, 0.16107617F, 0.17154380F, 
+  0.18269168F, 0.19456402F, 0.20720788F, 0.22067342F, 
+  0.23501402F, 0.25028656F, 0.26655159F, 0.28387361F, 
+  0.30232132F, 0.32196786F, 0.34289114F, 0.36517414F, 
+  0.38890521F, 0.41417847F, 0.44109412F, 0.46975890F, 
+  0.50028648F, 0.53279791F, 0.56742212F, 0.60429640F, 
+  0.64356699F, 0.68538959F, 0.72993007F, 0.77736504F, 
+  0.82788260F, 0.88168307F, 0.9389798F, 1.F, 
+};
+
+#endif 
+
+extern int *floor1_fit(vorbis_block *vb,vorbis_look_floor *look,
+		       const float *logmdct,   /* in */
+		       const float *logmask);
+extern int *floor1_interpolate_fit(vorbis_block *vb,vorbis_look_floor *look,
+				   int *A,int *B,
+				   int del);
+extern int floor1_encode(oggpack_buffer *opb,vorbis_block *vb,
+			 vorbis_look_floor *look,
+			 int *post,int *ilogmask);
+
+
+static int mapping0_forward(vorbis_block *vb){
+  vorbis_dsp_state      *vd=vb->vd;
+  vorbis_info           *vi=vd->vi;
+  codec_setup_info      *ci=vi->codec_setup;
+  private_state         *b=vb->vd->backend_state;
+  vorbis_block_internal *vbi=(vorbis_block_internal *)vb->internal;
+  int                    n=vb->pcmend;
+  int i,j,k;
+
+  int    *nonzero    = alloca(sizeof(*nonzero)*vi->channels);
+  float  **gmdct     = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct));
+  int    **ilogmaskch= _vorbis_block_alloc(vb,vi->channels*sizeof(*ilogmaskch));
+  int ***floor_posts = _vorbis_block_alloc(vb,vi->channels*sizeof(*floor_posts));
+  
+  float global_ampmax=vbi->ampmax;
+  float *local_ampmax=alloca(sizeof(*local_ampmax)*vi->channels);
+  int blocktype=vbi->blocktype;
+
+  int modenumber=vb->W;
+  vorbis_info_mapping0 *info=ci->map_param[modenumber];
+  vorbis_look_psy *psy_look=
+    b->psy+blocktype+(vb->W?2:0);
+
+  vb->mode=modenumber;
+
+  for(i=0;i<vi->channels;i++){
+    float scale=4.f/n;
+    float scale_dB;
+
+    float *pcm     =vb->pcm[i]; 
+    float *logfft  =pcm;
+
+    gmdct[i]=_vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
+
+    scale_dB=todB(&scale) + .345; /* + .345 is a hack; the original
+                                     todB estimation used on IEEE 754
+                                     compliant machines had a bug that
+                                     returned dB values about a third
+                                     of a decibel too high.  The bug
+                                     was harmless because tunings
+                                     implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
+
+#if 0
+    if(vi->channels==2)
+      if(i==0)
+	_analysis_output("pcmL",seq,pcm,n,0,0,total-n/2);
+      else
+	_analysis_output("pcmR",seq,pcm,n,0,0,total-n/2);
+#endif
+  
+    /* window the PCM data */
+    _vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW);
+
+#if 0
+    if(vi->channels==2)
+      if(i==0)
+	_analysis_output("windowedL",seq,pcm,n,0,0,total-n/2);
+      else
+	_analysis_output("windowedR",seq,pcm,n,0,0,total-n/2);
+#endif
+
+    /* transform the PCM data */
+    /* only MDCT right now.... */
+    mdct_forward(b->transform[vb->W][0],pcm,gmdct[i]);
+    
+    /* FFT yields more accurate tonal estimation (not phase sensitive) */
+    drft_forward(&b->fft_look[vb->W],pcm);
+    logfft[0]=scale_dB+todB(pcm)  + .345; /* + .345 is a hack; the
+                                     original todB estimation used on
+                                     IEEE 754 compliant machines had a
+                                     bug that returned dB values about
+                                     a third of a decibel too high.
+                                     The bug was harmless because
+                                     tunings implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
+    local_ampmax[i]=logfft[0];
+    for(j=1;j<n-1;j+=2){
+      float temp=pcm[j]*pcm[j]+pcm[j+1]*pcm[j+1];
+      temp=logfft[(j+1)>>1]=scale_dB+.5f*todB(&temp)  + .345; /* +
+                                     .345 is a hack; the original todB
+                                     estimation used on IEEE 754
+                                     compliant machines had a bug that
+                                     returned dB values about a third
+                                     of a decibel too high.  The bug
+                                     was harmless because tunings
+                                     implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
+      if(temp>local_ampmax[i])local_ampmax[i]=temp;
+    }
+
+    if(local_ampmax[i]>0.f)local_ampmax[i]=0.f;
+    if(local_ampmax[i]>global_ampmax)global_ampmax=local_ampmax[i];
+
+#if 0
+    if(vi->channels==2){
+      if(i==0){
+	_analysis_output("fftL",seq,logfft,n/2,1,0,0);
+      }else{
+	_analysis_output("fftR",seq,logfft,n/2,1,0,0);
+      }
+    }
+#endif
+
+  }
+  
+  {
+    float   *noise        = _vorbis_block_alloc(vb,n/2*sizeof(*noise));
+    float   *tone         = _vorbis_block_alloc(vb,n/2*sizeof(*tone));
+    
+    for(i=0;i<vi->channels;i++){
+      /* the encoder setup assumes that all the modes used by any
+	 specific bitrate tweaking use the same floor */
+      
+      int submap=info->chmuxlist[i];
+      
+      /* the following makes things clearer to *me* anyway */
+      float *mdct    =gmdct[i];
+      float *logfft  =vb->pcm[i];
+      
+      float *logmdct =logfft+n/2;
+      float *logmask =logfft;
+
+      vb->mode=modenumber;
+
+      floor_posts[i]=_vorbis_block_alloc(vb,PACKETBLOBS*sizeof(**floor_posts));
+      memset(floor_posts[i],0,sizeof(**floor_posts)*PACKETBLOBS);
+      
+      for(j=0;j<n/2;j++)
+	logmdct[j]=todB(mdct+j)  + .345; /* + .345 is a hack; the original
+                                     todB estimation used on IEEE 754
+                                     compliant machines had a bug that
+                                     returned dB values about a third
+                                     of a decibel too high.  The bug
+                                     was harmless because tunings
+                                     implicitly took that into
+                                     account.  However, fixing the bug
+                                     in the estimator requires
+                                     changing all the tunings as well.
+                                     For now, it's easier to sync
+                                     things back up here, and
+                                     recalibrate the tunings in the
+                                     next major model upgrade. */
+
+#if 0
+      if(vi->channels==2){
+	if(i==0)
+	  _analysis_output("mdctL",seq,logmdct,n/2,1,0,0);
+	else
+	  _analysis_output("mdctR",seq,logmdct,n/2,1,0,0);
+      }else{
+	_analysis_output("mdct",seq,logmdct,n/2,1,0,0);
+      }
+#endif 
+      
+      /* first step; noise masking.  Not only does 'noise masking'
+         give us curves from which we can decide how much resolution
+         to give noise parts of the spectrum, it also implicitly hands
+         us a tonality estimate (the larger the value in the
+         'noise_depth' vector, the more tonal that area is) */
+
+      _vp_noisemask(psy_look,
+		    logmdct,
+		    noise); /* noise does not have by-frequency offset
+                               bias applied yet */
+#if 0
+      if(vi->channels==2){
+	if(i==0)
+	  _analysis_output("noiseL",seq,noise,n/2,1,0,0);
+	else
+	  _analysis_output("noiseR",seq,noise,n/2,1,0,0);
+      }
+#endif
+
+      /* second step: 'all the other crap'; all the stuff that isn't
+         computed/fit for bitrate management goes in the second psy
+         vector.  This includes tone masking, peak limiting and ATH */
+
+      _vp_tonemask(psy_look,
+		   logfft,
+		   tone,
+		   global_ampmax,
+		   local_ampmax[i]);
+
+#if 0
+      if(vi->channels==2){
+	if(i==0)
+	  _analysis_output("toneL",seq,tone,n/2,1,0,0);
+	else
+	  _analysis_output("toneR",seq,tone,n/2,1,0,0);
+      }
+#endif
+
+      /* third step; we offset the noise vectors, overlay tone
+	 masking.  We then do a floor1-specific line fit.  If we're
+	 performing bitrate management, the line fit is performed
+	 multiple times for up/down tweakage on demand. */
+
+#if 0
+      {
+      float aotuv[psy_look->n];
+#endif
+
+	_vp_offset_and_mix(psy_look,
+			   noise,
+			   tone,
+			   1,
+			   logmask,
+			   mdct,
+			   logmdct);
+	
+#if 0
+	if(vi->channels==2){
+	  if(i==0)
+	    _analysis_output("aotuvM1_L",seq,aotuv,psy_look->n,1,1,0);
+	  else
+	    _analysis_output("aotuvM1_R",seq,aotuv,psy_look->n,1,1,0);
+	}
+      }
+#endif
+
+
+#if 0
+      if(vi->channels==2){
+	if(i==0)
+	  _analysis_output("mask1L",seq,logmask,n/2,1,0,0);
+	else
+	  _analysis_output("mask1R",seq,logmask,n/2,1,0,0);
+      }
+#endif
+
+      /* this algorithm is hardwired to floor 1 for now; abort out if
+         we're *not* floor1.  This won't happen unless someone has
+         broken the encode setup lib.  Guard it anyway. */
+      if(ci->floor_type[info->floorsubmap[submap]]!=1)return(-1);
+
+      floor_posts[i][PACKETBLOBS/2]=
+	floor1_fit(vb,b->flr[info->floorsubmap[submap]],
+		   logmdct,
+		   logmask);
+      
+      /* are we managing bitrate?  If so, perform two more fits for
+         later rate tweaking (fits represent hi/lo) */
+      if(vorbis_bitrate_managed(vb) && floor_posts[i][PACKETBLOBS/2]){
+	/* higher rate by way of lower noise curve */
+
+	_vp_offset_and_mix(psy_look,
+			   noise,
+			   tone,
+			   2,
+			   logmask,
+			   mdct,
+			   logmdct);
+
+#if 0
+	if(vi->channels==2){
+	  if(i==0)
+	    _analysis_output("mask2L",seq,logmask,n/2,1,0,0);
+	  else
+	    _analysis_output("mask2R",seq,logmask,n/2,1,0,0);
+	}
+#endif
+	
+	floor_posts[i][PACKETBLOBS-1]=
+	  floor1_fit(vb,b->flr[info->floorsubmap[submap]],
+		     logmdct,
+		     logmask);
+      
+	/* lower rate by way of higher noise curve */
+	_vp_offset_and_mix(psy_look,
+			   noise,
+			   tone,
+			   0,
+			   logmask,
+			   mdct,
+			   logmdct);
+
+#if 0
+	if(vi->channels==2)
+	  if(i==0)
+	    _analysis_output("mask0L",seq,logmask,n/2,1,0,0);
+	  else
+	    _analysis_output("mask0R",seq,logmask,n/2,1,0,0);
+#endif
+
+	floor_posts[i][0]=
+	  floor1_fit(vb,b->flr[info->floorsubmap[submap]],
+		     logmdct,
+		     logmask);
+	
+	/* we also interpolate a range of intermediate curves for
+           intermediate rates */
+	for(k=1;k<PACKETBLOBS/2;k++)
+	  floor_posts[i][k]=
+	    floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
+				   floor_posts[i][0],
+				   floor_posts[i][PACKETBLOBS/2],
+				   k*65536/(PACKETBLOBS/2));
+	for(k=PACKETBLOBS/2+1;k<PACKETBLOBS-1;k++)
+	  floor_posts[i][k]=
+	    floor1_interpolate_fit(vb,b->flr[info->floorsubmap[submap]],
+				   floor_posts[i][PACKETBLOBS/2],
+				   floor_posts[i][PACKETBLOBS-1],
+				   (k-PACKETBLOBS/2)*65536/(PACKETBLOBS/2));
+      }
+    }
+  }
+  vbi->ampmax=global_ampmax;
+
+  /*
+    the next phases are performed once for vbr-only and PACKETBLOB
+    times for bitrate managed modes.
+    
+    1) encode actual mode being used
+    2) encode the floor for each channel, compute coded mask curve/res
+    3) normalize and couple.
+    4) encode residue
+    5) save packet bytes to the packetblob vector
+    
+  */
+
+  /* iterate over the many masking curve fits we've created */
+
+  {
+    float **res_bundle=alloca(sizeof(*res_bundle)*vi->channels);
+    float **couple_bundle=alloca(sizeof(*couple_bundle)*vi->channels);
+    int *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
+    int **sortindex=alloca(sizeof(*sortindex)*vi->channels);
+    float **mag_memo;
+    int **mag_sort;
+
+    if(info->coupling_steps){
+      mag_memo=_vp_quantize_couple_memo(vb,
+					&ci->psy_g_param,
+					psy_look,
+					info,
+					gmdct);    
+      
+      mag_sort=_vp_quantize_couple_sort(vb,
+					psy_look,
+					info,
+					mag_memo);    
+
+      hf_reduction(&ci->psy_g_param,
+		   psy_look,
+		   info,
+		   mag_memo);
+    }
+
+    memset(sortindex,0,sizeof(*sortindex)*vi->channels);
+    if(psy_look->vi->normal_channel_p){
+      for(i=0;i<vi->channels;i++){
+	float *mdct    =gmdct[i];
+	sortindex[i]=alloca(sizeof(**sortindex)*n/2);
+	_vp_noise_normalize_sort(psy_look,mdct,sortindex[i]);
+      }
+    }
+
+    for(k=(vorbis_bitrate_managed(vb)?0:PACKETBLOBS/2);
+	k<=(vorbis_bitrate_managed(vb)?PACKETBLOBS-1:PACKETBLOBS/2);
+	k++){
+      oggpack_buffer *opb=vbi->packetblob[k];
+
+      /* start out our new packet blob with packet type and mode */
+      /* Encode the packet type */
+      oggpack_write(opb,0,1);
+      /* Encode the modenumber */
+      /* Encode frame mode, pre,post windowsize, then dispatch */
+      oggpack_write(opb,modenumber,b->modebits);
+      if(vb->W){
+	oggpack_write(opb,vb->lW,1);
+	oggpack_write(opb,vb->nW,1);
+      }
+
+      /* encode floor, compute masking curve, sep out residue */
+      for(i=0;i<vi->channels;i++){
+	int submap=info->chmuxlist[i];
+	float *mdct    =gmdct[i];
+	float *res     =vb->pcm[i];
+	int   *ilogmask=ilogmaskch[i]=
+	  _vorbis_block_alloc(vb,n/2*sizeof(**gmdct));
+      
+	nonzero[i]=floor1_encode(opb,vb,b->flr[info->floorsubmap[submap]],
+				 floor_posts[i][k],
+				 ilogmask);
+#if 0
+	{
+	  char buf[80];
+	  sprintf(buf,"maskI%c%d",i?'R':'L',k);
+	  float work[n/2];
+	  for(j=0;j<n/2;j++)
+	    work[j]=FLOOR1_fromdB_LOOKUP[ilogmask[j]];
+	  _analysis_output(buf,seq,work,n/2,1,1,0);
+	}
+#endif
+	_vp_remove_floor(psy_look,
+			 mdct,
+			 ilogmask,
+			 res,
+			 ci->psy_g_param.sliding_lowpass[vb->W][k]);
+
+	_vp_noise_normalize(psy_look,res,res+n/2,sortindex[i]);
+
+	
+#if 0
+	{
+	  char buf[80];
+	  float work[n/2];
+	  for(j=0;j<n/2;j++)
+	    work[j]=FLOOR1_fromdB_LOOKUP[ilogmask[j]]*(res+n/2)[j];
+	  sprintf(buf,"resI%c%d",i?'R':'L',k);
+	  _analysis_output(buf,seq,work,n/2,1,1,0);
+
+	}
+#endif
+      }
+      
+      /* our iteration is now based on masking curve, not prequant and
+	 coupling.  Only one prequant/coupling step */
+      
+      /* quantize/couple */
+      /* incomplete implementation that assumes the tree is all depth
+         one, or no tree at all */
+      if(info->coupling_steps){
+	_vp_couple(k,
+		   &ci->psy_g_param,
+		   psy_look,
+		   info,
+		   vb->pcm,
+		   mag_memo,
+		   mag_sort,
+		   ilogmaskch,
+		   nonzero,
+		   ci->psy_g_param.sliding_lowpass[vb->W][k]);
+      }
+      
+      /* classify and encode by submap */
+      for(i=0;i<info->submaps;i++){
+	int ch_in_bundle=0;
+	long **classifications;
+	int resnum=info->residuesubmap[i];
+
+	for(j=0;j<vi->channels;j++){
+	  if(info->chmuxlist[j]==i){
+	    zerobundle[ch_in_bundle]=0;
+	    if(nonzero[j])zerobundle[ch_in_bundle]=1;
+	    res_bundle[ch_in_bundle]=vb->pcm[j];
+	    couple_bundle[ch_in_bundle++]=vb->pcm[j]+n/2;
+	  }
+	}
+	
+	classifications=_residue_P[ci->residue_type[resnum]]->
+	  class(vb,b->residue[resnum],couple_bundle,zerobundle,ch_in_bundle);
+	
+	_residue_P[ci->residue_type[resnum]]->
+	  forward(opb,vb,b->residue[resnum],
+		  couple_bundle,NULL,zerobundle,ch_in_bundle,classifications);
+      }
+      
+      /* ok, done encoding.  Next protopacket. */
+    }
+    
+  }
+
+#if 0
+  seq++;
+  total+=ci->blocksizes[vb->W]/4+ci->blocksizes[vb->nW]/4;
+#endif
+  return(0);
+}
+
+static int mapping0_inverse(vorbis_block *vb,vorbis_info_mapping *l){
+  vorbis_dsp_state     *vd=vb->vd;
+  vorbis_info          *vi=vd->vi;
+  codec_setup_info     *ci=vi->codec_setup;
+  private_state        *b=vd->backend_state;
+  vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)l;
+  int hs=ci->halfrate_flag; 
+
+  int                   i,j;
+  long                  n=vb->pcmend=ci->blocksizes[vb->W];
+
+  float **pcmbundle=alloca(sizeof(*pcmbundle)*vi->channels);
+  int    *zerobundle=alloca(sizeof(*zerobundle)*vi->channels);
+
+  int   *nonzero  =alloca(sizeof(*nonzero)*vi->channels);
+  void **floormemo=alloca(sizeof(*floormemo)*vi->channels);
+  
+  /* recover the spectral envelope; store it in the PCM vector for now */
+  for(i=0;i<vi->channels;i++){
+    int submap=info->chmuxlist[i];
+    floormemo[i]=_floor_P[ci->floor_type[info->floorsubmap[submap]]]->
+      inverse1(vb,b->flr[info->floorsubmap[submap]]);
+    if(floormemo[i])
+      nonzero[i]=1;
+    else
+      nonzero[i]=0;      
+    memset(vb->pcm[i],0,sizeof(*vb->pcm[i])*n/2);
+  }
+
+  /* channel coupling can 'dirty' the nonzero listing */
+  for(i=0;i<info->coupling_steps;i++){
+    if(nonzero[info->coupling_mag[i]] ||
+       nonzero[info->coupling_ang[i]]){
+      nonzero[info->coupling_mag[i]]=1; 
+      nonzero[info->coupling_ang[i]]=1; 
+    }
+  }
+
+  /* recover the residue into our working vectors */
+  for(i=0;i<info->submaps;i++){
+    int ch_in_bundle=0;
+    for(j=0;j<vi->channels;j++){
+      if(info->chmuxlist[j]==i){
+	if(nonzero[j])
+	  zerobundle[ch_in_bundle]=1;
+	else
+	  zerobundle[ch_in_bundle]=0;
+	pcmbundle[ch_in_bundle++]=vb->pcm[j];
+      }
+    }
+
+    _residue_P[ci->residue_type[info->residuesubmap[i]]]->
+      inverse(vb,b->residue[info->residuesubmap[i]],
+	      pcmbundle,zerobundle,ch_in_bundle);
+  }
+
+  /* channel coupling */
+  for(i=info->coupling_steps-1;i>=0;i--){
+    float *pcmM=vb->pcm[info->coupling_mag[i]];
+    float *pcmA=vb->pcm[info->coupling_ang[i]];
+
+    for(j=0;j<n/2;j++){
+      float mag=pcmM[j];
+      float ang=pcmA[j];
+
+      if(mag>0)
+	if(ang>0){
+	  pcmM[j]=mag;
+	  pcmA[j]=mag-ang;
+	}else{
+	  pcmA[j]=mag;
+	  pcmM[j]=mag+ang;
+	}
+      else
+	if(ang>0){
+	  pcmM[j]=mag;
+	  pcmA[j]=mag+ang;
+	}else{
+	  pcmA[j]=mag;
+	  pcmM[j]=mag-ang;
+	}
+    }
+  }
+
+  /* compute and apply spectral envelope */
+  for(i=0;i<vi->channels;i++){
+    float *pcm=vb->pcm[i];
+    int submap=info->chmuxlist[i];
+    _floor_P[ci->floor_type[info->floorsubmap[submap]]]->
+      inverse2(vb,b->flr[info->floorsubmap[submap]],
+	       floormemo[i],pcm);
+  }
+
+  /* transform the PCM data; takes PCM vector, vb; modifies PCM vector */
+  /* only MDCT right now.... */
+  for(i=0;i<vi->channels;i++){
+    float *pcm=vb->pcm[i];
+    mdct_backward(b->transform[vb->W][0],pcm,pcm);
+  }
+
+  /* all done! */
+  return(0);
+}
+
+/* export hooks */
+vorbis_func_mapping mapping0_exportbundle={
+  &mapping0_pack,
+  &mapping0_unpack,
+  &mapping0_free_info,
+  &mapping0_forward,
+  &mapping0_inverse
+};
+
Index: /libvorbis-1.2.0/lib/masking.h
===================================================================
--- /libvorbis-1.2.0/lib/masking.h	(revision 16)
+++ /libvorbis-1.2.0/lib/masking.h	(revision 16)
@@ -0,0 +1,785 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: masking curve data for psychoacoustics
+ last mod: $Id: masking.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_MASKING_H_
+#define _V_MASKING_H_
+
+/* more detailed ATH; the bass if flat to save stressing the floor
+   overly for only a bin or two of savings. */
+
+#define MAX_ATH 88
+static float ATH[]={
+  /*15*/  -51, -52, -53, -54, -55, -56, -57, -58,  
+  /*31*/  -59, -60, -61, -62, -63, -64, -65, -66,
+  /*63*/  -67, -68, -69, -70, -71, -72, -73, -74, 
+  /*125*/ -75, -76, -77, -78, -80, -81, -82, -83,
+  /*250*/ -84, -85, -86, -87, -88, -88, -89, -89, 
+  /*500*/ -90, -91, -91, -92, -93, -94, -95, -96,
+  /*1k*/  -96, -97, -98, -98, -99, -99,-100,-100,
+  /*2k*/ -101,-102,-103,-104,-106,-107,-107,-107,
+  /*4k*/ -107,-105,-103,-102,-101, -99, -98, -96,
+  /*8k*/  -95, -95, -96, -97, -96, -95, -93, -90,
+  /*16k*/ -80, -70, -50, -40, -30, -30, -30, -30
+};
+
+/* The tone masking curves from Ehmer's and Fielder's papers have been
+   replaced by an empirically collected data set.  The previously
+   published values were, far too often, simply on crack. */
+
+#define EHMER_OFFSET 16
+#define EHMER_MAX 56
+
+/* masking tones from -50 to 0dB, 62.5 through 16kHz at half octaves
+   test tones from -2 octaves to +5 octaves sampled at eighth octaves */
+/* (Vorbis 0dB, the loudest possible tone, is assumed to be ~100dB SPL
+   for collection of these curves) */
+
+static float tonemasks[P_BANDS][6][EHMER_MAX]={
+  /* 62.5 Hz */
+  {{ -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60, 
+     -60,  -60,  -60,  -60,  -62,  -62,  -65,  -73, 
+     -69,  -68,  -68,  -67,  -70,  -70,  -72,  -74, 
+     -75,  -79,  -79,  -80,  -83,  -88,  -93, -100, 
+     -110, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48, 
+     -48,  -48,  -48,  -48,  -48,  -53,  -61,  -66, 
+     -66,  -68,  -67,  -70,  -76,  -76,  -72,  -73, 
+     -75,  -76,  -78,  -79,  -83,  -88,  -93, -100, 
+     -110, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37, 
+     -38,  -40,  -42,  -46,  -48,  -53,  -55,  -62, 
+     -65,  -58,  -56,  -56,  -61,  -60,  -65,  -67, 
+     -69,  -71,  -77,  -77,  -78,  -80,  -82,  -84, 
+     -88,  -93,  -98, -106, -112, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25, 
+     -25,  -26,  -27,  -29,  -32,  -38,  -48,  -52, 
+     -52,  -50,  -48,  -48,  -51,  -52,  -54,  -60, 
+     -67,  -67,  -66,  -68,  -69,  -73,  -73,  -76, 
+     -80,  -81,  -81,  -85,  -85,  -86,  -88,  -93, 
+     -100, -110, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16, 
+     -17,  -19,  -20,  -22,  -26,  -28,  -31,  -40, 
+     -47,  -39,  -39,  -40,  -42,  -43,  -47,  -51, 
+     -57,  -52,  -55,  -55,  -60,  -58,  -62,  -63, 
+     -70,  -67,  -69,  -72,  -73,  -77,  -80,  -82, 
+     -83,  -87,  -90,  -94,  -98, -104, -115, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   {  -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8, 
+      -8,   -8,  -10,  -11,  -15,  -19,  -25,  -30, 
+      -34,  -31,  -30,  -31,  -29,  -32,  -35,  -42, 
+      -48,  -42,  -44,  -46,  -50,  -50,  -51,  -52, 
+      -59,  -54,  -55,  -55,  -58,  -62,  -63,  -66, 
+      -72,  -73,  -76,  -75,  -78,  -80,  -80,  -81, 
+      -84,  -88,  -90,  -94,  -98, -101, -106, -110}}, 
+  /* 88Hz */
+  {{ -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66, 
+     -66,  -66,  -66,  -66,  -66,  -67,  -67,  -67, 
+     -76,  -72,  -71,  -74,  -76,  -76,  -75,  -78, 
+     -79,  -79,  -81,  -83,  -86,  -89,  -93,  -97, 
+     -100, -105, -110, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47, 
+     -47,  -47,  -47,  -48,  -51,  -55,  -59,  -66, 
+     -66,  -66,  -67,  -66,  -68,  -69,  -70,  -74, 
+     -79,  -77,  -77,  -78,  -80,  -81,  -82,  -84, 
+     -86,  -88,  -91,  -95, -100, -108, -116, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36, 
+     -36,  -37,  -37,  -41,  -44,  -48,  -51,  -58, 
+     -62,  -60,  -57,  -59,  -59,  -60,  -63,  -65, 
+     -72,  -71,  -70,  -72,  -74,  -77,  -76,  -78, 
+     -81,  -81,  -80,  -83,  -86,  -91,  -96, -100, 
+     -105, -110, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28, 
+     -28,  -30,  -32,  -32,  -33,  -35,  -41,  -49, 
+     -50,  -49,  -47,  -48,  -48,  -52,  -51,  -57, 
+     -65,  -61,  -59,  -61,  -64,  -69,  -70,  -74, 
+     -77,  -77,  -78,  -81,  -84,  -85,  -87,  -90, 
+     -92,  -96, -100, -107, -112, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   { -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19, 
+     -20,  -21,  -23,  -27,  -30,  -35,  -36,  -41, 
+     -46,  -44,  -42,  -40,  -41,  -41,  -43,  -48, 
+     -55,  -53,  -52,  -53,  -56,  -59,  -58,  -60, 
+     -67,  -66,  -69,  -71,  -72,  -75,  -79,  -81, 
+     -84,  -87,  -90,  -93,  -97, -101, -107, -114, 
+     -999, -999, -999, -999, -999, -999, -999, -999},
+   {  -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9, 
+      -11,  -12,  -12,  -15,  -16,  -20,  -23,  -30, 
+      -37,  -34,  -33,  -34,  -31,  -32,  -32,  -38, 
+      -47,  -44,  -41,  -40,  -47,  -49,  -46,  -46, 
+      -58,  -50,  -50,  -54,  -58,  -62,  -64,  -67, 
+      -67,  -70,  -72,  -76,  -79,  -83,  -87,  -91, 
+      -96, -100, -104, -110, -999, -999, -999, -999}}, 
+  /* 125 Hz */
+  {{ -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62, 
+     -62,  -62,  -63,  -64,  -66,  -67,  -66,  -68, 
+     -75,  -72,  -76,  -75,  -76,  -78,  -79,  -82, 
+     -84,  -85,  -90,  -94, -101, -110, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59, 
+     -59,  -59,  -59,  -60,  -60,  -61,  -63,  -66, 
+     -71,  -68,  -70,  -70,  -71,  -72,  -72,  -75, 
+     -81,  -78,  -79,  -82,  -83,  -86,  -90,  -97, 
+     -103, -113, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53, 
+     -53,  -54,  -55,  -57,  -56,  -57,  -55,  -61, 
+     -65,  -60,  -60,  -62,  -63,  -63,  -66,  -68, 
+     -74,  -73,  -75,  -75,  -78,  -80,  -80,  -82, 
+     -85,  -90,  -96, -101, -108, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46, 
+     -46,  -46,  -47,  -47,  -47,  -47,  -48,  -51, 
+     -57,  -51,  -49,  -50,  -51,  -53,  -54,  -59, 
+     -66,  -60,  -62,  -67,  -67,  -70,  -72,  -75, 
+     -76,  -78,  -81,  -85,  -88,  -94,  -97, -104, 
+     -112, -999, -999, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36, 
+     -39,  -41,  -42,  -42,  -39,  -38,  -41,  -43, 
+     -52,  -44,  -40,  -39,  -37,  -37,  -40,  -47, 
+     -54,  -50,  -48,  -50,  -55,  -61,  -59,  -62, 
+     -66,  -66,  -66,  -69,  -69,  -73,  -74,  -74, 
+     -75,  -77,  -79,  -82,  -87,  -91,  -95, -100, 
+     -108, -115, -999, -999, -999, -999, -999, -999}, 
+   { -28,  -26,  -24,  -22,  -20,  -20,  -23,  -29, 
+     -30,  -31,  -28,  -27,  -28,  -28,  -28,  -35, 
+     -40,  -33,  -32,  -29,  -30,  -30,  -30,  -37, 
+     -45,  -41,  -37,  -38,  -45,  -47,  -47,  -48, 
+     -53,  -49,  -48,  -50,  -49,  -49,  -51,  -52, 
+     -58,  -56,  -57,  -56,  -60,  -61,  -62,  -70, 
+     -72,  -74,  -78,  -83,  -88,  -93, -100, -106}}, 
+  /* 177 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -110, -105, -100,  -95,  -91,  -87,  -83, 
+    -80,  -78,  -76,  -78,  -78,  -81,  -83,  -85, 
+    -86,  -85,  -86,  -87,  -90,  -97, -107, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -110, -105, -100,  -95,  -90, 
+    -85,  -81,  -77,  -73,  -70,  -67,  -67,  -68, 
+    -75,  -73,  -70,  -69,  -70,  -72,  -75,  -79, 
+    -84,  -83,  -84,  -86,  -88,  -89,  -89,  -93, 
+    -98, -105, -112, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-105, -100,  -95,  -90,  -85,  -80,  -76,  -71, 
+    -68,  -68,  -65,  -63,  -63,  -62,  -62,  -64, 
+    -65,  -64,  -61,  -62,  -63,  -64,  -66,  -68, 
+    -73,  -73,  -74,  -75,  -76,  -81,  -83,  -85, 
+    -88,  -89,  -92,  -95, -100, -108, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -80,  -75,  -71,  -68,  -65,  -63,  -62,  -61, 
+     -61,  -61,  -61,  -59,  -56,  -57,  -53,  -50, 
+     -58,  -52,  -50,  -50,  -52,  -53,  -54,  -58, 
+     -67,  -63,  -67,  -68,  -72,  -75,  -78,  -80, 
+     -81,  -81,  -82,  -85,  -89,  -90,  -93,  -97, 
+     -101, -107, -114, -999, -999, -999, -999, -999, 
+     -999, -999, -999, -999, -999, -999, -999, -999}, 
+   { -65,  -61,  -59,  -57,  -56,  -55,  -55,  -56, 
+     -56,  -57,  -55,  -53,  -52,  -47,  -44,  -44, 
+     -50,  -44,  -41,  -39,  -39,  -42,  -40,  -46, 
+     -51,  -49,  -50,  -53,  -54,  -63,  -60,  -61, 
+     -62,  -66,  -66,  -66,  -70,  -73,  -74,  -75, 
+     -76,  -75,  -79,  -85,  -89,  -91,  -96, -102, 
+     -110, -999, -999, -999, -999, -999, -999, -999}, 
+   { -52,  -50,  -49,  -49,  -48,  -48,  -48,  -49, 
+     -50,  -50,  -49,  -46,  -43,  -39,  -35,  -33, 
+     -38,  -36,  -32,  -29,  -32,  -32,  -32,  -35, 
+     -44,  -39,  -38,  -38,  -46,  -50,  -45,  -46, 
+     -53,  -50,  -50,  -50,  -54,  -54,  -53,  -53, 
+     -56,  -57,  -59,  -66,  -70,  -72,  -74,  -79, 
+     -83,  -85,  -90, -97, -114, -999, -999, -999}}, 
+  /* 250 Hz */
+  {{-999, -999, -999, -999, -999, -999, -110, -105, 
+    -100,  -95,  -90,  -86,  -80,  -75,  -75,  -79, 
+    -80,  -79,  -80,  -81,  -82,  -88,  -95, -103, 
+    -110, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -108, -103,  -98,  -93, 
+    -88,  -83,  -79,  -78,  -75,  -71,  -67,  -68, 
+    -73,  -73,  -72,  -73,  -75,  -77,  -80,  -82, 
+    -88,  -93, -100, -107, -114, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -110, -105, -101,  -96,  -90, 
+    -86,  -81,  -77,  -73,  -69,  -66,  -61,  -62, 
+    -66,  -64,  -62,  -65,  -66,  -70,  -72,  -76, 
+    -81,  -80,  -84,  -90,  -95, -102, -110, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -107, -103,  -97,  -92,  -88, 
+    -83,  -79,  -74,  -70,  -66,  -59,  -53,  -58, 
+    -62,  -55,  -54,  -54,  -54,  -58,  -61,  -62, 
+    -72,  -70,  -72,  -75,  -78,  -80,  -81,  -80, 
+    -83,  -83,  -88,  -93, -100, -107, -115, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -105, -100,  -95,  -90,  -85, 
+    -80,  -75,  -70,  -66,  -62,  -56,  -48,  -44, 
+    -48,  -46,  -46,  -43,  -46,  -48,  -48,  -51, 
+    -58,  -58,  -59,  -60,  -62,  -62,  -61,  -61, 
+    -65,  -64,  -65,  -68,  -70,  -74,  -75,  -78, 
+    -81,  -86,  -95, -110, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999,  -999, -105, -100,  -95,  -90,  -85,  -80, 
+    -75,  -70,  -65,  -61,  -55,  -49,  -39,  -33, 
+    -40,  -35,  -32,  -38,  -40,  -33,  -35,  -37, 
+    -46,  -41,  -45,  -44,  -46,  -42,  -45,  -46, 
+    -52,  -50,  -50,  -50,  -54,  -54,  -55,  -57, 
+    -62,  -64,  -66,  -68,  -70,  -76,  -81,  -90, 
+    -100, -110, -999, -999, -999, -999, -999, -999}}, 
+  /* 354 hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -105,  -98,  -90,  -85,  -82,  -83,  -80,  -78, 
+    -84,  -79,  -80,  -83,  -87,  -89,  -91,  -93, 
+    -99, -106, -117, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -105,  -98,  -90,  -85,  -80,  -75,  -70,  -68, 
+    -74,  -72,  -74,  -77,  -80,  -82,  -85,  -87, 
+    -92,  -89,  -91,  -95, -100, -106, -112, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -105,  -98,  -90,  -83,  -75,  -71,  -63,  -64, 
+    -67,  -62,  -64,  -67,  -70,  -73,  -77,  -81, 
+    -84,  -83,  -85,  -89,  -90,  -93,  -98, -104, 
+    -109, -114, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -103,  -96,  -88,  -81,  -75,  -68,  -58,  -54, 
+    -56,  -54,  -56,  -56,  -58,  -60,  -63,  -66, 
+    -74,  -69,  -72,  -72,  -75,  -74,  -77,  -81, 
+    -81,  -82,  -84,  -87,  -93,  -96,  -99, -104, 
+    -110, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -108, -102,  -96, 
+    -91,  -85,  -80,  -74,  -68,  -60,  -51,  -46, 
+    -48,  -46,  -43,  -45,  -47,  -47,  -49,  -48, 
+    -56,  -53,  -55,  -58,  -57,  -63,  -58,  -60, 
+    -66,  -64,  -67,  -70,  -70,  -74,  -77,  -84, 
+    -86,  -89,  -91,  -93,  -94, -101, -109, -118, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -108, -103,  -98,  -93,  -88, 
+    -83,  -78,  -73,  -68,  -60,  -53,  -44,  -35, 
+    -38,  -38,  -34,  -34,  -36,  -40,  -41,  -44, 
+    -51,  -45,  -46,  -47,  -46,  -54,  -50,  -49, 
+    -50,  -50,  -50,  -51,  -54,  -57,  -58,  -60, 
+    -66,  -66,  -66,  -64,  -65,  -68,  -77,  -82, 
+    -87,  -95, -110, -999, -999, -999, -999, -999}}, 
+  /* 500 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -107, -102,  -97,  -92,  -87,  -83,  -78,  -75, 
+    -82,  -79,  -83,  -85,  -89,  -92,  -95,  -98, 
+    -101, -105, -109, -113, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -106, 
+    -100,  -95,  -90,  -86,  -81,  -78,  -74,  -69, 
+    -74,  -74,  -76,  -79,  -83,  -84,  -86,  -89, 
+    -92,  -97,  -93, -100, -103, -107, -110, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -106, -100, 
+    -95, -90, -87, -83, -80, -75, -69, -60, 
+    -66, -66, -68, -70, -74, -78, -79, -81, 
+    -81, -83, -84, -87, -93, -96, -99, -103, 
+    -107, -110, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -108, -103, -98, 
+    -93, -89, -85, -82, -78, -71, -62, -55, 
+    -58, -58, -54, -54, -55, -59, -61, -62, 
+    -70, -66, -66, -67, -70, -72, -75, -78, 
+    -84, -84, -84, -88, -91, -90, -95, -98, 
+    -102, -103, -106, -110, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -108, -103,  -98,  -94, 
+    -90,  -87,  -82,  -79,  -73,  -67,  -58,  -47, 
+    -50,  -45,  -41,  -45,  -48,  -44,  -44,  -49, 
+    -54,  -51,  -48,  -47,  -49,  -50,  -51,  -57, 
+    -58,  -60,  -63,  -69,  -70,  -69,  -71,  -74, 
+    -78,  -82,  -90,  -95, -101, -105, -110, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -105, -101, -97, -93, -90, 
+    -85, -80, -77, -72, -65, -56, -48, -37, 
+    -40, -36, -34, -40, -50, -47, -38, -41, 
+    -47, -38, -35, -39, -38, -43, -40, -45, 
+    -50, -45, -44, -47, -50, -55, -48, -48, 
+    -52, -66, -70, -76, -82, -90, -97, -105, 
+    -110, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 707 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -108, -103,  -98,  -93,  -86,  -79,  -76, 
+    -83,  -81,  -85,  -87,  -89,  -93,  -98, -102, 
+    -107, -112, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -108, -103,  -98,  -93,  -86,  -79,  -71, 
+    -77,  -74,  -77,  -79,  -81,  -84,  -85,  -90, 
+    -92,  -93,  -92,  -98, -101, -108, -112, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -108, -103,  -98,  -93,  -87,  -78,  -68,  -65, 
+    -66,  -62,  -65,  -67,  -70,  -73,  -75,  -78, 
+    -82,  -82,  -83,  -84,  -91,  -93,  -98, -102, 
+    -106, -110, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -105, -100, -95, -90, -82, -74, -62, -57, 
+    -58, -56, -51, -52, -52, -54, -54, -58, 
+    -66, -59, -60, -63, -66, -69, -73, -79, 
+    -83, -84, -80, -81, -81, -82, -88, -92, 
+    -98, -105, -113, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -107, 
+    -102,  -97,  -92,  -84,  -79,  -69,  -57,  -47, 
+    -52,  -47,  -44,  -45,  -50,  -52,  -42,  -42, 
+    -53,  -43,  -43,  -48,  -51,  -56,  -55,  -52, 
+    -57,  -59,  -61,  -62,  -67,  -71,  -78,  -83, 
+    -86,  -94,  -98, -103, -110, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -105, -100, 
+    -95,  -90,  -84,  -78,  -70,  -61,  -51,  -41, 
+    -40,  -38,  -40,  -46,  -52,  -51,  -41,  -40, 
+    -46,  -40,  -38,  -38,  -41,  -46,  -41,  -46, 
+    -47,  -43,  -43,  -45,  -41,  -45,  -56,  -67, 
+    -68,  -83,  -87,  -90,  -95, -102, -107, -113, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 1000 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -109, -105, -101,  -96,  -91,  -84,  -77, 
+    -82,  -82,  -85,  -89,  -94, -100, -106, -110, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -106, -103,  -98,  -92,  -85,  -80,  -71, 
+    -75,  -72,  -76,  -80,  -84,  -86,  -89,  -93, 
+    -100, -107, -113, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -107, 
+    -104, -101,  -97,  -92,  -88,  -84,  -80,  -64, 
+    -66,  -63,  -64,  -66,  -69,  -73,  -77,  -83, 
+    -83,  -86,  -91,  -98, -104, -111, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -107, 
+    -104, -101,  -97,  -92,  -90,  -84,  -74,  -57, 
+    -58,  -52,  -55,  -54,  -50,  -52,  -50,  -52, 
+    -63,  -62,  -69,  -76,  -77,  -78,  -78,  -79, 
+    -82,  -88,  -94, -100, -106, -111, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -106, -102, 
+    -98,  -95,  -90,  -85,  -83,  -78,  -70,  -50, 
+    -50,  -41,  -44,  -49,  -47,  -50,  -50,  -44, 
+    -55,  -46,  -47,  -48,  -48,  -54,  -49,  -49, 
+    -58,  -62,  -71,  -81,  -87,  -92,  -97, -102, 
+    -108, -114, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -106, -102, 
+    -98,  -95,  -90,  -85,  -83,  -78,  -70,  -45, 
+    -43,  -41,  -47,  -50,  -51,  -50,  -49,  -45, 
+    -47,  -41,  -44,  -41,  -39,  -43,  -38,  -37, 
+    -40,  -41,  -44,  -50,  -58,  -65,  -73,  -79, 
+    -85,  -92,  -97, -101, -105, -109, -113, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 1414 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -107, -100,  -95,  -87,  -81, 
+    -85,  -83,  -88,  -93, -100, -107, -114, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -107, -101,  -95,  -88,  -83,  -76, 
+    -73,  -72,  -79,  -84,  -90,  -95, -100, -105, 
+    -110, -115, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -104,  -98,  -92,  -87,  -81,  -70, 
+    -65,  -62,  -67,  -71,  -74,  -80,  -85,  -91, 
+    -95,  -99, -103, -108, -111, -114, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -103,  -97,  -90,  -85,  -76,  -60, 
+    -56,  -54,  -60,  -62,  -61,  -56,  -63,  -65, 
+    -73,  -74,  -77,  -75,  -78,  -81,  -86,  -87, 
+    -88,  -91,  -94,  -98, -103, -110, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -105, 
+    -100,  -97,  -92,  -86,  -81,  -79,  -70,  -57, 
+    -51,  -47,  -51,  -58,  -60,  -56,  -53,  -50, 
+    -58,  -52,  -50,  -50,  -53,  -55,  -64,  -69, 
+    -71,  -85,  -82,  -78,  -81,  -85,  -95, -102, 
+    -112, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -105, 
+    -100,  -97,  -92,  -85,  -83,  -79,  -72,  -49, 
+    -40,  -43,  -43,  -54,  -56,  -51,  -50,  -40, 
+    -43,  -38,  -36,  -35,  -37,  -38,  -37,  -44, 
+    -54,  -60,  -57,  -60,  -70,  -75,  -84,  -92, 
+    -103, -112, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 2000 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -102,  -95,  -89,  -82, 
+    -83,  -84,  -90,  -92,  -99, -107, -113, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -107, -101,  -95,  -89,  -83,  -72, 
+    -74,  -78,  -85,  -88,  -88,  -90,  -92,  -98, 
+    -105, -111, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -109, -103, -97, -93, -87, -81, -70, 
+    -70, -67, -75, -73, -76, -79, -81, -83, 
+    -88, -89, -97, -103, -110, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -107, -100,  -94,  -88,  -83,  -75,  -63, 
+    -59,  -59,  -63,  -66,  -60,  -62,  -67,  -67, 
+    -77,  -76,  -81,  -88,  -86,  -92,  -96, -102, 
+    -109, -116, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -105,  -98,  -92,  -86,  -81,  -73,  -56, 
+    -52,  -47,  -55,  -60,  -58,  -52,  -51,  -45, 
+    -49,  -50,  -53,  -54,  -61,  -71,  -70,  -69, 
+    -78,  -79,  -87,  -90,  -96, -104, -112, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -103,  -96,  -90,  -86,  -78,  -70,  -51, 
+    -42,  -47,  -48,  -55,  -54,  -54,  -53,  -42, 
+    -35,  -28,  -33,  -38,  -37,  -44,  -47,  -49, 
+    -54,  -63,  -68,  -78,  -82,  -89,  -94,  -99, 
+    -104, -109, -114, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 2828 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -110, -100,  -90,  -79, 
+    -85,  -81,  -82,  -82,  -89,  -94,  -99, -103, 
+    -109, -115, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -105,  -97,  -85,  -72, 
+    -74,  -70,  -70,  -70,  -76,  -85,  -91,  -93, 
+    -97, -103, -109, -115, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -112,  -93,  -81,  -68, 
+    -62,  -60,  -60,  -57,  -63,  -70,  -77,  -82, 
+    -90,  -93,  -98, -104, -109, -113, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -113, -100,  -93,  -84,  -63, 
+    -58,  -48,  -53,  -54,  -52,  -52,  -57,  -64, 
+    -66,  -76,  -83,  -81,  -85,  -85,  -90,  -95, 
+    -98, -101, -103, -106, -108, -111, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -105,  -95,  -86,  -74,  -53, 
+    -50,  -38,  -43,  -49,  -43,  -42,  -39,  -39, 
+    -46,  -52,  -57,  -56,  -72,  -69,  -74,  -81, 
+    -87,  -92,  -94,  -97,  -99, -102, -105, -108, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -108,  -99,  -90,  -76,  -66,  -45, 
+    -43,  -41,  -44,  -47,  -43,  -47,  -40,  -30, 
+    -31,  -31,  -39,  -33,  -40,  -41,  -43,  -53, 
+    -59,  -70,  -73,  -77,  -79,  -82,  -84,  -87, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 4000 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -110,  -91,  -76, 
+    -75,  -85,  -93,  -98, -104, -110, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999},
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -110,  -91,  -70, 
+    -70,  -75,  -86,  -89,  -94,  -98, -101, -106, 
+    -110, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -110,  -95,  -80,  -60, 
+    -65,  -64,  -74,  -83,  -88,  -91,  -95,  -99, 
+    -103, -107, -110, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -110,  -95,  -80,  -58, 
+    -55,  -49,  -66,  -68,  -71,  -78,  -78,  -80, 
+    -88,  -85,  -89,  -97, -100, -105, -110, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -110,  -95,  -80,  -53, 
+    -52,  -41,  -59,  -59,  -49,  -58,  -56,  -63, 
+    -86,  -79,  -90,  -93,  -98, -103, -107, -112, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110,  -97,  -91,  -73,  -45, 
+    -40,  -33,  -53,  -61,  -49,  -54,  -50,  -50, 
+    -60,  -52,  -67,  -74,  -81,  -92,  -96, -100, 
+    -105, -110, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 5657 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -113, -106,  -99,  -92,  -77, 
+    -80,  -88,  -97, -106, -115, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -116, -109, -102,  -95,  -89,  -74, 
+    -72,  -88,  -87,  -95, -102, -109, -116, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -116, -109, -102,  -95,  -89,  -75, 
+    -66,  -74,  -77,  -78,  -86,  -87,  -90,  -96, 
+    -105, -115, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -115, -108, -101,  -94,  -88,  -66, 
+    -56,  -61,  -70,  -65,  -78,  -72,  -83,  -84, 
+    -93,  -98, -105, -110, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -110, -105,  -95,  -89,  -82,  -57, 
+    -52,  -52,  -59,  -56,  -59,  -58,  -69,  -67, 
+    -88,  -82,  -82,  -89,  -94, -100, -108, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -110, -101,  -96,  -90,  -83,  -77,  -54, 
+    -43,  -38,  -50,  -48,  -52,  -48,  -42,  -42, 
+    -51,  -52,  -53,  -59,  -65,  -71,  -78,  -85, 
+    -95, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 8000 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -120, -105,  -86,  -68, 
+    -78,  -79,  -90, -100, -110, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -120, -105,  -86,  -66, 
+    -73,  -77,  -88,  -96, -105, -115, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -120, -105,  -92,  -80,  -61, 
+    -64,  -68,  -80,  -87,  -92, -100, -110, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -120, -104,  -91,  -79,  -52, 
+    -60,  -54,  -64,  -69,  -77,  -80,  -82,  -84, 
+    -85,  -87,  -88,  -90, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -118, -100,  -87,  -77,  -49, 
+    -50,  -44,  -58,  -61,  -61,  -67,  -65,  -62, 
+    -62,  -62,  -65,  -68, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -115,  -98,  -84,  -62,  -49, 
+    -44,  -38,  -46,  -49,  -49,  -46,  -39,  -37, 
+    -39,  -40,  -42,  -43, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 11314 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -110,  -88,  -74, 
+    -77,  -82,  -82,  -85,  -90,  -94,  -99, -104, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -110,  -88,  -66, 
+    -70,  -81,  -80,  -81,  -84,  -88,  -91,  -93, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -110,  -88,  -61, 
+    -63,  -70,  -71,  -74,  -77,  -80,  -83,  -85, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -110, -86, -62, 
+    -63,  -62,  -62,  -58,  -52,  -50,  -50,  -52, 
+    -54, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -118, -108,  -84,  -53, 
+    -50,  -50,  -50,  -55,  -47,  -45,  -40,  -40, 
+    -40, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -118, -100,  -73,  -43, 
+    -37,  -42,  -43,  -53,  -38,  -37,  -35,  -35, 
+    -38, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}, 
+  /* 16000 Hz */
+  {{-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -100,  -91,  -84,  -74, 
+    -80,  -80,  -80,  -80,  -80, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -100,  -91,  -84,  -74, 
+    -68,  -68,  -68,  -68,  -68, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -100,  -86,  -78,  -70, 
+    -60,  -45,  -30,  -21, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -100,  -87,  -78,  -67, 
+    -48,  -38,  -29,  -21, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -100,  -86,  -69,  -56, 
+    -45,  -35,  -33,  -29, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}, 
+   {-999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -110, -100,  -83,  -71,  -48, 
+    -27,  -38,  -37,  -34, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999, 
+    -999, -999, -999, -999, -999, -999, -999, -999}}
+}; 
+
+#endif
Index: /libvorbis-1.2.0/lib/mdct.c
===================================================================
--- /libvorbis-1.2.0/lib/mdct.c	(revision 16)
+++ /libvorbis-1.2.0/lib/mdct.c	(revision 16)
@@ -0,0 +1,564 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: normalized modified discrete cosine transform
+           power of two length transform only [64 <= n ]
+ last mod: $Id: mdct.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ Original algorithm adapted long ago from _The use of multirate filter
+ banks for coding of high quality digital audio_, by T. Sporer,
+ K. Brandenburg and B. Edler, collection of the European Signal
+ Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp
+ 211-214
+
+ The below code implements an algorithm that no longer looks much like
+ that presented in the paper, but the basic structure remains if you
+ dig deep enough to see it.
+
+ This module DOES NOT INCLUDE code to generate/apply the window
+ function.  Everybody has their own weird favorite including me... I
+ happen to like the properties of y=sin(.5PI*sin^2(x)), but others may
+ vehemently disagree.
+
+ ********************************************************************/
+
+/* this can also be run as an integer transform by uncommenting a
+   define in mdct.h; the integerization is a first pass and although
+   it's likely stable for Vorbis, the dynamic range is constrained and
+   roundoff isn't done (so it's noisy).  Consider it functional, but
+   only a starting point.  There's no point on a machine with an FPU */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "vorbis/codec.h"
+#include "mdct.h"
+#include "os.h"
+#include "misc.h"
+
+/* build lookups for trig functions; also pre-figure scaling and
+   some window function algebra. */
+
+void mdct_init(mdct_lookup *lookup,int n){
+  int   *bitrev=_ogg_malloc(sizeof(*bitrev)*(n/4));
+  DATA_TYPE *T=_ogg_malloc(sizeof(*T)*(n+n/4));
+  
+  int i;
+  int n2=n>>1;
+  int log2n=lookup->log2n=rint(log((float)n)/log(2.f));
+  lookup->n=n;
+  lookup->trig=T;
+  lookup->bitrev=bitrev;
+
+/* trig lookups... */
+
+  for(i=0;i<n/4;i++){
+    T[i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i)));
+    T[i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i)));
+    T[n2+i*2]=FLOAT_CONV(cos((M_PI/(2*n))*(2*i+1)));
+    T[n2+i*2+1]=FLOAT_CONV(sin((M_PI/(2*n))*(2*i+1)));
+  }
+  for(i=0;i<n/8;i++){
+    T[n+i*2]=FLOAT_CONV(cos((M_PI/n)*(4*i+2))*.5);
+    T[n+i*2+1]=FLOAT_CONV(-sin((M_PI/n)*(4*i+2))*.5);
+  }
+
+  /* bitreverse lookup... */
+
+  {
+    int mask=(1<<(log2n-1))-1,i,j;
+    int msb=1<<(log2n-2);
+    for(i=0;i<n/8;i++){
+      int acc=0;
+      for(j=0;msb>>j;j++)
+	if((msb>>j)&i)acc|=1<<j;
+      bitrev[i*2]=((~acc)&mask)-1;
+      bitrev[i*2+1]=acc;
+
+    }
+  }
+  lookup->scale=FLOAT_CONV(4.f/n);
+}
+
+/* 8 point butterfly (in place, 4 register) */
+STIN void mdct_butterfly_8(DATA_TYPE *x){
+  REG_TYPE r0   = x[6] + x[2];
+  REG_TYPE r1   = x[6] - x[2];
+  REG_TYPE r2   = x[4] + x[0];
+  REG_TYPE r3   = x[4] - x[0];
+
+	   x[6] = r0   + r2;
+	   x[4] = r0   - r2;
+	   
+	   r0   = x[5] - x[1];
+	   r2   = x[7] - x[3];
+	   x[0] = r1   + r0;
+	   x[2] = r1   - r0;
+	   
+	   r0   = x[5] + x[1];
+	   r1   = x[7] + x[3];
+	   x[3] = r2   + r3;
+	   x[1] = r2   - r3;
+	   x[7] = r1   + r0;
+	   x[5] = r1   - r0;
+	   
+}
+
+/* 16 point butterfly (in place, 4 register) */
+STIN void mdct_butterfly_16(DATA_TYPE *x){
+  REG_TYPE r0     = x[1]  - x[9];
+  REG_TYPE r1     = x[0]  - x[8];
+
+           x[8]  += x[0];
+           x[9]  += x[1];
+           x[0]   = MULT_NORM((r0   + r1) * cPI2_8);
+           x[1]   = MULT_NORM((r0   - r1) * cPI2_8);
+
+           r0     = x[3]  - x[11];
+           r1     = x[10] - x[2];
+           x[10] += x[2];
+           x[11] += x[3];
+           x[2]   = r0;
+           x[3]   = r1;
+
+           r0     = x[12] - x[4];
+           r1     = x[13] - x[5];
+           x[12] += x[4];
+           x[13] += x[5];
+           x[4]   = MULT_NORM((r0   - r1) * cPI2_8);
+           x[5]   = MULT_NORM((r0   + r1) * cPI2_8);
+
+           r0     = x[14] - x[6];
+           r1     = x[15] - x[7];
+           x[14] += x[6];
+           x[15] += x[7];
+           x[6]  = r0;
+           x[7]  = r1;
+
+	   mdct_butterfly_8(x);
+	   mdct_butterfly_8(x+8);
+}
+
+/* 32 point butterfly (in place, 4 register) */
+STIN void mdct_butterfly_32(DATA_TYPE *x){
+  REG_TYPE r0     = x[30] - x[14];
+  REG_TYPE r1     = x[31] - x[15];
+
+           x[30] +=         x[14];           
+	   x[31] +=         x[15];
+           x[14]  =         r0;              
+	   x[15]  =         r1;
+
+           r0     = x[28] - x[12];   
+	   r1     = x[29] - x[13];
+           x[28] +=         x[12];           
+	   x[29] +=         x[13];
+           x[12]  = MULT_NORM( r0 * cPI1_8  -  r1 * cPI3_8 );
+	   x[13]  = MULT_NORM( r0 * cPI3_8  +  r1 * cPI1_8 );
+
+           r0     = x[26] - x[10];
+	   r1     = x[27] - x[11];
+	   x[26] +=         x[10];
+	   x[27] +=         x[11];
+	   x[10]  = MULT_NORM(( r0  - r1 ) * cPI2_8);
+	   x[11]  = MULT_NORM(( r0  + r1 ) * cPI2_8);
+
+	   r0     = x[24] - x[8];
+	   r1     = x[25] - x[9];
+	   x[24] += x[8];
+	   x[25] += x[9];
+	   x[8]   = MULT_NORM( r0 * cPI3_8  -  r1 * cPI1_8 );
+	   x[9]   = MULT_NORM( r1 * cPI3_8  +  r0 * cPI1_8 );
+
+	   r0     = x[22] - x[6];
+	   r1     = x[7]  - x[23];
+	   x[22] += x[6];
+	   x[23] += x[7];
+	   x[6]   = r1;
+	   x[7]   = r0;
+
+	   r0     = x[4]  - x[20];
+	   r1     = x[5]  - x[21];
+	   x[20] += x[4];
+	   x[21] += x[5];
+	   x[4]   = MULT_NORM( r1 * cPI1_8  +  r0 * cPI3_8 );
+	   x[5]   = MULT_NORM( r1 * cPI3_8  -  r0 * cPI1_8 );
+
+	   r0     = x[2]  - x[18];
+	   r1     = x[3]  - x[19];
+	   x[18] += x[2];
+	   x[19] += x[3];
+	   x[2]   = MULT_NORM(( r1  + r0 ) * cPI2_8);
+	   x[3]   = MULT_NORM(( r1  - r0 ) * cPI2_8);
+
+	   r0     = x[0]  - x[16];
+	   r1     = x[1]  - x[17];
+	   x[16] += x[0];
+	   x[17] += x[1];
+	   x[0]   = MULT_NORM( r1 * cPI3_8  +  r0 * cPI1_8 );
+	   x[1]   = MULT_NORM( r1 * cPI1_8  -  r0 * cPI3_8 );
+
+	   mdct_butterfly_16(x);
+	   mdct_butterfly_16(x+16);
+
+}
+
+/* N point first stage butterfly (in place, 2 register) */
+STIN void mdct_butterfly_first(DATA_TYPE *T,
+					DATA_TYPE *x,
+					int points){
+  
+  DATA_TYPE *x1        = x          + points      - 8;
+  DATA_TYPE *x2        = x          + (points>>1) - 8;
+  REG_TYPE   r0;
+  REG_TYPE   r1;
+
+  do{
+    
+               r0      = x1[6]      -  x2[6];
+	       r1      = x1[7]      -  x2[7];
+	       x1[6]  += x2[6];
+	       x1[7]  += x2[7];
+	       x2[6]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+	       x2[7]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+	       
+	       r0      = x1[4]      -  x2[4];
+	       r1      = x1[5]      -  x2[5];
+	       x1[4]  += x2[4];
+	       x1[5]  += x2[5];
+	       x2[4]   = MULT_NORM(r1 * T[5]  +  r0 * T[4]);
+	       x2[5]   = MULT_NORM(r1 * T[4]  -  r0 * T[5]);
+	       
+	       r0      = x1[2]      -  x2[2];
+	       r1      = x1[3]      -  x2[3];
+	       x1[2]  += x2[2];
+	       x1[3]  += x2[3];
+	       x2[2]   = MULT_NORM(r1 * T[9]  +  r0 * T[8]);
+	       x2[3]   = MULT_NORM(r1 * T[8]  -  r0 * T[9]);
+	       
+	       r0      = x1[0]      -  x2[0];
+	       r1      = x1[1]      -  x2[1];
+	       x1[0]  += x2[0];
+	       x1[1]  += x2[1];
+	       x2[0]   = MULT_NORM(r1 * T[13] +  r0 * T[12]);
+	       x2[1]   = MULT_NORM(r1 * T[12] -  r0 * T[13]);
+	       
+    x1-=8;
+    x2-=8;
+    T+=16;
+
+  }while(x2>=x);
+}
+
+/* N/stage point generic N stage butterfly (in place, 2 register) */
+STIN void mdct_butterfly_generic(DATA_TYPE *T,
+					  DATA_TYPE *x,
+					  int points,
+					  int trigint){
+  
+  DATA_TYPE *x1        = x          + points      - 8;
+  DATA_TYPE *x2        = x          + (points>>1) - 8;
+  REG_TYPE   r0;
+  REG_TYPE   r1;
+
+  do{
+    
+               r0      = x1[6]      -  x2[6];
+	       r1      = x1[7]      -  x2[7];
+	       x1[6]  += x2[6];
+	       x1[7]  += x2[7];
+	       x2[6]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+	       x2[7]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+	       
+	       T+=trigint;
+	       
+	       r0      = x1[4]      -  x2[4];
+	       r1      = x1[5]      -  x2[5];
+	       x1[4]  += x2[4];
+	       x1[5]  += x2[5];
+	       x2[4]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+	       x2[5]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+	       
+	       T+=trigint;
+	       
+	       r0      = x1[2]      -  x2[2];
+	       r1      = x1[3]      -  x2[3];
+	       x1[2]  += x2[2];
+	       x1[3]  += x2[3];
+	       x2[2]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+	       x2[3]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+	       
+	       T+=trigint;
+	       
+	       r0      = x1[0]      -  x2[0];
+	       r1      = x1[1]      -  x2[1];
+	       x1[0]  += x2[0];
+	       x1[1]  += x2[1];
+	       x2[0]   = MULT_NORM(r1 * T[1]  +  r0 * T[0]);
+	       x2[1]   = MULT_NORM(r1 * T[0]  -  r0 * T[1]);
+
+	       T+=trigint;
+    x1-=8;
+    x2-=8;
+
+  }while(x2>=x);
+}
+
+STIN void mdct_butterflies(mdct_lookup *init,
+			     DATA_TYPE *x,
+			     int points){
+  
+  DATA_TYPE *T=init->trig;
+  int stages=init->log2n-5;
+  int i,j;
+  
+  if(--stages>0){
+    mdct_butterfly_first(T,x,points);
+  }
+
+  for(i=1;--stages>0;i++){
+    for(j=0;j<(1<<i);j++)
+      mdct_butterfly_generic(T,x+(points>>i)*j,points>>i,4<<i);
+  }
+
+  for(j=0;j<points;j+=32)
+    mdct_butterfly_32(x+j);
+
+}
+
+void mdct_clear(mdct_lookup *l){
+  if(l){
+    if(l->trig)_ogg_free(l->trig);
+    if(l->bitrev)_ogg_free(l->bitrev);
+    memset(l,0,sizeof(*l));
+  }
+}
+
+STIN void mdct_bitreverse(mdct_lookup *init, 
+			    DATA_TYPE *x){
+  int        n       = init->n;
+  int       *bit     = init->bitrev;
+  DATA_TYPE *w0      = x;
+  DATA_TYPE *w1      = x = w0+(n>>1);
+  DATA_TYPE *T       = init->trig+n;
+
+  do{
+    DATA_TYPE *x0    = x+bit[0];
+    DATA_TYPE *x1    = x+bit[1];
+
+    REG_TYPE  r0     = x0[1]  - x1[1];
+    REG_TYPE  r1     = x0[0]  + x1[0];
+    REG_TYPE  r2     = MULT_NORM(r1     * T[0]   + r0 * T[1]);
+    REG_TYPE  r3     = MULT_NORM(r1     * T[1]   - r0 * T[0]);
+
+	      w1    -= 4;
+
+              r0     = HALVE(x0[1] + x1[1]);
+              r1     = HALVE(x0[0] - x1[0]);
+      
+	      w0[0]  = r0     + r2;
+	      w1[2]  = r0     - r2;
+	      w0[1]  = r1     + r3;
+	      w1[3]  = r3     - r1;
+
+              x0     = x+bit[2];
+              x1     = x+bit[3];
+
+              r0     = x0[1]  - x1[1];
+              r1     = x0[0]  + x1[0];
+              r2     = MULT_NORM(r1     * T[2]   + r0 * T[3]);
+              r3     = MULT_NORM(r1     * T[3]   - r0 * T[2]);
+
+              r0     = HALVE(x0[1] + x1[1]);
+              r1     = HALVE(x0[0] - x1[0]);
+      
+	      w0[2]  = r0     + r2;
+	      w1[0]  = r0     - r2;
+	      w0[3]  = r1     + r3;
+	      w1[1]  = r3     - r1;
+
+	      T     += 4;
+	      bit   += 4;
+	      w0    += 4;
+
+  }while(w0<w1);
+}
+
+void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){
+  int n=init->n;
+  int n2=n>>1;
+  int n4=n>>2;
+
+  /* rotate */
+
+  DATA_TYPE *iX = in+n2-7;
+  DATA_TYPE *oX = out+n2+n4;
+  DATA_TYPE *T  = init->trig+n4;
+
+  do{
+    oX         -= 4;
+    oX[0]       = MULT_NORM(-iX[2] * T[3] - iX[0]  * T[2]);
+    oX[1]       = MULT_NORM (iX[0] * T[3] - iX[2]  * T[2]);
+    oX[2]       = MULT_NORM(-iX[6] * T[1] - iX[4]  * T[0]);
+    oX[3]       = MULT_NORM (iX[4] * T[1] - iX[6]  * T[0]);
+    iX         -= 8;
+    T          += 4;
+  }while(iX>=in);
+
+  iX            = in+n2-8;
+  oX            = out+n2+n4;
+  T             = init->trig+n4;
+
+  do{
+    T          -= 4;
+    oX[0]       =  MULT_NORM (iX[4] * T[3] + iX[6] * T[2]);
+    oX[1]       =  MULT_NORM (iX[4] * T[2] - iX[6] * T[3]);
+    oX[2]       =  MULT_NORM (iX[0] * T[1] + iX[2] * T[0]);
+    oX[3]       =  MULT_NORM (iX[0] * T[0] - iX[2] * T[1]);
+    iX         -= 8;
+    oX         += 4;
+  }while(iX>=in);
+
+  mdct_butterflies(init,out+n2,n2);
+  mdct_bitreverse(init,out);
+
+  /* roatate + window */
+
+  {
+    DATA_TYPE *oX1=out+n2+n4;
+    DATA_TYPE *oX2=out+n2+n4;
+    DATA_TYPE *iX =out;
+    T             =init->trig+n2;
+    
+    do{
+      oX1-=4;
+
+      oX1[3]  =  MULT_NORM (iX[0] * T[1] - iX[1] * T[0]);
+      oX2[0]  = -MULT_NORM (iX[0] * T[0] + iX[1] * T[1]);
+
+      oX1[2]  =  MULT_NORM (iX[2] * T[3] - iX[3] * T[2]);
+      oX2[1]  = -MULT_NORM (iX[2] * T[2] + iX[3] * T[3]);
+
+      oX1[1]  =  MULT_NORM (iX[4] * T[5] - iX[5] * T[4]);
+      oX2[2]  = -MULT_NORM (iX[4] * T[4] + iX[5] * T[5]);
+
+      oX1[0]  =  MULT_NORM (iX[6] * T[7] - iX[7] * T[6]);
+      oX2[3]  = -MULT_NORM (iX[6] * T[6] + iX[7] * T[7]);
+
+      oX2+=4;
+      iX    +=   8;
+      T     +=   8;
+    }while(iX<oX1);
+
+    iX=out+n2+n4;
+    oX1=out+n4;
+    oX2=oX1;
+
+    do{
+      oX1-=4;
+      iX-=4;
+
+      oX2[0] = -(oX1[3] = iX[3]);
+      oX2[1] = -(oX1[2] = iX[2]);
+      oX2[2] = -(oX1[1] = iX[1]);
+      oX2[3] = -(oX1[0] = iX[0]);
+
+      oX2+=4;
+    }while(oX2<iX);
+
+    iX=out+n2+n4;
+    oX1=out+n2+n4;
+    oX2=out+n2;
+    do{
+      oX1-=4;
+      oX1[0]= iX[3];
+      oX1[1]= iX[2];
+      oX1[2]= iX[1];
+      oX1[3]= iX[0];
+      iX+=4;
+    }while(oX1>oX2);
+  }
+}
+
+void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out){
+  int n=init->n;
+  int n2=n>>1;
+  int n4=n>>2;
+  int n8=n>>3;
+  DATA_TYPE *w=alloca(n*sizeof(*w)); /* forward needs working space */
+  DATA_TYPE *w2=w+n2;
+
+  /* rotate */
+
+  /* window + rotate + step 1 */
+  
+  REG_TYPE r0;
+  REG_TYPE r1;
+  DATA_TYPE *x0=in+n2+n4;
+  DATA_TYPE *x1=x0+1;
+  DATA_TYPE *T=init->trig+n2;
+  
+  int i=0;
+  
+  for(i=0;i<n8;i+=2){
+    x0 -=4;
+    T-=2;
+    r0= x0[2] + x1[0];
+    r1= x0[0] + x1[2];       
+    w2[i]=   MULT_NORM(r1*T[1] + r0*T[0]);
+    w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
+    x1 +=4;
+  }
+
+  x1=in+1;
+  
+  for(;i<n2-n8;i+=2){
+    T-=2;
+    x0 -=4;
+    r0= x0[2] - x1[0];
+    r1= x0[0] - x1[2];       
+    w2[i]=   MULT_NORM(r1*T[1] + r0*T[0]);
+    w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
+    x1 +=4;
+  }
+    
+  x0=in+n;
+
+  for(;i<n2;i+=2){
+    T-=2;
+    x0 -=4;
+    r0= -x0[2] - x1[0];
+    r1= -x0[0] - x1[2];       
+    w2[i]=   MULT_NORM(r1*T[1] + r0*T[0]);
+    w2[i+1]= MULT_NORM(r1*T[0] - r0*T[1]);
+    x1 +=4;
+  }
+
+
+  mdct_butterflies(init,w+n2,n2);
+  mdct_bitreverse(init,w);
+
+  /* roatate + window */
+
+  T=init->trig+n2;
+  x0=out+n2;
+
+  for(i=0;i<n4;i++){
+    x0--;
+    out[i] =MULT_NORM((w[0]*T[0]+w[1]*T[1])*init->scale);
+    x0[0]  =MULT_NORM((w[0]*T[1]-w[1]*T[0])*init->scale);
+    w+=2;
+    T+=2;
+  }
+}
+
Index: /libvorbis-1.2.0/lib/mdct.h
===================================================================
--- /libvorbis-1.2.0/lib/mdct.h	(revision 16)
+++ /libvorbis-1.2.0/lib/mdct.h	(revision 16)
@@ -0,0 +1,83 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: modified discrete cosine transform prototypes
+ last mod: $Id: mdct.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _OGG_mdct_H_
+#define _OGG_mdct_H_
+
+#include "vorbis/codec.h"
+
+
+
+
+
+/*#define MDCT_INTEGERIZED  <- be warned there could be some hurt left here*/
+#ifdef MDCT_INTEGERIZED
+
+#define DATA_TYPE int
+#define REG_TYPE  register int
+#define TRIGBITS 14
+#define cPI3_8 6270
+#define cPI2_8 11585
+#define cPI1_8 15137
+
+#define FLOAT_CONV(x) ((int)((x)*(1<<TRIGBITS)+.5))
+#define MULT_NORM(x) ((x)>>TRIGBITS)
+#define HALVE(x) ((x)>>1)
+
+#else
+
+#define DATA_TYPE float
+#define REG_TYPE  float
+#define cPI3_8 .38268343236508977175F
+#define cPI2_8 .70710678118654752441F
+#define cPI1_8 .92387953251128675613F
+
+#define FLOAT_CONV(x) (x)
+#define MULT_NORM(x) (x)
+#define HALVE(x) ((x)*.5f)
+
+#endif
+
+
+typedef struct {
+  int n;
+  int log2n;
+  
+  DATA_TYPE *trig;
+  int       *bitrev;
+
+  DATA_TYPE scale;
+} mdct_lookup;
+
+extern void mdct_init(mdct_lookup *lookup,int n);
+extern void mdct_clear(mdct_lookup *l);
+extern void mdct_forward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
+extern void mdct_backward(mdct_lookup *init, DATA_TYPE *in, DATA_TYPE *out);
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
Index: /libvorbis-1.2.0/lib/misc.h
===================================================================
--- /libvorbis-1.2.0/lib/misc.h	(revision 16)
+++ /libvorbis-1.2.0/lib/misc.h	(revision 16)
@@ -0,0 +1,52 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: miscellaneous prototypes
+ last mod: $Id: misc.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_RANDOM_H_
+#define _V_RANDOM_H_
+#include "vorbis/codec.h"
+
+extern int analysis_noisy;
+
+extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes);
+extern void _vorbis_block_ripcord(vorbis_block *vb);
+extern void _analysis_output(char *base,int i,float *v,int n,int bark,int dB,
+			     ogg_int64_t off);
+
+#ifdef DEBUG_MALLOC
+
+#define _VDBG_GRAPHFILE "malloc.m"
+extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line); 
+extern void _VDBG_free(void *ptr,char *file,long line); 
+
+#ifndef MISC_C 
+#undef _ogg_malloc
+#undef _ogg_calloc
+#undef _ogg_realloc
+#undef _ogg_free
+
+#define _ogg_malloc(x) _VDBG_malloc(NULL,(x),__FILE__,__LINE__)
+#define _ogg_calloc(x,y) _VDBG_malloc(NULL,(x)*(y),__FILE__,__LINE__)
+#define _ogg_realloc(x,y) _VDBG_malloc((x),(y),__FILE__,__LINE__)
+#define _ogg_free(x) _VDBG_free((x),__FILE__,__LINE__)
+#endif
+#endif
+
+#endif
+
+
+
+
Index: /libvorbis-1.2.0/lib/modes/Makefile.am
===================================================================
--- /libvorbis-1.2.0/lib/modes/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/Makefile.am	(revision 16)
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in
+
+EXTRA_DIST = floor_all.h psych_44.h residue_44.h setup_11.h setup_32.h \
+	     setup_8.h psych_11.h psych_8.h residue_44u.h setup_16.h \
+	     setup_44.h setup_X.h psych_16.h residue_16.h residue_8.h \
+	     setup_22.h setup_44u.h
Index: /libvorbis-1.2.0/lib/modes/Makefile.in
===================================================================
--- /libvorbis-1.2.0/lib/modes/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/Makefile.in	(revision 16)
@@ -0,0 +1,351 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+subdir = lib/modes
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = floor_all.h psych_44.h residue_44.h setup_11.h setup_32.h \
+	     setup_8.h psych_11.h psych_8.h residue_44u.h setup_16.h \
+	     setup_44.h setup_X.h psych_16.h residue_16.h residue_8.h \
+	     setup_22.h setup_44u.h
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  lib/modes/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  lib/modes/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+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
+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-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-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:
Index: /libvorbis-1.2.0/lib/modes/floor_all.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/floor_all.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/floor_all.h	(revision 16)
@@ -0,0 +1,248 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: key floor settings
+ last mod: $Id: floor_all.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "vorbis/codec.h"
+#include "backends.h"
+#include "books/floor/floor_books.h"
+
+static static_codebook *_floor_128x4_books[]={
+  &_huff_book_line_128x4_class0,
+  &_huff_book_line_128x4_0sub0,
+  &_huff_book_line_128x4_0sub1,
+  &_huff_book_line_128x4_0sub2,
+  &_huff_book_line_128x4_0sub3,
+};
+static static_codebook *_floor_256x4_books[]={
+  &_huff_book_line_256x4_class0,
+  &_huff_book_line_256x4_0sub0,
+  &_huff_book_line_256x4_0sub1,
+  &_huff_book_line_256x4_0sub2,
+  &_huff_book_line_256x4_0sub3,
+};
+static static_codebook *_floor_128x7_books[]={
+  &_huff_book_line_128x7_class0,
+  &_huff_book_line_128x7_class1,
+  
+  &_huff_book_line_128x7_0sub1,
+  &_huff_book_line_128x7_0sub2,
+  &_huff_book_line_128x7_0sub3,
+  &_huff_book_line_128x7_1sub1,
+  &_huff_book_line_128x7_1sub2,
+  &_huff_book_line_128x7_1sub3, 
+};
+static static_codebook *_floor_256x7_books[]={
+  &_huff_book_line_256x7_class0,
+  &_huff_book_line_256x7_class1,
+  
+  &_huff_book_line_256x7_0sub1,
+  &_huff_book_line_256x7_0sub2,
+  &_huff_book_line_256x7_0sub3,
+  &_huff_book_line_256x7_1sub1,
+  &_huff_book_line_256x7_1sub2,
+  &_huff_book_line_256x7_1sub3, 
+};
+static static_codebook *_floor_128x11_books[]={
+  &_huff_book_line_128x11_class1,
+  &_huff_book_line_128x11_class2,
+  &_huff_book_line_128x11_class3,
+  
+  &_huff_book_line_128x11_0sub0,
+  &_huff_book_line_128x11_1sub0,
+  &_huff_book_line_128x11_1sub1,
+  &_huff_book_line_128x11_2sub1,
+  &_huff_book_line_128x11_2sub2,
+  &_huff_book_line_128x11_2sub3, 
+  &_huff_book_line_128x11_3sub1,
+  &_huff_book_line_128x11_3sub2,
+  &_huff_book_line_128x11_3sub3, 
+};
+static static_codebook *_floor_128x17_books[]={
+  &_huff_book_line_128x17_class1,
+  &_huff_book_line_128x17_class2,
+  &_huff_book_line_128x17_class3,
+  
+  &_huff_book_line_128x17_0sub0,
+  &_huff_book_line_128x17_1sub0,
+  &_huff_book_line_128x17_1sub1,
+  &_huff_book_line_128x17_2sub1,
+  &_huff_book_line_128x17_2sub2,
+  &_huff_book_line_128x17_2sub3, 
+  &_huff_book_line_128x17_3sub1,
+  &_huff_book_line_128x17_3sub2,
+  &_huff_book_line_128x17_3sub3, 
+};
+static static_codebook *_floor_256x4low_books[]={
+  &_huff_book_line_256x4low_class0,
+  &_huff_book_line_256x4low_0sub0,
+  &_huff_book_line_256x4low_0sub1,
+  &_huff_book_line_256x4low_0sub2,
+  &_huff_book_line_256x4low_0sub3,
+};
+static static_codebook *_floor_1024x27_books[]={
+  &_huff_book_line_1024x27_class1,
+  &_huff_book_line_1024x27_class2,
+  &_huff_book_line_1024x27_class3,
+  &_huff_book_line_1024x27_class4,
+  
+  &_huff_book_line_1024x27_0sub0,
+  &_huff_book_line_1024x27_1sub0,
+  &_huff_book_line_1024x27_1sub1,
+  &_huff_book_line_1024x27_2sub0,
+  &_huff_book_line_1024x27_2sub1,
+  &_huff_book_line_1024x27_3sub1,
+  &_huff_book_line_1024x27_3sub2,
+  &_huff_book_line_1024x27_3sub3,
+  &_huff_book_line_1024x27_4sub1,
+  &_huff_book_line_1024x27_4sub2,
+  &_huff_book_line_1024x27_4sub3,
+};
+static static_codebook *_floor_2048x27_books[]={
+  &_huff_book_line_2048x27_class1,
+  &_huff_book_line_2048x27_class2,
+  &_huff_book_line_2048x27_class3,
+  &_huff_book_line_2048x27_class4,
+  
+  &_huff_book_line_2048x27_0sub0,
+  &_huff_book_line_2048x27_1sub0,
+  &_huff_book_line_2048x27_1sub1,
+  &_huff_book_line_2048x27_2sub0,
+  &_huff_book_line_2048x27_2sub1,
+  &_huff_book_line_2048x27_3sub1,
+  &_huff_book_line_2048x27_3sub2,
+  &_huff_book_line_2048x27_3sub3,
+  &_huff_book_line_2048x27_4sub1,
+  &_huff_book_line_2048x27_4sub2,
+  &_huff_book_line_2048x27_4sub3,
+};
+
+static static_codebook *_floor_512x17_books[]={
+  &_huff_book_line_512x17_class1,
+  &_huff_book_line_512x17_class2,
+  &_huff_book_line_512x17_class3,
+  
+  &_huff_book_line_512x17_0sub0,
+  &_huff_book_line_512x17_1sub0,
+  &_huff_book_line_512x17_1sub1,
+  &_huff_book_line_512x17_2sub1,
+  &_huff_book_line_512x17_2sub2,
+  &_huff_book_line_512x17_2sub3, 
+  &_huff_book_line_512x17_3sub1,
+  &_huff_book_line_512x17_3sub2,
+  &_huff_book_line_512x17_3sub3, 
+};
+
+static static_codebook **_floor_books[10]={
+  _floor_128x4_books,
+  _floor_256x4_books,
+  _floor_128x7_books,
+  _floor_256x7_books,
+  _floor_128x11_books,
+  _floor_128x17_books,
+  _floor_256x4low_books,
+  _floor_1024x27_books,
+  _floor_2048x27_books,
+  _floor_512x17_books,
+};
+
+static vorbis_info_floor1 _floor[10]={
+  /* 128 x 4 */
+  {
+    1,{0},{4},{2},{0},
+    {{1,2,3,4}},
+    4,{0,128, 33,8,16,70},
+
+    60,30,500,   1.,18.,  -1
+  },
+  /* 256 x 4 */
+  {
+    1,{0},{4},{2},{0},
+    {{1,2,3,4}},
+    4,{0,256, 66,16,32,140},
+
+    60,30,500,   1.,18.,  -1
+  },
+  /* 128 x 7 */
+  {
+    2,{0,1},{3,4},{2,2},{0,1},
+    {{-1,2,3,4},{-1,5,6,7}},
+    4,{0,128, 14,4,58, 2,8,28,90},
+    
+    60,30,500,   1.,18.,  -1
+  },
+  /* 256 x 7 */
+  {
+    2,{0,1},{3,4},{2,2},{0,1},
+    {{-1,2,3,4},{-1,5,6,7}},
+    4,{0,256, 28,8,116, 4,16,56,180},
+    
+    60,30,500,   1.,18.,  -1
+  },
+  /* 128 x 11 */
+  {
+    4,{0,1,2,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
+    {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
+    
+    2,{0,128,  8,33,  4,16,70,  2,6,12,  23,46,90},
+    
+     60,30,500,   1,18.,  -1
+  },
+  /* 128 x 17 */
+  {
+    6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
+    {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
+    2,{0,128,  12,46,  4,8,16,  23,33,70,  2,6,10,  14,19,28,  39,58,90},
+    
+    60,30,500,    1,18.,  -1 
+  },
+  /* 256 x 4 (low bitrate version) */
+  {
+    1,{0},{4},{2},{0},
+    {{1,2,3,4}},
+    4,{0,256, 66,16,32,140},
+
+    60,30,500,   1.,18.,  -1
+  },
+  /* 1024 x 27 */
+  {
+    8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
+    {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
+    2,{0,1024,   93,23,372, 6,46,186,750,  14,33,65, 130,260,556,
+       3,10,18,28,  39,55,79,111,  158,220,312,  464,650,850},
+    
+    60,30,500,    3,18.,  -1 /* lowpass */
+  },
+  /* 2048 x 27 */
+  {
+    8,{0,1,2,2,3,3,4,4},{3,4,3,4,3},{0,1,1,2,2},{-1,0,1,2,3},
+    {{4},{5,6},{7,8},{-1,9,10,11},{-1,12,13,14}},
+    2,{0,2048,   186,46,744, 12,92,372,1500,  28,66,130, 260,520,1112,
+       6,20,36,56,  78,110,158,222,  316,440,624,  928,1300,1700},
+    
+    60,30,500,    3,18.,  -1 /* lowpass */
+  },
+  /* 512 x 17 */
+  {
+    6,{0,1,1,2,3,3},{2,3,3,3},{0,1,2,2},{-1,0,1,2},
+    {{3},{4,5},{-1,6,7,8},{-1,9,10,11}},
+    2,{0,512,  46,186,  16,33,65,  93,130,278,  
+       7,23,39,  55,79,110,  156,232,360},
+    
+    60,30,500,    1,18.,  -1 /* lowpass! */
+  },
+
+};
+
Index: /libvorbis-1.2.0/lib/modes/psych_11.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/psych_11.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/psych_11.h	(revision 16)
@@ -0,0 +1,51 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 11kHz settings 
+ last mod: $Id: psych_11.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+static double _psy_lowpass_11[3]={4.5,5.5,30.,};
+
+static att3 _psy_tone_masteratt_11[3]={
+  {{ 30,  25,  12},  0,   0},  /* 0 */
+  {{ 30,  25,  12},  0,   0},  /* 0 */
+  {{ 20,   0, -14},  0,   0}, /* 0 */
+};
+
+static vp_adjblock _vp_tonemask_adj_11[3]={
+  /* adjust for mode zero */
+  /* 63     125     250     500     1     2     4     8    16 */
+  {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0,10, 2, 0,99,99,99}}, /* 0 */
+  {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 5, 0, 0,99,99,99}}, /* 1 */
+  {{-20,-20,-20,-20,-20,-16,-10, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 2 */
+};
+
+
+static noise3 _psy_noisebias_11[3]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  {{{-10,-10,-10,-10, -5, -5, -5,  0,  4, 10, 10, 12, 12, 12, 99, 99, 99},
+    {-15,-15,-15,-15,-10,-10, -5,  0,  0,  4,  4,  5,  5, 10, 99, 99, 99},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
+
+  {{{-10,-10,-10,-10, -5, -5, -5,  0,  4, 10, 10, 12, 12, 12, 99, 99, 99},
+    {-15,-15,-15,-15,-10,-10, -5, -5, -5,  0,  0,  0,  0,  0, 99, 99, 99},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5, 99, 99, 99},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10, 99, 99, 99},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
+};
+
+static double _noise_thresh_11[3]={ .3,.5,.5 };
+
Index: /libvorbis-1.2.0/lib/modes/psych_16.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/psych_16.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/psych_16.h	(revision 16)
@@ -0,0 +1,136 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 16kHz settings 
+ last mod: $Id: psych_16.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* stereo mode by base quality level */
+static adj_stereo _psy_stereo_modes_16[4]={
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  */
+  {{  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  6,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   {  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  3,  4,  4},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  {{  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  6,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   {  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  4,  4,  4,  4,  4},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  {{  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  5,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+};
+
+static double _psy_lowpass_16[4]={6.5,8,30.,99.};
+
+static att3 _psy_tone_masteratt_16[4]={
+  {{ 30,  25,  12},  0,   0},  /* 0 */
+  {{ 25,  22,  12},  0,   0},  /* 0 */
+  {{ 20,  12,   0},  0,   0},  /* 0 */
+  {{ 15,   0, -14},  0,   0}, /* 0 */
+};
+
+static vp_adjblock _vp_tonemask_adj_16[4]={
+  /* adjust for mode zero */
+  /* 63     125     250     500       1     2     4     8    16 */
+  {{-20,-20,-20,-20,-20,-16,-10,  0,  0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 0 */
+  {{-20,-20,-20,-20,-20,-16,-10,  0,  0, 0, 0,10, 0, 0, 0, 0, 0}}, /* 1 */
+  {{-20,-20,-20,-20,-20,-16,-10,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
+  {{-30,-30,-30,-30,-30,-26,-20,-10, -5, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
+};
+
+
+static noise3 _psy_noisebias_16_short[4]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  {{{-15,-15,-15,-15,-15,-10,-10,-5,   4, 10, 10, 10, 10, 12, 12, 14, 20},
+    {-15,-15,-15,-15,-15,-10,-10, -5,  0,  0,  4,  5,  5,  6,  8,  8, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+  {{{-15,-15,-15,-15,-15,-10,-10,-5,   4,  6,  6,  6,  6,  8, 10, 12, 20},
+    {-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5,  4,  5,  6,  8,  8, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8, 12},
+    {-20,-20,-20,-20,-16,-12,-20,-14,-10,-10, -8,  0,  0,  0,  0,  2,  5},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5,  0,  0,  0,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10,-10,-10, -6},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
+};
+
+static noise3 _psy_noisebias_16_impulse[4]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  {{{-15,-15,-15,-15,-15,-10,-10,-5,   4, 10, 10, 10, 10, 12, 12, 14, 20},
+    {-15,-15,-15,-15,-15,-10,-10, -5,  0,  0,  4,  5,  5,  6,  8,  8, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+  {{{-15,-15,-15,-15,-15,-10,-10,-5,   4,  4,  4,  4,  5,  5,  6,  8, 15},
+    {-15,-15,-15,-15,-15,-15,-15,-10, -5, -5, -5,  0,  0,  0,  0,  4, 10},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10,-10,-10,-10,-10,-10,-10,-10,-10}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  4, 10},
+    {-20,-20,-20,-20,-16,-12,-20,-14,-10,-10,-10,-10,-10,-10,-10, -7, -5},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5,  0,  0,  0,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-18,-18,-18,-20,-20,-20,-20,-20,-20,-16},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
+};
+
+static noise3 _psy_noisebias_16[4]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  {{{-10,-10,-10,-10, -5, -5, -5,  0,  4,  6,  8,  8, 10, 10, 10, 14, 20},
+    {-10,-10,-10,-10,-10, -5, -2, -2,  0,  0,  0,  4,  5,  6,  8,  8, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+  {{{-10,-10,-10,-10, -5, -5, -5,  0,  4,  6,  6,  6,  6,  8, 10, 12, 20},
+    {-15,-15,-15,-15,-15,-10, -5, -5,  0,  0,  0,  4,  5,  6,  8,  8, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -6, -6}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8, 12},
+    {-20,-20,-20,-20,-16,-12,-20,-10, -5, -5,  0,  0,  0,  0,  0,  2,  5},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8, -5, -5, -5, -5, -5,  0,  0,  0,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10,-10,-10, -6},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24,-20,-20,-20}}},
+};
+
+static noiseguard _psy_noiseguards_16[4]={
+  {10,10,-1},
+  {10,10,-1},
+  {20,20,-1},
+  {20,20,-1},
+};
+
+static double _noise_thresh_16[4]={ .3,.5,.5,.5 };
+
+static int _noise_start_16[3]={ 256,256,9999 };
+static int _noise_part_16[4]={ 8,8,8,8 };
+
+static int _psy_ath_floater_16[4]={
+  -100,-100,-100,-105,
+};
+
+static int _psy_ath_abs_16[4]={
+  -130,-130,-130,-140,
+};
+
+
+
Index: /libvorbis-1.2.0/lib/modes/psych_44.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/psych_44.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/psych_44.h	(revision 16)
@@ -0,0 +1,666 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: key psychoacoustic settings for 44.1/48kHz
+ last mod: $Id: psych_44.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+
+/* preecho trigger settings *****************************************/
+
+static vorbis_info_psy_global _psy_global_44[5]={
+
+  {8,   /* lines per eighth octave */
+   {20.f,14.f,12.f,12.f,12.f,12.f,12.f}, 
+   {-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
+   -6.f,
+   {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
+  },
+  {8,   /* lines per eighth octave */
+   {14.f,10.f,10.f,10.f,10.f,10.f,10.f}, 
+   {-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 2,-80.f,
+   -6.f,
+   {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
+  },
+  {8,   /* lines per eighth octave */
+   {12.f,10.f,10.f,10.f,10.f,10.f,10.f}, 
+   {-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 0,-80.f,
+   -6.f,
+   {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
+  },
+  {8,   /* lines per eighth octave */
+   {10.f,8.f,8.f,8.f,8.f,8.f,8.f}, 
+   {-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
+   -6.f,
+   {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
+  },
+  {8,   /* lines per eighth octave */
+   {10.f,6.f,6.f,6.f,6.f,6.f,6.f}, 
+   {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
+   -6.f,
+   {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
+  },
+};
+
+/* noise compander lookups * low, mid, high quality ****************/
+static compandblock _psy_compand_44[6]={
+  /* sub-mode Z short */
+  {{
+    0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
+    8, 9,10,11,12,13,14, 15,     /* 15dB */
+    16,17,18,19,20,21,22, 23,     /* 23dB */
+    24,25,26,27,28,29,30, 31,     /* 31dB */
+    32,33,34,35,36,37,38, 39,     /* 39dB */
+  }},
+  /* mode_Z nominal short */
+  {{
+     0, 1, 2, 3, 4, 5, 6,  6,     /* 7dB */
+     7, 7, 7, 7, 6, 6, 6,  7,     /* 15dB */
+     7, 8, 9,10,11,12,13, 14,     /* 23dB */
+    15,16,17,17,17,18,18, 19,     /* 31dB */
+    19,19,20,21,22,23,24, 25,     /* 39dB */
+  }},
+  /* mode A short */
+  {{
+    0, 1, 2, 3, 4, 5, 5,  5,     /* 7dB */
+    6, 6, 6, 5, 4, 4, 4,  4,     /* 15dB */
+    4, 4, 5, 5, 5, 6, 6,  6,     /* 23dB */
+    7, 7, 7, 8, 8, 8, 9, 10,     /* 31dB */
+    11,12,13,14,15,16,17, 18,     /* 39dB */
+  }},
+  /* sub-mode Z long */
+  {{
+     0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
+     8, 9,10,11,12,13,14, 15,     /* 15dB */
+    16,17,18,19,20,21,22, 23,     /* 23dB */
+    24,25,26,27,28,29,30, 31,     /* 31dB */
+    32,33,34,35,36,37,38, 39,     /* 39dB */
+  }},
+  /* mode_Z nominal long */
+  {{
+    0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
+    8, 9,10,11,12,12,13, 13,     /* 15dB */
+    13,14,14,14,15,15,15, 15,     /* 23dB */
+    16,16,17,17,17,18,18, 19,     /* 31dB */
+    19,19,20,21,22,23,24, 25,     /* 39dB */
+  }},
+  /* mode A long */
+  {{
+    0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
+    8, 8, 7, 6, 5, 4, 4,  4,     /* 15dB */
+    4, 4, 5, 5, 5, 6, 6,  6,     /* 23dB */
+    7, 7, 7, 8, 8, 8, 9, 10,     /* 31dB */
+    11,12,13,14,15,16,17, 18,     /* 39dB */
+  }}
+};
+
+/* tonal masking curve level adjustments *************************/
+
+static vp_adjblock _vp_tonemask_adj_longblock[12]={
+
+   /* 63     125     250     500       1       2       4       8      16 */
+
+   {{ -3, -8,-13,-15,-10,-10,-10,-10,-10,-10,-10,  0,  0,  0,  0,  0,  0}}, /* -1 */
+
+/* {{-15,-15,-15,-15,-10, -8, -4, -2,  0,  0,  0, 10,  0,  0,  0,  0,  0}},    0 */
+   {{ -4,-10,-14,-16,-15,-14,-13,-12,-12,-12,-11, -1, -1, -1, -1, -1,  0}}, /* 0 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  5,  0,  0,  0,  0,  0}},    1 */
+   {{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1, -1, -1,  0}}, /* 1 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    2 */
+   {{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -6, -3, -1, -1, -1,  0}}, /* 2 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    3 */
+   {{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2, -1, -1,  0}}, /* 3 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}}, *//* 4 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 4 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    5 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 5 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    6 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2,  0}}, /* 6 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    7 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 7 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    8 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 8 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    9 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 9 */
+
+/* {{-15,-15,-15,-15,-15,-12,-10, -8,  0,  0,  0,  0,  0,  0,  0,  0,  0}},    10 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 10 */
+};
+
+static vp_adjblock _vp_tonemask_adj_otherblock[12]={
+   /* 63     125     250     500       1       2       4       8      16 */
+
+   {{ -3, -8,-13,-15,-10,-10, -9, -9, -9, -9, -9,  1,  1,  1,  1,  1,  1}}, /* -1 */
+
+/* {{-20,-20,-20,-20,-14,-12,-10, -8, -4,  0,  0, 10,  0,  0,  0,  0,  0}},    0 */
+   {{ -4,-10,-14,-16,-14,-13,-12,-12,-11,-11,-10,  0,  0,  0,  0,  0,  0}}, /* 0 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  5,  0,  0,  0,  0,  0}},    1 */
+   {{ -6,-12,-14,-16,-15,-15,-14,-13,-13,-12,-12, -2, -2, -1,  0,  0,  0}}, /* 1 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    2 */
+   {{-12,-13,-14,-16,-16,-16,-15,-14,-13,-12,-12, -5, -2, -1,  0,  0,  0}}, /* 2 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    3 */
+   {{-15,-15,-15,-16,-16,-16,-16,-14,-13,-13,-13,-10, -4, -2,  0,  0,  0}}, /* 3 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    4 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 4 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    5 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-13,-11, -7  -3, -1, -1 , 0}}, /* 5 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    6 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -8, -4, -2, -2,  0}}, /* 6 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    7 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 7 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    8 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 8 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    9 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 9 */
+
+/* {{-20,-20,-20,-20,-20,-18,-16,-14,-10,  0,  0,  0,  0,  0,  0,  0,  0}},    10 */
+   {{-16,-16,-16,-16,-16,-16,-16,-15,-14,-14,-14,-12, -9, -4, -2, -2,  0}}, /* 10 */
+};
+
+/* noise bias (transition block) */
+static noise3 _psy_noisebias_trans[12]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  3,  6,  6, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+  /* 0 
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14, -8, -4,  0,  0,  0,  0,  2,  4,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4,  -2}}},*/
+  {{{-15,-15,-15,-15,-15,-12, -6, -4,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14, -8, -4,  0,  0,  0,  0,  2,  3,   6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4,  -2}}},
+  /* 1 
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  8},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2,  0,  1,   4},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6,  -4}}},
+  /* 2 
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}}, */
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -2, -1,  0,  3},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -7, -4}}},
+  /* 3 
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2,  0,  2},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
+  /* 4 
+  {{{-20,-20,-20,-20,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  5},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-20,-20,-20,-20,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1,  1},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
+  /* 5 
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1,  2},
+    {-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}}, */
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1,  0},
+    {-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
+  /* 6 
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2,  1},
+    {-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2,  0},
+    {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
+  /* 7 
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4,  0},
+    {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},*/
+  {{{-24,-24,-24,-24,-20,-18,-14, -8, -1,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-32,-32,-32,-32,-28,-24,-24,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
+    {-34,-34,-34,-34,-30,-26,-26,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
+  /* 8 
+  {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2,  0,  0,  0,  1,  2,  3,  7},
+    {-36,-36,-36,-36,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
+    {-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
+  {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2,  0,  0,  0,  1,  2,  3,  7}, 
+    {-36,-36,-36,-36,-30,-30,-30,-24,-20,-16,-16,-16,-16,-14,-12,-10, -7},
+    {-36,-36,-36,-36,-34,-30,-28,-26,-24,-30,-30,-30,-30,-30,-30,-24,-20}}},
+  /* 9 
+  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+    {-36,-36,-36,-36,-34,-32,-32,-28,-20,-16,-16,-16,-16,-14,-12,-10, -7},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
+  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+    {-38,-38,-38,-38,-36,-34,-34,-30,-24,-20,-20,-20,-20,-18,-16,-12,-10},
+    {-40,-40,-40,-40,-40,-40,-40,-38,-35,-35,-35,-35,-35,-35,-35,-35,-30}}},
+  /* 10 */
+  {{{-30,-30,-30,-30,-30,-30,-30,-28,-20,-14,-14,-14,-14,-14,-14,-12,-10},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
+};
+
+/*  noise bias (long block) */
+static noise3 _psy_noisebias_long[12]={
+  /*63     125     250     500      1k       2k      4k      8k     16k*/
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  0,  6,  6,  6,  6, 10, 10, 12,  20},
+    {-20,-20,-20,-20,-20,-20,-10, -2,  0,  0,  0,  0,  0,  2,  4,  6,  15},
+    {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
+
+  /* 0 */
+  /*  {{{-10,-10,-10,-10,-10,-10, -8,  2,  2,  2,  4,  4,  5,  5,  5,  8,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14, -6,  0,  0,  0,  0,  0,  2,  4,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},*/
+  {{{-10,-10,-10,-10,-10,-10, -8,  2,  2,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-20,-20,-20,-20,-20,-20,-20,-14, -6,  0,  0,  0,  0,  0,  2,  3,  6},
+    {-20,-20,-20,-20,-20,-20,-20,-14, -8, -6, -6, -6, -6, -4, -4, -4, -2}}},
+  /* 1 */
+  /*  {{{-10,-10,-10,-10,-10,-10, -8, -4,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  8},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},*/
+  {{{-10,-10,-10,-10,-10,-10, -8, -4,  0,  2,  4,  4,  5,  5,  5,  8,  10},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  1,  4},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
+  /* 2 */
+  /*  {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2,  0,  2,  6},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  5,  6,  10},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -2, -1,  0,  3},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
+  /* 3 */
+  /*  {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  6},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-10,-10,-10,-10,-10,-10,-10, -8,  0,  2,  2,  2,  4,  4,  4,  5,  8},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2,  0,  2},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -5}}},
+  /* 4 */
+  /*  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1,  1,  5},
+      {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},*/
+  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -2, -1,  1},
+    {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -7}}},
+  /* 5 */
+  /*  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+      {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1,  2},
+      {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},*/
+  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -3, -1,  0},
+    {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -8}}},
+  /* 6 */
+  /*  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+      {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2,  1},
+      {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},*/
+  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -5, -2,  0},
+    {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12,-10}}},
+  /* 7 */
+  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  1,  1,  1,  2,  3,  3,  4,  7},
+    {-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4,  0},
+    {-26,-26,-26,-26,-26,-26,-26,-22,-20,-19,-19,-19,-19,-18,-17,-16,-12}}},
+  /* 8 */
+  {{{-15,-15,-15,-15,-15,-15,-15,-10, -4,  0,  0,  0,  0,  1,  2,  3,  7},
+    {-26,-26,-26,-26,-26,-26,-26,-20,-16,-12,-10,-10,-10,-10, -8, -6, -2},
+    {-28,-28,-28,-28,-28,-28,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
+  /* 9 */
+  {{{-22,-22,-22,-22,-22,-22,-22,-18,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+    {-26,-26,-26,-26,-26,-26,-26,-22,-18,-16,-16,-16,-16,-14,-12,-10, -7},
+    {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
+  /* 10 */
+  {{{-24,-24,-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-14,-14,-14,-12,-10},
+    {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-20},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
+};
+
+/* noise bias (impulse block) */
+static noise3 _psy_noisebias_impulse[12]={
+  /*  63     125     250     500      1k      2k      4k      8k     16k*/
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  3,  6,  6, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+
+  /* 0 */
+  /*  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  4,  8,  8,  8, 10, 12, 14, 20},
+      {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2,  0,  0,  0,  0,  2,  4,  10},
+      {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},*/
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  4,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-22,-20,-14, -6, -2,  0,  0,  0,  0,  2,  3,  6},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+  /* 1 */
+  {{{-12,-12,-12,-12,-12, -8, -6, -4,  0,  4,  4,  4,  4, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, -4, -2, -2, -2, -2,  2},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8,-10,-10, -8, -8, -8, -6, -4}}},
+  /* 2 */
+  {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  8, 10, 10, 16},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2,  0},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
+  /* 3 */
+  {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  6,  8,  8, 14},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2,  0},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
+  /* 4 */
+  {{{-16,-16,-16,-16,-16,-12,-10, -6, -2,  0,  0,  0,  0,  4,  6,  6, 12},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2,  0},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
+  /* 5 */
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  4,  6, 11},
+    {-32,-32,-32,-32,-28,-24,-22,-16,-10, -6, -8, -8, -6, -6, -6, -4, -2},
+    {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
+  /* 6 
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  4,  6, 11},
+      {-34,-34,-34,-34,-30,-30,-24,-20,-12,-12,-14,-14,-10, -9, -8, -6, -4},
+      {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},*/
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  4,  6, 11},
+    {-34,-34,-34,-34,-30,-30,-30,-24,-16,-16,-16,-16,-16,-16,-14,-14,-12},
+    {-36,-36,-36,-36,-36,-34,-28,-24,-20,-20,-20,-20,-20,-20,-20,-18,-16}}},
+  /* 7 */
+  /*  {{{-22,-22,-22,-22,-22,-20,-14,-10, -6,  0,  0,  0,  0,  4,  4,  6, 11},
+      {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10,-10},
+      {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},*/
+  {{{-22,-22,-22,-22,-22,-20,-14,-10, -6,  0,  0,  0,  0,  4,  4,  6, 11},
+    {-34,-34,-34,-34,-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-24,-22},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
+  /* 8 */
+  /*  {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1,  3,  3,  5, 10},
+      {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
+      {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},*/
+  {{{-24,-24,-24,-24,-24,-22,-14,-10, -6, -1, -1, -1, -1,  3,  3,  5, 10},
+    {-34,-34,-34,-34,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-24},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-30,-24}}},
+  /* 9 */
+  /*  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+      {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-22,-20,-20,-18},
+      {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},*/
+  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2,  2},
+    {-36,-36,-36,-36,-34,-32,-32,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
+  /* 10 */
+  {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-16,-16,-16,-16,-16,-14,-12},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-26},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
+};
+
+/* noise bias (padding block) */
+static noise3 _psy_noisebias_padding[12]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  
+  /* -1 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-20,-16, -8, -6, -6, -2,  2,  2,  3,  6,  6, 15},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
+
+  /* 0 */
+  {{{-10,-10,-10,-10,-10, -4,  0,  0,  4,  8,  8,  8,  8, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2,  2,  3,  6,  6,  8, 10},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -4, -4, -2,  0,  2}}},
+  /* 1 */
+  {{{-12,-12,-12,-12,-12, -8, -6, -4,  0,  4,  4,  4,  4, 10, 12, 14, 20},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4,  0,  0,  0,  2,  2,  4,  8},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -6, -4, -2,  0}}},
+  /* 2 */
+  /*  {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  8, 10, 10, 16},
+      {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4,  0,  0,  0,  2,  2,  4,  8},
+      {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},*/
+  {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  8, 10, 10, 16},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1,  0,  0,  2,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
+  /* 3 */
+  {{{-14,-14,-14,-14,-14,-10, -8, -6, -2,  2,  2,  2,  2,  6,  8,  8, 14},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1,  0,  0,  2,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
+  /* 4 */
+  {{{-16,-16,-16,-16,-16,-12,-10, -6, -2,  0,  0,  0,  0,  4,  6,  6, 12},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, -1,  0,  2,  6},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
+  /* 5 */
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  6,  6, 12},
+    {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -3, -3, -3, -3, -2,  0,  4},
+    {-34,-34,-34,-34,-30,-26,-24,-18,-14,-10,-10,-10,-10,-10, -8, -5, -3}}},
+  /* 6 */
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  6,  6, 12},
+    {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -4, -4, -4, -4, -3, -1,  4},
+    {-34,-34,-34,-34,-34,-30,-26,-20,-16,-13,-13,-13,-13,-13,-11, -8, -6}}},
+  /* 7 */
+  {{{-20,-20,-20,-20,-20,-18,-14,-10, -4,  0,  0,  0,  0,  4,  6,  6, 12},
+    {-34,-34,-34,-34,-30,-30,-30,-24,-16,-10, -8, -6, -6, -6, -5, -3,  1},
+    {-34,-34,-34,-34,-32,-32,-28,-22,-18,-16,-16,-16,-16,-16,-14,-12,-10}}},
+  /* 8 */
+  {{{-22,-22,-22,-22,-22,-20,-14,-10, -4,  0,  0,  0,  0,  3,  5,  5, 11},
+    {-34,-34,-34,-34,-30,-30,-30,-24,-16,-12,-10, -8, -8, -8, -7, -5, -2},
+    {-36,-36,-36,-36,-36,-34,-28,-22,-20,-20,-20,-20,-20,-20,-20,-16,-14}}},
+  /* 9 */
+  {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -2, -2, -2, -2,  0,  2,  6},
+    {-36,-36,-36,-36,-34,-32,-32,-24,-16,-12,-12,-12,-12,-12,-10, -8, -5},
+    {-40,-40,-40,-40,-40,-40,-40,-32,-26,-24,-24,-24,-24,-24,-24,-20,-18}}},
+  /* 10 */
+  {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-12,-12,-12,-12,-12,-10, -8},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-25,-25,-25,-25,-25,-25,-15},
+    {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
+};
+
+
+static noiseguard _psy_noiseguards_44[4]={
+  {3,3,15},
+  {3,3,15},
+  {10,10,100},
+  {10,10,100},
+};
+
+static int _psy_tone_suppress[12]={
+  -20,-20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
+};
+static int _psy_tone_0dB[12]={
+  90,90,95,95,95,95,105,105,105,105,105,105,
+};
+static int _psy_noise_suppress[12]={
+  -20,-20,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
+};
+
+static vorbis_info_psy _psy_info_template={
+  /* blockflag */
+  -1,
+  /* ath_adjatt, ath_maxatt */
+  -140.,-140.,
+  /* tonemask att boost/decay,suppr,curves */
+  {0.f,0.f,0.f},     0.,0.,    -40.f, {0.},  
+  
+  /*noisemaskp,supp, low/high window, low/hi guard, minimum */
+  1,          -0.f,           .5f, .5f,         0,0,0,
+  /* noiseoffset*3, noisecompand, max_curve_dB */
+  {{-1},{-1},{-1}},{-1},105.f,
+  /* noise normalization - channel_p, point_p, start, partition, thresh. */
+  0,0,-1,-1,0.,
+};
+
+/* ath ****************/
+
+static int _psy_ath_floater[12]={
+  -100,-100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
+};
+static int _psy_ath_abs[12]={
+  -130,-130,-130,-130,-140,-140,-140,-140,-140,-140,-140,-150,
+};
+
+/* stereo setup.  These don't map directly to quality level, there's
+   an additional indirection as several of the below may be used in a
+   single bitmanaged stream
+
+****************/
+
+/* various stereo possibilities */
+
+/* stereo mode by base quality level */
+static adj_stereo _psy_stereo_modes_44[12]={
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         -1  */
+  {{  4,  4,  4,  4,  4,  4,  4,  3,  2,  2,  1,  0,  0,  0,  0},
+   {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  5,  4,  3},
+   {  1,  2,  3,  4,  4,  4,  4,  4,  4,  5,  6,  7,  8,  8,  8},
+   { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
+
+/*    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         0  */
+/*{{  4,  4,  4,  4,  4,  4,  4,  3,  2,  2,  1,  0,  0,  0,  0},
+   {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  5,  4,  3},
+   {  1,  2,  3,  4,  5,  5,  6,  6,  6,  6,  6,  7,  8,  8,  8},
+   { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+  {{  4,  4,  4,  4,  4,  4,  4,  3,  2,  1,  0,  0,  0,  0,  0},
+   {  8,  8,  8,  8,  6,  6,  5,  5,  5,  5,  5,  5,  5,  4,  3},
+   {  1,  2,  3,  4,  4,  5,  6,  6,  6,  6,  6,  8,  8,  8,  8},
+   { 12,12.5, 13,13.5, 14,14.5, 15, 99, 99, 99, 99, 99, 99, 99, 99}},
+
+
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         1  */
+  {{  3,  3,  3,  3,  3,  3,  3,  3,  2,  1,  0,  0,  0,  0,  0},
+   {  8,  8,  8,  8,  6,  6,  5,  5,  5,  5,  5,  5,  5,  4,  3},
+   {  1,  2,  3,  4,  4,  5,  6,  6,  6,  6,  6,  8,  8,  8,  8},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+
+
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         2  */
+  /*  {{  3,  3,  3,  3,  3,  3,  2,  2,  2,  1,  0,  0,  0,  0,  0},
+      {  8,  8,  8,  6,  5,  5,  5,  5,  5,  5,  5,  4,  3,  2,  1},
+      {  3,  4,  4,  4,  5,  6,  6,  6,  6,  6,  6,  8,  8,  8,  8},
+      { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}}, */
+  {{  3,  3,  3,  3,  3,  3,  3,  2,  1,  1,  0,  0,  0,  0,  0},
+   {  8,  8,  6,  6,  5,  5,  4,  4,  4,  4,  4,  4,  3,  2,  1},
+   {  3,  4,  4,  5,  5,  6,  6,  6,  6,  6,  6,  8,  8,  8,  8},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         3  */
+  {{  2,  2,  2,  2,  2,  1,  1,  1,  1,  0,  0,  0,  0,  0,  0},
+   {  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  3,  2,  1},
+   {  4,  4,  5,  6,  6,  6,  6,  6,  8,  8, 10, 10, 10, 10, 10},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         4  */
+  {{  2,  2,  2,  1,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  3,  3,  2,  1,  0},
+   {  6,  6,  6,  8,  8,  8,  8,  8,  8,  8, 10, 10, 10, 10, 10},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         5  */
+  /*  {{  2,  2,  2,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  3,  3,  3,  3,  3,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0},
+      {  6,  6,  8,  8,  8,  8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+      { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+  {{  2,  2,  2,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  3,  3,  3,  3,  3,  2,  2,  2,  2,  2,  2,  0,  0,  0,  0},
+   {  6,  7,  8,  8,  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         6  */
+  /*  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  3,  3,  3,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  8,  8,  8,  8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+      { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}}, */
+  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  3,  3,  3,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  8,  8,  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         7  */
+  /*  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  3,  3,  3,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  8,  8,  8,  8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+      { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  3,  3,  3,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  8,  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         8  */
+  /*  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+      {  8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
+      { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},*/
+  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  2,  2,  2,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  8, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14         9  */
+  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14        10  */
+  {{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
+   {  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+};
+
+/* tone master attenuation by base quality mode and bitrate tweak */
+static att3 _psy_tone_masteratt_44[12]={
+  {{ 35,  21,   9},  0,    0}, /* -1 */
+  {{ 30,  20,   8}, -2, 1.25}, /* 0 */
+  /*  {{ 25,  14,   4},  0,    0}, *//* 1 */
+  {{ 25,  12,   2},  0,    0}, /* 1 */
+  /*  {{ 20,  10,  -2},  0,    0}, *//* 2 */
+  {{ 20,   9,  -3},  0,    0}, /* 2 */
+  {{ 20,   9,  -4},  0,    0}, /* 3 */
+  {{ 20,   9,  -4},  0,    0}, /* 4 */
+  {{ 20,   6,  -6},  0,    0}, /* 5 */
+  {{ 20,   3, -10},  0,    0}, /* 6 */
+  {{ 18,   1, -14},  0,    0}, /* 7 */
+  {{ 18,   0, -16},  0,    0}, /* 8 */
+  {{ 18,  -2, -16},  0,    0}, /* 9 */
+  {{ 12,  -2, -20},  0,    0}, /* 10 */
+};
+
+/* lowpass by mode **************/
+static double _psy_lowpass_44[12]={
+  /*  15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999. */
+  13.9,15.1,15.8,16.5,17.2,18.9,20.1,48.,999.,999.,999.,999.
+};
+
+/* noise normalization **********/
+
+static int _noise_start_short_44[11]={
+  /*  16,16,16,16,32,32,9999,9999,9999,9999 */
+  32,16,16,16,32,9999,9999,9999,9999,9999,9999
+};
+static int _noise_start_long_44[11]={
+  /*  128,128,128,256,512,512,9999,9999,9999,9999 */
+  256,128,128,256,512,9999,9999,9999,9999,9999,9999
+};
+
+static int _noise_part_short_44[11]={
+    8,8,8,8,8,8,8,8,8,8,8
+};
+static int _noise_part_long_44[11]={
+    32,32,32,32,32,32,32,32,32,32,32
+};
+
+static double _noise_thresh_44[11]={
+  /*  .2,.2,.3,.4,.5,.5,9999.,9999.,9999.,9999., */
+   .2,.2,.2,.4,.6,9999.,9999.,9999.,9999.,9999.,9999.,
+};
+
+static double _noise_thresh_5only[2]={
+ .5,.5,
+};
Index: /libvorbis-1.2.0/lib/modes/psych_8.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/psych_8.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/psych_8.h	(revision 16)
@@ -0,0 +1,102 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 8kHz psychoacoustic settings 
+ last mod: $Id: psych_8.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+static att3 _psy_tone_masteratt_8[3]={
+  {{ 32,  25,  12},  0,   0},  /* 0 */
+  {{ 30,  25,  12},  0,   0},  /* 0 */
+  {{ 20,   0, -14},  0,   0}, /* 0 */
+};
+
+static vp_adjblock _vp_tonemask_adj_8[3]={
+  /* adjust for mode zero */
+  /* 63     125     250     500     1     2     4     8    16 */
+  {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
+  {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0,10, 0, 0,99,99,99}}, /* 1 */
+  {{-15,-15,-15,-15,-10,-10, -6, 0, 0, 0, 0, 0, 0, 0,99,99,99}}, /* 1 */
+};
+
+
+static noise3 _psy_noisebias_8[3]={
+  /*  63     125     250     500      1k       2k      4k      8k     16k*/
+  {{{-10,-10,-10,-10, -5, -5, -5,  0,  4,  8,  8,  8, 10, 10, 99, 99, 99},
+    {-10,-10,-10,-10, -5, -5, -5,  0,  0,  4,  4,  4,  4,  4, 99, 99, 99},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
+
+  {{{-10,-10,-10,-10, -5, -5, -5,  0,  4,  8,  8,  8, 10, 10, 99, 99, 99},
+    {-10,-10,-10,-10,-10,-10, -5, -5, -5,  0,  0,  0,  0,  0, 99, 99, 99},
+    {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, 99, 99, 99}}},
+
+  {{{-15,-15,-15,-15,-15,-12,-10, -8,  0,  2,  4,  4,  5,  5, 99, 99, 99},
+    {-30,-30,-30,-30,-26,-22,-20,-14,-12,-12,-10,-10,-10,-10, 99, 99, 99},
+    {-30,-30,-30,-30,-26,-26,-26,-26,-26,-26,-26,-26,-26,-24, 99, 99, 99}}},
+};
+
+/* stereo mode by base quality level */
+static adj_stereo _psy_stereo_modes_8[3]={
+  /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  */
+  {{  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  6,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   {  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  {{  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  6,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   {  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+  {{  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3},
+   {  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4},
+   {  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1},
+   { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
+};
+
+static noiseguard _psy_noiseguards_8[2]={
+  {10,10,-1},
+  {10,10,-1},
+};
+
+static compandblock _psy_compand_8[2]={
+  {{
+     0, 1, 2, 3, 4, 5, 6,  7,     /* 7dB */
+     8, 8, 9, 9,10,10,11, 11,     /* 15dB */
+    12,12,13,13,14,14,15, 15,     /* 23dB */
+    16,16,17,17,17,18,18, 19,     /* 31dB */
+    19,19,20,21,22,23,24, 25,     /* 39dB */
+  }},
+  {{
+     0, 1, 2, 3, 4, 5, 6,  6,     /* 7dB */
+     7, 7, 6, 6, 5, 5, 4,  4,     /* 15dB */
+     3, 3, 3, 4, 5, 6, 7,  8,     /* 23dB */
+     9,10,11,12,13,14,15, 16,     /* 31dB */
+    17,18,19,20,21,22,23, 24,     /* 39dB */
+  }},
+};
+
+static double _psy_lowpass_8[3]={3.,4.,4.};
+static int _noise_start_8[2]={
+  64,64,
+};
+static int _noise_part_8[2]={
+  8,8,
+};
+
+static int _psy_ath_floater_8[3]={
+  -100,-100,-105,
+};
+
+static int _psy_ath_abs_8[3]={
+  -130,-130,-140,
+};
+
Index: /libvorbis-1.2.0/lib/modes/residue_16.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/residue_16.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/residue_16.h	(revision 16)
@@ -0,0 +1,163 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel residue templates 16/22kHz
+ last mod: $Id: residue_16.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/***** residue backends *********************************************/
+
+static static_bookblock _resbook_16s_0={
+  {
+    {0},
+    {0,0,&_16c0_s_p1_0},
+    {0},
+    {0,0,&_16c0_s_p3_0},
+    {0,0,&_16c0_s_p4_0},
+    {0,0,&_16c0_s_p5_0},
+    {0,0,&_16c0_s_p6_0},
+    {&_16c0_s_p7_0,&_16c0_s_p7_1},
+    {&_16c0_s_p8_0,&_16c0_s_p8_1},
+    {&_16c0_s_p9_0,&_16c0_s_p9_1,&_16c0_s_p9_2}
+   }
+};
+static static_bookblock _resbook_16s_1={
+  {
+    {0},
+    {0,0,&_16c1_s_p1_0},
+    {0},
+    {0,0,&_16c1_s_p3_0},
+    {0,0,&_16c1_s_p4_0},
+    {0,0,&_16c1_s_p5_0},
+    {0,0,&_16c1_s_p6_0},
+    {&_16c1_s_p7_0,&_16c1_s_p7_1},
+    {&_16c1_s_p8_0,&_16c1_s_p8_1},
+    {&_16c1_s_p9_0,&_16c1_s_p9_1,&_16c1_s_p9_2}
+   }
+};
+static static_bookblock _resbook_16s_2={
+  {
+    {0},
+    {0,0,&_16c2_s_p1_0},
+    {0,0,&_16c2_s_p2_0},
+    {0,0,&_16c2_s_p3_0},
+    {0,0,&_16c2_s_p4_0},
+    {&_16c2_s_p5_0,&_16c2_s_p5_1},
+    {&_16c2_s_p6_0,&_16c2_s_p6_1},
+    {&_16c2_s_p7_0,&_16c2_s_p7_1},
+    {&_16c2_s_p8_0,&_16c2_s_p8_1},
+    {&_16c2_s_p9_0,&_16c2_s_p9_1,&_16c2_s_p9_2}
+   }
+};
+
+static vorbis_residue_template _res_16s_0[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__16c0_s_single,&_huff_book__16c0_s_single,
+   &_resbook_16s_0,&_resbook_16s_0},
+};
+static vorbis_residue_template _res_16s_1[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__16c1_s_short,&_huff_book__16c1_s_short,
+   &_resbook_16s_1,&_resbook_16s_1},
+  
+  {2,0,  &_residue_44_mid,
+   &_huff_book__16c1_s_long,&_huff_book__16c1_s_long,
+   &_resbook_16s_1,&_resbook_16s_1}
+};
+static vorbis_residue_template _res_16s_2[]={
+  {2,0,  &_residue_44_high,
+   &_huff_book__16c2_s_short,&_huff_book__16c2_s_short,
+   &_resbook_16s_2,&_resbook_16s_2},
+  
+  {2,0,  &_residue_44_high,
+   &_huff_book__16c2_s_long,&_huff_book__16c2_s_long,
+   &_resbook_16s_2,&_resbook_16s_2}
+};
+
+static vorbis_mapping_template _mapres_template_16_stereo[3]={
+  { _map_nominal, _res_16s_0 }, /* 0 */
+  { _map_nominal, _res_16s_1 }, /* 1 */
+  { _map_nominal, _res_16s_2 }, /* 2 */
+};
+
+static static_bookblock _resbook_16u_0={
+  {
+    {0},
+    {0,0,&_16u0__p1_0},
+    {0,0,&_16u0__p2_0},
+    {0,0,&_16u0__p3_0},
+    {0,0,&_16u0__p4_0},
+    {0,0,&_16u0__p5_0},
+    {&_16u0__p6_0,&_16u0__p6_1},
+    {&_16u0__p7_0,&_16u0__p7_1,&_16u0__p7_2}
+   }
+};
+static static_bookblock _resbook_16u_1={
+  {
+    {0},
+    {0,0,&_16u1__p1_0},
+    {0,0,&_16u1__p2_0},
+    {0,0,&_16u1__p3_0},
+    {0,0,&_16u1__p4_0},
+    {0,0,&_16u1__p5_0},
+    {0,0,&_16u1__p6_0},
+    {&_16u1__p7_0,&_16u1__p7_1},
+    {&_16u1__p8_0,&_16u1__p8_1},
+    {&_16u1__p9_0,&_16u1__p9_1,&_16u1__p9_2}
+   }
+};
+static static_bookblock _resbook_16u_2={
+  {
+    {0},
+    {0,0,&_16u2_p1_0},
+    {0,0,&_16u2_p2_0},
+    {0,0,&_16u2_p3_0},
+    {0,0,&_16u2_p4_0},
+    {&_16u2_p5_0,&_16u2_p5_1},
+    {&_16u2_p6_0,&_16u2_p6_1},
+    {&_16u2_p7_0,&_16u2_p7_1},
+    {&_16u2_p8_0,&_16u2_p8_1},
+    {&_16u2_p9_0,&_16u2_p9_1,&_16u2_p9_2}
+   }
+};
+
+static vorbis_residue_template _res_16u_0[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__16u0__single,&_huff_book__16u0__single,
+   &_resbook_16u_0,&_resbook_16u_0},
+};
+static vorbis_residue_template _res_16u_1[]={
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__16u1__short,&_huff_book__16u1__short,
+   &_resbook_16u_1,&_resbook_16u_1},
+  
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__16u1__long,&_huff_book__16u1__long,
+   &_resbook_16u_1,&_resbook_16u_1}
+};
+static vorbis_residue_template _res_16u_2[]={
+  {1,0,  &_residue_44_hi_un,
+   &_huff_book__16u2__short,&_huff_book__16u2__short,
+   &_resbook_16u_2,&_resbook_16u_2},
+  
+  {1,0,  &_residue_44_hi_un,
+   &_huff_book__16u2__long,&_huff_book__16u2__long,
+   &_resbook_16u_2,&_resbook_16u_2}
+};
+
+
+static vorbis_mapping_template _mapres_template_16_uncoupled[3]={
+  { _map_nominal_u, _res_16u_0 }, /* 0 */
+  { _map_nominal_u, _res_16u_1 }, /* 1 */
+  { _map_nominal_u, _res_16u_2 }, /* 2 */
+};
Index: /libvorbis-1.2.0/lib/modes/residue_44.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/residue_44.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/residue_44.h	(revision 16)
@@ -0,0 +1,294 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel residue templates for 32/44.1/48kHz
+ last mod: $Id: residue_44.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "vorbis/codec.h"
+#include "backends.h"
+#include "books/coupled/res_books_stereo.h"
+
+/***** residue backends *********************************************/
+
+static vorbis_info_residue0 _residue_44_low={
+  0,-1, -1, 9,-1,
+  /*  0     1     2     3     4     5     6     7  */
+  {0},
+  {-1},
+  {  .5,  1.5,  2.5,  2.5,  4.5,  8.5,  16.5, 32.5},
+  {  .5,   .5,   .5,  999., 4.5,  8.5,  16.5, 32.5},
+};
+
+static vorbis_info_residue0 _residue_44_mid={
+  0,-1, -1, 10,-1,
+  /*  0     1     2     3     4     5     6     7     8  */
+  {0},
+  {-1},
+  {  .5,  1.5,  1.5,  2.5,  2.5,  4.5,  8.5,  16.5, 32.5},
+  {  .5,   .5, 999.,   .5,  999., 4.5,  8.5,  16.5, 32.5},
+};
+
+static vorbis_info_residue0 _residue_44_high={
+  0,-1, -1, 10,-1,
+  /*  0     1     2     3     4     5     6     7     8  */
+  {0},
+  {-1},
+  {  .5,  1.5,  2.5,  4.5,  8.5, 16.5, 32.5, 71.5,157.5},
+  {  .5,  1.5,  2.5,  3.5,  4.5,  8.5, 16.5, 71.5,157.5},
+};
+
+static static_bookblock _resbook_44s_n1={
+  {
+    {0},{0,0,&_44cn1_s_p1_0},{0,0,&_44cn1_s_p2_0},
+    {0,0,&_44cn1_s_p3_0},{0,0,&_44cn1_s_p4_0},{0,0,&_44cn1_s_p5_0},
+    {&_44cn1_s_p6_0,&_44cn1_s_p6_1},{&_44cn1_s_p7_0,&_44cn1_s_p7_1},
+    {&_44cn1_s_p8_0,&_44cn1_s_p8_1,&_44cn1_s_p8_2}
+   }
+};
+static static_bookblock _resbook_44sm_n1={
+  {
+    {0},{0,0,&_44cn1_sm_p1_0},{0,0,&_44cn1_sm_p2_0},
+    {0,0,&_44cn1_sm_p3_0},{0,0,&_44cn1_sm_p4_0},{0,0,&_44cn1_sm_p5_0},
+    {&_44cn1_sm_p6_0,&_44cn1_sm_p6_1},{&_44cn1_sm_p7_0,&_44cn1_sm_p7_1},
+    {&_44cn1_sm_p8_0,&_44cn1_sm_p8_1,&_44cn1_sm_p8_2}
+   }
+};
+
+static static_bookblock _resbook_44s_0={
+  {
+    {0},{0,0,&_44c0_s_p1_0},{0,0,&_44c0_s_p2_0},
+    {0,0,&_44c0_s_p3_0},{0,0,&_44c0_s_p4_0},{0,0,&_44c0_s_p5_0},
+    {&_44c0_s_p6_0,&_44c0_s_p6_1},{&_44c0_s_p7_0,&_44c0_s_p7_1},
+    {&_44c0_s_p8_0,&_44c0_s_p8_1,&_44c0_s_p8_2}
+   }
+};
+static static_bookblock _resbook_44sm_0={
+  {
+    {0},{0,0,&_44c0_sm_p1_0},{0,0,&_44c0_sm_p2_0},
+    {0,0,&_44c0_sm_p3_0},{0,0,&_44c0_sm_p4_0},{0,0,&_44c0_sm_p5_0},
+    {&_44c0_sm_p6_0,&_44c0_sm_p6_1},{&_44c0_sm_p7_0,&_44c0_sm_p7_1},
+    {&_44c0_sm_p8_0,&_44c0_sm_p8_1,&_44c0_sm_p8_2}
+   }
+};
+
+static static_bookblock _resbook_44s_1={
+  {
+    {0},{0,0,&_44c1_s_p1_0},{0,0,&_44c1_s_p2_0},
+    {0,0,&_44c1_s_p3_0},{0,0,&_44c1_s_p4_0},{0,0,&_44c1_s_p5_0},
+    {&_44c1_s_p6_0,&_44c1_s_p6_1},{&_44c1_s_p7_0,&_44c1_s_p7_1},
+    {&_44c1_s_p8_0,&_44c1_s_p8_1,&_44c1_s_p8_2}
+   }
+};
+static static_bookblock _resbook_44sm_1={
+  {
+    {0},{0,0,&_44c1_sm_p1_0},{0,0,&_44c1_sm_p2_0},
+    {0,0,&_44c1_sm_p3_0},{0,0,&_44c1_sm_p4_0},{0,0,&_44c1_sm_p5_0},
+    {&_44c1_sm_p6_0,&_44c1_sm_p6_1},{&_44c1_sm_p7_0,&_44c1_sm_p7_1},
+    {&_44c1_sm_p8_0,&_44c1_sm_p8_1,&_44c1_sm_p8_2}
+   }
+};
+
+static static_bookblock _resbook_44s_2={
+  {
+    {0},{0,0,&_44c2_s_p1_0},{0,0,&_44c2_s_p2_0},{0,0,&_44c2_s_p3_0},
+    {0,0,&_44c2_s_p4_0},{0,0,&_44c2_s_p5_0},{0,0,&_44c2_s_p6_0},
+    {&_44c2_s_p7_0,&_44c2_s_p7_1},{&_44c2_s_p8_0,&_44c2_s_p8_1},
+    {&_44c2_s_p9_0,&_44c2_s_p9_1,&_44c2_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_3={
+  {
+    {0},{0,0,&_44c3_s_p1_0},{0,0,&_44c3_s_p2_0},{0,0,&_44c3_s_p3_0},
+    {0,0,&_44c3_s_p4_0},{0,0,&_44c3_s_p5_0},{0,0,&_44c3_s_p6_0},
+    {&_44c3_s_p7_0,&_44c3_s_p7_1},{&_44c3_s_p8_0,&_44c3_s_p8_1},
+    {&_44c3_s_p9_0,&_44c3_s_p9_1,&_44c3_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_4={
+  {
+    {0},{0,0,&_44c4_s_p1_0},{0,0,&_44c4_s_p2_0},{0,0,&_44c4_s_p3_0},
+    {0,0,&_44c4_s_p4_0},{0,0,&_44c4_s_p5_0},{0,0,&_44c4_s_p6_0},
+    {&_44c4_s_p7_0,&_44c4_s_p7_1},{&_44c4_s_p8_0,&_44c4_s_p8_1},
+    {&_44c4_s_p9_0,&_44c4_s_p9_1,&_44c4_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_5={
+  {
+    {0},{0,0,&_44c5_s_p1_0},{0,0,&_44c5_s_p2_0},{0,0,&_44c5_s_p3_0},
+    {0,0,&_44c5_s_p4_0},{0,0,&_44c5_s_p5_0},{0,0,&_44c5_s_p6_0},
+    {&_44c5_s_p7_0,&_44c5_s_p7_1},{&_44c5_s_p8_0,&_44c5_s_p8_1},
+    {&_44c5_s_p9_0,&_44c5_s_p9_1,&_44c5_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_6={
+  {
+    {0},{0,0,&_44c6_s_p1_0},{0,0,&_44c6_s_p2_0},{0,0,&_44c6_s_p3_0},
+    {0,0,&_44c6_s_p4_0},
+    {&_44c6_s_p5_0,&_44c6_s_p5_1},
+    {&_44c6_s_p6_0,&_44c6_s_p6_1},
+    {&_44c6_s_p7_0,&_44c6_s_p7_1},
+    {&_44c6_s_p8_0,&_44c6_s_p8_1},
+    {&_44c6_s_p9_0,&_44c6_s_p9_1,&_44c6_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_7={
+  {
+    {0},{0,0,&_44c7_s_p1_0},{0,0,&_44c7_s_p2_0},{0,0,&_44c7_s_p3_0},
+    {0,0,&_44c7_s_p4_0},
+    {&_44c7_s_p5_0,&_44c7_s_p5_1},
+    {&_44c7_s_p6_0,&_44c7_s_p6_1},
+    {&_44c7_s_p7_0,&_44c7_s_p7_1},
+    {&_44c7_s_p8_0,&_44c7_s_p8_1},
+    {&_44c7_s_p9_0,&_44c7_s_p9_1,&_44c7_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_8={
+  {
+    {0},{0,0,&_44c8_s_p1_0},{0,0,&_44c8_s_p2_0},{0,0,&_44c8_s_p3_0},
+    {0,0,&_44c8_s_p4_0},
+    {&_44c8_s_p5_0,&_44c8_s_p5_1},
+    {&_44c8_s_p6_0,&_44c8_s_p6_1},
+    {&_44c8_s_p7_0,&_44c8_s_p7_1},
+    {&_44c8_s_p8_0,&_44c8_s_p8_1},
+    {&_44c8_s_p9_0,&_44c8_s_p9_1,&_44c8_s_p9_2}
+   }
+};
+static static_bookblock _resbook_44s_9={
+  {
+    {0},{0,0,&_44c9_s_p1_0},{0,0,&_44c9_s_p2_0},{0,0,&_44c9_s_p3_0},
+    {0,0,&_44c9_s_p4_0},
+    {&_44c9_s_p5_0,&_44c9_s_p5_1},
+    {&_44c9_s_p6_0,&_44c9_s_p6_1},
+    {&_44c9_s_p7_0,&_44c9_s_p7_1},
+    {&_44c9_s_p8_0,&_44c9_s_p8_1},
+    {&_44c9_s_p9_0,&_44c9_s_p9_1,&_44c9_s_p9_2}
+   }
+};
+
+static vorbis_residue_template _res_44s_n1[]={
+  {2,0,  &_residue_44_low,
+   &_huff_book__44cn1_s_short,&_huff_book__44cn1_sm_short,
+   &_resbook_44s_n1,&_resbook_44sm_n1},
+
+  {2,0,  &_residue_44_low,
+   &_huff_book__44cn1_s_long,&_huff_book__44cn1_sm_long,
+   &_resbook_44s_n1,&_resbook_44sm_n1}
+};
+static vorbis_residue_template _res_44s_0[]={
+  {2,0,  &_residue_44_low,
+   &_huff_book__44c0_s_short,&_huff_book__44c0_sm_short,
+   &_resbook_44s_0,&_resbook_44sm_0},
+
+  {2,0,  &_residue_44_low,
+   &_huff_book__44c0_s_long,&_huff_book__44c0_sm_long,
+   &_resbook_44s_0,&_resbook_44sm_0}
+};
+static vorbis_residue_template _res_44s_1[]={
+  {2,0,  &_residue_44_low,
+   &_huff_book__44c1_s_short,&_huff_book__44c1_sm_short,
+   &_resbook_44s_1,&_resbook_44sm_1},
+
+  {2,0,  &_residue_44_low,
+   &_huff_book__44c1_s_long,&_huff_book__44c1_sm_long,
+   &_resbook_44s_1,&_resbook_44sm_1}
+};
+
+static vorbis_residue_template _res_44s_2[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c2_s_short,&_huff_book__44c2_s_short,
+   &_resbook_44s_2,&_resbook_44s_2},
+
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c2_s_long,&_huff_book__44c2_s_long,
+   &_resbook_44s_2,&_resbook_44s_2}
+};
+static vorbis_residue_template _res_44s_3[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c3_s_short,&_huff_book__44c3_s_short,
+   &_resbook_44s_3,&_resbook_44s_3},
+
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c3_s_long,&_huff_book__44c3_s_long,
+   &_resbook_44s_3,&_resbook_44s_3}
+};
+static vorbis_residue_template _res_44s_4[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c4_s_short,&_huff_book__44c4_s_short,
+   &_resbook_44s_4,&_resbook_44s_4},
+
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c4_s_long,&_huff_book__44c4_s_long,
+   &_resbook_44s_4,&_resbook_44s_4}
+};
+static vorbis_residue_template _res_44s_5[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c5_s_short,&_huff_book__44c5_s_short,
+   &_resbook_44s_5,&_resbook_44s_5},
+
+  {2,0,  &_residue_44_mid,
+   &_huff_book__44c5_s_long,&_huff_book__44c5_s_long,
+   &_resbook_44s_5,&_resbook_44s_5}
+};
+static vorbis_residue_template _res_44s_6[]={
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c6_s_short,&_huff_book__44c6_s_short,
+   &_resbook_44s_6,&_resbook_44s_6},
+
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c6_s_long,&_huff_book__44c6_s_long,
+   &_resbook_44s_6,&_resbook_44s_6}
+};
+static vorbis_residue_template _res_44s_7[]={
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c7_s_short,&_huff_book__44c7_s_short,
+   &_resbook_44s_7,&_resbook_44s_7},
+
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c7_s_long,&_huff_book__44c7_s_long,
+   &_resbook_44s_7,&_resbook_44s_7}
+};
+static vorbis_residue_template _res_44s_8[]={
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c8_s_short,&_huff_book__44c8_s_short,
+   &_resbook_44s_8,&_resbook_44s_8},
+
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c8_s_long,&_huff_book__44c8_s_long,
+   &_resbook_44s_8,&_resbook_44s_8}
+};
+static vorbis_residue_template _res_44s_9[]={
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c9_s_short,&_huff_book__44c9_s_short,
+   &_resbook_44s_9,&_resbook_44s_9},
+
+  {2,0,  &_residue_44_high,
+   &_huff_book__44c9_s_long,&_huff_book__44c9_s_long,
+   &_resbook_44s_9,&_resbook_44s_9}
+};
+
+static vorbis_mapping_template _mapres_template_44_stereo[]={
+  { _map_nominal, _res_44s_n1 }, /* -1 */
+  { _map_nominal, _res_44s_0 }, /* 0 */
+  { _map_nominal, _res_44s_1 }, /* 1 */
+  { _map_nominal, _res_44s_2 }, /* 2 */
+  { _map_nominal, _res_44s_3 }, /* 3 */
+  { _map_nominal, _res_44s_4 }, /* 4 */
+  { _map_nominal, _res_44s_5 }, /* 5 */
+  { _map_nominal, _res_44s_6 }, /* 6 */
+  { _map_nominal, _res_44s_7 }, /* 7 */
+  { _map_nominal, _res_44s_8 }, /* 8 */
+  { _map_nominal, _res_44s_9 }, /* 9 */
+};
+
+
Index: /libvorbis-1.2.0/lib/modes/residue_44u.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/residue_44u.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/residue_44u.h	(revision 16)
@@ -0,0 +1,318 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel residue templates for 32/44.1/48kHz uncoupled
+ last mod: $Id: residue_44u.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "vorbis/codec.h"
+#include "backends.h"
+#include "books/uncoupled/res_books_uncoupled.h"
+
+/***** residue backends *********************************************/
+
+
+static vorbis_info_residue0 _residue_44_low_un={
+  0,-1, -1, 8,-1,
+  {0},
+  {-1},
+  {  .5,  1.5,  1.5,  2.5,  2.5,  4.5, 28.5},
+  {  -1,   25,   -1,   45,   -1,   -1,   -1}
+};
+
+static vorbis_info_residue0 _residue_44_mid_un={
+  0,-1, -1, 10,-1,
+  /*  0     1     2     3     4     5     6     7     8     9 */
+  {0},
+  {-1},
+  {  .5,  1.5,  1.5,  2.5,  2.5,  4.5,  4.5, 16.5, 60.5},
+  {  -1,   30,   -1,   50,   -1,   80,   -1,   -1,   -1}
+};
+
+static vorbis_info_residue0 _residue_44_hi_un={
+  0,-1, -1, 10,-1,
+  /*  0     1     2     3     4     5     6     7     8     9 */
+  {0},
+  {-1},
+  {  .5,  1.5,  2.5,  4.5,  8.5, 16.5, 32.5, 71.5,157.5},
+  {  -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1}
+};
+
+/* mapping conventions:
+   only one submap (this would change for efficient 5.1 support for example)*/
+/* Four psychoacoustic profiles are used, one for each blocktype */
+static vorbis_info_mapping0 _map_nominal_u[2]={
+  {1, {0,0}, {0}, {0}, 0,{0},{0}},
+  {1, {0,0}, {1}, {1}, 0,{0},{0}}
+};
+
+static static_bookblock _resbook_44u_n1={
+  {
+    {0},
+    {0,0,&_44un1__p1_0},
+    {0,0,&_44un1__p2_0},
+    {0,0,&_44un1__p3_0},
+    {0,0,&_44un1__p4_0},
+    {0,0,&_44un1__p5_0},
+    {&_44un1__p6_0,&_44un1__p6_1},
+    {&_44un1__p7_0,&_44un1__p7_1,&_44un1__p7_2}
+   }
+};
+static static_bookblock _resbook_44u_0={
+  {
+    {0},
+    {0,0,&_44u0__p1_0},
+    {0,0,&_44u0__p2_0},
+    {0,0,&_44u0__p3_0},
+    {0,0,&_44u0__p4_0},
+    {0,0,&_44u0__p5_0},
+    {&_44u0__p6_0,&_44u0__p6_1},
+    {&_44u0__p7_0,&_44u0__p7_1,&_44u0__p7_2}
+   }
+};
+static static_bookblock _resbook_44u_1={
+  {
+    {0},
+    {0,0,&_44u1__p1_0},
+    {0,0,&_44u1__p2_0},
+    {0,0,&_44u1__p3_0},
+    {0,0,&_44u1__p4_0},
+    {0,0,&_44u1__p5_0},
+    {&_44u1__p6_0,&_44u1__p6_1},
+    {&_44u1__p7_0,&_44u1__p7_1,&_44u1__p7_2}
+   }
+};
+static static_bookblock _resbook_44u_2={
+  {
+    {0},
+    {0,0,&_44u2__p1_0},
+    {0,0,&_44u2__p2_0},
+    {0,0,&_44u2__p3_0},
+    {0,0,&_44u2__p4_0},
+    {0,0,&_44u2__p5_0},
+    {&_44u2__p6_0,&_44u2__p6_1},
+    {&_44u2__p7_0,&_44u2__p7_1,&_44u2__p7_2}
+   }
+};
+static static_bookblock _resbook_44u_3={
+  {
+    {0},
+    {0,0,&_44u3__p1_0},
+    {0,0,&_44u3__p2_0},
+    {0,0,&_44u3__p3_0},
+    {0,0,&_44u3__p4_0},
+    {0,0,&_44u3__p5_0},
+    {&_44u3__p6_0,&_44u3__p6_1},
+    {&_44u3__p7_0,&_44u3__p7_1,&_44u3__p7_2}
+   }
+};
+static static_bookblock _resbook_44u_4={
+  {
+    {0},
+    {0,0,&_44u4__p1_0},
+    {0,0,&_44u4__p2_0},
+    {0,0,&_44u4__p3_0},
+    {0,0,&_44u4__p4_0},
+    {0,0,&_44u4__p5_0},
+    {&_44u4__p6_0,&_44u4__p6_1},
+    {&_44u4__p7_0,&_44u4__p7_1,&_44u4__p7_2}
+   }
+};
+static static_bookblock _resbook_44u_5={
+  {
+    {0},
+    {0,0,&_44u5__p1_0},
+    {0,0,&_44u5__p2_0},
+    {0,0,&_44u5__p3_0},
+    {0,0,&_44u5__p4_0},
+    {0,0,&_44u5__p5_0},
+    {0,0,&_44u5__p6_0},
+    {&_44u5__p7_0,&_44u5__p7_1},
+    {&_44u5__p8_0,&_44u5__p8_1},
+    {&_44u5__p9_0,&_44u5__p9_1,&_44u5__p9_2}
+   }
+};
+static static_bookblock _resbook_44u_6={
+  {
+    {0},
+    {0,0,&_44u6__p1_0},
+    {0,0,&_44u6__p2_0},
+    {0,0,&_44u6__p3_0},
+    {0,0,&_44u6__p4_0},
+    {0,0,&_44u6__p5_0},
+    {0,0,&_44u6__p6_0},
+    {&_44u6__p7_0,&_44u6__p7_1},
+    {&_44u6__p8_0,&_44u6__p8_1},
+    {&_44u6__p9_0,&_44u6__p9_1,&_44u6__p9_2}
+   }
+};
+static static_bookblock _resbook_44u_7={
+  {
+    {0},
+    {0,0,&_44u7__p1_0},
+    {0,0,&_44u7__p2_0},
+    {0,0,&_44u7__p3_0},
+    {0,0,&_44u7__p4_0},
+    {0,0,&_44u7__p5_0},
+    {0,0,&_44u7__p6_0},
+    {&_44u7__p7_0,&_44u7__p7_1},
+    {&_44u7__p8_0,&_44u7__p8_1},
+    {&_44u7__p9_0,&_44u7__p9_1,&_44u7__p9_2}
+   }
+};
+static static_bookblock _resbook_44u_8={
+  {
+    {0},
+    {0,0,&_44u8_p1_0},
+    {0,0,&_44u8_p2_0},
+    {0,0,&_44u8_p3_0},
+    {0,0,&_44u8_p4_0},
+    {&_44u8_p5_0,&_44u8_p5_1},
+    {&_44u8_p6_0,&_44u8_p6_1},
+    {&_44u8_p7_0,&_44u8_p7_1},
+    {&_44u8_p8_0,&_44u8_p8_1},
+    {&_44u8_p9_0,&_44u8_p9_1,&_44u8_p9_2}
+   }
+};
+static static_bookblock _resbook_44u_9={
+  {
+    {0},
+    {0,0,&_44u9_p1_0},
+    {0,0,&_44u9_p2_0},
+    {0,0,&_44u9_p3_0},
+    {0,0,&_44u9_p4_0},
+    {&_44u9_p5_0,&_44u9_p5_1},
+    {&_44u9_p6_0,&_44u9_p6_1},
+    {&_44u9_p7_0,&_44u9_p7_1},
+    {&_44u9_p8_0,&_44u9_p8_1},
+    {&_44u9_p9_0,&_44u9_p9_1,&_44u9_p9_2}
+   }
+};
+
+static vorbis_residue_template _res_44u_n1[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44un1__short,&_huff_book__44un1__short,
+   &_resbook_44u_n1,&_resbook_44u_n1},
+
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44un1__long,&_huff_book__44un1__long,
+   &_resbook_44u_n1,&_resbook_44u_n1}
+};
+static vorbis_residue_template _res_44u_0[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u0__short,&_huff_book__44u0__short,
+   &_resbook_44u_0,&_resbook_44u_0},
+
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u0__long,&_huff_book__44u0__long,
+   &_resbook_44u_0,&_resbook_44u_0}
+};
+static vorbis_residue_template _res_44u_1[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u1__short,&_huff_book__44u1__short,
+   &_resbook_44u_1,&_resbook_44u_1},
+
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u1__long,&_huff_book__44u1__long,
+   &_resbook_44u_1,&_resbook_44u_1}
+};
+static vorbis_residue_template _res_44u_2[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u2__short,&_huff_book__44u2__short,
+   &_resbook_44u_2,&_resbook_44u_2},
+
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u2__long,&_huff_book__44u2__long,
+   &_resbook_44u_2,&_resbook_44u_2}
+};
+static vorbis_residue_template _res_44u_3[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u3__short,&_huff_book__44u3__short,
+   &_resbook_44u_3,&_resbook_44u_3},
+
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u3__long,&_huff_book__44u3__long,
+   &_resbook_44u_3,&_resbook_44u_3}
+};
+static vorbis_residue_template _res_44u_4[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u4__short,&_huff_book__44u4__short,
+   &_resbook_44u_4,&_resbook_44u_4},
+
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__44u4__long,&_huff_book__44u4__long,
+   &_resbook_44u_4,&_resbook_44u_4}
+};
+
+static vorbis_residue_template _res_44u_5[]={
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__44u5__short,&_huff_book__44u5__short,
+   &_resbook_44u_5,&_resbook_44u_5},
+
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__44u5__long,&_huff_book__44u5__long,
+   &_resbook_44u_5,&_resbook_44u_5}
+};
+
+static vorbis_residue_template _res_44u_6[]={
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__44u6__short,&_huff_book__44u6__short,
+   &_resbook_44u_6,&_resbook_44u_6},
+
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__44u6__long,&_huff_book__44u6__long,
+   &_resbook_44u_6,&_resbook_44u_6}
+};
+
+static vorbis_residue_template _res_44u_7[]={
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__44u7__short,&_huff_book__44u7__short,
+   &_resbook_44u_7,&_resbook_44u_7},
+
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__44u7__long,&_huff_book__44u7__long,
+   &_resbook_44u_7,&_resbook_44u_7}
+};
+
+static vorbis_residue_template _res_44u_8[]={
+  {1,0,  &_residue_44_hi_un,
+   &_huff_book__44u8__short,&_huff_book__44u8__short,
+   &_resbook_44u_8,&_resbook_44u_8},
+
+  {1,0,  &_residue_44_hi_un,
+   &_huff_book__44u8__long,&_huff_book__44u8__long,
+   &_resbook_44u_8,&_resbook_44u_8}
+};
+static vorbis_residue_template _res_44u_9[]={
+  {1,0,  &_residue_44_hi_un,
+   &_huff_book__44u9__short,&_huff_book__44u9__short,
+   &_resbook_44u_9,&_resbook_44u_9},
+
+  {1,0,  &_residue_44_hi_un,
+   &_huff_book__44u9__long,&_huff_book__44u9__long,
+   &_resbook_44u_9,&_resbook_44u_9}
+};
+
+static vorbis_mapping_template _mapres_template_44_uncoupled[]={
+  { _map_nominal_u, _res_44u_n1 }, /* -1 */
+  { _map_nominal_u, _res_44u_0 }, /* 0 */
+  { _map_nominal_u, _res_44u_1 }, /* 1 */
+  { _map_nominal_u, _res_44u_2 }, /* 2 */
+  { _map_nominal_u, _res_44u_3 }, /* 3 */
+  { _map_nominal_u, _res_44u_4 }, /* 4 */
+  { _map_nominal_u, _res_44u_5 }, /* 5 */
+  { _map_nominal_u, _res_44u_6 }, /* 6 */
+  { _map_nominal_u, _res_44u_7 }, /* 7 */
+  { _map_nominal_u, _res_44u_8 }, /* 8 */
+  { _map_nominal_u, _res_44u_9 }, /* 9 */
+};
Index: /libvorbis-1.2.0/lib/modes/residue_8.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/residue_8.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/residue_8.h	(revision 16)
@@ -0,0 +1,109 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel residue templates 8/11kHz
+ last mod: $Id: residue_8.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "vorbis/codec.h"
+#include "backends.h"
+
+/***** residue backends *********************************************/
+
+static static_bookblock _resbook_8s_0={
+  {
+    {0},
+    {0,0,&_8c0_s_p1_0},
+    {0},
+    {0,0,&_8c0_s_p3_0},
+    {0,0,&_8c0_s_p4_0},
+    {0,0,&_8c0_s_p5_0},
+    {0,0,&_8c0_s_p6_0},
+    {&_8c0_s_p7_0,&_8c0_s_p7_1},
+    {&_8c0_s_p8_0,&_8c0_s_p8_1},
+    {&_8c0_s_p9_0,&_8c0_s_p9_1,&_8c0_s_p9_2}
+   }
+};
+static static_bookblock _resbook_8s_1={
+  {
+    {0},
+    {0,0,&_8c1_s_p1_0},
+    {0},
+    {0,0,&_8c1_s_p3_0},
+    {0,0,&_8c1_s_p4_0},
+    {0,0,&_8c1_s_p5_0},
+    {0,0,&_8c1_s_p6_0},
+    {&_8c1_s_p7_0,&_8c1_s_p7_1},
+    {&_8c1_s_p8_0,&_8c1_s_p8_1},
+    {&_8c1_s_p9_0,&_8c1_s_p9_1,&_8c1_s_p9_2}
+   }
+};
+
+static vorbis_residue_template _res_8s_0[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__8c0_s_single,&_huff_book__8c0_s_single,
+   &_resbook_8s_0,&_resbook_8s_0},
+};
+static vorbis_residue_template _res_8s_1[]={
+  {2,0,  &_residue_44_mid,
+   &_huff_book__8c1_s_single,&_huff_book__8c1_s_single,
+   &_resbook_8s_1,&_resbook_8s_1},
+};
+
+static vorbis_mapping_template _mapres_template_8_stereo[2]={
+  { _map_nominal, _res_8s_0 }, /* 0 */
+  { _map_nominal, _res_8s_1 }, /* 1 */
+};
+
+static static_bookblock _resbook_8u_0={
+  {
+    {0},
+    {0,0,&_8u0__p1_0},
+    {0,0,&_8u0__p2_0},
+    {0,0,&_8u0__p3_0},
+    {0,0,&_8u0__p4_0},
+    {0,0,&_8u0__p5_0},
+    {&_8u0__p6_0,&_8u0__p6_1},
+    {&_8u0__p7_0,&_8u0__p7_1,&_8u0__p7_2}
+   }
+};
+static static_bookblock _resbook_8u_1={
+  {
+    {0},
+    {0,0,&_8u1__p1_0},
+    {0,0,&_8u1__p2_0},
+    {0,0,&_8u1__p3_0},
+    {0,0,&_8u1__p4_0},
+    {0,0,&_8u1__p5_0},
+    {0,0,&_8u1__p6_0},
+    {&_8u1__p7_0,&_8u1__p7_1},
+    {&_8u1__p8_0,&_8u1__p8_1},
+    {&_8u1__p9_0,&_8u1__p9_1,&_8u1__p9_2}
+   }
+};
+
+static vorbis_residue_template _res_8u_0[]={
+  {1,0,  &_residue_44_low_un,
+   &_huff_book__8u0__single,&_huff_book__8u0__single,
+   &_resbook_8u_0,&_resbook_8u_0},
+};
+static vorbis_residue_template _res_8u_1[]={
+  {1,0,  &_residue_44_mid_un,
+   &_huff_book__8u1__single,&_huff_book__8u1__single,
+   &_resbook_8u_1,&_resbook_8u_1},
+};
+
+static vorbis_mapping_template _mapres_template_8_uncoupled[2]={
+  { _map_nominal_u, _res_8u_0 }, /* 0 */
+  { _map_nominal_u, _res_8u_1 }, /* 1 */
+};
Index: /libvorbis-1.2.0/lib/modes/setup_11.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_11.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_11.h	(revision 16)
@@ -0,0 +1,141 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 11kHz settings 
+ last mod: $Id: setup_11.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "psych_11.h"
+
+static int blocksize_11[2]={
+  512,512
+};
+
+static int _floor_mapping_11[2]={
+  6,6,
+};
+
+static double rate_mapping_11[3]={
+  8000.,13000.,44000.,
+};
+
+static double rate_mapping_11_uncoupled[3]={
+  12000.,20000.,50000.,
+};
+
+static double quality_mapping_11[3]={
+  -.1,.0,1.
+};
+
+ve_setup_data_template ve_setup_11_stereo={
+  2,
+  rate_mapping_11,
+  quality_mapping_11,
+  2,
+  9000,
+  15000,
+  
+  blocksize_11,
+  blocksize_11,
+
+  _psy_tone_masteratt_11,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_11,
+  NULL,
+  _vp_tonemask_adj_11,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_11,
+  _psy_noisebias_11,
+  NULL,
+  NULL,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  NULL,
+
+  {_noise_start_8,_noise_start_8},
+  {_noise_part_8,_noise_part_8},
+  _noise_thresh_11,
+
+  _psy_ath_floater_8,
+  _psy_ath_abs_8,
+  
+  _psy_lowpass_11,
+
+  _psy_global_44,
+  _global_mapping_8,
+  _psy_stereo_modes_8,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_11,
+  NULL,
+
+  _mapres_template_8_stereo
+};
+
+ve_setup_data_template ve_setup_11_uncoupled={
+  2,
+  rate_mapping_11_uncoupled,
+  quality_mapping_11,
+  -1,
+  9000,
+  15000,
+  
+  blocksize_11,
+  blocksize_11,
+
+  _psy_tone_masteratt_11,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_11,
+  NULL,
+  _vp_tonemask_adj_11,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_11,
+  _psy_noisebias_11,
+  NULL,
+  NULL,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  NULL,
+
+  {_noise_start_8,_noise_start_8},
+  {_noise_part_8,_noise_part_8},
+  _noise_thresh_11,
+
+  _psy_ath_floater_8,
+  _psy_ath_abs_8,
+  
+  _psy_lowpass_11,
+
+  _psy_global_44,
+  _global_mapping_8,
+  _psy_stereo_modes_8,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_11,
+  NULL,
+
+  _mapres_template_8_uncoupled
+};
+
Index: /libvorbis-1.2.0/lib/modes/setup_16.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_16.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_16.h	(revision 16)
@@ -0,0 +1,149 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 16kHz settings 
+ last mod: $Id: setup_16.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "psych_16.h"
+#include "residue_16.h"
+
+static int blocksize_16_short[3]={
+  1024,512,512
+};
+static int blocksize_16_long[3]={
+  1024,1024,1024
+};
+
+static int _floor_mapping_16_short[3]={
+  9,3,3
+};
+static int _floor_mapping_16[3]={
+  9,9,9
+};
+
+static double rate_mapping_16[4]={
+  12000.,20000.,44000.,86000.
+};
+
+static double rate_mapping_16_uncoupled[4]={
+  16000.,28000.,64000.,100000.
+};
+
+static double _global_mapping_16[4]={ 1., 2., 3., 4. };
+
+static double quality_mapping_16[4]={ -.1,.05,.5,1. };
+
+static double _psy_compand_16_mapping[4]={ 0., .8, 1., 1.};
+
+ve_setup_data_template ve_setup_16_stereo={
+  3,
+  rate_mapping_16,
+  quality_mapping_16,
+  2,
+  15000,
+  19000,
+  
+  blocksize_16_short,
+  blocksize_16_long,
+
+  _psy_tone_masteratt_16,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+
+  _psy_noiseguards_16,
+  _psy_noisebias_16_impulse,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_16_mapping,
+  _psy_compand_16_mapping,
+
+  {_noise_start_16,_noise_start_16},
+  { _noise_part_16, _noise_part_16},
+  _noise_thresh_16,
+
+  _psy_ath_floater_16,
+  _psy_ath_abs_16,
+  
+  _psy_lowpass_16,
+
+  _psy_global_44,
+  _global_mapping_16,
+  _psy_stereo_modes_16,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_16_short,
+  _floor_mapping_16,
+
+  _mapres_template_16_stereo
+};
+
+ve_setup_data_template ve_setup_16_uncoupled={
+  3,
+  rate_mapping_16_uncoupled,
+  quality_mapping_16,
+  -1,
+  15000,
+  19000,
+  
+  blocksize_16_short,
+  blocksize_16_long,
+
+  _psy_tone_masteratt_16,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_16_impulse,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_16_mapping,
+  _psy_compand_16_mapping,
+
+  {_noise_start_16,_noise_start_16},
+  { _noise_part_16, _noise_part_16},
+  _noise_thresh_16,
+
+  _psy_ath_floater_16,
+  _psy_ath_abs_16,
+  
+  _psy_lowpass_16,
+
+  _psy_global_44,
+  _global_mapping_16,
+  _psy_stereo_modes_16,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_16_short,
+  _floor_mapping_16,
+
+  _mapres_template_16_uncoupled
+};
Index: /libvorbis-1.2.0/lib/modes/setup_22.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_22.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_22.h	(revision 16)
@@ -0,0 +1,128 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 22kHz settings 
+ last mod: $Id: setup_22.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+static double rate_mapping_22[4]={
+  15000.,20000.,44000.,86000.
+};
+
+static double rate_mapping_22_uncoupled[4]={
+  16000.,28000.,50000.,90000.
+};
+
+static double _psy_lowpass_22[4]={9.5,11.,30.,99.};
+
+ve_setup_data_template ve_setup_22_stereo={
+  3,
+  rate_mapping_22,
+  quality_mapping_16,
+  2,
+  19000,
+  26000,
+  
+  blocksize_16_short,
+  blocksize_16_long,
+
+  _psy_tone_masteratt_16,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+
+  _psy_noiseguards_16,
+  _psy_noisebias_16_impulse,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  _psy_compand_8_mapping,
+
+  {_noise_start_16,_noise_start_16},
+  { _noise_part_16, _noise_part_16},
+  _noise_thresh_16,
+
+  _psy_ath_floater_16,
+  _psy_ath_abs_16,
+  
+  _psy_lowpass_22,
+
+  _psy_global_44,
+  _global_mapping_16,
+  _psy_stereo_modes_16,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_16_short,
+  _floor_mapping_16,
+
+  _mapres_template_16_stereo
+};
+
+ve_setup_data_template ve_setup_22_uncoupled={
+  3,
+  rate_mapping_22_uncoupled,
+  quality_mapping_16,
+  -1,
+  19000,
+  26000,
+  
+  blocksize_16_short,
+  blocksize_16_long,
+
+  _psy_tone_masteratt_16,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+  _vp_tonemask_adj_16,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_16_impulse,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16_short,
+  _psy_noisebias_16,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  _psy_compand_8_mapping,
+
+  {_noise_start_16,_noise_start_16},
+  { _noise_part_16, _noise_part_16},
+  _noise_thresh_16,
+
+  _psy_ath_floater_16,
+  _psy_ath_abs_16,
+  
+  _psy_lowpass_22,
+
+  _psy_global_44,
+  _global_mapping_16,
+  _psy_stereo_modes_16,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_16_short,
+  _floor_mapping_16,
+
+  _mapres_template_16_uncoupled
+};
Index: /libvorbis-1.2.0/lib/modes/setup_32.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_32.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_32.h	(revision 16)
@@ -0,0 +1,132 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel settings for 32kHz
+ last mod: $Id: setup_32.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+static double rate_mapping_32[12]={
+  18000.,28000.,35000.,45000.,56000.,60000.,
+  75000.,90000.,100000.,115000.,150000.,190000.,
+};
+
+static double rate_mapping_32_un[12]={
+  30000.,42000.,52000.,64000.,72000.,78000.,
+  86000.,92000.,110000.,120000.,140000.,190000.,
+};
+
+static double _psy_lowpass_32[12]={
+  12.3,13.,13.,14.,15.,99.,99.,99.,99.,99.,99.,99.
+};
+
+ve_setup_data_template ve_setup_32_stereo={
+  11,
+  rate_mapping_32,
+  quality_mapping_44,
+  2,
+  26000,
+  40000,
+  
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+  
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+  
+  _psy_lowpass_32,
+
+  _psy_global_44,
+  _global_mapping_44,
+  _psy_stereo_modes_44,
+
+  _floor_books,
+  _floor,
+  _floor_short_mapping_44,
+  _floor_long_mapping_44,
+
+  _mapres_template_44_stereo
+};
+
+ve_setup_data_template ve_setup_32_uncoupled={
+  11,
+  rate_mapping_32_un,
+  quality_mapping_44,
+  -1,
+  26000,
+  40000,
+  
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+  
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+  
+  _psy_lowpass_32,
+
+  _psy_global_44,
+  _global_mapping_44,
+  NULL,
+
+  _floor_books,
+  _floor,
+  _floor_short_mapping_44,
+  _floor_long_mapping_44,
+
+  _mapres_template_44_uncoupled
+};
Index: /libvorbis-1.2.0/lib/modes/setup_44.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_44.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_44.h	(revision 16)
@@ -0,0 +1,107 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel settings for 44.1/48kHz
+ last mod: $Id: setup_44.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "modes/floor_all.h"
+#include "modes/residue_44.h"
+#include "modes/psych_44.h"
+
+static double rate_mapping_44_stereo[12]={
+  22500.,32000.,40000.,48000.,56000.,64000.,
+  80000.,96000.,112000.,128000.,160000.,250001.
+};
+
+static double quality_mapping_44[12]={
+  -.1,.0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0
+};
+
+static int blocksize_short_44[11]={
+  512,256,256,256,256,256,256,256,256,256,256
+};
+static int blocksize_long_44[11]={
+  4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048
+};
+
+static double _psy_compand_short_mapping[12]={
+  0.5, 1., 1., 1.3, 1.6, 2., 2., 2., 2., 2., 2., 2.
+};
+static double _psy_compand_long_mapping[12]={
+  3.5, 4., 4., 4.3, 4.6, 5., 5., 5., 5., 5., 5., 5.
+};
+
+static double _global_mapping_44[12]={
+  /* 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.5, 4., 4. */
+ 0., 1., 1., 1.5, 2., 2., 2.5, 2.7, 3.0, 3.7, 4., 4.
+};
+
+static int _floor_short_mapping_44[11]={
+  1,0,0,2,2,4,5,5,5,5,5
+};
+static int _floor_long_mapping_44[11]={
+  8,7,7,7,7,7,7,7,7,7,7
+};
+
+ve_setup_data_template ve_setup_44_stereo={
+  11,
+  rate_mapping_44_stereo,
+  quality_mapping_44,
+  2,
+  40000,
+  50000,
+  
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+  
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+  
+  _psy_lowpass_44,
+
+  _psy_global_44,
+  _global_mapping_44,
+  _psy_stereo_modes_44,
+
+  _floor_books,
+  _floor,
+  _floor_short_mapping_44,
+  _floor_long_mapping_44,
+
+  _mapres_template_44_stereo
+};
+
Index: /libvorbis-1.2.0/lib/modes/setup_44u.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_44u.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_44u.h	(revision 16)
@@ -0,0 +1,74 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: toplevel settings for 44.1/48kHz uncoupled modes
+ last mod: $Id: setup_44u.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "modes/residue_44u.h"
+
+static double rate_mapping_44_un[12]={
+  32000.,48000.,60000.,70000.,80000.,86000.,
+  96000.,110000.,120000.,140000.,160000.,240001.
+};
+
+ve_setup_data_template ve_setup_44_uncoupled={
+  11,
+  rate_mapping_44_un,
+  quality_mapping_44,
+  -1,
+  40000,
+  50000,
+  
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+  
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+  
+  _psy_lowpass_44,
+
+  _psy_global_44,
+  _global_mapping_44,
+  NULL,
+
+  _floor_books,
+  _floor,
+  _floor_short_mapping_44,
+  _floor_long_mapping_44,
+
+  _mapres_template_44_uncoupled
+};
Index: /libvorbis-1.2.0/lib/modes/setup_8.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_8.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_8.h	(revision 16)
@@ -0,0 +1,146 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: 8kHz settings 
+ last mod: $Id: setup_8.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "psych_8.h"
+#include "residue_8.h"
+
+static int blocksize_8[2]={
+  512,512
+};
+
+static int _floor_mapping_8[2]={
+  6,6,
+};
+
+static double rate_mapping_8[3]={
+  6000.,9000.,32000.,
+};
+
+static double rate_mapping_8_uncoupled[3]={
+  8000.,14000.,42000.,
+};
+
+static double quality_mapping_8[3]={
+  -.1,.0,1.
+};
+
+static double _psy_compand_8_mapping[3]={ 0., 1., 1.};
+
+static double _global_mapping_8[3]={ 1., 2., 3. };
+
+ve_setup_data_template ve_setup_8_stereo={
+  2,
+  rate_mapping_8,
+  quality_mapping_8,
+  2,
+  8000,
+  9000,
+  
+  blocksize_8,
+  blocksize_8,
+
+  _psy_tone_masteratt_8,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_8,
+  NULL,
+  _vp_tonemask_adj_8,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_8,
+  _psy_noisebias_8,
+  NULL,
+  NULL,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  NULL,
+
+  {_noise_start_8,_noise_start_8},
+  {_noise_part_8,_noise_part_8},
+  _noise_thresh_5only,
+
+  _psy_ath_floater_8,
+  _psy_ath_abs_8,
+  
+  _psy_lowpass_8,
+
+  _psy_global_44,
+  _global_mapping_8,
+  _psy_stereo_modes_8,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_8,
+  NULL,
+
+  _mapres_template_8_stereo
+};
+
+ve_setup_data_template ve_setup_8_uncoupled={
+  2,
+  rate_mapping_8_uncoupled,
+  quality_mapping_8,
+  -1,
+  8000,
+  9000,
+  
+  blocksize_8,
+  blocksize_8,
+
+  _psy_tone_masteratt_8,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_8,
+  NULL,
+  _vp_tonemask_adj_8,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_8,
+  _psy_noisebias_8,
+  NULL,
+  NULL,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  NULL,
+
+  {_noise_start_8,_noise_start_8},
+  {_noise_part_8,_noise_part_8},
+  _noise_thresh_5only,
+
+  _psy_ath_floater_8,
+  _psy_ath_abs_8,
+  
+  _psy_lowpass_8,
+
+  _psy_global_44,
+  _global_mapping_8,
+  _psy_stereo_modes_8,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_8,
+  NULL,
+
+  _mapres_template_8_uncoupled
+};
+
Index: /libvorbis-1.2.0/lib/modes/setup_X.h
===================================================================
--- /libvorbis-1.2.0/lib/modes/setup_X.h	(revision 16)
+++ /libvorbis-1.2.0/lib/modes/setup_X.h	(revision 16)
@@ -0,0 +1,226 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: catch-all toplevel settings for q modes only
+ last mod: $Id: setup_X.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+static double rate_mapping_X[12]={
+  -1.,-1.,-1.,-1.,-1.,-1.,
+  -1.,-1.,-1.,-1.,-1.,-1.
+};
+
+ve_setup_data_template ve_setup_X_stereo={
+  11,
+  rate_mapping_X,
+  quality_mapping_44,
+  2,
+  50000,
+  200000,
+  
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+  
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+  
+  _psy_lowpass_44,
+
+  _psy_global_44,
+  _global_mapping_44,
+  _psy_stereo_modes_44,
+
+  _floor_books,
+  _floor,
+  _floor_short_mapping_44,
+  _floor_long_mapping_44,
+
+  _mapres_template_44_stereo
+};
+
+ve_setup_data_template ve_setup_X_uncoupled={
+  11,
+  rate_mapping_X,
+  quality_mapping_44,
+  -1,
+  50000,
+  200000,
+  
+  blocksize_short_44,
+  blocksize_long_44,
+
+  _psy_tone_masteratt_44,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_otherblock,
+  _vp_tonemask_adj_longblock,
+  _vp_tonemask_adj_otherblock,
+
+  _psy_noiseguards_44,
+  _psy_noisebias_impulse,
+  _psy_noisebias_padding,
+  _psy_noisebias_trans,
+  _psy_noisebias_long,
+  _psy_noise_suppress,
+  
+  _psy_compand_44,
+  _psy_compand_short_mapping,
+  _psy_compand_long_mapping,
+
+  {_noise_start_short_44,_noise_start_long_44},
+  {_noise_part_short_44,_noise_part_long_44},
+  _noise_thresh_44,
+
+  _psy_ath_floater,
+  _psy_ath_abs,
+  
+  _psy_lowpass_44,
+
+  _psy_global_44,
+  _global_mapping_44,
+  NULL,
+
+  _floor_books,
+  _floor,
+  _floor_short_mapping_44,
+  _floor_long_mapping_44,
+
+  _mapres_template_44_uncoupled
+};
+
+ve_setup_data_template ve_setup_XX_stereo={
+  2,
+  rate_mapping_X,
+  quality_mapping_8,
+  2,
+  0,
+  8000,
+  
+  blocksize_8,
+  blocksize_8,
+
+  _psy_tone_masteratt_8,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_8,
+  NULL,
+  _vp_tonemask_adj_8,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_8,
+  _psy_noisebias_8,
+  NULL,
+  NULL,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  NULL,
+
+  {_noise_start_8,_noise_start_8},
+  {_noise_part_8,_noise_part_8},
+  _noise_thresh_5only,
+
+  _psy_ath_floater_8,
+  _psy_ath_abs_8,
+  
+  _psy_lowpass_8,
+
+  _psy_global_44,
+  _global_mapping_8,
+  _psy_stereo_modes_8,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_8,
+  NULL,
+
+  _mapres_template_8_stereo
+};
+
+ve_setup_data_template ve_setup_XX_uncoupled={
+  2,
+  rate_mapping_X,
+  quality_mapping_8,
+  -1,
+  0,
+  8000,
+  
+  blocksize_8,
+  blocksize_8,
+
+  _psy_tone_masteratt_8,
+  _psy_tone_0dB,
+  _psy_tone_suppress,
+
+  _vp_tonemask_adj_8,
+  NULL,
+  _vp_tonemask_adj_8,
+
+  _psy_noiseguards_8,
+  _psy_noisebias_8,
+  _psy_noisebias_8,
+  NULL,
+  NULL,
+  _psy_noise_suppress,
+  
+  _psy_compand_8,
+  _psy_compand_8_mapping,
+  NULL,
+
+  {_noise_start_8,_noise_start_8},
+  {_noise_part_8,_noise_part_8},
+  _noise_thresh_5only,
+
+  _psy_ath_floater_8,
+  _psy_ath_abs_8,
+  
+  _psy_lowpass_8,
+
+  _psy_global_44,
+  _global_mapping_8,
+  _psy_stereo_modes_8,
+
+  _floor_books,
+  _floor,
+  _floor_mapping_8,
+  NULL,
+
+  _mapres_template_8_uncoupled
+};
+
Index: /libvorbis-1.2.0/lib/os.h
===================================================================
--- /libvorbis-1.2.0/lib/os.h	(revision 16)
+++ /libvorbis-1.2.0/lib/os.h	(revision 16)
@@ -0,0 +1,156 @@
+#ifndef _OS_H
+#define _OS_H
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+ last mod: $Id: os.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <math.h>
+#include <ogg/os_types.h>
+
+#include "misc.h"
+
+#ifndef _V_IFDEFJAIL_H_
+#  define _V_IFDEFJAIL_H_
+
+#  ifdef __GNUC__
+#    define STIN static __inline__
+#  elif _WIN32
+#    define STIN static __inline
+#  else
+#    define STIN static
+#  endif
+
+#ifdef DJGPP
+#  define rint(x)   (floor((x)+0.5f))
+#endif
+
+#ifndef M_PI
+#  define M_PI (3.1415926536f)
+#endif
+
+#if defined(_WIN32) && !defined(__SYMBIAN32__)
+#  include <malloc.h>
+#  define rint(x)   (floor((x)+0.5f)) 
+#  define NO_FLOAT_MATH_LIB
+#  define FAST_HYPOT(a, b) sqrt((a)*(a) + (b)*(b))
+#endif
+
+#if defined(__SYMBIAN32__) && defined(__WINS__)
+void *_alloca(size_t size);
+#  define alloca _alloca
+#endif
+
+#ifndef FAST_HYPOT
+#  define FAST_HYPOT hypot
+#endif
+
+#endif
+
+#ifdef HAVE_ALLOCA_H
+#  include <alloca.h>
+#endif
+
+#ifdef USE_MEMORY_H
+#  include <memory.h>
+#endif
+
+#ifndef min
+#  define min(x,y)  ((x)>(y)?(y):(x))
+#endif
+
+#ifndef max
+#  define max(x,y)  ((x)<(y)?(y):(x))
+#endif
+
+#if defined(__i386__) && defined(__GNUC__) && !defined(__BEOS__)
+#  define VORBIS_FPU_CONTROL
+/* both GCC and MSVC are kinda stupid about rounding/casting to int.
+   Because of encapsulation constraints (GCC can't see inside the asm
+   block and so we end up doing stupid things like a store/load that
+   is collectively a noop), we do it this way */
+
+/* we must set up the fpu before this works!! */
+
+typedef ogg_int16_t vorbis_fpu_control;
+
+static inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
+  ogg_int16_t ret;
+  ogg_int16_t temp;
+  __asm__ __volatile__("fnstcw %0\n\t"
+	  "movw %0,%%dx\n\t"
+	  "orw $62463,%%dx\n\t"
+	  "movw %%dx,%1\n\t"
+	  "fldcw %1\n\t":"=m"(ret):"m"(temp): "dx");
+  *fpu=ret;
+}
+
+static inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
+  __asm__ __volatile__("fldcw %0":: "m"(fpu));
+}
+
+/* assumes the FPU is in round mode! */
+static inline int vorbis_ftoi(double f){  /* yes, double!  Otherwise,
+                                             we get extra fst/fld to
+                                             truncate precision */
+  int i;
+  __asm__("fistl %0": "=m"(i) : "t"(f));
+  return(i);
+}
+#endif
+
+
+#if defined(_WIN32) && !defined(__GNUC__) && !defined(__BORLANDC__)
+#  define VORBIS_FPU_CONTROL
+
+typedef ogg_int16_t vorbis_fpu_control;
+
+static __inline int vorbis_ftoi(double f){
+	int i;
+	__asm{
+		fld f
+		fistp i
+	}
+	return i;
+}
+
+static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){
+}
+
+static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){
+}
+
+#endif
+
+
+#ifndef VORBIS_FPU_CONTROL
+
+typedef int vorbis_fpu_control;
+
+static int vorbis_ftoi(double f){
+  return (int)(f+.5);
+}
+
+/* We don't have special code for this compiler/arch, so do it the slow way */
+#  define vorbis_fpu_setround(vorbis_fpu_control) {}
+#  define vorbis_fpu_restore(vorbis_fpu_control) {}
+
+#endif
+
+#endif /* _OS_H */
Index: /libvorbis-1.2.0/lib/psy.c
===================================================================
--- /libvorbis-1.2.0/lib/psy.c	(revision 16)
+++ /libvorbis-1.2.0/lib/psy.c	(revision 16)
@@ -0,0 +1,1227 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: psychoacoustics not including preecho
+ last mod: $Id: psy.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+
+#include "masking.h"
+#include "psy.h"
+#include "os.h"
+#include "lpc.h"
+#include "smallft.h"
+#include "scales.h"
+#include "misc.h"
+
+#define NEGINF -9999.f
+static double stereo_threshholds[]={0.0, .5, 1.0, 1.5, 2.5, 4.5, 8.5, 16.5, 9e10};
+static double stereo_threshholds_limited[]={0.0, .5, 1.0, 1.5, 2.0, 2.5, 4.5, 8.5, 9e10};
+
+vorbis_look_psy_global *_vp_global_look(vorbis_info *vi){
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy_global *gi=&ci->psy_g_param;
+  vorbis_look_psy_global *look=_ogg_calloc(1,sizeof(*look));
+
+  look->channels=vi->channels;
+
+  look->ampmax=-9999.;
+  look->gi=gi;
+  return(look);
+}
+
+void _vp_global_free(vorbis_look_psy_global *look){
+  if(look){
+    memset(look,0,sizeof(*look));
+    _ogg_free(look);
+  }
+}
+
+void _vi_gpsy_free(vorbis_info_psy_global *i){
+  if(i){
+    memset(i,0,sizeof(*i));
+    _ogg_free(i);
+  }
+}
+
+void _vi_psy_free(vorbis_info_psy *i){
+  if(i){
+    memset(i,0,sizeof(*i));
+    _ogg_free(i);
+  }
+}
+
+static void min_curve(float *c,
+		       float *c2){
+  int i;  
+  for(i=0;i<EHMER_MAX;i++)if(c2[i]<c[i])c[i]=c2[i];
+}
+static void max_curve(float *c,
+		       float *c2){
+  int i;  
+  for(i=0;i<EHMER_MAX;i++)if(c2[i]>c[i])c[i]=c2[i];
+}
+
+static void attenuate_curve(float *c,float att){
+  int i;
+  for(i=0;i<EHMER_MAX;i++)
+    c[i]+=att;
+}
+
+static float ***setup_tone_curves(float curveatt_dB[P_BANDS],float binHz,int n,
+				  float center_boost, float center_decay_rate){
+  int i,j,k,m;
+  float ath[EHMER_MAX];
+  float workc[P_BANDS][P_LEVELS][EHMER_MAX];
+  float athc[P_LEVELS][EHMER_MAX];
+  float *brute_buffer=alloca(n*sizeof(*brute_buffer));
+
+  float ***ret=_ogg_malloc(sizeof(*ret)*P_BANDS);
+
+  memset(workc,0,sizeof(workc));
+
+  for(i=0;i<P_BANDS;i++){
+    /* we add back in the ATH to avoid low level curves falling off to
+       -infinity and unnecessarily cutting off high level curves in the
+       curve limiting (last step). */
+
+    /* A half-band's settings must be valid over the whole band, and
+       it's better to mask too little than too much */  
+    int ath_offset=i*4;
+    for(j=0;j<EHMER_MAX;j++){
+      float min=999.;
+      for(k=0;k<4;k++)
+	if(j+k+ath_offset<MAX_ATH){
+	  if(min>ATH[j+k+ath_offset])min=ATH[j+k+ath_offset];
+	}else{
+	  if(min>ATH[MAX_ATH-1])min=ATH[MAX_ATH-1];
+	}
+      ath[j]=min;
+    }
+
+    /* copy curves into working space, replicate the 50dB curve to 30
+       and 40, replicate the 100dB curve to 110 */
+    for(j=0;j<6;j++)
+      memcpy(workc[i][j+2],tonemasks[i][j],EHMER_MAX*sizeof(*tonemasks[i][j]));
+    memcpy(workc[i][0],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
+    memcpy(workc[i][1],tonemasks[i][0],EHMER_MAX*sizeof(*tonemasks[i][0]));
+    
+    /* apply centered curve boost/decay */
+    for(j=0;j<P_LEVELS;j++){
+      for(k=0;k<EHMER_MAX;k++){
+	float adj=center_boost+abs(EHMER_OFFSET-k)*center_decay_rate;
+	if(adj<0. && center_boost>0)adj=0.;
+	if(adj>0. && center_boost<0)adj=0.;
+	workc[i][j][k]+=adj;
+      }
+    }
+
+    /* normalize curves so the driving amplitude is 0dB */
+    /* make temp curves with the ATH overlayed */
+    for(j=0;j<P_LEVELS;j++){
+      attenuate_curve(workc[i][j],curveatt_dB[i]+100.-(j<2?2:j)*10.-P_LEVEL_0);
+      memcpy(athc[j],ath,EHMER_MAX*sizeof(**athc));
+      attenuate_curve(athc[j],+100.-j*10.f-P_LEVEL_0);
+      max_curve(athc[j],workc[i][j]);
+    }
+
+    /* Now limit the louder curves.
+       
+       the idea is this: We don't know what the playback attenuation
+       will be; 0dB SL moves every time the user twiddles the volume
+       knob. So that means we have to use a single 'most pessimal' curve
+       for all masking amplitudes, right?  Wrong.  The *loudest* sound
+       can be in (we assume) a range of ...+100dB] SL.  However, sounds
+       20dB down will be in a range ...+80], 40dB down is from ...+60],
+       etc... */
+    
+    for(j=1;j<P_LEVELS;j++){
+      min_curve(athc[j],athc[j-1]);
+      min_curve(workc[i][j],athc[j]);
+    }
+  }
+
+  for(i=0;i<P_BANDS;i++){
+    int hi_curve,lo_curve,bin;
+    ret[i]=_ogg_malloc(sizeof(**ret)*P_LEVELS);
+
+    /* low frequency curves are measured with greater resolution than
+       the MDCT/FFT will actually give us; we want the curve applied
+       to the tone data to be pessimistic and thus apply the minimum
+       masking possible for a given bin.  That means that a single bin
+       could span more than one octave and that the curve will be a
+       composite of multiple octaves.  It also may mean that a single
+       bin may span > an eighth of an octave and that the eighth
+       octave values may also be composited. */
+    
+    /* which octave curves will we be compositing? */
+    bin=floor(fromOC(i*.5)/binHz);
+    lo_curve=  ceil(toOC(bin*binHz+1)*2);
+    hi_curve=  floor(toOC((bin+1)*binHz)*2);
+    if(lo_curve>i)lo_curve=i;
+    if(lo_curve<0)lo_curve=0;
+    if(hi_curve>=P_BANDS)hi_curve=P_BANDS-1;
+
+    for(m=0;m<P_LEVELS;m++){
+      ret[i][m]=_ogg_malloc(sizeof(***ret)*(EHMER_MAX+2));
+      
+      for(j=0;j<n;j++)brute_buffer[j]=999.;
+      
+      /* render the curve into bins, then pull values back into curve.
+	 The point is that any inherent subsampling aliasing results in
+	 a safe minimum */
+      for(k=lo_curve;k<=hi_curve;k++){
+	int l=0;
+
+	for(j=0;j<EHMER_MAX;j++){
+	  int lo_bin= fromOC(j*.125+k*.5-2.0625)/binHz;
+	  int hi_bin= fromOC(j*.125+k*.5-1.9375)/binHz+1;
+	  
+	  if(lo_bin<0)lo_bin=0;
+	  if(lo_bin>n)lo_bin=n;
+	  if(lo_bin<l)l=lo_bin;
+	  if(hi_bin<0)hi_bin=0;
+	  if(hi_bin>n)hi_bin=n;
+
+	  for(;l<hi_bin && l<n;l++)
+	    if(brute_buffer[l]>workc[k][m][j])
+	      brute_buffer[l]=workc[k][m][j];
+	}
+
+	for(;l<n;l++)
+	  if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
+	    brute_buffer[l]=workc[k][m][EHMER_MAX-1];
+
+      }
+
+      /* be equally paranoid about being valid up to next half ocatve */
+      if(i+1<P_BANDS){
+	int l=0;
+	k=i+1;
+	for(j=0;j<EHMER_MAX;j++){
+	  int lo_bin= fromOC(j*.125+i*.5-2.0625)/binHz;
+	  int hi_bin= fromOC(j*.125+i*.5-1.9375)/binHz+1;
+	  
+	  if(lo_bin<0)lo_bin=0;
+	  if(lo_bin>n)lo_bin=n;
+	  if(lo_bin<l)l=lo_bin;
+	  if(hi_bin<0)hi_bin=0;
+	  if(hi_bin>n)hi_bin=n;
+
+	  for(;l<hi_bin && l<n;l++)
+	    if(brute_buffer[l]>workc[k][m][j])
+	      brute_buffer[l]=workc[k][m][j];
+	}
+
+	for(;l<n;l++)
+	  if(brute_buffer[l]>workc[k][m][EHMER_MAX-1])
+	    brute_buffer[l]=workc[k][m][EHMER_MAX-1];
+
+      }
+
+
+      for(j=0;j<EHMER_MAX;j++){
+	int bin=fromOC(j*.125+i*.5-2.)/binHz;
+	if(bin<0){
+	  ret[i][m][j+2]=-999.;
+	}else{
+	  if(bin>=n){
+	    ret[i][m][j+2]=-999.;
+	  }else{
+	    ret[i][m][j+2]=brute_buffer[bin];
+	  }
+	}
+      }
+
+      /* add fenceposts */
+      for(j=0;j<EHMER_OFFSET;j++)
+	if(ret[i][m][j+2]>-200.f)break;  
+      ret[i][m][0]=j;
+      
+      for(j=EHMER_MAX-1;j>EHMER_OFFSET+1;j--)
+	if(ret[i][m][j+2]>-200.f)
+	  break;
+      ret[i][m][1]=j;
+
+    }
+  }
+
+  return(ret);
+}
+
+void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
+		  vorbis_info_psy_global *gi,int n,long rate){
+  long i,j,lo=-99,hi=1;
+  long maxoc;
+  memset(p,0,sizeof(*p));
+
+  p->eighth_octave_lines=gi->eighth_octave_lines;
+  p->shiftoc=rint(log(gi->eighth_octave_lines*8.f)/log(2.f))-1;
+
+  p->firstoc=toOC(.25f*rate*.5/n)*(1<<(p->shiftoc+1))-gi->eighth_octave_lines;
+  maxoc=toOC((n+.25f)*rate*.5/n)*(1<<(p->shiftoc+1))+.5f;
+  p->total_octave_lines=maxoc-p->firstoc+1;
+  p->ath=_ogg_malloc(n*sizeof(*p->ath));
+
+  p->octave=_ogg_malloc(n*sizeof(*p->octave));
+  p->bark=_ogg_malloc(n*sizeof(*p->bark));
+  p->vi=vi;
+  p->n=n;
+  p->rate=rate;
+
+  /* AoTuV HF weighting */
+  p->m_val = 1.;
+  if(rate < 26000) p->m_val = 0;
+  else if(rate < 38000) p->m_val = .94;   /* 32kHz */
+  else if(rate > 46000) p->m_val = 1.275; /* 48kHz */
+  
+  /* set up the lookups for a given blocksize and sample rate */
+
+  for(i=0,j=0;i<MAX_ATH-1;i++){
+    int endpos=rint(fromOC((i+1)*.125-2.)*2*n/rate);
+    float base=ATH[i];
+    if(j<endpos){
+      float delta=(ATH[i+1]-base)/(endpos-j);
+      for(;j<endpos && j<n;j++){
+        p->ath[j]=base+100.;
+        base+=delta;
+      }
+    }
+  }
+
+  for(i=0;i<n;i++){
+    float bark=toBARK(rate/(2*n)*i); 
+
+    for(;lo+vi->noisewindowlomin<i && 
+	  toBARK(rate/(2*n)*lo)<(bark-vi->noisewindowlo);lo++);
+    
+    for(;hi<=n && (hi<i+vi->noisewindowhimin ||
+	  toBARK(rate/(2*n)*hi)<(bark+vi->noisewindowhi));hi++);
+    
+    p->bark[i]=((lo-1)<<16)+(hi-1);
+
+  }
+
+  for(i=0;i<n;i++)
+    p->octave[i]=toOC((i+.25f)*.5*rate/n)*(1<<(p->shiftoc+1))+.5f;
+
+  p->tonecurves=setup_tone_curves(vi->toneatt,rate*.5/n,n,
+				  vi->tone_centerboost,vi->tone_decay);
+  
+  /* set up rolling noise median */
+  p->noiseoffset=_ogg_malloc(P_NOISECURVES*sizeof(*p->noiseoffset));
+  for(i=0;i<P_NOISECURVES;i++)
+    p->noiseoffset[i]=_ogg_malloc(n*sizeof(**p->noiseoffset));
+  
+  for(i=0;i<n;i++){
+    float halfoc=toOC((i+.5)*rate/(2.*n))*2.;
+    int inthalfoc;
+    float del;
+    
+    if(halfoc<0)halfoc=0;
+    if(halfoc>=P_BANDS-1)halfoc=P_BANDS-1;
+    inthalfoc=(int)halfoc;
+    del=halfoc-inthalfoc;
+    
+    for(j=0;j<P_NOISECURVES;j++)
+      p->noiseoffset[j][i]=
+	p->vi->noiseoff[j][inthalfoc]*(1.-del) + 
+	p->vi->noiseoff[j][inthalfoc+1]*del;
+    
+  }
+#if 0
+  {
+    static int ls=0;
+    _analysis_output_always("noiseoff0",ls,p->noiseoffset[0],n,1,0,0);
+    _analysis_output_always("noiseoff1",ls,p->noiseoffset[1],n,1,0,0);
+    _analysis_output_always("noiseoff2",ls++,p->noiseoffset[2],n,1,0,0);
+  }
+#endif
+}
+
+void _vp_psy_clear(vorbis_look_psy *p){
+  int i,j;
+  if(p){
+    if(p->ath)_ogg_free(p->ath);
+    if(p->octave)_ogg_free(p->octave);
+    if(p->bark)_ogg_free(p->bark);
+    if(p->tonecurves){
+      for(i=0;i<P_BANDS;i++){
+	for(j=0;j<P_LEVELS;j++){
+	  _ogg_free(p->tonecurves[i][j]);
+	}
+	_ogg_free(p->tonecurves[i]);
+      }
+      _ogg_free(p->tonecurves);
+    }
+    if(p->noiseoffset){
+      for(i=0;i<P_NOISECURVES;i++){
+        _ogg_free(p->noiseoffset[i]);
+      }
+      _ogg_free(p->noiseoffset);
+    }
+    memset(p,0,sizeof(*p));
+  }
+}
+
+/* octave/(8*eighth_octave_lines) x scale and dB y scale */
+static void seed_curve(float *seed,
+		       const float **curves,
+		       float amp,
+		       int oc, int n,
+		       int linesper,float dBoffset){
+  int i,post1;
+  int seedptr;
+  const float *posts,*curve;
+
+  int choice=(int)((amp+dBoffset-P_LEVEL_0)*.1f);
+  choice=max(choice,0);
+  choice=min(choice,P_LEVELS-1);
+  posts=curves[choice];
+  curve=posts+2;
+  post1=(int)posts[1];
+  seedptr=oc+(posts[0]-EHMER_OFFSET)*linesper-(linesper>>1);
+
+  for(i=posts[0];i<post1;i++){
+    if(seedptr>0){
+      float lin=amp+curve[i];
+      if(seed[seedptr]<lin)seed[seedptr]=lin;
+    }
+    seedptr+=linesper;
+    if(seedptr>=n)break;
+  }
+}
+
+static void seed_loop(vorbis_look_psy *p,
+		      const float ***curves,
+		      const float *f, 
+		      const float *flr,
+		      float *seed,
+		      float specmax){
+  vorbis_info_psy *vi=p->vi;
+  long n=p->n,i;
+  float dBoffset=vi->max_curve_dB-specmax;
+
+  /* prime the working vector with peak values */
+
+  for(i=0;i<n;i++){
+    float max=f[i];
+    long oc=p->octave[i];
+    while(i+1<n && p->octave[i+1]==oc){
+      i++;
+      if(f[i]>max)max=f[i];
+    }
+    
+    if(max+6.f>flr[i]){
+      oc=oc>>p->shiftoc;
+
+      if(oc>=P_BANDS)oc=P_BANDS-1;
+      if(oc<0)oc=0;
+
+      seed_curve(seed,
+		 curves[oc],
+		 max,
+		 p->octave[i]-p->firstoc,
+		 p->total_octave_lines,
+		 p->eighth_octave_lines,
+		 dBoffset);
+    }
+  }
+}
+
+static void seed_chase(float *seeds, int linesper, long n){
+  long  *posstack=alloca(n*sizeof(*posstack));
+  float *ampstack=alloca(n*sizeof(*ampstack));
+  long   stack=0;
+  long   pos=0;
+  long   i;
+
+  for(i=0;i<n;i++){
+    if(stack<2){
+      posstack[stack]=i;
+      ampstack[stack++]=seeds[i];
+    }else{
+      while(1){
+	if(seeds[i]<ampstack[stack-1]){
+	  posstack[stack]=i;
+	  ampstack[stack++]=seeds[i];
+	  break;
+	}else{
+	  if(i<posstack[stack-1]+linesper){
+	    if(stack>1 && ampstack[stack-1]<=ampstack[stack-2] &&
+	       i<posstack[stack-2]+linesper){
+	      /* we completely overlap, making stack-1 irrelevant.  pop it */
+	      stack--;
+	      continue;
+	    }
+	  }
+	  posstack[stack]=i;
+	  ampstack[stack++]=seeds[i];
+	  break;
+
+	}
+      }
+    }
+  }
+
+  /* the stack now contains only the positions that are relevant. Scan
+     'em straight through */
+
+  for(i=0;i<stack;i++){
+    long endpos;
+    if(i<stack-1 && ampstack[i+1]>ampstack[i]){
+      endpos=posstack[i+1];
+    }else{
+      endpos=posstack[i]+linesper+1; /* +1 is important, else bin 0 is
+					discarded in short frames */
+    }
+    if(endpos>n)endpos=n;
+    for(;pos<endpos;pos++)
+      seeds[pos]=ampstack[i];
+  }
+  
+  /* there.  Linear time.  I now remember this was on a problem set I
+     had in Grad Skool... I didn't solve it at the time ;-) */
+
+}
+
+/* bleaugh, this is more complicated than it needs to be */
+#include<stdio.h>
+static void max_seeds(vorbis_look_psy *p,
+		      float *seed,
+		      float *flr){
+  long   n=p->total_octave_lines;
+  int    linesper=p->eighth_octave_lines;
+  long   linpos=0;
+  long   pos;
+
+  seed_chase(seed,linesper,n); /* for masking */
+ 
+  pos=p->octave[0]-p->firstoc-(linesper>>1);
+
+  while(linpos+1<p->n){
+    float minV=seed[pos];
+    long end=((p->octave[linpos]+p->octave[linpos+1])>>1)-p->firstoc;
+    if(minV>p->vi->tone_abs_limit)minV=p->vi->tone_abs_limit;
+    while(pos+1<=end){
+      pos++;
+      if((seed[pos]>NEGINF && seed[pos]<minV) || minV==NEGINF)
+	minV=seed[pos];
+    }
+    
+    end=pos+p->firstoc;
+    for(;linpos<p->n && p->octave[linpos]<=end;linpos++)
+      if(flr[linpos]<minV)flr[linpos]=minV;
+  }
+  
+  {
+    float minV=seed[p->total_octave_lines-1];
+    for(;linpos<p->n;linpos++)
+      if(flr[linpos]<minV)flr[linpos]=minV;
+  }
+  
+}
+
+static void bark_noise_hybridmp(int n,const long *b,
+                                const float *f,
+                                float *noise,
+                                const float offset,
+                                const int fixed){
+  
+  float *N=alloca(n*sizeof(*N));
+  float *X=alloca(n*sizeof(*N));
+  float *XX=alloca(n*sizeof(*N));
+  float *Y=alloca(n*sizeof(*N));
+  float *XY=alloca(n*sizeof(*N));
+
+  float tN, tX, tXX, tY, tXY;
+  int i;
+
+  int lo, hi;
+  float R=0.f;
+  float A=0.f;
+  float B=0.f;
+  float D=1.f;
+  float w, x, y;
+
+  tN = tX = tXX = tY = tXY = 0.f;
+
+  y = f[0] + offset;
+  if (y < 1.f) y = 1.f;
+
+  w = y * y * .5;
+    
+  tN += w;
+  tX += w;
+  tY += w * y;
+
+  N[0] = tN;
+  X[0] = tX;
+  XX[0] = tXX;
+  Y[0] = tY;
+  XY[0] = tXY;
+
+  for (i = 1, x = 1.f; i < n; i++, x += 1.f) {
+    
+    y = f[i] + offset;
+    if (y < 1.f) y = 1.f;
+
+    w = y * y;
+    
+    tN += w;
+    tX += w * x;
+    tXX += w * x * x;
+    tY += w * y;
+    tXY += w * x * y;
+
+    N[i] = tN;
+    X[i] = tX;
+    XX[i] = tXX;
+    Y[i] = tY;
+    XY[i] = tXY;
+  }
+  
+  for (i = 0, x = 0.f;; i++, x += 1.f) {
+    
+    lo = b[i] >> 16;
+    if( lo>=0 ) break;
+    hi = b[i] & 0xffff;
+    
+    tN = N[hi] + N[-lo];
+    tX = X[hi] - X[-lo];
+    tXX = XX[hi] + XX[-lo];
+    tY = Y[hi] + Y[-lo];    
+    tXY = XY[hi] - XY[-lo];
+    
+    A = tY * tXX - tX * tXY;
+    B = tN * tXY - tX * tY;
+    D = tN * tXX - tX * tX;
+    R = (A + x * B) / D;
+    if (R < 0.f)
+      R = 0.f;
+    
+    noise[i] = R - offset;
+  }
+  
+  for ( ;; i++, x += 1.f) {
+    
+    lo = b[i] >> 16;
+    hi = b[i] & 0xffff;
+    if(hi>=n)break;
+    
+    tN = N[hi] - N[lo];
+    tX = X[hi] - X[lo];
+    tXX = XX[hi] - XX[lo];
+    tY = Y[hi] - Y[lo];
+    tXY = XY[hi] - XY[lo];
+    
+    A = tY * tXX - tX * tXY;
+    B = tN * tXY - tX * tY;
+    D = tN * tXX - tX * tX;
+    R = (A + x * B) / D;
+    if (R < 0.f) R = 0.f;
+    
+    noise[i] = R - offset;
+  }
+  for ( ; i < n; i++, x += 1.f) {
+    
+    R = (A + x * B) / D;
+    if (R < 0.f) R = 0.f;
+    
+    noise[i] = R - offset;
+  }
+  
+  if (fixed <= 0) return;
+  
+  for (i = 0, x = 0.f;; i++, x += 1.f) {
+    hi = i + fixed / 2;
+    lo = hi - fixed;
+    if(lo>=0)break;
+
+    tN = N[hi] + N[-lo];
+    tX = X[hi] - X[-lo];
+    tXX = XX[hi] + XX[-lo];
+    tY = Y[hi] + Y[-lo];
+    tXY = XY[hi] - XY[-lo];
+    
+    
+    A = tY * tXX - tX * tXY;
+    B = tN * tXY - tX * tY;
+    D = tN * tXX - tX * tX;
+    R = (A + x * B) / D;
+
+    if (R - offset < noise[i]) noise[i] = R - offset;
+  }
+  for ( ;; i++, x += 1.f) {
+    
+    hi = i + fixed / 2;
+    lo = hi - fixed;
+    if(hi>=n)break;
+    
+    tN = N[hi] - N[lo];
+    tX = X[hi] - X[lo];
+    tXX = XX[hi] - XX[lo];
+    tY = Y[hi] - Y[lo];
+    tXY = XY[hi] - XY[lo];
+    
+    A = tY * tXX - tX * tXY;
+    B = tN * tXY - tX * tY;
+    D = tN * tXX - tX * tX;
+    R = (A + x * B) / D;
+    
+    if (R - offset < noise[i]) noise[i] = R - offset;
+  }
+  for ( ; i < n; i++, x += 1.f) {
+    R = (A + x * B) / D;
+    if (R - offset < noise[i]) noise[i] = R - offset;
+  }
+}
+
+static float FLOOR1_fromdB_INV_LOOKUP[256]={
+  0.F, 8.81683e+06F, 8.27882e+06F, 7.77365e+06F, 
+  7.29930e+06F, 6.85389e+06F, 6.43567e+06F, 6.04296e+06F, 
+  5.67422e+06F, 5.32798e+06F, 5.00286e+06F, 4.69759e+06F, 
+  4.41094e+06F, 4.14178e+06F, 3.88905e+06F, 3.65174e+06F, 
+  3.42891e+06F, 3.21968e+06F, 3.02321e+06F, 2.83873e+06F, 
+  2.66551e+06F, 2.50286e+06F, 2.35014e+06F, 2.20673e+06F, 
+  2.07208e+06F, 1.94564e+06F, 1.82692e+06F, 1.71544e+06F, 
+  1.61076e+06F, 1.51247e+06F, 1.42018e+06F, 1.33352e+06F, 
+  1.25215e+06F, 1.17574e+06F, 1.10400e+06F, 1.03663e+06F, 
+  973377.F, 913981.F, 858210.F, 805842.F, 
+  756669.F, 710497.F, 667142.F, 626433.F, 
+  588208.F, 552316.F, 518613.F, 486967.F, 
+  457252.F, 429351.F, 403152.F, 378551.F, 
+  355452.F, 333762.F, 313396.F, 294273.F, 
+  276316.F, 259455.F, 243623.F, 228757.F, 
+  214798.F, 201691.F, 189384.F, 177828.F, 
+  166977.F, 156788.F, 147221.F, 138237.F, 
+  129802.F, 121881.F, 114444.F, 107461.F, 
+  100903.F, 94746.3F, 88964.9F, 83536.2F, 
+  78438.8F, 73652.5F, 69158.2F, 64938.1F, 
+  60975.6F, 57254.9F, 53761.2F, 50480.6F, 
+  47400.3F, 44507.9F, 41792.0F, 39241.9F, 
+  36847.3F, 34598.9F, 32487.7F, 30505.3F, 
+  28643.8F, 26896.0F, 25254.8F, 23713.7F, 
+  22266.7F, 20908.0F, 19632.2F, 18434.2F, 
+  17309.4F, 16253.1F, 15261.4F, 14330.1F, 
+  13455.7F, 12634.6F, 11863.7F, 11139.7F, 
+  10460.0F, 9821.72F, 9222.39F, 8659.64F, 
+  8131.23F, 7635.06F, 7169.17F, 6731.70F, 
+  6320.93F, 5935.23F, 5573.06F, 5232.99F, 
+  4913.67F, 4613.84F, 4332.30F, 4067.94F, 
+  3819.72F, 3586.64F, 3367.78F, 3162.28F, 
+  2969.31F, 2788.13F, 2617.99F, 2458.24F, 
+  2308.24F, 2167.39F, 2035.14F, 1910.95F, 
+  1794.35F, 1684.85F, 1582.04F, 1485.51F, 
+  1394.86F, 1309.75F, 1229.83F, 1154.78F, 
+  1084.32F, 1018.15F, 956.024F, 897.687F, 
+  842.910F, 791.475F, 743.179F, 697.830F, 
+  655.249F, 615.265F, 577.722F, 542.469F, 
+  509.367F, 478.286F, 449.101F, 421.696F, 
+  395.964F, 371.803F, 349.115F, 327.812F, 
+  307.809F, 289.026F, 271.390F, 254.830F, 
+  239.280F, 224.679F, 210.969F, 198.096F, 
+  186.008F, 174.658F, 164.000F, 153.993F, 
+  144.596F, 135.773F, 127.488F, 119.708F, 
+  112.404F, 105.545F, 99.1046F, 93.0572F, 
+  87.3788F, 82.0469F, 77.0404F, 72.3394F, 
+  67.9252F, 63.7804F, 59.8885F, 56.2341F, 
+  52.8027F, 49.5807F, 46.5553F, 43.7144F, 
+  41.0470F, 38.5423F, 36.1904F, 33.9821F, 
+  31.9085F, 29.9614F, 28.1332F, 26.4165F, 
+  24.8045F, 23.2910F, 21.8697F, 20.5352F, 
+  19.2822F, 18.1056F, 17.0008F, 15.9634F, 
+  14.9893F, 14.0746F, 13.2158F, 12.4094F, 
+  11.6522F, 10.9411F, 10.2735F, 9.64662F, 
+  9.05798F, 8.50526F, 7.98626F, 7.49894F, 
+  7.04135F, 6.61169F, 6.20824F, 5.82941F, 
+  5.47370F, 5.13970F, 4.82607F, 4.53158F, 
+  4.25507F, 3.99542F, 3.75162F, 3.52269F, 
+  3.30774F, 3.10590F, 2.91638F, 2.73842F, 
+  2.57132F, 2.41442F, 2.26709F, 2.12875F, 
+  1.99885F, 1.87688F, 1.76236F, 1.65482F, 
+  1.55384F, 1.45902F, 1.36999F, 1.28640F, 
+  1.20790F, 1.13419F, 1.06499F, 1.F
+};
+
+void _vp_remove_floor(vorbis_look_psy *p,
+		      float *mdct,
+		      int *codedflr,
+		      float *residue,
+		      int sliding_lowpass){ 
+
+  int i,n=p->n;
+ 
+  if(sliding_lowpass>n)sliding_lowpass=n;
+  
+  for(i=0;i<sliding_lowpass;i++){
+    residue[i]=
+      mdct[i]*FLOOR1_fromdB_INV_LOOKUP[codedflr[i]];
+  }
+
+  for(;i<n;i++)
+    residue[i]=0.;
+}
+
+void _vp_noisemask(vorbis_look_psy *p,
+		   float *logmdct, 
+		   float *logmask){
+
+  int i,n=p->n;
+  float *work=alloca(n*sizeof(*work));
+
+  bark_noise_hybridmp(n,p->bark,logmdct,logmask,
+		      140.,-1);
+
+  for(i=0;i<n;i++)work[i]=logmdct[i]-logmask[i];
+
+  bark_noise_hybridmp(n,p->bark,work,logmask,0.,
+		      p->vi->noisewindowfixed);
+
+  for(i=0;i<n;i++)work[i]=logmdct[i]-work[i];
+  
+#if 0
+  {
+    static int seq=0;
+
+    float work2[n];
+    for(i=0;i<n;i++){
+      work2[i]=logmask[i]+work[i];
+    }
+    
+    if(seq&1)
+      _analysis_output("median2R",seq/2,work,n,1,0,0);
+    else
+      _analysis_output("median2L",seq/2,work,n,1,0,0);
+    
+    if(seq&1)
+      _analysis_output("envelope2R",seq/2,work2,n,1,0,0);
+    else
+      _analysis_output("envelope2L",seq/2,work2,n,1,0,0);
+    seq++;
+  }
+#endif
+
+  for(i=0;i<n;i++){
+    int dB=logmask[i]+.5;
+    if(dB>=NOISE_COMPAND_LEVELS)dB=NOISE_COMPAND_LEVELS-1;
+    if(dB<0)dB=0;
+    logmask[i]= work[i]+p->vi->noisecompand[dB];
+  }
+
+}
+
+void _vp_tonemask(vorbis_look_psy *p,
+		  float *logfft,
+		  float *logmask,
+		  float global_specmax,
+		  float local_specmax){
+
+  int i,n=p->n;
+
+  float *seed=alloca(sizeof(*seed)*p->total_octave_lines);
+  float att=local_specmax+p->vi->ath_adjatt;
+  for(i=0;i<p->total_octave_lines;i++)seed[i]=NEGINF;
+  
+  /* set the ATH (floating below localmax, not global max by a
+     specified att) */
+  if(att<p->vi->ath_maxatt)att=p->vi->ath_maxatt;
+  
+  for(i=0;i<n;i++)
+    logmask[i]=p->ath[i]+att;
+
+  /* tone masking */
+  seed_loop(p,(const float ***)p->tonecurves,logfft,logmask,seed,global_specmax);
+  max_seeds(p,seed,logmask);
+
+}
+
+void _vp_offset_and_mix(vorbis_look_psy *p,
+			float *noise,
+			float *tone,
+			int offset_select,
+			float *logmask,
+			float *mdct,
+			float *logmdct){
+  int i,n=p->n;
+  float de, coeffi, cx;/* AoTuV */
+  float toneatt=p->vi->tone_masteratt[offset_select];
+
+  cx = p->m_val;
+  
+  for(i=0;i<n;i++){
+    float val= noise[i]+p->noiseoffset[offset_select][i];
+    if(val>p->vi->noisemaxsupp)val=p->vi->noisemaxsupp;
+    logmask[i]=max(val,tone[i]+toneatt);
+
+
+    /* AoTuV */
+    /** @ M1 **
+	The following codes improve a noise problem.  
+	A fundamental idea uses the value of masking and carries out
+	the relative compensation of the MDCT. 
+	However, this code is not perfect and all noise problems cannot be solved. 
+	by Aoyumi @ 2004/04/18
+    */
+
+    if(offset_select == 1) {
+      coeffi = -17.2;       /* coeffi is a -17.2dB threshold */
+      val = val - logmdct[i];  /* val == mdct line value relative to floor in dB */
+      
+      if(val > coeffi){
+	/* mdct value is > -17.2 dB below floor */
+	
+	de = 1.0-((val-coeffi)*0.005*cx);
+	/* pro-rated attenuation:
+	   -0.00 dB boost if mdct value is -17.2dB (relative to floor) 
+	   -0.77 dB boost if mdct value is 0dB (relative to floor) 
+	   -1.64 dB boost if mdct value is +17.2dB (relative to floor) 
+	   etc... */
+	
+	if(de < 0) de = 0.0001;
+      }else
+	/* mdct value is <= -17.2 dB below floor */
+	
+	de = 1.0-((val-coeffi)*0.0003*cx);
+      /* pro-rated attenuation:
+	 +0.00 dB atten if mdct value is -17.2dB (relative to floor) 
+	 +0.45 dB atten if mdct value is -34.4dB (relative to floor) 
+	 etc... */
+      
+      mdct[i] *= de;
+      
+    }
+  }
+}
+
+float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd){
+  vorbis_info *vi=vd->vi;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy_global *gi=&ci->psy_g_param;
+
+  int n=ci->blocksizes[vd->W]/2;
+  float secs=(float)n/vi->rate;
+
+  amp+=secs*gi->ampmax_att_per_sec;
+  if(amp<-9999)amp=-9999;
+  return(amp);
+}
+
+static void couple_lossless(float A, float B, 
+			    float *qA, float *qB){
+  int test1=fabs(*qA)>fabs(*qB);
+  test1-= fabs(*qA)<fabs(*qB);
+  
+  if(!test1)test1=((fabs(A)>fabs(B))<<1)-1;
+  if(test1==1){
+    *qB=(*qA>0.f?*qA-*qB:*qB-*qA);
+  }else{
+    float temp=*qB;  
+    *qB=(*qB>0.f?*qA-*qB:*qB-*qA);
+    *qA=temp;
+  }
+
+  if(*qB>fabs(*qA)*1.9999f){
+    *qB= -fabs(*qA)*2.f;
+    *qA= -*qA;
+  }
+}
+
+static float hypot_lookup[32]={
+  -0.009935, -0.011245, -0.012726, -0.014397, 
+  -0.016282, -0.018407, -0.020800, -0.023494, 
+  -0.026522, -0.029923, -0.033737, -0.038010, 
+  -0.042787, -0.048121, -0.054064, -0.060671, 
+  -0.068000, -0.076109, -0.085054, -0.094892, 
+  -0.105675, -0.117451, -0.130260, -0.144134, 
+  -0.159093, -0.175146, -0.192286, -0.210490, 
+  -0.229718, -0.249913, -0.271001, -0.292893};
+
+static void precomputed_couple_point(float premag,
+				     int floorA,int floorB,
+				     float *mag, float *ang){
+  
+  int test=(floorA>floorB)-1;
+  int offset=31-abs(floorA-floorB);
+  float floormag=hypot_lookup[((offset<0)-1)&offset]+1.f;
+
+  floormag*=FLOOR1_fromdB_INV_LOOKUP[(floorB&test)|(floorA&(~test))];
+
+  *mag=premag*floormag;
+  *ang=0.f;
+}
+
+/* just like below, this is currently set up to only do
+   single-step-depth coupling.  Otherwise, we'd have to do more
+   copying (which will be inevitable later) */
+
+/* doing the real circular magnitude calculation is audibly superior
+   to (A+B)/sqrt(2) */
+static float dipole_hypot(float a, float b){
+  if(a>0.){
+    if(b>0.)return sqrt(a*a+b*b);
+    if(a>-b)return sqrt(a*a-b*b);
+    return -sqrt(b*b-a*a);
+  }
+  if(b<0.)return -sqrt(a*a+b*b);
+  if(-a>b)return -sqrt(a*a-b*b);
+  return sqrt(b*b-a*a);
+}
+static float round_hypot(float a, float b){
+  if(a>0.){
+    if(b>0.)return sqrt(a*a+b*b);
+    if(a>-b)return sqrt(a*a+b*b);
+    return -sqrt(b*b+a*a);
+  }
+  if(b<0.)return -sqrt(a*a+b*b);
+  if(-a>b)return -sqrt(a*a+b*b);
+  return sqrt(b*b+a*a);
+}
+
+/* revert to round hypot for now */
+float **_vp_quantize_couple_memo(vorbis_block *vb,
+				 vorbis_info_psy_global *g,
+				 vorbis_look_psy *p,
+				 vorbis_info_mapping0 *vi,
+				 float **mdct){
+  
+  int i,j,n=p->n;
+  float **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
+  int limit=g->coupling_pointlimit[p->vi->blockflag][PACKETBLOBS/2];
+  
+  for(i=0;i<vi->coupling_steps;i++){
+    float *mdctM=mdct[vi->coupling_mag[i]];
+    float *mdctA=mdct[vi->coupling_ang[i]];
+    ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
+    for(j=0;j<limit;j++)
+      ret[i][j]=dipole_hypot(mdctM[j],mdctA[j]);
+    for(;j<n;j++)
+      ret[i][j]=round_hypot(mdctM[j],mdctA[j]);
+  }
+
+  return(ret);
+}
+
+/* this is for per-channel noise normalization */
+static int apsort(const void *a, const void *b){
+  float f1=fabs(**(float**)a);
+  float f2=fabs(**(float**)b);
+  return (f1<f2)-(f1>f2);
+}
+
+int **_vp_quantize_couple_sort(vorbis_block *vb,
+			       vorbis_look_psy *p,
+			       vorbis_info_mapping0 *vi,
+			       float **mags){
+
+
+  if(p->vi->normal_point_p){
+    int i,j,k,n=p->n;
+    int **ret=_vorbis_block_alloc(vb,vi->coupling_steps*sizeof(*ret));
+    int partition=p->vi->normal_partition;
+    float **work=alloca(sizeof(*work)*partition);
+    
+    for(i=0;i<vi->coupling_steps;i++){
+      ret[i]=_vorbis_block_alloc(vb,n*sizeof(**ret));
+      
+      for(j=0;j<n;j+=partition){
+	for(k=0;k<partition;k++)work[k]=mags[i]+k+j;
+	qsort(work,partition,sizeof(*work),apsort);
+	for(k=0;k<partition;k++)ret[i][k+j]=work[k]-mags[i];
+      }
+    }
+    return(ret);
+  }
+  return(NULL);
+}
+
+void _vp_noise_normalize_sort(vorbis_look_psy *p,
+			      float *magnitudes,int *sortedindex){
+  int i,j,n=p->n;
+  vorbis_info_psy *vi=p->vi;
+  int partition=vi->normal_partition;
+  float **work=alloca(sizeof(*work)*partition);
+  int start=vi->normal_start;
+
+  for(j=start;j<n;j+=partition){
+    if(j+partition>n)partition=n-j;
+    for(i=0;i<partition;i++)work[i]=magnitudes+i+j;
+    qsort(work,partition,sizeof(*work),apsort);
+    for(i=0;i<partition;i++){
+      sortedindex[i+j-start]=work[i]-magnitudes;
+    }
+  }
+}
+
+void _vp_noise_normalize(vorbis_look_psy *p,
+			 float *in,float *out,int *sortedindex){
+  int flag=0,i,j=0,n=p->n;
+  vorbis_info_psy *vi=p->vi;
+  int partition=vi->normal_partition;
+  int start=vi->normal_start;
+
+  if(start>n)start=n;
+
+  if(vi->normal_channel_p){
+    for(;j<start;j++)
+      out[j]=rint(in[j]);
+    
+    for(;j+partition<=n;j+=partition){
+      float acc=0.;
+      int k;
+      
+      for(i=j;i<j+partition;i++)
+	acc+=in[i]*in[i];
+      
+      for(i=0;i<partition;i++){
+	k=sortedindex[i+j-start];
+	
+	if(in[k]*in[k]>=.25f){
+	  out[k]=rint(in[k]);
+	  acc-=in[k]*in[k];
+	  flag=1;
+	}else{
+	  if(acc<vi->normal_thresh)break;
+	  out[k]=unitnorm(in[k]);
+	  acc-=1.;
+	}
+      }
+      
+      for(;i<partition;i++){
+	k=sortedindex[i+j-start];
+	out[k]=0.;
+      }
+    }
+  }
+  
+  for(;j<n;j++)
+    out[j]=rint(in[j]);
+  
+}
+
+void _vp_couple(int blobno,
+		vorbis_info_psy_global *g,
+		vorbis_look_psy *p,
+		vorbis_info_mapping0 *vi,
+		float **res,
+		float **mag_memo,
+		int   **mag_sort,
+		int   **ifloor,
+		int   *nonzero,
+		int  sliding_lowpass){
+
+  int i,j,k,n=p->n;
+
+  /* perform any requested channel coupling */
+  /* point stereo can only be used in a first stage (in this encoder)
+     because of the dependency on floor lookups */
+  for(i=0;i<vi->coupling_steps;i++){
+
+    /* once we're doing multistage coupling in which a channel goes
+       through more than one coupling step, the floor vector
+       magnitudes will also have to be recalculated an propogated
+       along with PCM.  Right now, we're not (that will wait until 5.1
+       most likely), so the code isn't here yet. The memory management
+       here is all assuming single depth couplings anyway. */
+
+    /* make sure coupling a zero and a nonzero channel results in two
+       nonzero channels. */
+    if(nonzero[vi->coupling_mag[i]] ||
+       nonzero[vi->coupling_ang[i]]){
+     
+
+      float *rM=res[vi->coupling_mag[i]];
+      float *rA=res[vi->coupling_ang[i]];
+      float *qM=rM+n;
+      float *qA=rA+n;
+      int *floorM=ifloor[vi->coupling_mag[i]];
+      int *floorA=ifloor[vi->coupling_ang[i]];
+      float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]];
+      float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]];
+      int partition=(p->vi->normal_point_p?p->vi->normal_partition:p->n);
+      int limit=g->coupling_pointlimit[p->vi->blockflag][blobno];
+      int pointlimit=limit;
+
+      nonzero[vi->coupling_mag[i]]=1; 
+      nonzero[vi->coupling_ang[i]]=1; 
+
+       /* The threshold of a stereo is changed with the size of n */
+       if(n > 1000)
+         postpoint=stereo_threshholds_limited[g->coupling_postpointamp[blobno]]; 
+ 
+      for(j=0;j<p->n;j+=partition){
+	float acc=0.f;
+
+	for(k=0;k<partition;k++){
+	  int l=k+j;
+
+	  if(l<sliding_lowpass){
+	    if((l>=limit && fabs(rM[l])<postpoint && fabs(rA[l])<postpoint) ||
+	       (fabs(rM[l])<prepoint && fabs(rA[l])<prepoint)){
+
+
+	      precomputed_couple_point(mag_memo[i][l],
+				       floorM[l],floorA[l],
+				       qM+l,qA+l);
+
+	      if(rint(qM[l])==0.f)acc+=qM[l]*qM[l];
+	    }else{
+	      couple_lossless(rM[l],rA[l],qM+l,qA+l);
+	    }
+	  }else{
+	    qM[l]=0.;
+	    qA[l]=0.;
+	  }
+	}
+	
+	if(p->vi->normal_point_p){
+	  for(k=0;k<partition && acc>=p->vi->normal_thresh;k++){
+	    int l=mag_sort[i][j+k];
+	    if(l<sliding_lowpass && l>=pointlimit && rint(qM[l])==0.f){
+	      qM[l]=unitnorm(qM[l]);
+	      acc-=1.f;
+	    }
+	  } 
+	}
+      }
+    }
+  }
+}
+
+/* AoTuV */
+/** @ M2 **
+   The boost problem by the combination of noise normalization and point stereo is eased. 
+   However, this is a temporary patch. 
+   by Aoyumi @ 2004/04/18
+*/
+
+void hf_reduction(vorbis_info_psy_global *g,
+                      vorbis_look_psy *p, 
+                      vorbis_info_mapping0 *vi,
+                      float **mdct){
+ 
+  int i,j,n=p->n, de=0.3*p->m_val;
+  int limit=g->coupling_pointlimit[p->vi->blockflag][PACKETBLOBS/2];
+  int start=p->vi->normal_start;
+  
+  for(i=0; i<vi->coupling_steps; i++){
+    /* for(j=start; j<limit; j++){} // ???*/
+    for(j=limit; j<n; j++) 
+      mdct[i][j] *= (1.0 - de*((float)(j-limit) / (float)(n-limit)));
+  }
+}
Index: /libvorbis-1.2.0/lib/psy.h
===================================================================
--- /libvorbis-1.2.0/lib/psy.h	(revision 16)
+++ /libvorbis-1.2.0/lib/psy.h	(revision 16)
@@ -0,0 +1,186 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: random psychoacoustics (not including preecho)
+ last mod: $Id: psy.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_PSY_H_
+#define _V_PSY_H_
+#include "smallft.h"
+
+#include "backends.h"
+#include "envelope.h"
+
+#ifndef EHMER_MAX
+#define EHMER_MAX 56
+#endif
+
+/* psychoacoustic setup ********************************************/
+#define P_BANDS 17      /* 62Hz to 16kHz */
+#define P_LEVELS 8      /* 30dB to 100dB */
+#define P_LEVEL_0 30.    /* 30 dB */
+#define P_NOISECURVES 3
+
+#define NOISE_COMPAND_LEVELS 40
+typedef struct vorbis_info_psy{
+  int   blockflag;
+
+  float ath_adjatt;
+  float ath_maxatt;
+
+  float tone_masteratt[P_NOISECURVES];
+  float tone_centerboost;
+  float tone_decay;
+  float tone_abs_limit;
+  float toneatt[P_BANDS];
+
+  int noisemaskp;
+  float noisemaxsupp;
+  float noisewindowlo;
+  float noisewindowhi;
+  int   noisewindowlomin;
+  int   noisewindowhimin;
+  int   noisewindowfixed;
+  float noiseoff[P_NOISECURVES][P_BANDS];
+  float noisecompand[NOISE_COMPAND_LEVELS];
+
+  float max_curve_dB;
+
+  int normal_channel_p;
+  int normal_point_p;
+  int normal_start;
+  int normal_partition;
+  double normal_thresh;
+} vorbis_info_psy;
+
+typedef struct{
+  int   eighth_octave_lines;
+
+  /* for block long/short tuning; encode only */
+  float preecho_thresh[VE_BANDS];
+  float postecho_thresh[VE_BANDS];
+  float stretch_penalty;
+  float preecho_minenergy;
+
+  float ampmax_att_per_sec;
+
+  /* channel coupling config */
+  int   coupling_pkHz[PACKETBLOBS];  
+  int   coupling_pointlimit[2][PACKETBLOBS];  
+  int   coupling_prepointamp[PACKETBLOBS];  
+  int   coupling_postpointamp[PACKETBLOBS];  
+  int   sliding_lowpass[2][PACKETBLOBS];  
+
+} vorbis_info_psy_global;
+
+typedef struct {
+  float ampmax;
+  int   channels;
+
+  vorbis_info_psy_global *gi;
+  int   coupling_pointlimit[2][P_NOISECURVES];  
+} vorbis_look_psy_global;
+
+
+typedef struct {
+  int n;
+  struct vorbis_info_psy *vi;
+
+  float ***tonecurves;
+  float **noiseoffset;
+
+  float *ath;
+  long  *octave;             /* in n.ocshift format */
+  long  *bark;
+
+  long  firstoc;
+  long  shiftoc;
+  int   eighth_octave_lines; /* power of two, please */
+  int   total_octave_lines;  
+  long  rate; /* cache it */
+
+  float m_val; /* Masking compensation value */
+
+} vorbis_look_psy;
+
+extern void   _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,
+			   vorbis_info_psy_global *gi,int n,long rate);
+extern void   _vp_psy_clear(vorbis_look_psy *p);
+extern void  *_vi_psy_dup(void *source);
+
+extern void   _vi_psy_free(vorbis_info_psy *i);
+extern vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i);
+
+extern void _vp_remove_floor(vorbis_look_psy *p,
+			     float *mdct,
+			     int *icodedflr,
+			     float *residue,
+			     int sliding_lowpass);
+
+extern void _vp_noisemask(vorbis_look_psy *p,
+			  float *logmdct, 
+			  float *logmask);
+
+extern void _vp_tonemask(vorbis_look_psy *p,
+			 float *logfft,
+			 float *logmask,
+			 float global_specmax,
+			 float local_specmax);
+
+extern void _vp_offset_and_mix(vorbis_look_psy *p,
+			       float *noise,
+			       float *tone,
+			       int offset_select,
+			       float *logmask,
+			       float *mdct,
+			       float *logmdct);
+
+extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);
+
+extern float **_vp_quantize_couple_memo(vorbis_block *vb,
+					vorbis_info_psy_global *g,
+					vorbis_look_psy *p,
+					vorbis_info_mapping0 *vi,
+					float **mdct);
+
+extern void _vp_couple(int blobno,
+		       vorbis_info_psy_global *g,
+		       vorbis_look_psy *p,
+		       vorbis_info_mapping0 *vi,
+		       float **res,
+		       float **mag_memo,
+		       int   **mag_sort,
+		       int   **ifloor,
+		       int   *nonzero,
+		       int   sliding_lowpass);
+
+extern void _vp_noise_normalize(vorbis_look_psy *p,
+				float *in,float *out,int *sortedindex);
+
+extern void _vp_noise_normalize_sort(vorbis_look_psy *p,
+				     float *magnitudes,int *sortedindex);
+
+extern int **_vp_quantize_couple_sort(vorbis_block *vb,
+				      vorbis_look_psy *p,
+				      vorbis_info_mapping0 *vi,
+				      float **mags);
+
+extern void hf_reduction(vorbis_info_psy_global *g,
+			 vorbis_look_psy *p,
+			 vorbis_info_mapping0 *vi,
+			 float **mdct);
+
+
+#endif
+
Index: /libvorbis-1.2.0/lib/psytune.c
===================================================================
--- /libvorbis-1.2.0/lib/psytune.c	(revision 16)
+++ /libvorbis-1.2.0/lib/psytune.c	(revision 16)
@@ -0,0 +1,524 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: simple utility that runs audio through the psychoacoustics
+           without encoding
+ last mod: $Id: psytune.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* NB: this is dead code, retained purely for doc and reference value
+       don't try to compile it */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "os.h"
+#include "misc.h"
+#include "psy.h"
+#include "mdct.h"
+#include "smallft.h"
+#include "window.h"
+#include "scales.h"
+#include "lpc.h"
+#include "lsp.h"
+#include "masking.h"
+#include "registry.h"
+
+static vorbis_info_psy_global _psy_set0G={
+  0,   /* decaydBpms */
+  8,   /* lines per eighth octave */
+  
+  /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
+  256, {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
+  -6.f, 
+  
+  0,
+
+  0.,
+  0.,
+};
+
+static vp_part _vp_part0[]={
+  {    1,9e10f, 9e10f,       1.f,9999.f},
+  { 9999,  .75f, 9e10f,       .5f,9999.f},
+/*{ 9999, 1.5f, 9e10f,       .5f,9999.f},*/
+  {   18,9e10f, 9e10f,       .5f,  30.f},
+  { 9999,9e10f, 9e10f,       .5f,  30.f}
+};
+
+static vp_couple _vp_couple0[]={
+  {    1,  {9e10f,9e10f,0}, {   0.f,   0.f,0}, {   0.f, 0.f,0}, {0.f,0.f,0}},
+  {   18,  {9e10f,9e10f,0}, {   0.f,   0.f,0}, {   0.f, 0.f,0}, {0.f,0.f,0}},
+  { 9999,  {9e10f,9e10f,0}, {   0.f, 9e10f,0}, {   0.f,22.f,1}, {0.f,0.f,0}}
+};
+
+static vorbis_info_psy _psy_set0={
+  ATH_Bark_dB_lineaggressive,
+  
+  -100.f,
+  -140.f,
+  6.f, /* floor master att */
+
+  /*     0  1  2   3   4   5   6   7   8   9  10  11  12  13  14  15   16   */
+  /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
+  /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
+   1,  /* tonemaskp */
+  0.f, /* tone master att */
+  /*  0   10   20   30   40   50   60   70   80   90   100 */
+  {
+   {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*63*/
+   {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*88*/
+   {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*125*/
+
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*175*/
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*250*/
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*350*/
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*500*/
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*700*/
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
+   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
+   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2000*/
+   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2800*/
+   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
+
+   {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/
+
+   {-30.f,-30.f,-33.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/
+   {-30.f,-30.f,-33.f,-35.f,-40.f,-45.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*11500*/
+   {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*16000*/
+
+  },
+
+  1,/* peakattp */
+  {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*63*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*88*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*125*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*175*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*250*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*350*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*500*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*700*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*1000*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*1400*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*2000*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*2800*/
+   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-40.f,-40.f,-40.f,-40.f,-40.f},/*4000*/
+   {-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},/*5600*/
+   {-10.f,-12.f,-14.f,-16.f,-16.f,-20.f,-24.f,-30.f,-32.f,-40.f,-40.f},/*8000*/
+   {-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},/*11500*/
+   {-10.f,-10.f,-10.f,-12.f,-14.f,-18.f,-22.f,-28.f,-32.f,-40.f,-40.f},/*16000*/
+  },
+
+  1,/*noisemaskp */
+  -10.f,  /* suppress any noise curve over maxspec+n */
+  .5f,   /* low window */
+  .5f,   /* high window */
+  10,
+  10,
+  25,
+  {.000f, 0.f, /*63*/
+   .000f, 0.f, /*88*/
+   .000f, 0.f, /*125*/
+   .000f, 0.f, /*175*/
+   .000f, 0.f, /*250*/
+   .000f, 0.f, /*350*/
+   .000f, 0.f, /*500*/
+   .000f, 0.f, /*700*/
+   .000f, 0.f, /*1000*/
+   .300f, 0.f, /*1400*/
+   .300f, 0.f, /*2000*/
+   .300f, 0.f, /*2800*/
+   .500f, 0.f, /*4000*/
+   .700f, 0.f, /*5600*/
+   .850f, 0.f, /*8000*/
+   .900f, 0.f, /*11500*/
+   .900f, 1.f, /*16000*/
+  },
+ 
+  95.f,  /* even decade + 5 is important; saves an rint() later in a
+            tight loop) */
+  -44.,
+
+  32,
+  _vp_part0,_vp_couple0
+};
+
+static vorbis_info_floor1 _floor_set0={1,
+					{0},
+					
+					{32},
+					{0},
+					{0},
+					{{-1}},
+
+					2,
+					{0,1024,
+
+					 88,31,243,
+
+					 14,54,143,460,
+					 
+					 6,3,10, 22,18,26, 41,36,47, 
+					 69,61,78, 112,99,126, 185,162,211,  
+					 329,282,387, 672,553,825
+					 },
+					
+					60,30,400,
+					20,8,1,18.,
+					20,600,
+					960};
+
+
+static vorbis_info_mapping0 mapping_info={1,{0,1},{0},{0},{0},0, 1, {0},{1}};
+static codec_setup_info codec_setup0={ {0,0}, 
+				       1,1,1,1,1,0,1,	
+				       {NULL},
+				       {0},{&mapping_info},
+				       {0},{NULL},
+				       {1},{&_floor_set0},
+				       {2},{NULL},
+				       {NULL},
+				       {&_psy_set0},
+				       &_psy_set0G};
+				       
+static int noisy=0;
+void analysis(char *base,int i,float *v,int n,int bark,int dB){
+  if(noisy){
+    int j;
+    FILE *of;
+    char buffer[80];
+    sprintf(buffer,"%s_%d.m",base,i);
+    of=fopen(buffer,"w");
+
+    for(j=0;j<n;j++){
+      if(dB && v[j]==0)
+	  fprintf(of,"\n\n");
+      else{
+	if(bark)
+	  fprintf(of,"%g ",toBARK(22050.f*j/n));
+	else
+	  fprintf(of,"%g ",(float)j);
+      
+	if(dB){
+	  fprintf(of,"%g\n",todB(v+j));
+	}else{
+	  fprintf(of,"%g\n",v[j]);
+	}
+      }
+    }
+    fclose(of);
+  }
+}
+
+long frameno=0;
+
+/****************************************************************/
+
+int main(int argc,char *argv[]){
+  int eos=0;
+  float nonz=0.f;
+  float acc=0.f;
+  float tot=0.f;
+  float ampmax=-9999,newmax;
+  float local_ampmax[2];
+
+  int framesize=2048;
+  float ampmax_att_per_sec=-6.;
+
+  float *pcm[2],*out[2],*window,*flr[2],*mask[2],*work[2];
+  signed char *buffer,*buffer2;
+  mdct_lookup m_look;
+  drft_lookup f_look;
+  vorbis_look_psy p_look;
+  vorbis_look_psy_global *pg_look;
+  vorbis_look_floor *floor_look;
+  vorbis_info vi;
+  long i,j,k;
+
+  int ath=0;
+  int decayp=0;
+
+  argv++;
+  while(*argv){
+    if(*argv[0]=='-'){
+      /* option */
+      if(argv[0][1]=='v'){
+	noisy=0;
+      }
+    }else
+      if(*argv[0]=='+'){
+	/* option */
+	if(argv[0][1]=='v'){
+	  noisy=1;
+	}
+      }else
+	framesize=atoi(argv[0]);
+    argv++;
+  }
+  
+  vi.channels=2;
+  vi.codec_setup=&codec_setup0;
+
+  pcm[0]=_ogg_malloc(framesize*sizeof(float));
+  pcm[1]=_ogg_malloc(framesize*sizeof(float));
+  out[0]=_ogg_calloc(framesize/2,sizeof(float));
+  out[1]=_ogg_calloc(framesize/2,sizeof(float));
+  work[0]=_ogg_calloc(framesize,sizeof(float));
+  work[1]=_ogg_calloc(framesize,sizeof(float));
+  flr[0]=_ogg_calloc(framesize/2,sizeof(float));
+  flr[1]=_ogg_calloc(framesize/2,sizeof(float));
+  buffer=_ogg_malloc(framesize*4);
+  buffer2=buffer+framesize*2;
+  window=_vorbis_window_create(0,framesize,framesize/2,framesize/2);
+  mdct_init(&m_look,framesize);
+  drft_init(&f_look,framesize);
+  _vp_psy_init(&p_look,&_psy_set0,&_psy_set0G,framesize/2,44100);
+  pg_look=_vp_global_look(&vi);
+  floor_look=_floor_P[1]->look(NULL,NULL,&_floor_set0);
+
+  /* we cheat on the WAV header; we just bypass 44 bytes and never
+     verify that it matches 16bit/stereo/44.1kHz. */
+  
+  fread(buffer,1,44,stdin);
+  fwrite(buffer,1,44,stdout);
+  memset(buffer,0,framesize*2);
+
+  analysis("window",0,window,framesize,0,0);
+
+  fprintf(stderr,"Processing for frame size %d...\n",framesize);
+
+  while(!eos){
+    long bytes=fread(buffer2,1,framesize*2,stdin); 
+    if(bytes<framesize*2)
+      memset(buffer2+bytes,0,framesize*2-bytes);
+    
+    if(bytes!=0){
+      int nonzero[2];
+
+      /* uninterleave samples */
+      for(i=0;i<framesize;i++){
+        pcm[0][i]=((buffer[i*4+1]<<8)|
+                      (0x00ff&(int)buffer[i*4]))/32768.f;
+        pcm[1][i]=((buffer[i*4+3]<<8)|
+		   (0x00ff&(int)buffer[i*4+2]))/32768.f;
+      }
+      
+      {
+	float secs=framesize/44100.;
+	
+	ampmax+=secs*ampmax_att_per_sec;
+	if(ampmax<-9999)ampmax=-9999;
+      }
+
+      for(i=0;i<2;i++){
+	float scale=4.f/framesize;
+	float *fft=work[i];
+	float *mdct=pcm[i];
+	float *logmdct=mdct+framesize/2;
+
+	analysis("pre",frameno+i,pcm[i],framesize,0,0);
+	
+	/* fft and mdct transforms  */
+	for(j=0;j<framesize;j++)
+	  fft[j]=pcm[i][j]*=window[j];
+	
+	drft_forward(&f_look,fft);
+
+	local_ampmax[i]=-9999.f;
+	fft[0]*=scale;
+	fft[0]=todB(fft);
+	for(j=1;j<framesize-1;j+=2){
+	  float temp=scale*FAST_HYPOT(fft[j],fft[j+1]);
+	  temp=fft[(j+1)>>1]=todB(&temp);
+	  if(temp>local_ampmax[i])local_ampmax[i]=temp;
+	}
+	if(local_ampmax[i]>ampmax)ampmax=local_ampmax[i];
+	
+	mdct_forward(&m_look,pcm[i],mdct);
+	for(j=0;j<framesize/2;j++)
+	  logmdct[j]=todB(mdct+j);
+
+	analysis("mdct",frameno+i,logmdct,framesize/2,1,0);
+	analysis("fft",frameno+i,fft,framesize/2,1,0);
+      }
+
+      for(i=0;i<2;i++){
+	float amp;
+	float *fft=work[i];
+	float *logmax=fft;
+	float *mdct=pcm[i];
+	float *logmdct=mdct+framesize/2;
+	float *mask=fft+framesize/2;
+
+	/* floor psychoacoustics */
+	_vp_compute_mask(&p_look,
+			 pg_look,
+			 i,
+			 fft,
+			 logmdct,
+			 mask,
+			 ampmax,
+			 local_ampmax[i],
+			 framesize/2);
+
+	analysis("mask",frameno+i,mask,framesize/2,1,0);
+
+	{
+	  vorbis_block vb;
+	  vorbis_dsp_state vd;
+	  memset(&vd,0,sizeof(vd));
+	  vd.vi=&vi;
+	  vb.vd=&vd;
+	  vb.pcmend=framesize;
+
+	  /* floor quantization/application */
+	  nonzero[i]=_floor_P[1]->forward(&vb,floor_look,
+					  mdct,
+					  logmdct,
+					  mask,
+					  logmax,
+					  
+					  flr[i]);
+	}
+
+	_vp_remove_floor(&p_look,
+			 pg_look,
+			 logmdct,
+			 mdct,
+			 flr[i],
+			 pcm[i],
+			 local_ampmax[i]);
+
+	for(j=0;j<framesize/2;j++)
+	  if(fabs(pcm[i][j])>1500)
+	    fprintf(stderr,"%ld ",frameno+i);
+	
+	analysis("res",frameno+i,pcm[i],framesize/2,1,0);
+	analysis("codedflr",frameno+i,flr[i],framesize/2,1,1);
+      }
+
+      /* residue prequantization */
+      _vp_partition_prequant(&p_look,
+			     &vi,
+			     pcm,
+			     nonzero);
+	
+      for(i=0;i<2;i++)
+	analysis("quant",frameno+i,pcm[i],framesize/2,1,0);
+
+      /* channel coupling / stereo quantization */
+
+      _vp_couple(&p_look,
+		 &mapping_info,
+		 pcm,
+		 nonzero);
+  
+      for(i=0;i<2;i++)
+	analysis("coupled",frameno+i,pcm[i],framesize/2,1,0);
+
+      /* decoupling */
+      for(i=mapping_info.coupling_steps-1;i>=0;i--){
+	float *pcmM=pcm[mapping_info.coupling_mag[i]];
+	float *pcmA=pcm[mapping_info.coupling_ang[i]];
+	
+	for(j=0;j<framesize/2;j++){
+	  float mag=pcmM[j];
+	  float ang=pcmA[j];
+	  
+	  if(mag>0)
+	    if(ang>0){
+	      pcmM[j]=mag;
+	      pcmA[j]=mag-ang;
+	    }else{
+	      pcmA[j]=mag;
+	      pcmM[j]=mag+ang;
+	    }
+	  else
+	    if(ang>0){
+	      pcmM[j]=mag;
+	      pcmA[j]=mag+ang;
+	    }else{
+	      pcmA[j]=mag;
+	      pcmM[j]=mag-ang;
+	    }
+	}
+      }
+    
+      for(i=0;i<2;i++)
+	analysis("decoupled",frameno+i,pcm[i],framesize/2,1,0);
+
+      for(i=0;i<2;i++){
+	float amp;
+
+	for(j=0;j<framesize/2;j++)
+	  pcm[i][j]*=flr[i][j];
+
+	analysis("final",frameno+i,pcm[i],framesize/2,1,1);
+
+	/* take it back to time */
+	mdct_backward(&m_look,pcm[i],pcm[i]);
+
+	for(j=0;j<framesize/2;j++)
+	  out[i][j]+=pcm[i][j]*window[j];
+
+	analysis("out",frameno+i,out[i],framesize/2,0,0);
+
+
+      }
+           
+      /* write data.  Use the part of buffer we're about to shift out */
+      for(i=0;i<2;i++){
+	char  *ptr=buffer+i*2;
+	float *mono=out[i];
+	int flag=0;
+	for(j=0;j<framesize/2;j++){
+	  int val=mono[j]*32767.;
+	  /* might as well guard against clipping */
+	  if(val>32767){
+	    if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
+	    flag=1;
+	    val=32767;
+	  }
+	  if(val<-32768){
+	    if(!flag)fprintf(stderr,"clipping in frame %ld ",frameno+i);
+	    flag=1;
+	    val=-32768;
+	  }
+	  ptr[0]=val&0xff;
+	  ptr[1]=(val>>8)&0xff;
+	  ptr+=4;
+	}
+      }
+ 
+      fprintf(stderr,"*");
+      fwrite(buffer,1,framesize*2,stdout);
+      memmove(buffer,buffer2,framesize*2);
+
+      for(i=0;i<2;i++){
+	for(j=0,k=framesize/2;j<framesize/2;j++,k++)
+	  out[i][j]=pcm[i][k]*window[k];
+      }
+      frameno+=2;
+    }else
+      eos=1;
+  }
+  fprintf(stderr,"average raw bits of entropy: %.03g/sample\n",acc/tot);
+  fprintf(stderr,"average nonzero samples: %.03g/%d\n",nonz/tot*framesize/2,
+	  framesize/2);
+  fprintf(stderr,"Done\n\n");
+  return 0;
+}
Index: /libvorbis-1.2.0/lib/registry.c
===================================================================
--- /libvorbis-1.2.0/lib/registry.c	(revision 16)
+++ /libvorbis-1.2.0/lib/registry.c	(revision 16)
@@ -0,0 +1,46 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: registry for time, floor, res backends and channel mappings
+ last mod: $Id: registry.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "misc.h"
+/* seems like major overkill now; the backend numbers will grow into
+   the infrastructure soon enough */
+
+extern vorbis_func_floor     floor0_exportbundle;
+extern vorbis_func_floor     floor1_exportbundle;
+extern vorbis_func_residue   residue0_exportbundle;
+extern vorbis_func_residue   residue1_exportbundle;
+extern vorbis_func_residue   residue2_exportbundle;
+extern vorbis_func_mapping   mapping0_exportbundle;
+
+vorbis_func_floor     *_floor_P[]={
+  &floor0_exportbundle,
+  &floor1_exportbundle,
+};
+
+vorbis_func_residue   *_residue_P[]={
+  &residue0_exportbundle,
+  &residue1_exportbundle,
+  &residue2_exportbundle,
+};
+
+vorbis_func_mapping   *_mapping_P[]={
+  &mapping0_exportbundle,
+};
+
Index: /libvorbis-1.2.0/lib/registry.h
===================================================================
--- /libvorbis-1.2.0/lib/registry.h	(revision 16)
+++ /libvorbis-1.2.0/lib/registry.h	(revision 16)
@@ -0,0 +1,32 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: registry for time, floor, res backends and channel mappings
+ last mod: $Id: registry.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_REG_H_
+#define _V_REG_H_
+
+#define VI_TRANSFORMB 1
+#define VI_WINDOWB 1
+#define VI_TIMEB 1
+#define VI_FLOORB 2
+#define VI_RESB 3
+#define VI_MAPB 1
+
+extern vorbis_func_floor     *_floor_P[];
+extern vorbis_func_residue   *_residue_P[];
+extern vorbis_func_mapping   *_mapping_P[];
+
+#endif
Index: /libvorbis-1.2.0/lib/res0.c
===================================================================
--- /libvorbis-1.2.0/lib/res0.c	(revision 16)
+++ /libvorbis-1.2.0/lib/res0.c	(revision 16)
@@ -0,0 +1,919 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: residue backend 0, 1 and 2 implementation
+ last mod: $Id: res0.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* Slow, slow, slow, simpleminded and did I mention it was slow?  The
+   encode/decode loops are coded for clarity and performance is not
+   yet even a nagging little idea lurking in the shadows.  Oh and BTW,
+   it's slow. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "codebook.h"
+#include "misc.h"
+#include "os.h"
+
+#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
+#include <stdio.h>
+#endif 
+
+typedef struct {
+  vorbis_info_residue0 *info;
+  
+  int         parts;
+  int         stages;
+  codebook   *fullbooks;
+  codebook   *phrasebook;
+  codebook ***partbooks;
+
+  int         partvals;
+  int       **decodemap;
+
+  long      postbits;
+  long      phrasebits;
+  long      frames;
+
+#if defined(TRAIN_RES) || defined(TRAIN_RESAUX)
+  int        train_seq;
+  long      *training_data[8][64];
+  float      training_max[8][64];
+  float      training_min[8][64];
+  float     tmin;
+  float     tmax;
+#endif
+
+} vorbis_look_residue0;
+
+void res0_free_info(vorbis_info_residue *i){
+  vorbis_info_residue0 *info=(vorbis_info_residue0 *)i;
+  if(info){
+    memset(info,0,sizeof(*info));
+    _ogg_free(info);
+  }
+}
+
+void res0_free_look(vorbis_look_residue *i){
+  int j;
+  if(i){
+
+    vorbis_look_residue0 *look=(vorbis_look_residue0 *)i;
+
+#ifdef TRAIN_RES
+    {
+      int j,k,l;
+      for(j=0;j<look->parts;j++){
+	/*fprintf(stderr,"partition %d: ",j);*/
+	for(k=0;k<8;k++)
+	  if(look->training_data[k][j]){
+	    char buffer[80];
+	    FILE *of;
+	    codebook *statebook=look->partbooks[j][k];
+	    
+	    /* long and short into the same bucket by current convention */
+	    sprintf(buffer,"res_part%d_pass%d.vqd",j,k);
+	    of=fopen(buffer,"a");
+
+	    for(l=0;l<statebook->entries;l++)
+	      fprintf(of,"%d:%ld\n",l,look->training_data[k][j][l]);
+	    
+	    fclose(of);
+	    
+	    /*fprintf(stderr,"%d(%.2f|%.2f) ",k,
+	      look->training_min[k][j],look->training_max[k][j]);*/
+
+	    _ogg_free(look->training_data[k][j]);
+	    look->training_data[k][j]=NULL;
+	  }
+	/*fprintf(stderr,"\n");*/
+      }
+    }
+    fprintf(stderr,"min/max residue: %g::%g\n",look->tmin,look->tmax);
+
+    /*fprintf(stderr,"residue bit usage %f:%f (%f total)\n",
+	    (float)look->phrasebits/look->frames,
+	    (float)look->postbits/look->frames,
+	    (float)(look->postbits+look->phrasebits)/look->frames);*/
+#endif
+
+
+    /*vorbis_info_residue0 *info=look->info;
+
+    fprintf(stderr,
+	    "%ld frames encoded in %ld phrasebits and %ld residue bits "
+	    "(%g/frame) \n",look->frames,look->phrasebits,
+	    look->resbitsflat,
+	    (look->phrasebits+look->resbitsflat)/(float)look->frames);
+    
+    for(j=0;j<look->parts;j++){
+      long acc=0;
+      fprintf(stderr,"\t[%d] == ",j);
+      for(k=0;k<look->stages;k++)
+	if((info->secondstages[j]>>k)&1){
+	  fprintf(stderr,"%ld,",look->resbits[j][k]);
+	  acc+=look->resbits[j][k];
+	}
+
+      fprintf(stderr,":: (%ld vals) %1.2fbits/sample\n",look->resvals[j],
+	      acc?(float)acc/(look->resvals[j]*info->grouping):0);
+    }
+    fprintf(stderr,"\n");*/
+
+    for(j=0;j<look->parts;j++)
+      if(look->partbooks[j])_ogg_free(look->partbooks[j]);
+    _ogg_free(look->partbooks);
+    for(j=0;j<look->partvals;j++)
+      _ogg_free(look->decodemap[j]);
+    _ogg_free(look->decodemap);
+
+    memset(look,0,sizeof(*look));
+    _ogg_free(look);
+  }
+}
+
+static int ilog(unsigned int v){
+  int ret=0;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+static int icount(unsigned int v){
+  int ret=0;
+  while(v){
+    ret+=v&1;
+    v>>=1;
+  }
+  return(ret);
+}
+
+
+void res0_pack(vorbis_info_residue *vr,oggpack_buffer *opb){
+  vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
+  int j,acc=0;
+  oggpack_write(opb,info->begin,24);
+  oggpack_write(opb,info->end,24);
+
+  oggpack_write(opb,info->grouping-1,24);  /* residue vectors to group and 
+					     code with a partitioned book */
+  oggpack_write(opb,info->partitions-1,6); /* possible partition choices */
+  oggpack_write(opb,info->groupbook,8);  /* group huffman book */
+
+  /* secondstages is a bitmask; as encoding progresses pass by pass, a
+     bitmask of one indicates this partition class has bits to write
+     this pass */
+  for(j=0;j<info->partitions;j++){
+    if(ilog(info->secondstages[j])>3){
+      /* yes, this is a minor hack due to not thinking ahead */
+      oggpack_write(opb,info->secondstages[j],3); 
+      oggpack_write(opb,1,1);
+      oggpack_write(opb,info->secondstages[j]>>3,5); 
+    }else
+      oggpack_write(opb,info->secondstages[j],4); /* trailing zero */
+    acc+=icount(info->secondstages[j]);
+  }
+  for(j=0;j<acc;j++)
+    oggpack_write(opb,info->booklist[j],8);
+
+}
+
+/* vorbis_info is for range checking */
+vorbis_info_residue *res0_unpack(vorbis_info *vi,oggpack_buffer *opb){
+  int j,acc=0;
+  vorbis_info_residue0 *info=_ogg_calloc(1,sizeof(*info));
+  codec_setup_info     *ci=vi->codec_setup;
+
+  info->begin=oggpack_read(opb,24);
+  info->end=oggpack_read(opb,24);
+  info->grouping=oggpack_read(opb,24)+1;
+  info->partitions=oggpack_read(opb,6)+1;
+  info->groupbook=oggpack_read(opb,8);
+
+  for(j=0;j<info->partitions;j++){
+    int cascade=oggpack_read(opb,3);
+    if(oggpack_read(opb,1))
+      cascade|=(oggpack_read(opb,5)<<3);
+    info->secondstages[j]=cascade;
+
+    acc+=icount(cascade);
+  }
+  for(j=0;j<acc;j++)
+    info->booklist[j]=oggpack_read(opb,8);
+
+  if(info->groupbook>=ci->books)goto errout;
+  for(j=0;j<acc;j++)
+    if(info->booklist[j]>=ci->books)goto errout;
+
+  return(info);
+ errout:
+  res0_free_info(info);
+  return(NULL);
+}
+
+vorbis_look_residue *res0_look(vorbis_dsp_state *vd,
+			       vorbis_info_residue *vr){
+  vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
+  vorbis_look_residue0 *look=_ogg_calloc(1,sizeof(*look));
+  codec_setup_info     *ci=vd->vi->codec_setup;
+
+  int j,k,acc=0;
+  int dim;
+  int maxstage=0;
+  look->info=info;
+
+  look->parts=info->partitions;
+  look->fullbooks=ci->fullbooks;
+  look->phrasebook=ci->fullbooks+info->groupbook;
+  dim=look->phrasebook->dim;
+
+  look->partbooks=_ogg_calloc(look->parts,sizeof(*look->partbooks));
+
+  for(j=0;j<look->parts;j++){
+    int stages=ilog(info->secondstages[j]);
+    if(stages){
+      if(stages>maxstage)maxstage=stages;
+      look->partbooks[j]=_ogg_calloc(stages,sizeof(*look->partbooks[j]));
+      for(k=0;k<stages;k++)
+	if(info->secondstages[j]&(1<<k)){
+	  look->partbooks[j][k]=ci->fullbooks+info->booklist[acc++];
+#ifdef TRAIN_RES
+	  look->training_data[k][j]=_ogg_calloc(look->partbooks[j][k]->entries,
+					   sizeof(***look->training_data));
+#endif
+	}
+    }
+  }
+
+  look->partvals=rint(pow((float)look->parts,(float)dim));
+  look->stages=maxstage;
+  look->decodemap=_ogg_malloc(look->partvals*sizeof(*look->decodemap));
+  for(j=0;j<look->partvals;j++){
+    long val=j;
+    long mult=look->partvals/look->parts;
+    look->decodemap[j]=_ogg_malloc(dim*sizeof(*look->decodemap[j]));
+    for(k=0;k<dim;k++){
+      long deco=val/mult;
+      val-=deco*mult;
+      mult/=look->parts;
+      look->decodemap[j][k]=deco;
+    }
+  }
+#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
+  {
+    static int train_seq=0;
+    look->train_seq=train_seq++;
+  }
+#endif
+  return(look);
+}
+
+/* break an abstraction and copy some code for performance purposes */
+static int local_book_besterror(codebook *book,float *a){
+  int dim=book->dim,i,k,o;
+  int best=0;
+  encode_aux_threshmatch *tt=book->c->thresh_tree;
+
+  /* find the quant val of each scalar */
+  for(k=0,o=dim;k<dim;++k){
+    float val=a[--o];
+    i=tt->threshvals>>1;
+
+    if(val<tt->quantthresh[i]){      
+      if(val<tt->quantthresh[i-1]){
+	for(--i;i>0;--i)
+	  if(val>=tt->quantthresh[i-1])
+	    break;
+      }
+    }else{
+      
+      for(++i;i<tt->threshvals-1;++i)
+	if(val<tt->quantthresh[i])break;
+      
+    }
+
+    best=(best*tt->quantvals)+tt->quantmap[i];
+  }
+  /* regular lattices are easy :-) */
+  
+  if(book->c->lengthlist[best]<=0){
+    const static_codebook *c=book->c;
+    int i,j;
+    float bestf=0.f;
+    float *e=book->valuelist;
+    best=-1;
+    for(i=0;i<book->entries;i++){
+      if(c->lengthlist[i]>0){
+	float this=0.f;
+	for(j=0;j<dim;j++){
+	  float val=(e[j]-a[j]);
+	  this+=val*val;
+	}
+	if(best==-1 || this<bestf){
+	  bestf=this;
+	  best=i;
+	}
+      }
+      e+=dim;
+    }
+  }
+
+  if(best>-1){
+    float *ptr=book->valuelist+best*dim;
+    for(i=0;i<dim;i++)
+      *a++ -= *ptr++;
+  }
+
+  return(best);
+}
+
+static int _encodepart(oggpack_buffer *opb,float *vec, int n,
+		       codebook *book,long *acc){
+  int i,bits=0;
+  int dim=book->dim;
+  int step=n/dim;
+
+  for(i=0;i<step;i++){
+    int entry=local_book_besterror(book,vec+i*dim);
+
+#ifdef TRAIN_RES
+    if(entry>0)
+      acc[entry]++;
+#endif
+      
+    bits+=vorbis_book_encode(book,entry,opb);
+  
+  }
+
+  return(bits);
+}
+
+static long **_01class(vorbis_block *vb,vorbis_look_residue *vl,
+		       float **in,int ch){
+  long i,j,k;
+  vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+  vorbis_info_residue0 *info=look->info;
+  vorbis_info           *vi=vb->vd->vi;
+  codec_setup_info      *ci=vi->codec_setup;
+
+  /* move all this setup out later */
+  int samples_per_partition=info->grouping;
+  int possible_partitions=info->partitions;
+  int n=info->end-info->begin;
+  
+  int partvals=n/samples_per_partition;
+  long **partword=_vorbis_block_alloc(vb,ch*sizeof(*partword));
+  float scale=100./samples_per_partition;
+  
+  /* we find the partition type for each partition of each
+     channel.  We'll go back and do the interleaved encoding in a
+     bit.  For now, clarity */
+  
+  for(i=0;i<ch;i++){
+    partword[i]=_vorbis_block_alloc(vb,n/samples_per_partition*sizeof(*partword[i]));
+    memset(partword[i],0,n/samples_per_partition*sizeof(*partword[i]));
+  }
+  
+  for(i=0;i<partvals;i++){
+    int offset=i*samples_per_partition+info->begin;
+    for(j=0;j<ch;j++){
+      float max=0.;
+      float ent=0.;
+      for(k=0;k<samples_per_partition;k++){
+	if(fabs(in[j][offset+k])>max)max=fabs(in[j][offset+k]);
+	ent+=fabs(rint(in[j][offset+k]));
+      }
+      ent*=scale;
+      
+      for(k=0;k<possible_partitions-1;k++)
+	if(max<=info->classmetric1[k] &&
+	   (info->classmetric2[k]<0 || (int)ent<info->classmetric2[k]))
+	  break;
+      
+      partword[j][i]=k;  
+    }
+  }
+  
+#ifdef TRAIN_RESAUX
+  {
+    FILE *of;
+    char buffer[80];
+    
+    for(i=0;i<ch;i++){
+      sprintf(buffer,"resaux_%d.vqd",look->train_seq);
+      of=fopen(buffer,"a");
+      for(j=0;j<partvals;j++)
+	fprintf(of,"%ld, ",partword[i][j]);
+      fprintf(of,"\n");
+      fclose(of);
+    }
+  }
+#endif
+  look->frames++;
+  
+  return(partword);
+}
+
+/* designed for stereo or other modes where the partition size is an
+   integer multiple of the number of channels encoded in the current
+   submap */
+static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,float **in,
+		      int ch){
+  long i,j,k,l;
+  vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+  vorbis_info_residue0 *info=look->info;
+
+  /* move all this setup out later */
+  int samples_per_partition=info->grouping;
+  int possible_partitions=info->partitions;
+  int n=info->end-info->begin;
+
+  int partvals=n/samples_per_partition;
+  long **partword=_vorbis_block_alloc(vb,sizeof(*partword));
+  
+#if defined(TRAIN_RES) || defined (TRAIN_RESAUX)
+  FILE *of;
+  char buffer[80];
+#endif
+  
+  partword[0]=_vorbis_block_alloc(vb,n*ch/samples_per_partition*sizeof(*partword[0]));
+  memset(partword[0],0,n*ch/samples_per_partition*sizeof(*partword[0]));
+  
+  for(i=0,l=info->begin/ch;i<partvals;i++){
+    float magmax=0.f;
+    float angmax=0.f;
+    for(j=0;j<samples_per_partition;j+=ch){
+      if(fabs(in[0][l])>magmax)magmax=fabs(in[0][l]);
+      for(k=1;k<ch;k++)
+	if(fabs(in[k][l])>angmax)angmax=fabs(in[k][l]);
+	l++;
+    }
+    
+    for(j=0;j<possible_partitions-1;j++)
+      if(magmax<=info->classmetric1[j] &&
+	 angmax<=info->classmetric2[j])
+	break;
+    
+    partword[0][i]=j;
+    
+  }  
+  
+#ifdef TRAIN_RESAUX
+  sprintf(buffer,"resaux_%d.vqd",look->train_seq);
+  of=fopen(buffer,"a");
+  for(i=0;i<partvals;i++)
+    fprintf(of,"%ld, ",partword[0][i]);
+  fprintf(of,"\n");
+  fclose(of);
+#endif
+  
+  look->frames++;
+  
+  return(partword);
+}
+
+static int _01forward(oggpack_buffer *opb,
+		      vorbis_block *vb,vorbis_look_residue *vl,
+		      float **in,int ch,
+		      long **partword,
+		      int (*encode)(oggpack_buffer *,float *,int,
+				    codebook *,long *)){
+  long i,j,k,s;
+  vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+  vorbis_info_residue0 *info=look->info;
+
+  vorbis_dsp_state      *vd=vb->vd;
+
+  /* move all this setup out later */
+  int samples_per_partition=info->grouping;
+  int possible_partitions=info->partitions;
+  int partitions_per_word=look->phrasebook->dim;
+  int n=info->end-info->begin;
+
+  int partvals=n/samples_per_partition;
+  long resbits[128];
+  long resvals[128];
+  
+#ifdef TRAIN_RES
+  for(i=0;i<ch;i++)
+    for(j=info->begin;j<end;j++){
+      if(in[i][j]>look->tmax)look->tmax=in[i][j];
+      if(in[i][j]<look->tmin)look->tmin=in[i][j];
+    }
+#endif
+  
+  memset(resbits,0,sizeof(resbits));
+  memset(resvals,0,sizeof(resvals));
+  
+  /* we code the partition words for each channel, then the residual
+     words for a partition per channel until we've written all the
+     residual words for that partition word.  Then write the next
+     partition channel words... */
+  
+  for(s=0;s<look->stages;s++){
+    
+    for(i=0;i<partvals;){
+      
+      /* first we encode a partition codeword for each channel */
+      if(s==0){
+	for(j=0;j<ch;j++){
+	  long val=partword[j][i];
+	  for(k=1;k<partitions_per_word;k++){
+	    val*=possible_partitions;
+	    if(i+k<partvals)
+	      val+=partword[j][i+k];
+	  }	
+	  
+	  /* training hack */
+	  if(val<look->phrasebook->entries)
+	    look->phrasebits+=vorbis_book_encode(look->phrasebook,val,opb);
+#if 0 /*def TRAIN_RES*/
+	  else
+	    fprintf(stderr,"!");
+#endif
+	  
+	}
+      }
+      
+      /* now we encode interleaved residual values for the partitions */
+      for(k=0;k<partitions_per_word && i<partvals;k++,i++){
+	long offset=i*samples_per_partition+info->begin;
+	  
+	for(j=0;j<ch;j++){
+	  if(s==0)resvals[partword[j][i]]+=samples_per_partition;
+	  if(info->secondstages[partword[j][i]]&(1<<s)){
+	    codebook *statebook=look->partbooks[partword[j][i]][s];
+	    if(statebook){
+	      int ret;
+	      long *accumulator=NULL;
+	      
+#ifdef TRAIN_RES
+	      accumulator=look->training_data[s][partword[j][i]];
+	      {
+		int l;
+		float *samples=in[j]+offset;
+		for(l=0;l<samples_per_partition;l++){
+		  if(samples[l]<look->training_min[s][partword[j][i]])
+		    look->training_min[s][partword[j][i]]=samples[l];
+		  if(samples[l]>look->training_max[s][partword[j][i]])
+		    look->training_max[s][partword[j][i]]=samples[l];
+		}
+	      }
+#endif
+	      
+	      ret=encode(opb,in[j]+offset,samples_per_partition,
+			 statebook,accumulator);
+	      
+	      look->postbits+=ret;
+	      resbits[partword[j][i]]+=ret;
+	    }
+	  }
+	}
+      }
+    }
+  }
+  
+  /*{
+    long total=0;
+    long totalbits=0;
+    fprintf(stderr,"%d :: ",vb->mode);
+    for(k=0;k<possible_partitions;k++){
+    fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]);
+    total+=resvals[k];
+    totalbits+=resbits[k];
+    }
+    
+    fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total);
+    }*/
+
+  return(0);
+}
+
+/* a truncated packet here just means 'stop working'; it's not an error */
+static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl,
+		      float **in,int ch,
+		      long (*decodepart)(codebook *, float *, 
+					 oggpack_buffer *,int)){
+
+  long i,j,k,l,s;
+  vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+  vorbis_info_residue0 *info=look->info;
+
+  /* move all this setup out later */
+  int samples_per_partition=info->grouping;
+  int partitions_per_word=look->phrasebook->dim;
+  int max=vb->pcmend>>1;
+  int end=(info->end<max?info->end:max);
+  int n=end-info->begin;
+  
+  if(n>0){
+    int partvals=n/samples_per_partition;
+    int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
+    int ***partword=alloca(ch*sizeof(*partword));
+    
+    for(j=0;j<ch;j++)
+      partword[j]=_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));
+    
+    for(s=0;s<look->stages;s++){
+      
+      /* each loop decodes on partition codeword containing 
+	 partitions_per_word partitions */
+      for(i=0,l=0;i<partvals;l++){
+	if(s==0){
+	  /* fetch the partition word for each channel */
+	  for(j=0;j<ch;j++){
+	    int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
+	    
+	    if(temp==-1)goto eopbreak;
+	    partword[j][l]=look->decodemap[temp];
+	    if(partword[j][l]==NULL)goto errout;
+	  }
+	}
+	
+	/* now we decode residual values for the partitions */
+	for(k=0;k<partitions_per_word && i<partvals;k++,i++)
+	  for(j=0;j<ch;j++){
+	    long offset=info->begin+i*samples_per_partition;
+	    if(info->secondstages[partword[j][l][k]]&(1<<s)){
+	      codebook *stagebook=look->partbooks[partword[j][l][k]][s];
+	      if(stagebook){
+		if(decodepart(stagebook,in[j]+offset,&vb->opb,
+			      samples_per_partition)==-1)goto eopbreak;
+	      }
+	    }
+	  }
+      } 
+    }
+  }
+ errout:
+ eopbreak:
+  return(0);
+}
+
+#if 0
+/* residue 0 and 1 are just slight variants of one another. 0 is
+   interleaved, 1 is not */
+long **res0_class(vorbis_block *vb,vorbis_look_residue *vl,
+		  float **in,int *nonzero,int ch){
+  /* we encode only the nonzero parts of a bundle */
+  int i,used=0;
+  for(i=0;i<ch;i++)
+    if(nonzero[i])
+      in[used++]=in[i];
+  if(used)
+    /*return(_01class(vb,vl,in,used,_interleaved_testhack));*/
+    return(_01class(vb,vl,in,used));
+  else
+    return(0);
+}
+
+int res0_forward(vorbis_block *vb,vorbis_look_residue *vl,
+		 float **in,float **out,int *nonzero,int ch,
+		 long **partword){
+  /* we encode only the nonzero parts of a bundle */
+  int i,j,used=0,n=vb->pcmend/2;
+  for(i=0;i<ch;i++)
+    if(nonzero[i]){
+      if(out)
+	for(j=0;j<n;j++)
+	  out[i][j]+=in[i][j];
+      in[used++]=in[i];
+    }
+  if(used){
+    int ret=_01forward(vb,vl,in,used,partword,
+		      _interleaved_encodepart);
+    if(out){
+      used=0;
+      for(i=0;i<ch;i++)
+	if(nonzero[i]){
+	  for(j=0;j<n;j++)
+	    out[i][j]-=in[used][j];
+	  used++;
+	}
+    }
+    return(ret);
+  }else{
+    return(0);
+  }
+}
+#endif
+
+int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,
+		 float **in,int *nonzero,int ch){
+  int i,used=0;
+  for(i=0;i<ch;i++)
+    if(nonzero[i])
+      in[used++]=in[i];
+  if(used)
+    return(_01inverse(vb,vl,in,used,vorbis_book_decodevs_add));
+  else
+    return(0);
+}
+
+int res1_forward(oggpack_buffer *opb,vorbis_block *vb,vorbis_look_residue *vl,
+		 float **in,float **out,int *nonzero,int ch,
+		 long **partword){
+  int i,j,used=0,n=vb->pcmend/2;
+  for(i=0;i<ch;i++)
+    if(nonzero[i]){
+      if(out)
+	for(j=0;j<n;j++)
+	  out[i][j]+=in[i][j];
+      in[used++]=in[i];
+    }
+
+  if(used){
+    int ret=_01forward(opb,vb,vl,in,used,partword,_encodepart);
+    if(out){
+      used=0;
+      for(i=0;i<ch;i++)
+	if(nonzero[i]){
+	  for(j=0;j<n;j++)
+	    out[i][j]-=in[used][j];
+	  used++;
+	}
+    }
+    return(ret);
+  }else{
+    return(0);
+  }
+}
+
+long **res1_class(vorbis_block *vb,vorbis_look_residue *vl,
+		  float **in,int *nonzero,int ch){
+  int i,used=0;
+  for(i=0;i<ch;i++)
+    if(nonzero[i])
+      in[used++]=in[i];
+  if(used)
+    return(_01class(vb,vl,in,used));
+  else
+    return(0);
+}
+
+int res1_inverse(vorbis_block *vb,vorbis_look_residue *vl,
+		 float **in,int *nonzero,int ch){
+  int i,used=0;
+  for(i=0;i<ch;i++)
+    if(nonzero[i])
+      in[used++]=in[i];
+  if(used)
+    return(_01inverse(vb,vl,in,used,vorbis_book_decodev_add));
+  else
+    return(0);
+}
+
+long **res2_class(vorbis_block *vb,vorbis_look_residue *vl,
+		  float **in,int *nonzero,int ch){
+  int i,used=0;
+  for(i=0;i<ch;i++)
+    if(nonzero[i])used++;
+  if(used)
+    return(_2class(vb,vl,in,ch));
+  else
+    return(0);
+}
+
+/* res2 is slightly more different; all the channels are interleaved
+   into a single vector and encoded. */
+
+int res2_forward(oggpack_buffer *opb,
+		 vorbis_block *vb,vorbis_look_residue *vl,
+		 float **in,float **out,int *nonzero,int ch,
+		 long **partword){
+  long i,j,k,n=vb->pcmend/2,used=0;
+
+  /* don't duplicate the code; use a working vector hack for now and
+     reshape ourselves into a single channel res1 */
+  /* ugly; reallocs for each coupling pass :-( */
+  float *work=_vorbis_block_alloc(vb,ch*n*sizeof(*work));
+  for(i=0;i<ch;i++){
+    float *pcm=in[i];
+    if(nonzero[i])used++;
+    for(j=0,k=i;j<n;j++,k+=ch)
+      work[k]=pcm[j];
+  }
+  
+  if(used){
+    int ret=_01forward(opb,vb,vl,&work,1,partword,_encodepart);
+    /* update the sofar vector */
+    if(out){
+      for(i=0;i<ch;i++){
+	float *pcm=in[i];
+	float *sofar=out[i];
+	for(j=0,k=i;j<n;j++,k+=ch)
+	  sofar[j]+=pcm[j]-work[k];
+	
+      }
+    }
+    return(ret);
+  }else{
+    return(0);
+  }
+}
+
+/* duplicate code here as speed is somewhat more important */
+int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
+		 float **in,int *nonzero,int ch){
+  long i,k,l,s;
+  vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl;
+  vorbis_info_residue0 *info=look->info;
+
+  /* move all this setup out later */
+  int samples_per_partition=info->grouping;
+  int partitions_per_word=look->phrasebook->dim;
+  int max=(vb->pcmend*ch)>>1;
+  int end=(info->end<max?info->end:max);
+  int n=end-info->begin;
+
+  if(n>0){
+    int partvals=n/samples_per_partition;
+    int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
+    int **partword=_vorbis_block_alloc(vb,partwords*sizeof(*partword));
+    
+    for(i=0;i<ch;i++)if(nonzero[i])break;
+    if(i==ch)return(0); /* no nonzero vectors */
+    
+    for(s=0;s<look->stages;s++){
+      for(i=0,l=0;i<partvals;l++){
+	
+	if(s==0){
+	  /* fetch the partition word */
+	  int temp=vorbis_book_decode(look->phrasebook,&vb->opb);
+	  if(temp==-1)goto eopbreak;
+	  partword[l]=look->decodemap[temp];
+	  if(partword[l]==NULL)goto errout;
+	}
+	
+	/* now we decode residual values for the partitions */
+	for(k=0;k<partitions_per_word && i<partvals;k++,i++)
+	  if(info->secondstages[partword[l][k]]&(1<<s)){
+	    codebook *stagebook=look->partbooks[partword[l][k]][s];
+	    
+	    if(stagebook){
+	      if(vorbis_book_decodevv_add(stagebook,in,
+					  i*samples_per_partition+info->begin,ch,
+					  &vb->opb,samples_per_partition)==-1)
+		goto eopbreak;
+	    }
+	  }
+      } 
+    }
+  }
+ errout:
+ eopbreak:
+  return(0);
+}
+
+
+vorbis_func_residue residue0_exportbundle={
+  NULL,
+  &res0_unpack,
+  &res0_look,
+  &res0_free_info,
+  &res0_free_look,
+  NULL,
+  NULL,
+  &res0_inverse
+};
+
+vorbis_func_residue residue1_exportbundle={
+  &res0_pack,
+  &res0_unpack,
+  &res0_look,
+  &res0_free_info,
+  &res0_free_look,
+  &res1_class,
+  &res1_forward,
+  &res1_inverse
+};
+
+vorbis_func_residue residue2_exportbundle={
+  &res0_pack,
+  &res0_unpack,
+  &res0_look,
+  &res0_free_info,
+  &res0_free_look,
+  &res2_class,
+  &res2_forward,
+  &res2_inverse
+};
+
Index: /libvorbis-1.2.0/lib/scales.h
===================================================================
--- /libvorbis-1.2.0/lib/scales.h	(revision 16)
+++ /libvorbis-1.2.0/lib/scales.h	(revision 16)
@@ -0,0 +1,86 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: linear scale -> dB, Bark and Mel scales
+ last mod: $Id: scales.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_SCALES_H_
+#define _V_SCALES_H_
+
+#include <math.h>
+#include "os.h"
+
+/* 20log10(x) */
+#define VORBIS_IEEE_FLOAT32 1
+#ifdef VORBIS_IEEE_FLOAT32
+
+static float unitnorm(float x){
+  union {
+    ogg_uint32_t i;
+    float f;
+  } ix;
+  ix.f = x;
+  ix.i = (ix.i & 0x80000000U) | (0x3f800000U);
+  return ix.f;
+}
+
+/* Segher was off (too high) by ~ .3 decibel.  Center the conversion correctly. */
+static float todB(const float *x){
+  union {
+    ogg_uint32_t i;
+    float f;
+  } ix;
+  ix.f = *x;
+  ix.i = ix.i&0x7fffffff;
+  return (float)(ix.i * 7.17711438e-7f -764.6161886f);
+}
+
+#define todB_nn(x) todB(x)
+
+#else
+
+static float unitnorm(float x){
+  if(x<0)return(-1.f);
+  return(1.f);
+}
+
+#define todB(x)   (*(x)==0?-400.f:log(*(x)**(x))*4.34294480f)
+#define todB_nn(x)   (*(x)==0.f?-400.f:log(*(x))*8.6858896f)
+
+#endif 
+
+#define fromdB(x) (exp((x)*.11512925f))  
+
+/* The bark scale equations are approximations, since the original
+   table was somewhat hand rolled.  The below are chosen to have the
+   best possible fit to the rolled tables, thus their somewhat odd
+   appearance (these are more accurate and over a longer range than
+   the oft-quoted bark equations found in the texts I have).  The
+   approximations are valid from 0 - 30kHz (nyquist) or so.
+
+   all f in Hz, z in Bark */
+
+#define toBARK(n)   (13.1f*atan(.00074f*(n))+2.24f*atan((n)*(n)*1.85e-8f)+1e-4f*(n))
+#define fromBARK(z) (102.f*(z)-2.f*pow(z,2.f)+.4f*pow(z,3.f)+pow(1.46f,z)-1.f)
+#define toMEL(n)    (log(1.f+(n)*.001f)*1442.695f)
+#define fromMEL(m)  (1000.f*exp((m)/1442.695f)-1000.f)
+
+/* Frequency to octave.  We arbitrarily declare 63.5 Hz to be octave
+   0.0 */
+
+#define toOC(n)     (log(n)*1.442695f-5.965784f)
+#define fromOC(o)   (exp(((o)+5.965784f)*.693147f))
+
+#endif
+
Index: /libvorbis-1.2.0/lib/sharedbook.c
===================================================================
--- /libvorbis-1.2.0/lib/sharedbook.c	(revision 16)
+++ /libvorbis-1.2.0/lib/sharedbook.c	(revision 16)
@@ -0,0 +1,735 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: sharedbook.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <ogg/ogg.h>
+#include "os.h"
+#include "misc.h"
+#include "vorbis/codec.h"
+#include "codebook.h"
+#include "scales.h"
+
+/**** pack/unpack helpers ******************************************/
+int _ilog(unsigned int v){
+  int ret=0;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+/* 32 bit float (not IEEE; nonnormalized mantissa +
+   biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm 
+   Why not IEEE?  It's just not that important here. */
+
+#define VQ_FEXP 10
+#define VQ_FMAN 21
+#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */
+
+/* doesn't currently guard under/overflow */
+long _float32_pack(float val){
+  int sign=0;
+  long exp;
+  long mant;
+  if(val<0){
+    sign=0x80000000;
+    val= -val;
+  }
+  exp= floor(log(val)/log(2.f));
+  mant=rint(ldexp(val,(VQ_FMAN-1)-exp));
+  exp=(exp+VQ_FEXP_BIAS)<<VQ_FMAN;
+
+  return(sign|exp|mant);
+}
+
+float _float32_unpack(long val){
+  double mant=val&0x1fffff;
+  int    sign=val&0x80000000;
+  long   exp =(val&0x7fe00000L)>>VQ_FMAN;
+  if(sign)mant= -mant;
+  return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS));
+}
+
+/* given a list of word lengths, generate a list of codewords.  Works
+   for length ordered or unordered, always assigns the lowest valued
+   codewords first.  Extended to handle unused entries (length 0) */
+ogg_uint32_t *_make_words(long *l,long n,long sparsecount){
+  long i,j,count=0;
+  ogg_uint32_t marker[33];
+  ogg_uint32_t *r=_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r));
+  memset(marker,0,sizeof(marker));
+
+  for(i=0;i<n;i++){
+    long length=l[i];
+    if(length>0){
+      ogg_uint32_t entry=marker[length];
+      
+      /* when we claim a node for an entry, we also claim the nodes
+	 below it (pruning off the imagined tree that may have dangled
+	 from it) as well as blocking the use of any nodes directly
+	 above for leaves */
+      
+      /* update ourself */
+      if(length<32 && (entry>>length)){
+	/* error condition; the lengths must specify an overpopulated tree */
+	_ogg_free(r);
+	return(NULL);
+      }
+      r[count++]=entry;
+    
+      /* Look to see if the next shorter marker points to the node
+	 above. if so, update it and repeat.  */
+      {
+	for(j=length;j>0;j--){
+	  
+	  if(marker[j]&1){
+	    /* have to jump branches */
+	    if(j==1)
+	      marker[1]++;
+	    else
+	      marker[j]=marker[j-1]<<1;
+	    break; /* invariant says next upper marker would already
+		      have been moved if it was on the same path */
+	  }
+	  marker[j]++;
+	}
+      }
+      
+      /* prune the tree; the implicit invariant says all the longer
+	 markers were dangling from our just-taken node.  Dangle them
+	 from our *new* node. */
+      for(j=length+1;j<33;j++)
+	if((marker[j]>>1) == entry){
+	  entry=marker[j];
+	  marker[j]=marker[j-1]<<1;
+	}else
+	  break;
+    }else
+      if(sparsecount==0)count++;
+  }
+    
+  /* bitreverse the words because our bitwise packer/unpacker is LSb
+     endian */
+  for(i=0,count=0;i<n;i++){
+    ogg_uint32_t temp=0;
+    for(j=0;j<l[i];j++){
+      temp<<=1;
+      temp|=(r[count]>>j)&1;
+    }
+
+    if(sparsecount){
+      if(l[i])
+	r[count++]=temp;
+    }else
+      r[count++]=temp;
+  }
+
+  return(r);
+}
+
+/* there might be a straightforward one-line way to do the below
+   that's portable and totally safe against roundoff, but I haven't
+   thought of it.  Therefore, we opt on the side of caution */
+long _book_maptype1_quantvals(const static_codebook *b){
+  long vals=floor(pow((float)b->entries,1.f/b->dim));
+
+  /* the above *should* be reliable, but we'll not assume that FP is
+     ever reliable when bitstream sync is at stake; verify via integer
+     means that vals really is the greatest value of dim for which
+     vals^b->bim <= b->entries */
+  /* treat the above as an initial guess */
+  while(1){
+    long acc=1;
+    long acc1=1;
+    int i;
+    for(i=0;i<b->dim;i++){
+      acc*=vals;
+      acc1*=vals+1;
+    }
+    if(acc<=b->entries && acc1>b->entries){
+      return(vals);
+    }else{
+      if(acc>b->entries){
+	vals--;
+      }else{
+	vals++;
+      }
+    }
+  }
+}
+
+/* unpack the quantized list of values for encode/decode ***********/
+/* we need to deal with two map types: in map type 1, the values are
+   generated algorithmically (each column of the vector counts through
+   the values in the quant vector). in map type 2, all the values came
+   in in an explicit list.  Both value lists must be unpacked */
+float *_book_unquantize(const static_codebook *b,int n,int *sparsemap){
+  long j,k,count=0;
+  if(b->maptype==1 || b->maptype==2){
+    int quantvals;
+    float mindel=_float32_unpack(b->q_min);
+    float delta=_float32_unpack(b->q_delta);
+    float *r=_ogg_calloc(n*b->dim,sizeof(*r));
+
+    /* maptype 1 and 2 both use a quantized value vector, but
+       different sizes */
+    switch(b->maptype){
+    case 1:
+      /* most of the time, entries%dimensions == 0, but we need to be
+	 well defined.  We define that the possible vales at each
+	 scalar is values == entries/dim.  If entries%dim != 0, we'll
+	 have 'too few' values (values*dim<entries), which means that
+	 we'll have 'left over' entries; left over entries use zeroed
+	 values (and are wasted).  So don't generate codebooks like
+	 that */
+      quantvals=_book_maptype1_quantvals(b);
+      for(j=0;j<b->entries;j++){
+	if((sparsemap && b->lengthlist[j]) || !sparsemap){
+	  float last=0.f;
+	  int indexdiv=1;
+	  for(k=0;k<b->dim;k++){
+	    int index= (j/indexdiv)%quantvals;
+	    float val=b->quantlist[index];
+	    val=fabs(val)*delta+mindel+last;
+	    if(b->q_sequencep)last=val;	  
+	    if(sparsemap)
+	      r[sparsemap[count]*b->dim+k]=val;
+	    else
+	      r[count*b->dim+k]=val;
+	    indexdiv*=quantvals;
+	  }
+	  count++;
+	}
+
+      }
+      break;
+    case 2:
+      for(j=0;j<b->entries;j++){
+	if((sparsemap && b->lengthlist[j]) || !sparsemap){
+	  float last=0.f;
+	  
+	  for(k=0;k<b->dim;k++){
+	    float val=b->quantlist[j*b->dim+k];
+	    val=fabs(val)*delta+mindel+last;
+	    if(b->q_sequencep)last=val;	  
+	    if(sparsemap)
+	      r[sparsemap[count]*b->dim+k]=val;
+	    else
+	      r[count*b->dim+k]=val;
+	  }
+	  count++;
+	}
+      }
+      break;
+    }
+
+    return(r);
+  }
+  return(NULL);
+}
+
+void vorbis_staticbook_clear(static_codebook *b){
+  if(b->allocedp){
+    if(b->quantlist)_ogg_free(b->quantlist);
+    if(b->lengthlist)_ogg_free(b->lengthlist);
+    if(b->nearest_tree){
+      _ogg_free(b->nearest_tree->ptr0);
+      _ogg_free(b->nearest_tree->ptr1);
+      _ogg_free(b->nearest_tree->p);
+      _ogg_free(b->nearest_tree->q);
+      memset(b->nearest_tree,0,sizeof(*b->nearest_tree));
+      _ogg_free(b->nearest_tree);
+    }
+    if(b->thresh_tree){
+      _ogg_free(b->thresh_tree->quantthresh);
+      _ogg_free(b->thresh_tree->quantmap);
+      memset(b->thresh_tree,0,sizeof(*b->thresh_tree));
+      _ogg_free(b->thresh_tree);
+    }
+
+    memset(b,0,sizeof(*b));
+  }
+}
+
+void vorbis_staticbook_destroy(static_codebook *b){
+  if(b->allocedp){
+    vorbis_staticbook_clear(b);
+    _ogg_free(b);
+  }
+}
+
+void vorbis_book_clear(codebook *b){
+  /* static book is not cleared; we're likely called on the lookup and
+     the static codebook belongs to the info struct */
+  if(b->valuelist)_ogg_free(b->valuelist);
+  if(b->codelist)_ogg_free(b->codelist);
+
+  if(b->dec_index)_ogg_free(b->dec_index);
+  if(b->dec_codelengths)_ogg_free(b->dec_codelengths);
+  if(b->dec_firsttable)_ogg_free(b->dec_firsttable);
+
+  memset(b,0,sizeof(*b));
+}
+
+int vorbis_book_init_encode(codebook *c,const static_codebook *s){
+
+  memset(c,0,sizeof(*c));
+  c->c=s;
+  c->entries=s->entries;
+  c->used_entries=s->entries;
+  c->dim=s->dim;
+  c->codelist=_make_words(s->lengthlist,s->entries,0);
+  c->valuelist=_book_unquantize(s,s->entries,NULL);
+
+  return(0);
+}
+
+static ogg_uint32_t bitreverse(ogg_uint32_t x){
+  x=    ((x>>16)&0x0000ffffUL) | ((x<<16)&0xffff0000UL);
+  x=    ((x>> 8)&0x00ff00ffUL) | ((x<< 8)&0xff00ff00UL);
+  x=    ((x>> 4)&0x0f0f0f0fUL) | ((x<< 4)&0xf0f0f0f0UL);
+  x=    ((x>> 2)&0x33333333UL) | ((x<< 2)&0xccccccccUL);
+  return((x>> 1)&0x55555555UL) | ((x<< 1)&0xaaaaaaaaUL);
+}
+
+static int sort32a(const void *a,const void *b){
+  return ( **(ogg_uint32_t **)a>**(ogg_uint32_t **)b)- 
+    ( **(ogg_uint32_t **)a<**(ogg_uint32_t **)b);
+}
+
+/* decode codebook arrangement is more heavily optimized than encode */
+int vorbis_book_init_decode(codebook *c,const static_codebook *s){
+  int i,j,n=0,tabn;
+  int *sortindex;
+  memset(c,0,sizeof(*c));
+  
+  /* count actually used entries */
+  for(i=0;i<s->entries;i++)
+    if(s->lengthlist[i]>0)
+      n++;
+
+  c->entries=s->entries;
+  c->used_entries=n;
+  c->dim=s->dim;
+
+  if(n>0){
+    
+    /* two different remappings go on here.  
+       
+    First, we collapse the likely sparse codebook down only to
+    actually represented values/words.  This collapsing needs to be
+    indexed as map-valueless books are used to encode original entry
+    positions as integers.
+    
+    Second, we reorder all vectors, including the entry index above,
+    by sorted bitreversed codeword to allow treeless decode. */
+
+    /* perform sort */
+    ogg_uint32_t *codes=_make_words(s->lengthlist,s->entries,c->used_entries);
+    ogg_uint32_t **codep=alloca(sizeof(*codep)*n);
+    
+    if(codes==NULL)goto err_out;
+    
+    for(i=0;i<n;i++){
+      codes[i]=bitreverse(codes[i]);
+      codep[i]=codes+i;
+    }
+    
+    qsort(codep,n,sizeof(*codep),sort32a);
+    
+    sortindex=alloca(n*sizeof(*sortindex));
+    c->codelist=_ogg_malloc(n*sizeof(*c->codelist));
+    /* the index is a reverse index */
+    for(i=0;i<n;i++){
+      int position=codep[i]-codes;
+      sortindex[position]=i;
+    }
+
+    for(i=0;i<n;i++)
+      c->codelist[sortindex[i]]=codes[i];
+    _ogg_free(codes);
+  
+
+    c->valuelist=_book_unquantize(s,n,sortindex);
+    c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index));
+    
+    for(n=0,i=0;i<s->entries;i++)
+      if(s->lengthlist[i]>0)
+	c->dec_index[sortindex[n++]]=i;
+    
+    c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths));
+    for(n=0,i=0;i<s->entries;i++)
+      if(s->lengthlist[i]>0)
+	c->dec_codelengths[sortindex[n++]]=s->lengthlist[i];
+    
+    c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */
+    if(c->dec_firsttablen<5)c->dec_firsttablen=5;
+    if(c->dec_firsttablen>8)c->dec_firsttablen=8;
+    
+    tabn=1<<c->dec_firsttablen;
+    c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable));
+    c->dec_maxlength=0;
+    
+    for(i=0;i<n;i++){
+      if(c->dec_maxlength<c->dec_codelengths[i])
+	c->dec_maxlength=c->dec_codelengths[i];
+      if(c->dec_codelengths[i]<=c->dec_firsttablen){
+	ogg_uint32_t orig=bitreverse(c->codelist[i]);
+	for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++)
+	  c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1;
+      }
+    }
+    
+    /* now fill in 'unused' entries in the firsttable with hi/lo search
+       hints for the non-direct-hits */
+    {
+      ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen);
+      long lo=0,hi=0;
+      
+      for(i=0;i<tabn;i++){
+	ogg_uint32_t word=i<<(32-c->dec_firsttablen);
+	if(c->dec_firsttable[bitreverse(word)]==0){
+	  while((lo+1)<n && c->codelist[lo+1]<=word)lo++;
+	  while(    hi<n && word>=(c->codelist[hi]&mask))hi++;
+	  
+	  /* we only actually have 15 bits per hint to play with here.
+	     In order to overflow gracefully (nothing breaks, efficiency
+	     just drops), encode as the difference from the extremes. */
+	  {
+	    unsigned long loval=lo;
+	    unsigned long hival=n-hi;
+	    
+	    if(loval>0x7fff)loval=0x7fff;
+	    if(hival>0x7fff)hival=0x7fff;
+	    c->dec_firsttable[bitreverse(word)]=
+	      0x80000000UL | (loval<<15) | hival;
+	  }
+	}
+      }
+    }
+  }
+
+  return(0);
+ err_out:
+  vorbis_book_clear(c);
+  return(-1);
+}
+
+static float _dist(int el,float *ref, float *b,int step){
+  int i;
+  float acc=0.f;
+  for(i=0;i<el;i++){
+    float val=(ref[i]-b[i*step]);
+    acc+=val*val;
+  }
+  return(acc);
+}
+
+int _best(codebook *book, float *a, int step){
+  encode_aux_threshmatch *tt=book->c->thresh_tree;
+
+#if 0
+  encode_aux_nearestmatch *nt=book->c->nearest_tree;
+  encode_aux_pigeonhole *pt=book->c->pigeon_tree;
+#endif
+  int dim=book->dim;
+  int k,o;
+  /*int savebest=-1;
+    float saverr;*/
+
+  /* do we have a threshhold encode hint? */
+  if(tt){
+    int index=0,i;
+    /* find the quant val of each scalar */
+    for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
+
+      i=tt->threshvals>>1;
+      if(a[o]<tt->quantthresh[i]){
+
+	for(;i>0;i--)
+	  if(a[o]>=tt->quantthresh[i-1])
+	    break;
+	
+      }else{
+
+	for(i++;i<tt->threshvals-1;i++)
+	  if(a[o]<tt->quantthresh[i])break;
+
+      }
+
+      index=(index*tt->quantvals)+tt->quantmap[i];
+    }
+    /* regular lattices are easy :-) */
+    if(book->c->lengthlist[index]>0) /* is this unused?  If so, we'll
+					use a decision tree after all
+					and fall through*/
+      return(index);
+  }
+
+#if 0
+  /* do we have a pigeonhole encode hint? */
+  if(pt){
+    const static_codebook *c=book->c;
+    int i,besti=-1;
+    float best=0.f;
+    int entry=0;
+
+    /* dealing with sequentialness is a pain in the ass */
+    if(c->q_sequencep){
+      int pv;
+      long mul=1;
+      float qlast=0;
+      for(k=0,o=0;k<dim;k++,o+=step){
+	pv=(int)((a[o]-qlast-pt->min)/pt->del);
+	if(pv<0 || pv>=pt->mapentries)break;
+	entry+=pt->pigeonmap[pv]*mul;
+	mul*=pt->quantvals;
+	qlast+=pv*pt->del+pt->min;
+      }
+    }else{
+      for(k=0,o=step*(dim-1);k<dim;k++,o-=step){
+	int pv=(int)((a[o]-pt->min)/pt->del);
+	if(pv<0 || pv>=pt->mapentries)break;
+	entry=entry*pt->quantvals+pt->pigeonmap[pv];
+      }
+    }
+
+    /* must be within the pigeonholable range; if we quant outside (or
+       in an entry that we define no list for), brute force it */
+    if(k==dim && pt->fitlength[entry]){
+      /* search the abbreviated list */
+      long *list=pt->fitlist+pt->fitmap[entry];
+      for(i=0;i<pt->fitlength[entry];i++){
+	float this=_dist(dim,book->valuelist+list[i]*dim,a,step);
+	if(besti==-1 || this<best){
+	  best=this;
+	  besti=list[i];
+	}
+      }
+
+      return(besti); 
+    }
+  }
+
+  if(nt){
+    /* optimized using the decision tree */
+    while(1){
+      float c=0.f;
+      float *p=book->valuelist+nt->p[ptr];
+      float *q=book->valuelist+nt->q[ptr];
+      
+      for(k=0,o=0;k<dim;k++,o+=step)
+	c+=(p[k]-q[k])*(a[o]-(p[k]+q[k])*.5);
+      
+      if(c>0.f) /* in A */
+	ptr= -nt->ptr0[ptr];
+      else     /* in B */
+	ptr= -nt->ptr1[ptr];
+      if(ptr<=0)break;
+    }
+    return(-ptr);
+  }
+#endif 
+
+  /* brute force it! */
+  {
+    const static_codebook *c=book->c;
+    int i,besti=-1;
+    float best=0.f;
+    float *e=book->valuelist;
+    for(i=0;i<book->entries;i++){
+      if(c->lengthlist[i]>0){
+	float this=_dist(dim,e,a,step);
+	if(besti==-1 || this<best){
+	  best=this;
+	  besti=i;
+	}
+      }
+      e+=dim;
+    }
+
+    /*if(savebest!=-1 && savebest!=besti){
+      fprintf(stderr,"brute force/pigeonhole disagreement:\n"
+	      "original:");
+      for(i=0;i<dim*step;i+=step)fprintf(stderr,"%g,",a[i]);
+      fprintf(stderr,"\n"
+	      "pigeonhole (entry %d, err %g):",savebest,saverr);
+      for(i=0;i<dim;i++)fprintf(stderr,"%g,",
+				(book->valuelist+savebest*dim)[i]);
+      fprintf(stderr,"\n"
+	      "bruteforce (entry %d, err %g):",besti,best);
+      for(i=0;i<dim;i++)fprintf(stderr,"%g,",
+				(book->valuelist+besti*dim)[i]);
+      fprintf(stderr,"\n");
+      }*/
+    return(besti);
+  }
+}
+
+long vorbis_book_codeword(codebook *book,int entry){
+  if(book->c) /* only use with encode; decode optimizations are
+                 allowed to break this */
+    return book->codelist[entry];
+  return -1;
+}
+
+long vorbis_book_codelen(codebook *book,int entry){
+  if(book->c) /* only use with encode; decode optimizations are
+                 allowed to break this */
+    return book->c->lengthlist[entry];
+  return -1;
+}
+
+#ifdef _V_SELFTEST
+
+/* Unit tests of the dequantizer; this stuff will be OK
+   cross-platform, I simply want to be sure that special mapping cases
+   actually work properly; a bug could go unnoticed for a while */
+
+#include <stdio.h>
+
+/* cases:
+
+   no mapping
+   full, explicit mapping
+   algorithmic mapping
+
+   nonsequential
+   sequential
+*/
+
+static long full_quantlist1[]={0,1,2,3,    4,5,6,7, 8,3,6,1};
+static long partial_quantlist1[]={0,7,2};
+
+/* no mapping */
+static_codebook test1={
+  4,16,
+  NULL,
+  0,
+  0,0,0,0,
+  NULL,
+  NULL,NULL
+};
+static float *test1_result=NULL;
+  
+/* linear, full mapping, nonsequential */
+static_codebook test2={
+  4,3,
+  NULL,
+  2,
+  -533200896,1611661312,4,0,
+  full_quantlist1,
+  NULL,NULL
+};
+static float test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2};
+
+/* linear, full mapping, sequential */
+static_codebook test3={
+  4,3,
+  NULL,
+  2,
+  -533200896,1611661312,4,1,
+  full_quantlist1,
+  NULL,NULL
+};
+static float test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6};
+
+/* linear, algorithmic mapping, nonsequential */
+static_codebook test4={
+  3,27,
+  NULL,
+  1,
+  -533200896,1611661312,4,0,
+  partial_quantlist1,
+  NULL,NULL
+};
+static float test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3,
+			      -3, 4,-3, 4, 4,-3, -1, 4,-3,
+			      -3,-1,-3, 4,-1,-3, -1,-1,-3, 
+			      -3,-3, 4, 4,-3, 4, -1,-3, 4,
+			      -3, 4, 4, 4, 4, 4, -1, 4, 4,
+			      -3,-1, 4, 4,-1, 4, -1,-1, 4,
+			      -3,-3,-1, 4,-3,-1, -1,-3,-1,
+			      -3, 4,-1, 4, 4,-1, -1, 4,-1,
+			      -3,-1,-1, 4,-1,-1, -1,-1,-1};
+
+/* linear, algorithmic mapping, sequential */
+static_codebook test5={
+  3,27,
+  NULL,
+  1,
+  -533200896,1611661312,4,1,
+  partial_quantlist1,
+  NULL,NULL
+};
+static float test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7,
+			      -3, 1,-2, 4, 8, 5, -1, 3, 0,
+			      -3,-4,-7, 4, 3, 0, -1,-2,-5, 
+			      -3,-6,-2, 4, 1, 5, -1,-4, 0,
+			      -3, 1, 5, 4, 8,12, -1, 3, 7,
+			      -3,-4, 0, 4, 3, 7, -1,-2, 2,
+			      -3,-6,-7, 4, 1, 0, -1,-4,-5,
+			      -3, 1, 0, 4, 8, 7, -1, 3, 2,
+			      -3,-4,-5, 4, 3, 2, -1,-2,-3};
+
+void run_test(static_codebook *b,float *comp){
+  float *out=_book_unquantize(b,b->entries,NULL);
+  int i;
+
+  if(comp){
+    if(!out){
+      fprintf(stderr,"_book_unquantize incorrectly returned NULL\n");
+      exit(1);
+    }
+
+    for(i=0;i<b->entries*b->dim;i++)
+      if(fabs(out[i]-comp[i])>.0001){
+	fprintf(stderr,"disagreement in unquantized and reference data:\n"
+		"position %d, %g != %g\n",i,out[i],comp[i]);
+	exit(1);
+      }
+
+  }else{
+    if(out){
+      fprintf(stderr,"_book_unquantize returned a value array: \n"
+	      " correct result should have been NULL\n");
+      exit(1);
+    }
+  }
+}
+
+int main(){
+  /* run the nine dequant tests, and compare to the hand-rolled results */
+  fprintf(stderr,"Dequant test 1... ");
+  run_test(&test1,test1_result);
+  fprintf(stderr,"OK\nDequant test 2... ");
+  run_test(&test2,test2_result);
+  fprintf(stderr,"OK\nDequant test 3... ");
+  run_test(&test3,test3_result);
+  fprintf(stderr,"OK\nDequant test 4... ");
+  run_test(&test4,test4_result);
+  fprintf(stderr,"OK\nDequant test 5... ");
+  run_test(&test5,test5_result);
+  fprintf(stderr,"OK\n\n");
+  
+  return(0);
+}
+
+#endif
Index: /libvorbis-1.2.0/lib/smallft.c
===================================================================
--- /libvorbis-1.2.0/lib/smallft.c	(revision 16)
+++ /libvorbis-1.2.0/lib/smallft.c	(revision 16)
@@ -0,0 +1,1255 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: *unnormalized* fft transform
+ last mod: $Id: smallft.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* FFT implementation from OggSquish, minus cosine transforms,
+ * minus all but radix 2/4 case.  In Vorbis we only need this
+ * cut-down version.
+ *
+ * To do more than just power-of-two sized vectors, see the full
+ * version I wrote for NetLib.
+ *
+ * Note that the packing is a little strange; rather than the FFT r/i
+ * packing following R_0, I_n, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1,
+ * it follows R_0, R_1, I_1, R_2, I_2 ... R_n-1, I_n-1, I_n like the
+ * FORTRAN version
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "smallft.h"
+#include "os.h"
+#include "misc.h"
+
+static void drfti1(int n, float *wa, int *ifac){
+  static int ntryh[4] = { 4,2,3,5 };
+  static float tpi = 6.28318530717958648f;
+  float arg,argh,argld,fi;
+  int ntry=0,i,j=-1;
+  int k1, l1, l2, ib;
+  int ld, ii, ip, is, nq, nr;
+  int ido, ipm, nfm1;
+  int nl=n;
+  int nf=0;
+
+ L101:
+  j++;
+  if (j < 4)
+    ntry=ntryh[j];
+  else
+    ntry+=2;
+
+ L104:
+  nq=nl/ntry;
+  nr=nl-ntry*nq;
+  if (nr!=0) goto L101;
+
+  nf++;
+  ifac[nf+1]=ntry;
+  nl=nq;
+  if(ntry!=2)goto L107;
+  if(nf==1)goto L107;
+
+  for (i=1;i<nf;i++){
+    ib=nf-i+1;
+    ifac[ib+1]=ifac[ib];
+  }
+  ifac[2] = 2;
+
+ L107:
+  if(nl!=1)goto L104;
+  ifac[0]=n;
+  ifac[1]=nf;
+  argh=tpi/n;
+  is=0;
+  nfm1=nf-1;
+  l1=1;
+
+  if(nfm1==0)return;
+
+  for (k1=0;k1<nfm1;k1++){
+    ip=ifac[k1+2];
+    ld=0;
+    l2=l1*ip;
+    ido=n/l2;
+    ipm=ip-1;
+
+    for (j=0;j<ipm;j++){
+      ld+=l1;
+      i=is;
+      argld=(float)ld*argh;
+      fi=0.f;
+      for (ii=2;ii<ido;ii+=2){
+	fi+=1.f;
+	arg=fi*argld;
+	wa[i++]=cos(arg);
+	wa[i++]=sin(arg);
+      }
+      is+=ido;
+    }
+    l1=l2;
+  }
+}
+
+static void fdrffti(int n, float *wsave, int *ifac){
+
+  if (n == 1) return;
+  drfti1(n, wsave+n, ifac);
+}
+
+static void dradf2(int ido,int l1,float *cc,float *ch,float *wa1){
+  int i,k;
+  float ti2,tr2;
+  int t0,t1,t2,t3,t4,t5,t6;
+
+  t1=0;
+  t0=(t2=l1*ido);
+  t3=ido<<1;
+  for(k=0;k<l1;k++){
+    ch[t1<<1]=cc[t1]+cc[t2];
+    ch[(t1<<1)+t3-1]=cc[t1]-cc[t2];
+    t1+=ido;
+    t2+=ido;
+  }
+    
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  t2=t0;
+  for(k=0;k<l1;k++){
+    t3=t2;
+    t4=(t1<<1)+(ido<<1);
+    t5=t1;
+    t6=t1+t1;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4-=2;
+      t5+=2;
+      t6+=2;
+      tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
+      ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
+      ch[t6]=cc[t5]+ti2;
+      ch[t4]=ti2-cc[t5];
+      ch[t6-1]=cc[t5-1]+tr2;
+      ch[t4-1]=cc[t5-1]-tr2;
+    }
+    t1+=ido;
+    t2+=ido;
+  }
+
+  if(ido%2==1)return;
+
+ L105:
+  t3=(t2=(t1=ido)-1);
+  t2+=t0;
+  for(k=0;k<l1;k++){
+    ch[t1]=-cc[t2];
+    ch[t1-1]=cc[t3];
+    t1+=ido<<1;
+    t2+=ido;
+    t3+=ido;
+  }
+}
+
+static void dradf4(int ido,int l1,float *cc,float *ch,float *wa1,
+	    float *wa2,float *wa3){
+  static float hsqt2 = .70710678118654752f;
+  int i,k,t0,t1,t2,t3,t4,t5,t6;
+  float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
+  t0=l1*ido;
+  
+  t1=t0;
+  t4=t1<<1;
+  t2=t1+(t1<<1);
+  t3=0;
+
+  for(k=0;k<l1;k++){
+    tr1=cc[t1]+cc[t2];
+    tr2=cc[t3]+cc[t4];
+
+    ch[t5=t3<<2]=tr1+tr2;
+    ch[(ido<<2)+t5-1]=tr2-tr1;
+    ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4];
+    ch[t5]=cc[t2]-cc[t1];
+
+    t1+=ido;
+    t2+=ido;
+    t3+=ido;
+    t4+=ido;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+
+  t1=0;
+  for(k=0;k<l1;k++){
+    t2=t1;
+    t4=t1<<2;
+    t5=(t6=ido<<1)+t4;
+    for(i=2;i<ido;i+=2){
+      t3=(t2+=2);
+      t4+=2;
+      t5-=2;
+
+      t3+=t0;
+      cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
+      ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
+      t3+=t0;
+      cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3];
+      ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1];
+      t3+=t0;
+      cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3];
+      ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1];
+
+      tr1=cr2+cr4;
+      tr4=cr4-cr2;
+      ti1=ci2+ci4;
+      ti4=ci2-ci4;
+
+      ti2=cc[t2]+ci3;
+      ti3=cc[t2]-ci3;
+      tr2=cc[t2-1]+cr3;
+      tr3=cc[t2-1]-cr3;
+
+      ch[t4-1]=tr1+tr2;
+      ch[t4]=ti1+ti2;
+
+      ch[t5-1]=tr3-ti4;
+      ch[t5]=tr4-ti3;
+
+      ch[t4+t6-1]=ti4+tr3;
+      ch[t4+t6]=tr4+ti3;
+
+      ch[t5+t6-1]=tr2-tr1;
+      ch[t5+t6]=ti1-ti2;
+    }
+    t1+=ido;
+  }
+  if(ido&1)return;
+
+ L105:
+  
+  t2=(t1=t0+ido-1)+(t0<<1);
+  t3=ido<<2;
+  t4=ido;
+  t5=ido<<1;
+  t6=ido;
+
+  for(k=0;k<l1;k++){
+    ti1=-hsqt2*(cc[t1]+cc[t2]);
+    tr1=hsqt2*(cc[t1]-cc[t2]);
+
+    ch[t4-1]=tr1+cc[t6-1];
+    ch[t4+t5-1]=cc[t6-1]-tr1;
+
+    ch[t4]=ti1-cc[t1+t0];
+    ch[t4+t5]=ti1+cc[t1+t0];
+
+    t1+=ido;
+    t2+=ido;
+    t4+=t3;
+    t6+=ido;
+  }
+}
+
+static void dradfg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
+                          float *c2,float *ch,float *ch2,float *wa){
+
+  static float tpi=6.283185307179586f;
+  int idij,ipph,i,j,k,l,ic,ik,is;
+  int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+  float dc2,ai1,ai2,ar1,ar2,ds2;
+  int nbd;
+  float dcp,arg,dsp,ar1h,ar2h;
+  int idp2,ipp2;
+  
+  arg=tpi/(float)ip;
+  dcp=cos(arg);
+  dsp=sin(arg);
+  ipph=(ip+1)>>1;
+  ipp2=ip;
+  idp2=ido;
+  nbd=(ido-1)>>1;
+  t0=l1*ido;
+  t10=ip*ido;
+
+  if(ido==1)goto L119;
+  for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik];
+
+  t1=0;
+  for(j=1;j<ip;j++){
+    t1+=t0;
+    t2=t1;
+    for(k=0;k<l1;k++){
+      ch[t2]=c1[t2];
+      t2+=ido;
+    }
+  }
+
+  is=-ido;
+  t1=0;
+  if(nbd>l1){
+    for(j=1;j<ip;j++){
+      t1+=t0;
+      is+=ido;
+      t2= -ido+t1;
+      for(k=0;k<l1;k++){
+        idij=is-1;
+        t2+=ido;
+        t3=t2;
+        for(i=2;i<ido;i+=2){
+          idij+=2;
+          t3+=2;
+          ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
+          ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
+        }
+      }
+    }
+  }else{
+
+    for(j=1;j<ip;j++){
+      is+=ido;
+      idij=is-1;
+      t1+=t0;
+      t2=t1;
+      for(i=2;i<ido;i+=2){
+        idij+=2;
+        t2+=2;
+        t3=t2;
+        for(k=0;k<l1;k++){
+          ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
+          ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
+          t3+=ido;
+        }
+      }
+    }
+  }
+
+  t1=0;
+  t2=ipp2*t0;
+  if(nbd<l1){
+    for(j=1;j<ipph;j++){
+      t1+=t0;
+      t2-=t0;
+      t3=t1;
+      t4=t2;
+      for(i=2;i<ido;i+=2){
+        t3+=2;
+        t4+=2;
+        t5=t3-ido;
+        t6=t4-ido;
+        for(k=0;k<l1;k++){
+          t5+=ido;
+          t6+=ido;
+          c1[t5-1]=ch[t5-1]+ch[t6-1];
+          c1[t6-1]=ch[t5]-ch[t6];
+          c1[t5]=ch[t5]+ch[t6];
+          c1[t6]=ch[t6-1]-ch[t5-1];
+        }
+      }
+    }
+  }else{
+    for(j=1;j<ipph;j++){
+      t1+=t0;
+      t2-=t0;
+      t3=t1;
+      t4=t2;
+      for(k=0;k<l1;k++){
+        t5=t3;
+        t6=t4;
+        for(i=2;i<ido;i+=2){
+          t5+=2;
+          t6+=2;
+          c1[t5-1]=ch[t5-1]+ch[t6-1];
+          c1[t6-1]=ch[t5]-ch[t6];
+          c1[t5]=ch[t5]+ch[t6];
+          c1[t6]=ch[t6-1]-ch[t5-1];
+        }
+        t3+=ido;
+        t4+=ido;
+      }
+    }
+  }
+
+L119:
+  for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
+
+  t1=0;
+  t2=ipp2*idl1;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1-ido;
+    t4=t2-ido;
+    for(k=0;k<l1;k++){
+      t3+=ido;
+      t4+=ido;
+      c1[t3]=ch[t3]+ch[t4];
+      c1[t4]=ch[t4]-ch[t3];
+    }
+  }
+
+  ar1=1.f;
+  ai1=0.f;
+  t1=0;
+  t2=ipp2*idl1;
+  t3=(ip-1)*idl1;
+  for(l=1;l<ipph;l++){
+    t1+=idl1;
+    t2-=idl1;
+    ar1h=dcp*ar1-dsp*ai1;
+    ai1=dcp*ai1+dsp*ar1;
+    ar1=ar1h;
+    t4=t1;
+    t5=t2;
+    t6=t3;
+    t7=idl1;
+
+    for(ik=0;ik<idl1;ik++){
+      ch2[t4++]=c2[ik]+ar1*c2[t7++];
+      ch2[t5++]=ai1*c2[t6++];
+    }
+
+    dc2=ar1;
+    ds2=ai1;
+    ar2=ar1;
+    ai2=ai1;
+
+    t4=idl1;
+    t5=(ipp2-1)*idl1;
+    for(j=2;j<ipph;j++){
+      t4+=idl1;
+      t5-=idl1;
+
+      ar2h=dc2*ar2-ds2*ai2;
+      ai2=dc2*ai2+ds2*ar2;
+      ar2=ar2h;
+
+      t6=t1;
+      t7=t2;
+      t8=t4;
+      t9=t5;
+      for(ik=0;ik<idl1;ik++){
+        ch2[t6++]+=ar2*c2[t8++];
+        ch2[t7++]+=ai2*c2[t9++];
+      }
+    }
+  }
+
+  t1=0;
+  for(j=1;j<ipph;j++){
+    t1+=idl1;
+    t2=t1;
+    for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++];
+  }
+
+  if(ido<l1)goto L132;
+
+  t1=0;
+  t2=0;
+  for(k=0;k<l1;k++){
+    t3=t1;
+    t4=t2;
+    for(i=0;i<ido;i++)cc[t4++]=ch[t3++];
+    t1+=ido;
+    t2+=t10;
+  }
+
+  goto L135;
+
+ L132:
+  for(i=0;i<ido;i++){
+    t1=i;
+    t2=i;
+    for(k=0;k<l1;k++){
+      cc[t2]=ch[t1];
+      t1+=ido;
+      t2+=t10;
+    }
+  }
+
+ L135:
+  t1=0;
+  t2=ido<<1;
+  t3=0;
+  t4=ipp2*t0;
+  for(j=1;j<ipph;j++){
+
+    t1+=t2;
+    t3+=t0;
+    t4-=t0;
+
+    t5=t1;
+    t6=t3;
+    t7=t4;
+
+    for(k=0;k<l1;k++){
+      cc[t5-1]=ch[t6];
+      cc[t5]=ch[t7];
+      t5+=t10;
+      t6+=ido;
+      t7+=ido;
+    }
+  }
+
+  if(ido==1)return;
+  if(nbd<l1)goto L141;
+
+  t1=-ido;
+  t3=0;
+  t4=0;
+  t5=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t2;
+    t3+=t2;
+    t4+=t0;
+    t5-=t0;
+    t6=t1;
+    t7=t3;
+    t8=t4;
+    t9=t5;
+    for(k=0;k<l1;k++){
+      for(i=2;i<ido;i+=2){
+        ic=idp2-i;
+        cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1];
+        cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1];
+        cc[i+t7]=ch[i+t8]+ch[i+t9];
+        cc[ic+t6]=ch[i+t9]-ch[i+t8];
+      }
+      t6+=t10;
+      t7+=t10;
+      t8+=ido;
+      t9+=ido;
+    }
+  }
+  return;
+
+ L141:
+
+  t1=-ido;
+  t3=0;
+  t4=0;
+  t5=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t2;
+    t3+=t2;
+    t4+=t0;
+    t5-=t0;
+    for(i=2;i<ido;i+=2){
+      t6=idp2+t1-i;
+      t7=i+t3;
+      t8=i+t4;
+      t9=i+t5;
+      for(k=0;k<l1;k++){
+        cc[t7-1]=ch[t8-1]+ch[t9-1];
+        cc[t6-1]=ch[t8-1]-ch[t9-1];
+        cc[t7]=ch[t8]+ch[t9];
+        cc[t6]=ch[t9]-ch[t8];
+        t6+=t10;
+        t7+=t10;
+        t8+=ido;
+        t9+=ido;
+      }
+    }
+  }
+}
+
+static void drftf1(int n,float *c,float *ch,float *wa,int *ifac){
+  int i,k1,l1,l2;
+  int na,kh,nf;
+  int ip,iw,ido,idl1,ix2,ix3;
+
+  nf=ifac[1];
+  na=1;
+  l2=n;
+  iw=n;
+
+  for(k1=0;k1<nf;k1++){
+    kh=nf-k1;
+    ip=ifac[kh+1];
+    l1=l2/ip;
+    ido=n/l2;
+    idl1=ido*l1;
+    iw-=(ip-1)*ido;
+    na=1-na;
+
+    if(ip!=4)goto L102;
+
+    ix2=iw+ido;
+    ix3=ix2+ido;
+    if(na!=0)
+      dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    else
+      dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    goto L110;
+
+ L102:
+    if(ip!=2)goto L104;
+    if(na!=0)goto L103;
+
+    dradf2(ido,l1,c,ch,wa+iw-1);
+    goto L110;
+
+  L103:
+    dradf2(ido,l1,ch,c,wa+iw-1);
+    goto L110;
+
+  L104:
+    if(ido==1)na=1-na;
+    if(na!=0)goto L109;
+
+    dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
+    na=1;
+    goto L110;
+
+  L109:
+    dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
+    na=0;
+
+  L110:
+    l2=l1;
+  }
+
+  if(na==1)return;
+
+  for(i=0;i<n;i++)c[i]=ch[i];
+}
+
+static void dradb2(int ido,int l1,float *cc,float *ch,float *wa1){
+  int i,k,t0,t1,t2,t3,t4,t5,t6;
+  float ti2,tr2;
+
+  t0=l1*ido;
+  
+  t1=0;
+  t2=0;
+  t3=(ido<<1)-1;
+  for(k=0;k<l1;k++){
+    ch[t1]=cc[t2]+cc[t3+t2];
+    ch[t1+t0]=cc[t2]-cc[t3+t2];
+    t2=(t1+=ido)<<1;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  t2=0;
+  for(k=0;k<l1;k++){
+    t3=t1;
+    t5=(t4=t2)+(ido<<1);
+    t6=t0+t1;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4+=2;
+      t5-=2;
+      t6+=2;
+      ch[t3-1]=cc[t4-1]+cc[t5-1];
+      tr2=cc[t4-1]-cc[t5-1];
+      ch[t3]=cc[t4]-cc[t5];
+      ti2=cc[t4]+cc[t5];
+      ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2;
+      ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2;
+    }
+    t2=(t1+=ido)<<1;
+  }
+
+  if(ido%2==1)return;
+
+L105:
+  t1=ido-1;
+  t2=ido-1;
+  for(k=0;k<l1;k++){
+    ch[t1]=cc[t2]+cc[t2];
+    ch[t1+t0]=-(cc[t2+1]+cc[t2+1]);
+    t1+=ido;
+    t2+=ido<<1;
+  }
+}
+
+static void dradb3(int ido,int l1,float *cc,float *ch,float *wa1,
+                          float *wa2){
+  static float taur = -.5f;
+  static float taui = .8660254037844386f;
+  int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+  float ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
+  t0=l1*ido;
+
+  t1=0;
+  t2=t0<<1;
+  t3=ido<<1;
+  t4=ido+(ido<<1);
+  t5=0;
+  for(k=0;k<l1;k++){
+    tr2=cc[t3-1]+cc[t3-1];
+    cr2=cc[t5]+(taur*tr2);
+    ch[t1]=cc[t5]+tr2;
+    ci3=taui*(cc[t3]+cc[t3]);
+    ch[t1+t0]=cr2-ci3;
+    ch[t1+t2]=cr2+ci3;
+    t1+=ido;
+    t3+=t4;
+    t5+=t4;
+  }
+
+  if(ido==1)return;
+
+  t1=0;
+  t3=ido<<1;
+  for(k=0;k<l1;k++){
+    t7=t1+(t1<<1);
+    t6=(t5=t7+t3);
+    t8=t1;
+    t10=(t9=t1+t0)+t0;
+
+    for(i=2;i<ido;i+=2){
+      t5+=2;
+      t6-=2;
+      t7+=2;
+      t8+=2;
+      t9+=2;
+      t10+=2;
+      tr2=cc[t5-1]+cc[t6-1];
+      cr2=cc[t7-1]+(taur*tr2);
+      ch[t8-1]=cc[t7-1]+tr2;
+      ti2=cc[t5]-cc[t6];
+      ci2=cc[t7]+(taur*ti2);
+      ch[t8]=cc[t7]+ti2;
+      cr3=taui*(cc[t5-1]-cc[t6-1]);
+      ci3=taui*(cc[t5]+cc[t6]);
+      dr2=cr2-ci3;
+      dr3=cr2+ci3;
+      di2=ci2+cr3;
+      di3=ci2-cr3;
+      ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2;
+      ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2;
+      ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3;
+      ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3;
+    }
+    t1+=ido;
+  }
+}
+
+static void dradb4(int ido,int l1,float *cc,float *ch,float *wa1,
+			  float *wa2,float *wa3){
+  static float sqrt2=1.414213562373095f;
+  int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
+  float ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
+  t0=l1*ido;
+  
+  t1=0;
+  t2=ido<<2;
+  t3=0;
+  t6=ido<<1;
+  for(k=0;k<l1;k++){
+    t4=t3+t6;
+    t5=t1;
+    tr3=cc[t4-1]+cc[t4-1];
+    tr4=cc[t4]+cc[t4]; 
+    tr1=cc[t3]-cc[(t4+=t6)-1];
+    tr2=cc[t3]+cc[t4-1];
+    ch[t5]=tr2+tr3;
+    ch[t5+=t0]=tr1-tr4;
+    ch[t5+=t0]=tr2-tr3;
+    ch[t5+=t0]=tr1+tr4;
+    t1+=ido;
+    t3+=t2;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  for(k=0;k<l1;k++){
+    t5=(t4=(t3=(t2=t1<<2)+t6))+t6;
+    t7=t1;
+    for(i=2;i<ido;i+=2){
+      t2+=2;
+      t3+=2;
+      t4-=2;
+      t5-=2;
+      t7+=2;
+      ti1=cc[t2]+cc[t5];
+      ti2=cc[t2]-cc[t5];
+      ti3=cc[t3]-cc[t4];
+      tr4=cc[t3]+cc[t4];
+      tr1=cc[t2-1]-cc[t5-1];
+      tr2=cc[t2-1]+cc[t5-1];
+      ti4=cc[t3-1]-cc[t4-1];
+      tr3=cc[t3-1]+cc[t4-1];
+      ch[t7-1]=tr2+tr3;
+      cr3=tr2-tr3;
+      ch[t7]=ti2+ti3;
+      ci3=ti2-ti3;
+      cr2=tr1-tr4;
+      cr4=tr1+tr4;
+      ci2=ti1+ti4;
+      ci4=ti1-ti4;
+
+      ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2;
+      ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2;
+      ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3;
+      ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3;
+      ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4;
+      ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4;
+    }
+    t1+=ido;
+  }
+
+  if(ido%2 == 1)return;
+
+ L105:
+
+  t1=ido;
+  t2=ido<<2;
+  t3=ido-1;
+  t4=ido+(ido<<1);
+  for(k=0;k<l1;k++){
+    t5=t3;
+    ti1=cc[t1]+cc[t4];
+    ti2=cc[t4]-cc[t1];
+    tr1=cc[t1-1]-cc[t4-1];
+    tr2=cc[t1-1]+cc[t4-1];
+    ch[t5]=tr2+tr2;
+    ch[t5+=t0]=sqrt2*(tr1-ti1);
+    ch[t5+=t0]=ti2+ti2;
+    ch[t5+=t0]=-sqrt2*(tr1+ti1);
+
+    t3+=ido;
+    t1+=t2;
+    t4+=t2;
+  }
+}
+
+static void dradbg(int ido,int ip,int l1,int idl1,float *cc,float *c1,
+            float *c2,float *ch,float *ch2,float *wa){
+  static float tpi=6.283185307179586f;
+  int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
+      t11,t12;
+  float dc2,ai1,ai2,ar1,ar2,ds2;
+  int nbd;
+  float dcp,arg,dsp,ar1h,ar2h;
+  int ipp2;
+
+  t10=ip*ido;
+  t0=l1*ido;
+  arg=tpi/(float)ip;
+  dcp=cos(arg);
+  dsp=sin(arg);
+  nbd=(ido-1)>>1;
+  ipp2=ip;
+  ipph=(ip+1)>>1;
+  if(ido<l1)goto L103;
+  
+  t1=0;
+  t2=0;
+  for(k=0;k<l1;k++){
+    t3=t1;
+    t4=t2;
+    for(i=0;i<ido;i++){
+      ch[t3]=cc[t4];
+      t3++;
+      t4++;
+    }
+    t1+=ido;
+    t2+=t10;
+  }
+  goto L106;
+
+ L103:
+  t1=0;
+  for(i=0;i<ido;i++){
+    t2=t1;
+    t3=t1;
+    for(k=0;k<l1;k++){
+      ch[t2]=cc[t3];
+      t2+=ido;
+      t3+=t10;
+    }
+    t1++;
+  }
+
+ L106:
+  t1=0;
+  t2=ipp2*t0;
+  t7=(t5=ido<<1);
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    t6=t5;
+    for(k=0;k<l1;k++){
+      ch[t3]=cc[t6-1]+cc[t6-1];
+      ch[t4]=cc[t6]+cc[t6];
+      t3+=ido;
+      t4+=ido;
+      t6+=t10;
+    }
+    t5+=t7;
+  }
+
+  if (ido == 1)goto L116;
+  if(nbd<l1)goto L112;
+
+  t1=0;
+  t2=ipp2*t0;
+  t7=0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+
+    t7+=(ido<<1);
+    t8=t7;
+    for(k=0;k<l1;k++){
+      t5=t3;
+      t6=t4;
+      t9=t8;
+      t11=t8;
+      for(i=2;i<ido;i+=2){
+        t5+=2;
+        t6+=2;
+        t9+=2;
+        t11-=2;
+        ch[t5-1]=cc[t9-1]+cc[t11-1];
+        ch[t6-1]=cc[t9-1]-cc[t11-1];
+        ch[t5]=cc[t9]-cc[t11];
+        ch[t6]=cc[t9]+cc[t11];
+      }
+      t3+=ido;
+      t4+=ido;
+      t8+=t10;
+    }
+  }
+  goto L116;
+
+ L112:
+  t1=0;
+  t2=ipp2*t0;
+  t7=0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    t7+=(ido<<1);
+    t8=t7;
+    t9=t7;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4+=2;
+      t8+=2;
+      t9-=2;
+      t5=t3;
+      t6=t4;
+      t11=t8;
+      t12=t9;
+      for(k=0;k<l1;k++){
+        ch[t5-1]=cc[t11-1]+cc[t12-1];
+        ch[t6-1]=cc[t11-1]-cc[t12-1];
+        ch[t5]=cc[t11]-cc[t12];
+        ch[t6]=cc[t11]+cc[t12];
+        t5+=ido;
+        t6+=ido;
+        t11+=t10;
+        t12+=t10;
+      }
+    }
+  }
+
+L116:
+  ar1=1.f;
+  ai1=0.f;
+  t1=0;
+  t9=(t2=ipp2*idl1);
+  t3=(ip-1)*idl1;
+  for(l=1;l<ipph;l++){
+    t1+=idl1;
+    t2-=idl1;
+
+    ar1h=dcp*ar1-dsp*ai1;
+    ai1=dcp*ai1+dsp*ar1;
+    ar1=ar1h;
+    t4=t1;
+    t5=t2;
+    t6=0;
+    t7=idl1;
+    t8=t3;
+    for(ik=0;ik<idl1;ik++){
+      c2[t4++]=ch2[t6++]+ar1*ch2[t7++];
+      c2[t5++]=ai1*ch2[t8++];
+    }
+    dc2=ar1;
+    ds2=ai1;
+    ar2=ar1;
+    ai2=ai1;
+
+    t6=idl1;
+    t7=t9-idl1;
+    for(j=2;j<ipph;j++){
+      t6+=idl1;
+      t7-=idl1;
+      ar2h=dc2*ar2-ds2*ai2;
+      ai2=dc2*ai2+ds2*ar2;
+      ar2=ar2h;
+      t4=t1;
+      t5=t2;
+      t11=t6;
+      t12=t7;
+      for(ik=0;ik<idl1;ik++){
+        c2[t4++]+=ar2*ch2[t11++];
+        c2[t5++]+=ai2*ch2[t12++];
+      }
+    }
+  }
+
+  t1=0;
+  for(j=1;j<ipph;j++){
+    t1+=idl1;
+    t2=t1;
+    for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++];
+  }
+
+  t1=0;
+  t2=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    for(k=0;k<l1;k++){
+      ch[t3]=c1[t3]-c1[t4];
+      ch[t4]=c1[t3]+c1[t4];
+      t3+=ido;
+      t4+=ido;
+    }
+  }
+
+  if(ido==1)goto L132;
+  if(nbd<l1)goto L128;
+
+  t1=0;
+  t2=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    for(k=0;k<l1;k++){
+      t5=t3;
+      t6=t4;
+      for(i=2;i<ido;i+=2){
+        t5+=2;
+        t6+=2;
+        ch[t5-1]=c1[t5-1]-c1[t6];
+        ch[t6-1]=c1[t5-1]+c1[t6];
+        ch[t5]=c1[t5]+c1[t6-1];
+        ch[t6]=c1[t5]-c1[t6-1];
+      }
+      t3+=ido;
+      t4+=ido;
+    }
+  }
+  goto L132;
+
+ L128:
+  t1=0;
+  t2=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4+=2;
+      t5=t3;
+      t6=t4;
+      for(k=0;k<l1;k++){
+        ch[t5-1]=c1[t5-1]-c1[t6];
+        ch[t6-1]=c1[t5-1]+c1[t6];
+        ch[t5]=c1[t5]+c1[t6-1];
+        ch[t6]=c1[t5]-c1[t6-1];
+        t5+=ido;
+        t6+=ido;
+      }
+    }
+  }
+
+L132:
+  if(ido==1)return;
+
+  for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
+
+  t1=0;
+  for(j=1;j<ip;j++){
+    t2=(t1+=t0);
+    for(k=0;k<l1;k++){
+      c1[t2]=ch[t2];
+      t2+=ido;
+    }
+  }
+
+  if(nbd>l1)goto L139;
+
+  is= -ido-1;
+  t1=0;
+  for(j=1;j<ip;j++){
+    is+=ido;
+    t1+=t0;
+    idij=is;
+    t2=t1;
+    for(i=2;i<ido;i+=2){
+      t2+=2;
+      idij+=2;
+      t3=t2;
+      for(k=0;k<l1;k++){
+        c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
+        c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
+        t3+=ido;
+      }
+    }
+  }
+  return;
+
+ L139:
+  is= -ido-1;
+  t1=0;
+  for(j=1;j<ip;j++){
+    is+=ido;
+    t1+=t0;
+    t2=t1;
+    for(k=0;k<l1;k++){
+      idij=is;
+      t3=t2;
+      for(i=2;i<ido;i+=2){
+        idij+=2;
+        t3+=2;
+        c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
+        c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
+      }
+      t2+=ido;
+    }
+  }
+}
+
+static void drftb1(int n, float *c, float *ch, float *wa, int *ifac){
+  int i,k1,l1,l2;
+  int na;
+  int nf,ip,iw,ix2,ix3,ido,idl1;
+
+  nf=ifac[1];
+  na=0;
+  l1=1;
+  iw=1;
+
+  for(k1=0;k1<nf;k1++){
+    ip=ifac[k1 + 2];
+    l2=ip*l1;
+    ido=n/l2;
+    idl1=ido*l1;
+    if(ip!=4)goto L103;
+    ix2=iw+ido;
+    ix3=ix2+ido;
+
+    if(na!=0)
+      dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    else
+      dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    na=1-na;
+    goto L115;
+
+  L103:
+    if(ip!=2)goto L106;
+
+    if(na!=0)
+      dradb2(ido,l1,ch,c,wa+iw-1);
+    else
+      dradb2(ido,l1,c,ch,wa+iw-1);
+    na=1-na;
+    goto L115;
+
+  L106:
+    if(ip!=3)goto L109;
+
+    ix2=iw+ido;
+    if(na!=0)
+      dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1);
+    else
+      dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1);
+    na=1-na;
+    goto L115;
+
+  L109:
+/*    The radix five case can be translated later..... */
+/*    if(ip!=5)goto L112;
+
+    ix2=iw+ido;
+    ix3=ix2+ido;
+    ix4=ix3+ido;
+    if(na!=0)
+      dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
+    else
+      dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
+    na=1-na;
+    goto L115;
+
+  L112:*/
+    if(na!=0)
+      dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
+    else
+      dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
+    if(ido==1)na=1-na;
+
+  L115:
+    l1=l2;
+    iw+=(ip-1)*ido;
+  }
+
+  if(na==0)return;
+
+  for(i=0;i<n;i++)c[i]=ch[i];
+}
+
+void drft_forward(drft_lookup *l,float *data){
+  if(l->n==1)return;
+  drftf1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
+}
+
+void drft_backward(drft_lookup *l,float *data){
+  if (l->n==1)return;
+  drftb1(l->n,data,l->trigcache,l->trigcache+l->n,l->splitcache);
+}
+
+void drft_init(drft_lookup *l,int n){
+  l->n=n;
+  l->trigcache=_ogg_calloc(3*n,sizeof(*l->trigcache));
+  l->splitcache=_ogg_calloc(32,sizeof(*l->splitcache));
+  fdrffti(n, l->trigcache, l->splitcache);
+}
+
+void drft_clear(drft_lookup *l){
+  if(l){
+    if(l->trigcache)_ogg_free(l->trigcache);
+    if(l->splitcache)_ogg_free(l->splitcache);
+    memset(l,0,sizeof(*l));
+  }
+}
Index: /libvorbis-1.2.0/lib/smallft.h
===================================================================
--- /libvorbis-1.2.0/lib/smallft.h	(revision 16)
+++ /libvorbis-1.2.0/lib/smallft.h	(revision 16)
@@ -0,0 +1,34 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: fft transform
+ last mod: $Id: smallft.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_SMFT_H_
+#define _V_SMFT_H_
+
+#include "vorbis/codec.h"
+
+typedef struct {
+  int n;
+  float *trigcache;
+  int *splitcache;
+} drft_lookup;
+
+extern void drft_forward(drft_lookup *l,float *data);
+extern void drft_backward(drft_lookup *l,float *data);
+extern void drft_init(drft_lookup *l,int n);
+extern void drft_clear(drft_lookup *l);
+
+#endif
Index: /libvorbis-1.2.0/lib/synthesis.c
===================================================================
--- /libvorbis-1.2.0/lib/synthesis.c	(revision 16)
+++ /libvorbis-1.2.0/lib/synthesis.c	(revision 16)
@@ -0,0 +1,170 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: single-block PCM synthesis
+ last mod: $Id: synthesis.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdio.h>
+#include <ogg/ogg.h>
+#include "vorbis/codec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "misc.h"
+#include "os.h"
+
+int vorbis_synthesis(vorbis_block *vb,ogg_packet *op){
+  vorbis_dsp_state     *vd=vb->vd;
+  private_state        *b=vd->backend_state;
+  vorbis_info          *vi=vd->vi;
+  codec_setup_info     *ci=vi->codec_setup;
+  oggpack_buffer       *opb=&vb->opb;
+  int                   type,mode,i;
+ 
+  /* first things first.  Make sure decode is ready */
+  _vorbis_block_ripcord(vb);
+  oggpack_readinit(opb,op->packet,op->bytes);
+
+  /* Check the packet type */
+  if(oggpack_read(opb,1)!=0){
+    /* Oops.  This is not an audio data packet */
+    return(OV_ENOTAUDIO);
+  }
+
+  /* read our mode and pre/post windowsize */
+  mode=oggpack_read(opb,b->modebits);
+  if(mode==-1)return(OV_EBADPACKET);
+  
+  vb->mode=mode;
+  vb->W=ci->mode_param[mode]->blockflag;
+  if(vb->W){
+
+    /* this doesn;t get mapped through mode selection as it's used
+       only for window selection */
+    vb->lW=oggpack_read(opb,1);
+    vb->nW=oggpack_read(opb,1);
+    if(vb->nW==-1)   return(OV_EBADPACKET);
+  }else{
+    vb->lW=0;
+    vb->nW=0;
+  }
+  
+  /* more setup */
+  vb->granulepos=op->granulepos;
+  vb->sequence=op->packetno;
+  vb->eofflag=op->e_o_s;
+
+  /* alloc pcm passback storage */
+  vb->pcmend=ci->blocksizes[vb->W];
+  vb->pcm=_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
+  for(i=0;i<vi->channels;i++)
+    vb->pcm[i]=_vorbis_block_alloc(vb,vb->pcmend*sizeof(*vb->pcm[i]));
+
+  /* unpack_header enforces range checking */
+  type=ci->map_type[ci->mode_param[mode]->mapping];
+
+  return(_mapping_P[type]->inverse(vb,ci->map_param[ci->mode_param[mode]->
+						   mapping]));
+}
+
+/* used to track pcm position without actually performing decode.
+   Useful for sequential 'fast forward' */
+int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op){
+  vorbis_dsp_state     *vd=vb->vd;
+  private_state        *b=vd->backend_state;
+  vorbis_info          *vi=vd->vi;
+  codec_setup_info     *ci=vi->codec_setup;
+  oggpack_buffer       *opb=&vb->opb;
+  int                   mode;
+ 
+  /* first things first.  Make sure decode is ready */
+  _vorbis_block_ripcord(vb);
+  oggpack_readinit(opb,op->packet,op->bytes);
+
+  /* Check the packet type */
+  if(oggpack_read(opb,1)!=0){
+    /* Oops.  This is not an audio data packet */
+    return(OV_ENOTAUDIO);
+  }
+
+  /* read our mode and pre/post windowsize */
+  mode=oggpack_read(opb,b->modebits);
+  if(mode==-1)return(OV_EBADPACKET);
+  
+  vb->mode=mode;
+  vb->W=ci->mode_param[mode]->blockflag;
+  if(vb->W){
+    vb->lW=oggpack_read(opb,1);
+    vb->nW=oggpack_read(opb,1);
+    if(vb->nW==-1)   return(OV_EBADPACKET);
+  }else{
+    vb->lW=0;
+    vb->nW=0;
+  }
+  
+  /* more setup */
+  vb->granulepos=op->granulepos;
+  vb->sequence=op->packetno;
+  vb->eofflag=op->e_o_s;
+
+  /* no pcm */
+  vb->pcmend=0;
+  vb->pcm=NULL;
+
+  return(0);
+}
+
+long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){
+  codec_setup_info     *ci=vi->codec_setup;
+  oggpack_buffer       opb;
+  int                  mode;
+ 
+  oggpack_readinit(&opb,op->packet,op->bytes);
+
+  /* Check the packet type */
+  if(oggpack_read(&opb,1)!=0){
+    /* Oops.  This is not an audio data packet */
+    return(OV_ENOTAUDIO);
+  }
+
+  {
+    int modebits=0;
+    int v=ci->modes;
+    while(v>1){
+      modebits++;
+      v>>=1;
+    }
+
+    /* read our mode and pre/post windowsize */
+    mode=oggpack_read(&opb,modebits);
+  }
+  if(mode==-1)return(OV_EBADPACKET);
+  return(ci->blocksizes[ci->mode_param[mode]->blockflag]);
+}
+
+int vorbis_synthesis_halfrate(vorbis_info *vi,int flag){
+  /* set / clear half-sample-rate mode */
+  codec_setup_info     *ci=vi->codec_setup;
+  
+  /* right now, our MDCT can't handle < 64 sample windows. */
+  if(ci->blocksizes[0]<=64 && flag)return -1;
+  ci->halfrate_flag=(flag?1:0);
+  return 0;
+}
+
+int vorbis_synthesis_halfrate_p(vorbis_info *vi){
+  codec_setup_info     *ci=vi->codec_setup;
+  return ci->halfrate_flag;
+}
+
+
Index: /libvorbis-1.2.0/lib/tone.c
===================================================================
--- /libvorbis-1.2.0/lib/tone.c	(revision 16)
+++ /libvorbis-1.2.0/lib/tone.c	(revision 16)
@@ -0,0 +1,54 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+void usage(){
+  fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n");
+  exit(1);
+}
+
+int main (int argc,char *argv[]){
+  int i,j;
+  double *f;
+  double *amp;
+  
+  if(argc<2)usage();
+
+  f=alloca(sizeof(*f)*(argc-1));
+  amp=alloca(sizeof(*amp)*(argc-1));
+
+  i=0;
+  while(argv[i+1]){
+    char *pos=strchr(argv[i+1],',');
+    
+    f[i]=atof(argv[i+1]);
+    if(pos)
+      amp[i]=atof(pos+1)*32767.f;
+    else
+      amp[i]=32767.f;
+
+    fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]);
+
+    i++;
+  }
+
+  for(i=0;i<44100*10;i++){
+    float val=0;
+    int ival;
+    for(j=0;j<argc-1;j++)
+      val+=amp[j]*sin(i/44100.f*f[j]*2*M_PI);
+    ival=rint(val);
+
+    if(ival>32767.f)ival=32767.f;
+    if(ival<-32768.f)ival=-32768.f;
+
+    fprintf(stdout,"%c%c%c%c",
+	    (char)(ival&0xff),
+	    (char)((ival>>8)&0xff),
+	    (char)(ival&0xff),
+	    (char)((ival>>8)&0xff));
+  }
+  return(0);
+}
+
Index: /libvorbis-1.2.0/lib/vorbisenc.c
===================================================================
--- /libvorbis-1.2.0/lib/vorbisenc.c	(revision 16)
+++ /libvorbis-1.2.0/lib/vorbisenc.c	(revision 16)
@@ -0,0 +1,1184 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: simple programmatic interface for encoder mode setup
+ last mod: $Id: vorbisenc.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "vorbis/codec.h"
+#include "vorbis/vorbisenc.h"
+
+#include "codec_internal.h"
+
+#include "os.h"
+#include "misc.h"
+
+/* careful with this; it's using static array sizing to make managing
+   all the modes a little less annoying.  If we use a residue backend
+   with > 12 partition types, or a different division of iteration,
+   this needs to be updated. */
+typedef struct {
+  static_codebook *books[12][3];
+} static_bookblock;
+
+typedef struct {
+  int res_type;
+  int limit_type; /* 0 lowpass limited, 1 point stereo limited */
+  vorbis_info_residue0 *res;
+  static_codebook  *book_aux;
+  static_codebook  *book_aux_managed;
+  static_bookblock *books_base;
+  static_bookblock *books_base_managed;
+} vorbis_residue_template;
+
+typedef struct {
+  vorbis_info_mapping0    *map;
+  vorbis_residue_template *res;
+} vorbis_mapping_template;
+
+typedef struct vp_adjblock{
+  int block[P_BANDS];
+} vp_adjblock;
+
+typedef struct {
+  int data[NOISE_COMPAND_LEVELS];
+} compandblock;
+
+/* high level configuration information for setting things up
+   step-by-step with the detailed vorbis_encode_ctl interface.
+   There's a fair amount of redundancy such that interactive setup
+   does not directly deal with any vorbis_info or codec_setup_info
+   initialization; it's all stored (until full init) in this highlevel
+   setup, then flushed out to the real codec setup structs later. */
+
+typedef struct {
+  int att[P_NOISECURVES];
+  float boost;
+  float decay;
+} att3;
+typedef struct { int data[P_NOISECURVES]; } adj3; 
+
+typedef struct {
+  int   pre[PACKETBLOBS];
+  int   post[PACKETBLOBS];
+  float kHz[PACKETBLOBS];
+  float lowpasskHz[PACKETBLOBS];
+} adj_stereo;
+
+typedef struct {
+  int lo;
+  int hi;
+  int fixed;
+} noiseguard;
+typedef struct {
+  int data[P_NOISECURVES][17];
+} noise3;
+
+typedef struct {
+  int      mappings;
+  double  *rate_mapping;
+  double  *quality_mapping;
+  int      coupling_restriction;
+  long     samplerate_min_restriction;
+  long     samplerate_max_restriction;
+
+
+  int     *blocksize_short;
+  int     *blocksize_long;
+
+  att3    *psy_tone_masteratt;
+  int     *psy_tone_0dB;
+  int     *psy_tone_dBsuppress;
+
+  vp_adjblock *psy_tone_adj_impulse;
+  vp_adjblock *psy_tone_adj_long;
+  vp_adjblock *psy_tone_adj_other;
+
+  noiseguard  *psy_noiseguards;
+  noise3      *psy_noise_bias_impulse;
+  noise3      *psy_noise_bias_padding;
+  noise3      *psy_noise_bias_trans;
+  noise3      *psy_noise_bias_long;
+  int         *psy_noise_dBsuppress;
+
+  compandblock  *psy_noise_compand;
+  double        *psy_noise_compand_short_mapping;
+  double        *psy_noise_compand_long_mapping;
+
+  int      *psy_noise_normal_start[2];
+  int      *psy_noise_normal_partition[2];
+  double   *psy_noise_normal_thresh;
+
+  int      *psy_ath_float;
+  int      *psy_ath_abs;
+
+  double   *psy_lowpass;
+
+  vorbis_info_psy_global *global_params;
+  double     *global_mapping;
+  adj_stereo *stereo_modes;
+
+  static_codebook ***floor_books;
+  vorbis_info_floor1 *floor_params;
+  int *floor_short_mapping;
+  int *floor_long_mapping;
+
+  vorbis_mapping_template *maps;
+} ve_setup_data_template;
+
+/* a few static coder conventions */
+static vorbis_info_mode _mode_template[2]={
+  {0,0,0,0},
+  {1,0,0,1}
+};
+
+static vorbis_info_mapping0 _map_nominal[2]={
+  {1, {0,0}, {0}, {0}, 1,{0},{1}},
+  {1, {0,0}, {1}, {1}, 1,{0},{1}}
+};
+
+#include "modes/setup_44.h"
+#include "modes/setup_44u.h"
+#include "modes/setup_32.h"
+#include "modes/setup_8.h"
+#include "modes/setup_11.h"
+#include "modes/setup_16.h"
+#include "modes/setup_22.h"
+#include "modes/setup_X.h"
+
+static ve_setup_data_template *setup_list[]={
+  &ve_setup_44_stereo,
+  &ve_setup_44_uncoupled,
+
+  &ve_setup_32_stereo,
+  &ve_setup_32_uncoupled,
+
+  &ve_setup_22_stereo,
+  &ve_setup_22_uncoupled,
+  &ve_setup_16_stereo,
+  &ve_setup_16_uncoupled,
+
+  &ve_setup_11_stereo,
+  &ve_setup_11_uncoupled,
+  &ve_setup_8_stereo,
+  &ve_setup_8_uncoupled,
+
+  &ve_setup_X_stereo,
+  &ve_setup_X_uncoupled,
+  &ve_setup_XX_stereo,
+  &ve_setup_XX_uncoupled,
+  0
+};
+
+static int vorbis_encode_toplevel_setup(vorbis_info *vi,int ch,long rate){
+  if(vi && vi->codec_setup){
+
+    vi->version=0;
+    vi->channels=ch;
+    vi->rate=rate;
+
+    return(0);
+  }
+  return(OV_EINVAL);
+}
+
+static void vorbis_encode_floor_setup(vorbis_info *vi,double s,int block,
+				     static_codebook    ***books, 
+				     vorbis_info_floor1 *in, 
+				     int *x){
+  int i,k,is=s;
+  vorbis_info_floor1 *f=_ogg_calloc(1,sizeof(*f));
+  codec_setup_info *ci=vi->codec_setup;
+
+  memcpy(f,in+x[is],sizeof(*f));
+  /* fill in the lowpass field, even if it's temporary */
+  f->n=ci->blocksizes[block]>>1;
+
+  /* books */
+  {
+    int partitions=f->partitions;
+    int maxclass=-1;
+    int maxbook=-1;
+    for(i=0;i<partitions;i++)
+      if(f->partitionclass[i]>maxclass)maxclass=f->partitionclass[i];
+    for(i=0;i<=maxclass;i++){
+      if(f->class_book[i]>maxbook)maxbook=f->class_book[i];
+      f->class_book[i]+=ci->books;
+      for(k=0;k<(1<<f->class_subs[i]);k++){
+	if(f->class_subbook[i][k]>maxbook)maxbook=f->class_subbook[i][k];
+	if(f->class_subbook[i][k]>=0)f->class_subbook[i][k]+=ci->books;
+      }
+    }
+
+    for(i=0;i<=maxbook;i++)
+      ci->book_param[ci->books++]=books[x[is]][i];
+  }
+
+  /* for now, we're only using floor 1 */
+  ci->floor_type[ci->floors]=1;
+  ci->floor_param[ci->floors]=f;
+  ci->floors++;
+
+  return;
+}
+
+static void vorbis_encode_global_psych_setup(vorbis_info *vi,double s,
+					    vorbis_info_psy_global *in, 
+					    double *x){
+  int i,is=s;
+  double ds=s-is;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy_global *g=&ci->psy_g_param;
+  
+  memcpy(g,in+(int)x[is],sizeof(*g));
+  
+  ds=x[is]*(1.-ds)+x[is+1]*ds;
+  is=(int)ds;
+  ds-=is;
+  if(ds==0 && is>0){
+    is--;
+    ds=1.;
+  }
+  
+  /* interpolate the trigger threshholds */
+  for(i=0;i<4;i++){
+    g->preecho_thresh[i]=in[is].preecho_thresh[i]*(1.-ds)+in[is+1].preecho_thresh[i]*ds;
+    g->postecho_thresh[i]=in[is].postecho_thresh[i]*(1.-ds)+in[is+1].postecho_thresh[i]*ds;
+  }
+  g->ampmax_att_per_sec=ci->hi.amplitude_track_dBpersec;
+  return;
+}
+
+static void vorbis_encode_global_stereo(vorbis_info *vi,
+				       highlevel_encode_setup *hi,
+				       adj_stereo *p){
+  float s=hi->stereo_point_setting;
+  int i,is=s;
+  double ds=s-is;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy_global *g=&ci->psy_g_param;
+
+  if(p){
+    memcpy(g->coupling_prepointamp,p[is].pre,sizeof(*p[is].pre)*PACKETBLOBS);
+    memcpy(g->coupling_postpointamp,p[is].post,sizeof(*p[is].post)*PACKETBLOBS);
+
+    if(hi->managed){
+      /* interpolate the kHz threshholds */
+      for(i=0;i<PACKETBLOBS;i++){
+	float kHz=p[is].kHz[i]*(1.-ds)+p[is+1].kHz[i]*ds;
+	g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+	g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+	g->coupling_pkHz[i]=kHz;
+	
+	kHz=p[is].lowpasskHz[i]*(1.-ds)+p[is+1].lowpasskHz[i]*ds;
+	g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+	g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+	
+      }
+    }else{
+      float kHz=p[is].kHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].kHz[PACKETBLOBS/2]*ds;
+      for(i=0;i<PACKETBLOBS;i++){
+	g->coupling_pointlimit[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+	g->coupling_pointlimit[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+	g->coupling_pkHz[i]=kHz;
+      }
+      
+      kHz=p[is].lowpasskHz[PACKETBLOBS/2]*(1.-ds)+p[is+1].lowpasskHz[PACKETBLOBS/2]*ds;
+      for(i=0;i<PACKETBLOBS;i++){
+	g->sliding_lowpass[0][i]=kHz*1000./vi->rate*ci->blocksizes[0];
+	g->sliding_lowpass[1][i]=kHz*1000./vi->rate*ci->blocksizes[1];
+      }
+    }
+  }else{
+    for(i=0;i<PACKETBLOBS;i++){
+      g->sliding_lowpass[0][i]=ci->blocksizes[0];
+      g->sliding_lowpass[1][i]=ci->blocksizes[1];
+    }
+  }
+  return;
+}
+
+static void vorbis_encode_psyset_setup(vorbis_info *vi,double s,
+				      int *nn_start,
+				      int *nn_partition,
+				      double *nn_thresh,
+				      int block){
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy *p=ci->psy_param[block];
+  highlevel_encode_setup *hi=&ci->hi;
+  int is=s;
+  
+  if(block>=ci->psys)
+    ci->psys=block+1;
+  if(!p){
+    p=_ogg_calloc(1,sizeof(*p));
+    ci->psy_param[block]=p;
+  }
+  
+  memcpy(p,&_psy_info_template,sizeof(*p));
+  p->blockflag=block>>1;
+
+  if(hi->noise_normalize_p){
+    p->normal_channel_p=1;
+    p->normal_point_p=1;
+    p->normal_start=nn_start[is];
+    p->normal_partition=nn_partition[is];
+    p->normal_thresh=nn_thresh[is];
+  }
+    
+  return;
+}
+
+static void vorbis_encode_tonemask_setup(vorbis_info *vi,double s,int block,
+					 att3 *att,
+					 int  *max,
+					 vp_adjblock *in){
+  int i,is=s;
+  double ds=s-is;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy *p=ci->psy_param[block];
+
+  /* 0 and 2 are only used by bitmanagement, but there's no harm to always
+     filling the values in here */
+  p->tone_masteratt[0]=att[is].att[0]*(1.-ds)+att[is+1].att[0]*ds;
+  p->tone_masteratt[1]=att[is].att[1]*(1.-ds)+att[is+1].att[1]*ds;
+  p->tone_masteratt[2]=att[is].att[2]*(1.-ds)+att[is+1].att[2]*ds;
+  p->tone_centerboost=att[is].boost*(1.-ds)+att[is+1].boost*ds;
+  p->tone_decay=att[is].decay*(1.-ds)+att[is+1].decay*ds;
+
+  p->max_curve_dB=max[is]*(1.-ds)+max[is+1]*ds;
+
+  for(i=0;i<P_BANDS;i++)
+    p->toneatt[i]=in[is].block[i]*(1.-ds)+in[is+1].block[i]*ds;
+  return;
+}
+
+
+static void vorbis_encode_compand_setup(vorbis_info *vi,double s,int block,
+				       compandblock *in, double *x){
+  int i,is=s;
+  double ds=s-is;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy *p=ci->psy_param[block];
+
+  ds=x[is]*(1.-ds)+x[is+1]*ds;
+  is=(int)ds;
+  ds-=is;
+  if(ds==0 && is>0){
+    is--;
+    ds=1.;
+  }
+
+  /* interpolate the compander settings */
+  for(i=0;i<NOISE_COMPAND_LEVELS;i++)
+    p->noisecompand[i]=in[is].data[i]*(1.-ds)+in[is+1].data[i]*ds;
+  return;
+}
+
+static void vorbis_encode_peak_setup(vorbis_info *vi,double s,int block,
+				    int *suppress){
+  int is=s;
+  double ds=s-is;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy *p=ci->psy_param[block];
+
+  p->tone_abs_limit=suppress[is]*(1.-ds)+suppress[is+1]*ds;
+
+  return;
+}
+
+static void vorbis_encode_noisebias_setup(vorbis_info *vi,double s,int block,
+					 int *suppress,
+					 noise3 *in,
+					 noiseguard *guard,
+					 double userbias){
+  int i,is=s,j;
+  double ds=s-is;
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy *p=ci->psy_param[block];
+
+  p->noisemaxsupp=suppress[is]*(1.-ds)+suppress[is+1]*ds;
+  p->noisewindowlomin=guard[block].lo;
+  p->noisewindowhimin=guard[block].hi;
+  p->noisewindowfixed=guard[block].fixed;
+
+  for(j=0;j<P_NOISECURVES;j++)
+    for(i=0;i<P_BANDS;i++)
+      p->noiseoff[j][i]=in[is].data[j][i]*(1.-ds)+in[is+1].data[j][i]*ds;
+
+  /* impulse blocks may take a user specified bias to boost the
+     nominal/high noise encoding depth */
+  for(j=0;j<P_NOISECURVES;j++){
+    float min=p->noiseoff[j][0]+6; /* the lowest it can go */
+    for(i=0;i<P_BANDS;i++){
+      p->noiseoff[j][i]+=userbias;
+      if(p->noiseoff[j][i]<min)p->noiseoff[j][i]=min;
+    }
+  }
+
+  return;
+}
+
+static void vorbis_encode_ath_setup(vorbis_info *vi,int block){
+  codec_setup_info *ci=vi->codec_setup;
+  vorbis_info_psy *p=ci->psy_param[block];
+
+  p->ath_adjatt=ci->hi.ath_floating_dB;
+  p->ath_maxatt=ci->hi.ath_absolute_dB;
+  return;
+}
+
+
+static int book_dup_or_new(codec_setup_info *ci,static_codebook *book){
+  int i;
+  for(i=0;i<ci->books;i++)
+    if(ci->book_param[i]==book)return(i);
+  
+  return(ci->books++);
+}
+
+static void vorbis_encode_blocksize_setup(vorbis_info *vi,double s,
+					 int *shortb,int *longb){
+
+  codec_setup_info *ci=vi->codec_setup;
+  int is=s;
+  
+  int blockshort=shortb[is];
+  int blocklong=longb[is];
+  ci->blocksizes[0]=blockshort;
+  ci->blocksizes[1]=blocklong;
+
+}
+
+static void vorbis_encode_residue_setup(vorbis_info *vi,
+				       int number, int block,
+				       vorbis_residue_template *res){
+
+  codec_setup_info *ci=vi->codec_setup;
+  int i,n;
+  
+  vorbis_info_residue0 *r=ci->residue_param[number]=
+    _ogg_malloc(sizeof(*r));
+  
+  memcpy(r,res->res,sizeof(*r));
+  if(ci->residues<=number)ci->residues=number+1;
+
+  switch(ci->blocksizes[block]){
+  case 64:case 128:case 256:
+    r->grouping=16;
+    break;
+  default:
+    r->grouping=32;
+    break;
+  }
+  ci->residue_type[number]=res->res_type;
+
+  /* to be adjusted by lowpass/pointlimit later */
+  n=r->end=ci->blocksizes[block]>>1; 
+  if(res->res_type==2)
+    n=r->end*=vi->channels;
+  
+  /* fill in all the books */
+  {
+    int booklist=0,k;
+    
+    if(ci->hi.managed){
+      for(i=0;i<r->partitions;i++)
+	for(k=0;k<3;k++)
+	  if(res->books_base_managed->books[i][k])
+	    r->secondstages[i]|=(1<<k);
+
+      r->groupbook=book_dup_or_new(ci,res->book_aux_managed);
+      ci->book_param[r->groupbook]=res->book_aux_managed;      
+    
+      for(i=0;i<r->partitions;i++){
+	for(k=0;k<3;k++){
+	  if(res->books_base_managed->books[i][k]){
+	    int bookid=book_dup_or_new(ci,res->books_base_managed->books[i][k]);
+	    r->booklist[booklist++]=bookid;
+	    ci->book_param[bookid]=res->books_base_managed->books[i][k];
+	  }
+	}
+      }
+
+    }else{
+
+      for(i=0;i<r->partitions;i++)
+	for(k=0;k<3;k++)
+	  if(res->books_base->books[i][k])
+	    r->secondstages[i]|=(1<<k);
+  
+      r->groupbook=book_dup_or_new(ci,res->book_aux);
+      ci->book_param[r->groupbook]=res->book_aux;
+      
+      for(i=0;i<r->partitions;i++){
+	for(k=0;k<3;k++){
+	  if(res->books_base->books[i][k]){
+	    int bookid=book_dup_or_new(ci,res->books_base->books[i][k]);
+	    r->booklist[booklist++]=bookid;
+	    ci->book_param[bookid]=res->books_base->books[i][k];
+	  }
+	}
+      }
+    }
+  }
+  
+  /* lowpass setup/pointlimit */
+  {
+    double freq=ci->hi.lowpass_kHz*1000.;
+    vorbis_info_floor1 *f=ci->floor_param[block]; /* by convention */
+    double nyq=vi->rate/2.;
+    long blocksize=ci->blocksizes[block]>>1;
+
+    /* lowpass needs to be set in the floor and the residue. */    
+    if(freq>nyq)freq=nyq;
+    /* in the floor, the granularity can be very fine; it doesn't alter
+       the encoding structure, only the samples used to fit the floor
+       approximation */
+    f->n=freq/nyq*blocksize; 
+
+    /* this res may by limited by the maximum pointlimit of the mode,
+       not the lowpass. the floor is always lowpass limited. */
+    if(res->limit_type){
+      if(ci->hi.managed)
+	freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS-1]*1000.;
+      else
+	freq=ci->psy_g_param.coupling_pkHz[PACKETBLOBS/2]*1000.;
+      if(freq>nyq)freq=nyq;
+    }
+    
+    /* in the residue, we're constrained, physically, by partition
+       boundaries.  We still lowpass 'wherever', but we have to round up
+       here to next boundary, or the vorbis spec will round it *down* to
+       previous boundary in encode/decode */
+    if(ci->residue_type[block]==2)
+      r->end=(int)((freq/nyq*blocksize*2)/r->grouping+.9)* /* round up only if we're well past */
+	r->grouping;
+    else
+      r->end=(int)((freq/nyq*blocksize)/r->grouping+.9)* /* round up only if we're well past */
+	r->grouping;
+  }
+}      
+
+/* we assume two maps in this encoder */
+static void vorbis_encode_map_n_res_setup(vorbis_info *vi,double s,
+					  vorbis_mapping_template *maps){
+
+  codec_setup_info *ci=vi->codec_setup;
+  int i,j,is=s,modes=2;
+  vorbis_info_mapping0 *map=maps[is].map;
+  vorbis_info_mode *mode=_mode_template;
+  vorbis_residue_template *res=maps[is].res;
+
+  if(ci->blocksizes[0]==ci->blocksizes[1])modes=1;
+
+  for(i=0;i<modes;i++){
+
+    ci->map_param[i]=_ogg_calloc(1,sizeof(*map));
+    ci->mode_param[i]=_ogg_calloc(1,sizeof(*mode));
+  
+    memcpy(ci->mode_param[i],mode+i,sizeof(*_mode_template));
+    if(i>=ci->modes)ci->modes=i+1;
+
+    ci->map_type[i]=0;
+    memcpy(ci->map_param[i],map+i,sizeof(*map));
+    if(i>=ci->maps)ci->maps=i+1;
+    
+    for(j=0;j<map[i].submaps;j++)
+      vorbis_encode_residue_setup(vi,map[i].residuesubmap[j],i
+				  ,res+map[i].residuesubmap[j]);
+  }
+}
+
+static double setting_to_approx_bitrate(vorbis_info *vi){
+  codec_setup_info *ci=vi->codec_setup;
+  highlevel_encode_setup *hi=&ci->hi;
+  ve_setup_data_template *setup=(ve_setup_data_template *)hi->setup;
+  int is=hi->base_setting;
+  double ds=hi->base_setting-is;
+  int ch=vi->channels;
+  double *r=setup->rate_mapping;
+
+  if(r==NULL)
+    return(-1);
+  
+  return((r[is]*(1.-ds)+r[is+1]*ds)*ch);  
+}
+
+static void get_setup_template(vorbis_info *vi,
+			       long ch,long srate,
+			       double req,int q_or_bitrate){
+  int i=0,j;
+  codec_setup_info *ci=vi->codec_setup;
+  highlevel_encode_setup *hi=&ci->hi;
+  if(q_or_bitrate)req/=ch;
+
+  while(setup_list[i]){
+    if(setup_list[i]->coupling_restriction==-1 ||
+       setup_list[i]->coupling_restriction==ch){
+      if(srate>=setup_list[i]->samplerate_min_restriction &&
+	 srate<=setup_list[i]->samplerate_max_restriction){
+	int mappings=setup_list[i]->mappings;
+	double *map=(q_or_bitrate?
+		     setup_list[i]->rate_mapping:
+		     setup_list[i]->quality_mapping);
+
+	/* the template matches.  Does the requested quality mode
+	   fall within this template's modes? */
+	if(req<map[0]){++i;continue;}
+	if(req>map[setup_list[i]->mappings]){++i;continue;}
+	for(j=0;j<mappings;j++)
+	  if(req>=map[j] && req<map[j+1])break;
+	/* an all-points match */
+	hi->setup=setup_list[i];
+	if(j==mappings)
+	  hi->base_setting=j-.001;
+	else{
+	  float low=map[j];
+	  float high=map[j+1];
+	  float del=(req-low)/(high-low);
+	  hi->base_setting=j+del;
+	}
+
+	return;
+      }
+    }
+    i++;
+  }
+  
+  hi->setup=NULL;
+}
+
+/* encoders will need to use vorbis_info_init beforehand and call
+   vorbis_info clear when all done */
+
+/* two interfaces; this, more detailed one, and later a convenience
+   layer on top */
+
+/* the final setup call */
+int vorbis_encode_setup_init(vorbis_info *vi){
+  int i0=0,singleblock=0;
+  codec_setup_info *ci=vi->codec_setup;
+  ve_setup_data_template *setup=NULL;
+  highlevel_encode_setup *hi=&ci->hi;
+
+  if(ci==NULL)return(OV_EINVAL);
+  if(!hi->impulse_block_p)i0=1;
+
+  /* too low/high an ATH floater is nonsensical, but doesn't break anything */
+  if(hi->ath_floating_dB>-80)hi->ath_floating_dB=-80;
+  if(hi->ath_floating_dB<-200)hi->ath_floating_dB=-200;
+
+  /* again, bound this to avoid the app shooting itself int he foot
+     too badly */
+  if(hi->amplitude_track_dBpersec>0.)hi->amplitude_track_dBpersec=0.;
+  if(hi->amplitude_track_dBpersec<-99999.)hi->amplitude_track_dBpersec=-99999.;
+  
+  /* get the appropriate setup template; matches the fetch in previous
+     stages */
+  setup=(ve_setup_data_template *)hi->setup;
+  if(setup==NULL)return(OV_EINVAL);
+
+  hi->set_in_stone=1;
+  /* choose block sizes from configured sizes as well as paying
+     attention to long_block_p and short_block_p.  If the configured
+     short and long blocks are the same length, we set long_block_p
+     and unset short_block_p */
+  vorbis_encode_blocksize_setup(vi,hi->base_setting,
+				setup->blocksize_short,
+				setup->blocksize_long);
+  if(ci->blocksizes[0]==ci->blocksizes[1])singleblock=1;
+  
+  /* floor setup; choose proper floor params.  Allocated on the floor
+     stack in order; if we alloc only long floor, it's 0 */
+  vorbis_encode_floor_setup(vi,hi->short_setting,0,
+			    setup->floor_books,
+			    setup->floor_params,
+			    setup->floor_short_mapping);
+  if(!singleblock)
+    vorbis_encode_floor_setup(vi,hi->long_setting,1,
+			      setup->floor_books,
+			      setup->floor_params,
+			      setup->floor_long_mapping);
+  
+  /* setup of [mostly] short block detection and stereo*/
+  vorbis_encode_global_psych_setup(vi,hi->trigger_setting,
+				   setup->global_params,
+				   setup->global_mapping);
+  vorbis_encode_global_stereo(vi,hi,setup->stereo_modes);
+
+  /* basic psych setup and noise normalization */
+  vorbis_encode_psyset_setup(vi,hi->short_setting,
+			     setup->psy_noise_normal_start[0],
+			     setup->psy_noise_normal_partition[0],  
+			     setup->psy_noise_normal_thresh,  
+			     0);
+  vorbis_encode_psyset_setup(vi,hi->short_setting,
+			     setup->psy_noise_normal_start[0],
+			     setup->psy_noise_normal_partition[0],  
+			     setup->psy_noise_normal_thresh,  
+			     1);
+  if(!singleblock){
+    vorbis_encode_psyset_setup(vi,hi->long_setting,
+			       setup->psy_noise_normal_start[1],
+			       setup->psy_noise_normal_partition[1],  
+				    setup->psy_noise_normal_thresh,  
+			       2);
+    vorbis_encode_psyset_setup(vi,hi->long_setting,
+			       setup->psy_noise_normal_start[1],
+			       setup->psy_noise_normal_partition[1],  
+			       setup->psy_noise_normal_thresh,  
+			       3);
+  }
+
+  /* tone masking setup */
+  vorbis_encode_tonemask_setup(vi,hi->block[i0].tone_mask_setting,0,
+			       setup->psy_tone_masteratt,
+			       setup->psy_tone_0dB,
+			       setup->psy_tone_adj_impulse);
+  vorbis_encode_tonemask_setup(vi,hi->block[1].tone_mask_setting,1,
+			       setup->psy_tone_masteratt,
+			       setup->psy_tone_0dB,
+			       setup->psy_tone_adj_other);
+  if(!singleblock){
+    vorbis_encode_tonemask_setup(vi,hi->block[2].tone_mask_setting,2,
+				 setup->psy_tone_masteratt,
+				 setup->psy_tone_0dB,
+				 setup->psy_tone_adj_other);
+    vorbis_encode_tonemask_setup(vi,hi->block[3].tone_mask_setting,3,
+				 setup->psy_tone_masteratt,
+				 setup->psy_tone_0dB,
+				 setup->psy_tone_adj_long);
+  }
+
+  /* noise companding setup */
+  vorbis_encode_compand_setup(vi,hi->block[i0].noise_compand_setting,0,
+			      setup->psy_noise_compand,
+			      setup->psy_noise_compand_short_mapping);
+  vorbis_encode_compand_setup(vi,hi->block[1].noise_compand_setting,1,
+			      setup->psy_noise_compand,
+			      setup->psy_noise_compand_short_mapping);
+  if(!singleblock){
+    vorbis_encode_compand_setup(vi,hi->block[2].noise_compand_setting,2,
+				setup->psy_noise_compand,
+				setup->psy_noise_compand_long_mapping);
+    vorbis_encode_compand_setup(vi,hi->block[3].noise_compand_setting,3,
+				setup->psy_noise_compand,
+				setup->psy_noise_compand_long_mapping);
+  }
+
+  /* peak guarding setup  */
+  vorbis_encode_peak_setup(vi,hi->block[i0].tone_peaklimit_setting,0,
+			   setup->psy_tone_dBsuppress);
+  vorbis_encode_peak_setup(vi,hi->block[1].tone_peaklimit_setting,1,
+			   setup->psy_tone_dBsuppress);
+  if(!singleblock){
+    vorbis_encode_peak_setup(vi,hi->block[2].tone_peaklimit_setting,2,
+			     setup->psy_tone_dBsuppress);
+    vorbis_encode_peak_setup(vi,hi->block[3].tone_peaklimit_setting,3,
+			     setup->psy_tone_dBsuppress);
+  }
+
+  /* noise bias setup */
+  vorbis_encode_noisebias_setup(vi,hi->block[i0].noise_bias_setting,0,
+				setup->psy_noise_dBsuppress,
+				setup->psy_noise_bias_impulse,
+				setup->psy_noiseguards,
+				(i0==0?hi->impulse_noisetune:0.));
+  vorbis_encode_noisebias_setup(vi,hi->block[1].noise_bias_setting,1,
+				setup->psy_noise_dBsuppress,
+				setup->psy_noise_bias_padding,
+				setup->psy_noiseguards,0.);
+  if(!singleblock){
+    vorbis_encode_noisebias_setup(vi,hi->block[2].noise_bias_setting,2,
+				  setup->psy_noise_dBsuppress,
+				  setup->psy_noise_bias_trans,
+				  setup->psy_noiseguards,0.);
+    vorbis_encode_noisebias_setup(vi,hi->block[3].noise_bias_setting,3,
+				  setup->psy_noise_dBsuppress,
+				  setup->psy_noise_bias_long,
+				  setup->psy_noiseguards,0.);
+  }
+
+  vorbis_encode_ath_setup(vi,0);
+  vorbis_encode_ath_setup(vi,1);
+  if(!singleblock){
+    vorbis_encode_ath_setup(vi,2);
+    vorbis_encode_ath_setup(vi,3);
+  }
+
+  vorbis_encode_map_n_res_setup(vi,hi->base_setting,setup->maps);
+
+  /* set bitrate readonlies and management */
+  if(hi->bitrate_av>0)
+    vi->bitrate_nominal=hi->bitrate_av;
+  else{
+    vi->bitrate_nominal=setting_to_approx_bitrate(vi);
+  }
+
+  vi->bitrate_lower=hi->bitrate_min;
+  vi->bitrate_upper=hi->bitrate_max;
+  if(hi->bitrate_av)
+    vi->bitrate_window=(double)hi->bitrate_reservoir/hi->bitrate_av;
+  else
+    vi->bitrate_window=0.;
+
+  if(hi->managed){
+    ci->bi.avg_rate=hi->bitrate_av;
+    ci->bi.min_rate=hi->bitrate_min;
+    ci->bi.max_rate=hi->bitrate_max;
+
+    ci->bi.reservoir_bits=hi->bitrate_reservoir;
+    ci->bi.reservoir_bias=
+      hi->bitrate_reservoir_bias;
+    
+    ci->bi.slew_damp=hi->bitrate_av_damp;
+
+  }
+
+  return(0);
+  
+}
+
+static int vorbis_encode_setup_setting(vorbis_info *vi,
+				       long  channels,
+				       long  rate){
+  int ret=0,i,is;
+  codec_setup_info *ci=vi->codec_setup;
+  highlevel_encode_setup *hi=&ci->hi;
+  ve_setup_data_template *setup=hi->setup;
+  double ds;
+
+  ret=vorbis_encode_toplevel_setup(vi,channels,rate);
+  if(ret)return(ret);
+
+  is=hi->base_setting;
+  ds=hi->base_setting-is;
+
+  hi->short_setting=hi->base_setting;
+  hi->long_setting=hi->base_setting;
+
+  hi->managed=0;
+
+  hi->impulse_block_p=1;
+  hi->noise_normalize_p=1;
+
+  hi->stereo_point_setting=hi->base_setting;
+  hi->lowpass_kHz=
+    setup->psy_lowpass[is]*(1.-ds)+setup->psy_lowpass[is+1]*ds;  
+  
+  hi->ath_floating_dB=setup->psy_ath_float[is]*(1.-ds)+
+    setup->psy_ath_float[is+1]*ds;
+  hi->ath_absolute_dB=setup->psy_ath_abs[is]*(1.-ds)+
+    setup->psy_ath_abs[is+1]*ds;
+
+  hi->amplitude_track_dBpersec=-6.;
+  hi->trigger_setting=hi->base_setting;
+
+  for(i=0;i<4;i++){
+    hi->block[i].tone_mask_setting=hi->base_setting;
+    hi->block[i].tone_peaklimit_setting=hi->base_setting;
+    hi->block[i].noise_bias_setting=hi->base_setting;
+    hi->block[i].noise_compand_setting=hi->base_setting;
+  }
+
+  return(ret);
+}
+
+int vorbis_encode_setup_vbr(vorbis_info *vi,
+			    long  channels,
+			    long  rate,			    
+			    float quality){
+  codec_setup_info *ci=vi->codec_setup;
+  highlevel_encode_setup *hi=&ci->hi;
+
+  quality+=.0000001;
+  if(quality>=1.)quality=.9999;
+
+  get_setup_template(vi,channels,rate,quality,0);
+  if(!hi->setup)return OV_EIMPL;
+  
+  return vorbis_encode_setup_setting(vi,channels,rate);
+}
+
+int vorbis_encode_init_vbr(vorbis_info *vi,
+			   long channels,
+			   long rate,
+			   
+			   float base_quality /* 0. to 1. */
+			   ){
+  int ret=0;
+
+  ret=vorbis_encode_setup_vbr(vi,channels,rate,base_quality);
+  
+  if(ret){
+    vorbis_info_clear(vi);
+    return ret; 
+  }
+  ret=vorbis_encode_setup_init(vi);
+  if(ret)
+    vorbis_info_clear(vi);
+  return(ret);
+}
+
+int vorbis_encode_setup_managed(vorbis_info *vi,
+				long channels,
+				long rate,
+				
+				long max_bitrate,
+				long nominal_bitrate,
+				long min_bitrate){
+
+  codec_setup_info *ci=vi->codec_setup;
+  highlevel_encode_setup *hi=&ci->hi;
+  double tnominal=nominal_bitrate;
+  int ret=0;
+
+  if(nominal_bitrate<=0.){
+    if(max_bitrate>0.){
+      if(min_bitrate>0.)
+	nominal_bitrate=(max_bitrate+min_bitrate)*.5;
+      else
+	nominal_bitrate=max_bitrate*.875;
+    }else{
+      if(min_bitrate>0.){
+	nominal_bitrate=min_bitrate;
+      }else{
+	return(OV_EINVAL);
+      }
+    }
+  }
+
+  get_setup_template(vi,channels,rate,nominal_bitrate,1);
+  if(!hi->setup)return OV_EIMPL;
+  
+  ret=vorbis_encode_setup_setting(vi,channels,rate);
+  if(ret){
+    vorbis_info_clear(vi);
+    return ret; 
+  }
+
+  /* initialize management with sane defaults */
+  hi->managed=1;
+  hi->bitrate_min=min_bitrate;
+  hi->bitrate_max=max_bitrate;
+  hi->bitrate_av=tnominal;
+  hi->bitrate_av_damp=1.5f; /* full range in no less than 1.5 second */
+  hi->bitrate_reservoir=nominal_bitrate*2;
+  hi->bitrate_reservoir_bias=.1; /* bias toward hoarding bits */
+
+  return(ret);
+
+}
+
+int vorbis_encode_init(vorbis_info *vi,
+		       long channels,
+		       long rate,
+
+		       long max_bitrate,
+		       long nominal_bitrate,
+		       long min_bitrate){
+
+  int ret=vorbis_encode_setup_managed(vi,channels,rate,
+				      max_bitrate,
+				      nominal_bitrate,
+				      min_bitrate);
+  if(ret){
+    vorbis_info_clear(vi);
+    return(ret);
+  }
+
+  ret=vorbis_encode_setup_init(vi);
+  if(ret)
+    vorbis_info_clear(vi);
+  return(ret);
+}
+
+int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg){
+  if(vi){
+    codec_setup_info *ci=vi->codec_setup;
+    highlevel_encode_setup *hi=&ci->hi;
+    int setp=(number&0xf); /* a read request has a low nibble of 0 */
+
+    if(setp && hi->set_in_stone)return(OV_EINVAL);
+    
+    switch(number){
+      
+    /* now deprecated *****************/
+    case OV_ECTL_RATEMANAGE_GET:
+      {
+	
+	struct ovectl_ratemanage_arg *ai=
+	  (struct ovectl_ratemanage_arg *)arg;
+	
+	ai->management_active=hi->managed;
+	ai->bitrate_hard_window=ai->bitrate_av_window=
+	  (double)hi->bitrate_reservoir/vi->rate;
+	ai->bitrate_av_window_center=1.;
+	ai->bitrate_hard_min=hi->bitrate_min;
+	ai->bitrate_hard_max=hi->bitrate_max;
+	ai->bitrate_av_lo=hi->bitrate_av;
+	ai->bitrate_av_hi=hi->bitrate_av;
+	
+      }
+      return(0);
+    
+    /* now deprecated *****************/
+    case OV_ECTL_RATEMANAGE_SET:
+      {
+	struct ovectl_ratemanage_arg *ai=
+	  (struct ovectl_ratemanage_arg *)arg;
+	if(ai==NULL){
+	  hi->managed=0;
+	}else{
+	  hi->managed=ai->management_active;
+	  vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_AVG,arg);
+	  vorbis_encode_ctl(vi,OV_ECTL_RATEMANAGE_HARD,arg);
+	}
+      }
+      return 0;
+
+    /* now deprecated *****************/
+    case OV_ECTL_RATEMANAGE_AVG:
+      {
+	struct ovectl_ratemanage_arg *ai=
+	  (struct ovectl_ratemanage_arg *)arg;
+	if(ai==NULL){
+	  hi->bitrate_av=0;
+	}else{
+	  hi->bitrate_av=(ai->bitrate_av_lo+ai->bitrate_av_hi)*.5;
+	}
+      }
+      return(0);
+    /* now deprecated *****************/
+    case OV_ECTL_RATEMANAGE_HARD:
+      {
+	struct ovectl_ratemanage_arg *ai=
+	  (struct ovectl_ratemanage_arg *)arg;
+	if(ai==NULL){
+	  hi->bitrate_min=0;
+	  hi->bitrate_max=0;
+	}else{
+	  hi->bitrate_min=ai->bitrate_hard_min;
+	  hi->bitrate_max=ai->bitrate_hard_max;
+	  hi->bitrate_reservoir=ai->bitrate_hard_window*
+	    (hi->bitrate_max+hi->bitrate_min)*.5;
+	}
+	if(hi->bitrate_reservoir<128.)
+	  hi->bitrate_reservoir=128.;
+      }   
+      return(0);
+
+      /* replacement ratemanage interface */
+    case OV_ECTL_RATEMANAGE2_GET:
+      {
+	struct ovectl_ratemanage2_arg *ai=
+	  (struct ovectl_ratemanage2_arg *)arg;
+	if(ai==NULL)return OV_EINVAL;
+	
+	ai->management_active=hi->managed;
+	ai->bitrate_limit_min_kbps=hi->bitrate_min/1000;
+	ai->bitrate_limit_max_kbps=hi->bitrate_max/1000;
+	ai->bitrate_average_kbps=hi->bitrate_av/1000;
+	ai->bitrate_average_damping=hi->bitrate_av_damp;
+	ai->bitrate_limit_reservoir_bits=hi->bitrate_reservoir;
+	ai->bitrate_limit_reservoir_bias=hi->bitrate_reservoir_bias;
+      }
+      return (0);
+    case OV_ECTL_RATEMANAGE2_SET:
+      {
+	struct ovectl_ratemanage2_arg *ai=
+	  (struct ovectl_ratemanage2_arg *)arg;
+	if(ai==NULL){
+	  hi->managed=0;
+	}else{
+	  /* sanity check; only catch invariant violations */
+	  if(ai->bitrate_limit_min_kbps>0 &&
+	     ai->bitrate_average_kbps>0 &&
+	     ai->bitrate_limit_min_kbps>ai->bitrate_average_kbps)
+	    return OV_EINVAL;
+
+	  if(ai->bitrate_limit_max_kbps>0 &&
+	     ai->bitrate_average_kbps>0 &&
+	     ai->bitrate_limit_max_kbps<ai->bitrate_average_kbps)
+	    return OV_EINVAL;
+
+	  if(ai->bitrate_limit_min_kbps>0 &&
+	     ai->bitrate_limit_max_kbps>0 &&
+	     ai->bitrate_limit_min_kbps>ai->bitrate_limit_max_kbps)
+	    return OV_EINVAL;
+
+	  if(ai->bitrate_average_damping <= 0.)
+	    return OV_EINVAL;
+
+	  if(ai->bitrate_limit_reservoir_bits < 0)
+	    return OV_EINVAL;
+
+	  if(ai->bitrate_limit_reservoir_bias < 0.)
+	    return OV_EINVAL;
+
+	  if(ai->bitrate_limit_reservoir_bias > 1.)
+	    return OV_EINVAL;
+
+	  hi->managed=ai->management_active;
+	  hi->bitrate_min=ai->bitrate_limit_min_kbps * 1000;
+	  hi->bitrate_max=ai->bitrate_limit_max_kbps * 1000;
+	  hi->bitrate_av=ai->bitrate_average_kbps * 1000;
+	  hi->bitrate_av_damp=ai->bitrate_average_damping;
+	  hi->bitrate_reservoir=ai->bitrate_limit_reservoir_bits;
+	  hi->bitrate_reservoir_bias=ai->bitrate_limit_reservoir_bias;
+	}
+      }
+      return 0;
+      
+    case OV_ECTL_LOWPASS_GET:
+      {
+	double *farg=(double *)arg;
+	*farg=hi->lowpass_kHz;
+      }
+      return(0);
+    case OV_ECTL_LOWPASS_SET:
+      {
+	double *farg=(double *)arg;
+	hi->lowpass_kHz=*farg;
+
+	if(hi->lowpass_kHz<2.)hi->lowpass_kHz=2.;
+	if(hi->lowpass_kHz>99.)hi->lowpass_kHz=99.;
+      }
+      return(0);
+    case OV_ECTL_IBLOCK_GET:
+      {
+	double *farg=(double *)arg;
+	*farg=hi->impulse_noisetune;
+      }
+      return(0);
+    case OV_ECTL_IBLOCK_SET:
+      {
+	double *farg=(double *)arg;
+	hi->impulse_noisetune=*farg;
+
+	if(hi->impulse_noisetune>0.)hi->impulse_noisetune=0.;
+	if(hi->impulse_noisetune<-15.)hi->impulse_noisetune=-15.;
+      }
+      return(0);      
+    }
+
+
+    return(OV_EIMPL);
+  }
+  return(OV_EINVAL);
+}
Index: /libvorbis-1.2.0/lib/vorbisfile.c
===================================================================
--- /libvorbis-1.2.0/lib/vorbisfile.c	(revision 16)
+++ /libvorbis-1.2.0/lib/vorbisfile.c	(revision 16)
@@ -0,0 +1,2194 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: stdio-based convenience library for opening/seeking/decoding
+ last mod: $Id: vorbisfile.c 13294 2007-07-24 01:08:23Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <math.h>
+
+#include "vorbis/codec.h"
+#include "vorbis/vorbisfile.h"
+
+#include "os.h"
+#include "misc.h"
+
+/* A 'chained bitstream' is a Vorbis bitstream that contains more than
+   one logical bitstream arranged end to end (the only form of Ogg
+   multiplexing allowed in a Vorbis bitstream; grouping [parallel
+   multiplexing] is not allowed in Vorbis) */
+
+/* A Vorbis file can be played beginning to end (streamed) without
+   worrying ahead of time about chaining (see decoder_example.c).  If
+   we have the whole file, however, and want random access
+   (seeking/scrubbing) or desire to know the total length/time of a
+   file, we need to account for the possibility of chaining. */
+
+/* We can handle things a number of ways; we can determine the entire
+   bitstream structure right off the bat, or find pieces on demand.
+   This example determines and caches structure for the entire
+   bitstream, but builds a virtual decoder on the fly when moving
+   between links in the chain. */
+
+/* There are also different ways to implement seeking.  Enough
+   information exists in an Ogg bitstream to seek to
+   sample-granularity positions in the output.  Or, one can seek by
+   picking some portion of the stream roughly in the desired area if
+   we only want coarse navigation through the stream. */
+
+/*************************************************************************
+ * Many, many internal helpers.  The intention is not to be confusing; 
+ * rampant duplication and monolithic function implementation would be 
+ * harder to understand anyway.  The high level functions are last.  Begin
+ * grokking near the end of the file */
+
+/* read a little more data from the file/pipe into the ogg_sync framer
+*/
+#define CHUNKSIZE 65536
+
+static long _get_data(OggVorbis_File *vf){
+  errno=0;
+  if(!(vf->callbacks.read_func))return(-1);
+  if(vf->datasource){
+    char *buffer=ogg_sync_buffer(&vf->oy,CHUNKSIZE);
+    long bytes=(vf->callbacks.read_func)(buffer,1,CHUNKSIZE,vf->datasource);
+    if(bytes>0)ogg_sync_wrote(&vf->oy,bytes);
+    if(bytes==0 && errno)return(-1);
+    return(bytes);
+  }else
+    return(0);
+}
+
+/* save a tiny smidge of verbosity to make the code more readable */
+static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){
+  if(vf->datasource){ 
+    if(!(vf->callbacks.seek_func)||
+       (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1)
+      return OV_EREAD;
+    vf->offset=offset;
+    ogg_sync_reset(&vf->oy);
+  }else{
+    /* shouldn't happen unless someone writes a broken callback */
+    return OV_EFAULT;
+  }
+  return 0;
+}
+
+/* The read/seek functions track absolute position within the stream */
+
+/* from the head of the stream, get the next page.  boundary specifies
+   if the function is allowed to fetch more data from the stream (and
+   how much) or only use internally buffered data.
+
+   boundary: -1) unbounded search
+              0) read no additional data; use cached only
+	      n) search for a new page beginning for n bytes
+
+   return:   <0) did not find a page (OV_FALSE, OV_EOF, OV_EREAD)
+              n) found a page at absolute offset n */
+
+static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og,
+				  ogg_int64_t boundary){
+  if(boundary>0)boundary+=vf->offset;
+  while(1){
+    long more;
+
+    if(boundary>0 && vf->offset>=boundary)return(OV_FALSE);
+    more=ogg_sync_pageseek(&vf->oy,og);
+    
+    if(more<0){
+      /* skipped n bytes */
+      vf->offset-=more;
+    }else{
+      if(more==0){
+	/* send more paramedics */
+	if(!boundary)return(OV_FALSE);
+	{
+	  long ret=_get_data(vf);
+	  if(ret==0)return(OV_EOF);
+	  if(ret<0)return(OV_EREAD);
+	}
+      }else{
+	/* got a page.  Return the offset at the page beginning,
+           advance the internal offset past the page end */
+	ogg_int64_t ret=vf->offset;
+	vf->offset+=more;
+	return(ret);
+	
+      }
+    }
+  }
+}
+
+/* find the latest page beginning before the current stream cursor
+   position. Much dirtier than the above as Ogg doesn't have any
+   backward search linkage.  no 'readp' as it will certainly have to
+   read. */
+/* returns offset or OV_EREAD, OV_FAULT */
+static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){
+  ogg_int64_t begin=vf->offset;
+  ogg_int64_t end=begin;
+  ogg_int64_t ret;
+  ogg_int64_t offset=-1;
+
+  while(offset==-1){
+    begin-=CHUNKSIZE;
+    if(begin<0)
+      begin=0;
+
+    ret=_seek_helper(vf,begin);
+    if(ret)return(ret);
+
+    while(vf->offset<end){
+      ret=_get_next_page(vf,og,end-vf->offset);
+      if(ret==OV_EREAD)return(OV_EREAD);
+      if(ret<0){
+	break;
+      }else{
+	offset=ret;
+      }
+    }
+  }
+
+  /* we have the offset.  Actually snork and hold the page now */
+  ret=_seek_helper(vf,offset);
+  if(ret)return(ret);
+
+  ret=_get_next_page(vf,og,CHUNKSIZE);
+  if(ret<0)
+    /* this shouldn't be possible */
+    return(OV_EFAULT);
+
+  return(offset);
+}
+
+static void _add_serialno(ogg_page *og,long **serialno_list, int *n){
+  long s = ogg_page_serialno(og);
+  (*n)++;
+
+  if(serialno_list){
+    *serialno_list = _ogg_realloc(*serialno_list, sizeof(*serialno_list)*(*n));
+  }else{
+    *serialno_list = _ogg_malloc(sizeof(**serialno_list));
+  }
+  
+  (*serialno_list)[(*n)-1] = s;
+}
+
+/* returns nonzero if found */
+static int _lookup_serialno(ogg_page *og, long *serialno_list, int n){
+  long s = ogg_page_serialno(og);
+
+  if(serialno_list){
+    while(n--){
+      if(*serialno_list == s) return 1;
+      serialno_list++;
+    }
+  }
+  return 0;
+}
+
+/* start parsing pages at current offset, remembering all serial
+   numbers.  Stop logging at first non-bos page */
+static int _get_serialnos(OggVorbis_File *vf, long **s, int *n){
+  ogg_page og;
+
+  *s=NULL;
+  *n=0;
+
+  while(1){
+    ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
+    if(llret==OV_EOF)return(0);
+    if(llret<0)return(llret);
+    if(!ogg_page_bos(&og)) return 0;
+
+    /* look for duplicate serialnos; add this one if unique */
+    if(_lookup_serialno(&og,*s,*n)){
+      if(*s)_ogg_free(*s);
+      *s=0;
+      *n=0;
+      return(OV_EBADHEADER);
+    }
+
+    _add_serialno(&og,s,n);
+  }
+}
+
+/* finds each bitstream link one at a time using a bisection search
+   (has to begin by knowing the offset of the lb's initial page).
+   Recurses for each link so it can alloc the link storage after
+   finding them all, then unroll and fill the cache at the same time */
+static int _bisect_forward_serialno(OggVorbis_File *vf,
+				    ogg_int64_t begin,
+				    ogg_int64_t searched,
+				    ogg_int64_t end,
+				    long *currentno_list,
+				    int  currentnos,
+				    long m){
+  ogg_int64_t endsearched=end;
+  ogg_int64_t next=end;
+  ogg_page og;
+  ogg_int64_t ret;
+  
+  /* the below guards against garbage seperating the last and
+     first pages of two links. */
+  while(searched<endsearched){
+    ogg_int64_t bisect;
+    
+    if(endsearched-searched<CHUNKSIZE){
+      bisect=searched;
+    }else{
+      bisect=(searched+endsearched)/2;
+    }
+    
+    ret=_seek_helper(vf,bisect);
+    if(ret)return(ret);
+
+    ret=_get_next_page(vf,&og,-1);
+    if(ret==OV_EREAD)return(OV_EREAD);
+    if(ret<0 || !_lookup_serialno(&og,currentno_list,currentnos)){
+      endsearched=bisect;
+      if(ret>=0)next=ret;
+    }else{
+      searched=ret+og.header_len+og.body_len;
+    }
+  }
+
+  {
+    long *next_serialno_list=NULL;
+    int next_serialnos=0;
+
+    ret=_seek_helper(vf,next);
+    if(ret)return(ret);
+    ret=_get_serialnos(vf,&next_serialno_list,&next_serialnos);
+    if(ret)return(ret);
+    
+    if(searched>=end || next_serialnos==0){
+      vf->links=m+1;
+      vf->offsets=_ogg_malloc((vf->links+1)*sizeof(*vf->offsets));
+      vf->offsets[m+1]=searched;
+    }else{
+      ret=_bisect_forward_serialno(vf,next,vf->offset,
+				   end,next_serialno_list,next_serialnos,m+1);
+      if(ret)return(ret);
+    }
+    
+    if(next_serialno_list)_ogg_free(next_serialno_list);
+  }
+  vf->offsets[m]=begin;
+  return(0);
+}
+
+/* uses the local ogg_stream storage in vf; this is important for
+   non-streaming input sources */
+static int _fetch_headers(OggVorbis_File *vf,vorbis_info *vi,vorbis_comment *vc,
+			  long *serialno,ogg_page *og_ptr){
+  ogg_page og;
+  ogg_packet op;
+  int i,ret;
+  int allbos=0;
+
+  if(!og_ptr){
+    ogg_int64_t llret=_get_next_page(vf,&og,CHUNKSIZE);
+    if(llret==OV_EREAD)return(OV_EREAD);
+    if(llret<0)return(OV_ENOTVORBIS);
+    og_ptr=&og;
+  }
+
+  vorbis_info_init(vi);
+  vorbis_comment_init(vc);
+
+  /* extract the first set of vorbis headers we see in the headerset */
+
+  while(1){
+  
+    /* if we're past the ID headers, we won't be finding a Vorbis
+       stream in this link */
+    if(!ogg_page_bos(og_ptr)){
+      ret = OV_ENOTVORBIS;
+      goto bail_header;
+    }
+
+    /* prospective stream setup; we need a stream to get packets */
+    ogg_stream_reset_serialno(&vf->os,ogg_page_serialno(og_ptr));
+    ogg_stream_pagein(&vf->os,og_ptr);
+
+    if(ogg_stream_packetout(&vf->os,&op) > 0 &&
+       vorbis_synthesis_idheader(&op)){
+
+      /* continue Vorbis header load; past this point, any error will
+	 render this link useless (we won't continue looking for more
+	 Vorbis streams */
+      if(serialno)*serialno=vf->os.serialno;
+      vf->ready_state=STREAMSET;
+      if((ret=vorbis_synthesis_headerin(vi,vc,&op)))
+	goto bail_header;
+
+      i=0;
+      while(i<2){ /* get a page loop */
+	
+	while(i<2){ /* get a packet loop */
+
+	  int result=ogg_stream_packetout(&vf->os,&op);
+	  if(result==0)break;
+	  if(result==-1){
+	    ret=OV_EBADHEADER;
+	    goto bail_header;
+	  }
+	
+	  if((ret=vorbis_synthesis_headerin(vi,vc,&op)))
+	    goto bail_header;
+
+	  i++;
+	}
+
+	while(i<2){
+	  if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
+	    ret=OV_EBADHEADER;
+	    goto bail_header;
+	  }
+
+	  /* if this page belongs to the correct stream, go parse it */
+	  if(vf->os.serialno == ogg_page_serialno(og_ptr)){
+	    ogg_stream_pagein(&vf->os,og_ptr);
+	    break;
+	  }
+
+	  /* if we never see the final vorbis headers before the link
+	     ends, abort */
+	  if(ogg_page_bos(og_ptr)){
+	    if(allbos){
+	      ret = OV_EBADHEADER;
+	      goto bail_header;
+	    }else
+	      allbos=1;
+	  }
+
+	  /* otherwise, keep looking */
+	}
+      }
+
+      return 0; 
+    }
+
+    /* this wasn't vorbis, get next page, try again */
+    {
+      ogg_int64_t llret=_get_next_page(vf,og_ptr,CHUNKSIZE);
+      if(llret==OV_EREAD)return(OV_EREAD);
+      if(llret<0)return(OV_ENOTVORBIS);
+    } 
+  }
+
+ bail_header:
+  vorbis_info_clear(vi);
+  vorbis_comment_clear(vc);
+  vf->ready_state=OPENED;
+
+  return ret;
+}
+
+/* last step of the OggVorbis_File initialization; get all the
+   vorbis_info structs and PCM positions.  Only called by the seekable
+   initialization (local stream storage is hacked slightly; pay
+   attention to how that's done) */
+
+/* this is void and does not propogate errors up because we want to be
+   able to open and use damaged bitstreams as well as we can.  Just
+   watch out for missing information for links in the OggVorbis_File
+   struct */
+static void _prefetch_all_headers(OggVorbis_File *vf, ogg_int64_t dataoffset){
+  ogg_page og;
+  int i;
+  ogg_int64_t ret;
+
+  vf->vi=_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
+  vf->vc=_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
+  vf->serialnos=_ogg_malloc(vf->links*sizeof(*vf->serialnos));
+  vf->dataoffsets=_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
+  vf->pcmlengths=_ogg_malloc(vf->links*2*sizeof(*vf->pcmlengths));
+  
+  for(i=0;i<vf->links;i++){
+    if(i==0){
+      /* we already grabbed the initial header earlier.  Just set the offset */
+      vf->serialnos[i]=vf->current_serialno;
+      vf->dataoffsets[i]=dataoffset;
+      ret=_seek_helper(vf,dataoffset);
+      if(ret)
+	vf->dataoffsets[i]=-1;
+
+    }else{
+
+      /* seek to the location of the initial header */
+
+      ret=_seek_helper(vf,vf->offsets[i]);
+      if(ret){
+	vf->dataoffsets[i]=-1;
+      }else{
+	if(_fetch_headers(vf,vf->vi+i,vf->vc+i,vf->serialnos+i,NULL)<0){
+	  vf->dataoffsets[i]=-1;
+	}else{
+	  vf->dataoffsets[i]=vf->offset;
+	}
+      }
+    }
+
+    /* fetch beginning PCM offset */
+
+    if(vf->dataoffsets[i]!=-1){
+      ogg_int64_t accumulated=0;
+      long        lastblock=-1;
+      int         result;
+
+      ogg_stream_reset_serialno(&vf->os,vf->serialnos[i]);
+
+      while(1){
+	ogg_packet op;
+
+	ret=_get_next_page(vf,&og,-1);
+	if(ret<0)
+	  /* this should not be possible unless the file is
+             truncated/mangled */
+	  break;
+       
+	if(ogg_page_bos(&og)) break;
+
+	if(ogg_page_serialno(&og)!=vf->serialnos[i])
+	  continue;
+	
+	/* count blocksizes of all frames in the page */
+	ogg_stream_pagein(&vf->os,&og);
+	while((result=ogg_stream_packetout(&vf->os,&op))){
+	  if(result>0){ /* ignore holes */
+	    long thisblock=vorbis_packet_blocksize(vf->vi+i,&op);
+	    if(lastblock!=-1)
+	      accumulated+=(lastblock+thisblock)>>2;
+	    lastblock=thisblock;
+	  }
+	}
+
+	if(ogg_page_granulepos(&og)!=-1){
+	  /* pcm offset of last packet on the first audio page */
+	  accumulated= ogg_page_granulepos(&og)-accumulated;
+	  break;
+	}
+      }
+
+      /* less than zero?  This is a stream with samples trimmed off
+         the beginning, a normal occurrence; set the offset to zero */
+      if(accumulated<0)accumulated=0;
+
+      vf->pcmlengths[i*2]=accumulated;
+    }
+
+    /* get the PCM length of this link. To do this,
+       get the last page of the stream */
+    {
+      ogg_int64_t end=vf->offsets[i+1];
+      ret=_seek_helper(vf,end);
+      if(ret){
+	/* this should not be possible */
+	vorbis_info_clear(vf->vi+i);
+	vorbis_comment_clear(vf->vc+i);
+      }else{
+	
+	while(1){
+	  ret=_get_prev_page(vf,&og);
+	  if(ret<0){
+	    /* this should not be possible */
+	    vorbis_info_clear(vf->vi+i);
+	    vorbis_comment_clear(vf->vc+i);
+	    break;
+	  }
+	  if(ogg_page_serialno(&og)==vf->serialnos[i]){
+	    if(ogg_page_granulepos(&og)!=-1){
+	      vf->pcmlengths[i*2+1]=ogg_page_granulepos(&og)-vf->pcmlengths[i*2];
+	      break;
+	    }
+	  }
+	  vf->offset=ret;
+	}
+      }
+    }
+  }
+}
+
+static int _make_decode_ready(OggVorbis_File *vf){
+  if(vf->ready_state>STREAMSET)return 0;
+  if(vf->ready_state<STREAMSET)return OV_EFAULT;
+  if(vf->seekable){
+    if(vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link))
+      return OV_EBADLINK;
+  }else{
+    if(vorbis_synthesis_init(&vf->vd,vf->vi))
+      return OV_EBADLINK;
+  }    
+  vorbis_block_init(&vf->vd,&vf->vb);
+  vf->ready_state=INITSET;
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
+  return 0;
+}
+
+static int _open_seekable2(OggVorbis_File *vf){
+  ogg_int64_t dataoffset=vf->offset,end;
+  long *serialno_list=NULL;
+  int serialnos=0;
+  int ret;
+  ogg_page og;
+
+  /* we're partially open and have a first link header state in
+     storage in vf */
+  /* we can seek, so set out learning all about this file */
+  if(vf->callbacks.seek_func && vf->callbacks.tell_func){
+    (vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
+    vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
+  }else{
+    vf->offset=vf->end=-1;
+  }
+
+  /* If seek_func is implemented, tell_func must also be implemented */
+  if(vf->end==-1) return(OV_EINVAL);
+
+  /* We get the offset for the last page of the physical bitstream.
+     Most OggVorbis files will contain a single logical bitstream */
+  end=_get_prev_page(vf,&og);
+  if(end<0)return(end);
+
+  /* back to beginning, learn all serialnos of first link */
+  ret=_seek_helper(vf,0);
+  if(ret)return(ret);
+  ret=_get_serialnos(vf,&serialno_list,&serialnos);
+  if(ret)return(ret);
+
+  /* now determine bitstream structure recursively */
+  if(_bisect_forward_serialno(vf,0,0,end+1,serialno_list,serialnos,0)<0)return(OV_EREAD);  
+  if(serialno_list)_ogg_free(serialno_list);
+
+  /* the initial header memory is referenced by vf after; don't free it */
+  _prefetch_all_headers(vf,dataoffset);
+  return(ov_raw_seek(vf,0));
+}
+
+/* clear out the current logical bitstream decoder */ 
+static void _decode_clear(OggVorbis_File *vf){
+  vorbis_dsp_clear(&vf->vd);
+  vorbis_block_clear(&vf->vb);
+  vf->ready_state=OPENED;
+}
+
+/* fetch and process a packet.  Handles the case where we're at a
+   bitstream boundary and dumps the decoding machine.  If the decoding
+   machine is unloaded, it loads it.  It also keeps pcm_offset up to
+   date (seek and read both use this.  seek uses a special hack with
+   readp). 
+
+   return: <0) error, OV_HOLE (lost packet) or OV_EOF
+            0) need more data (only if readp==0)
+	    1) got a packet 
+*/
+
+static int _fetch_and_process_packet(OggVorbis_File *vf,
+				     ogg_packet *op_in,
+				     int readp,
+				     int spanp){
+  ogg_page og;
+
+  /* handle one packet.  Try to fetch it from current stream state */
+  /* extract packets from page */
+  while(1){
+    
+    /* process a packet if we can.  If the machine isn't loaded,
+       neither is a page */
+    if(vf->ready_state==INITSET){
+      while(1) {
+      	ogg_packet op;
+      	ogg_packet *op_ptr=(op_in?op_in:&op);
+	int result=ogg_stream_packetout(&vf->os,op_ptr);
+	ogg_int64_t granulepos;
+
+	op_in=NULL;
+	if(result==-1)return(OV_HOLE); /* hole in the data. */
+	if(result>0){
+	  /* got a packet.  process it */
+	  granulepos=op_ptr->granulepos;
+	  if(!vorbis_synthesis(&vf->vb,op_ptr)){ /* lazy check for lazy
+						    header handling.  The
+						    header packets aren't
+						    audio, so if/when we
+						    submit them,
+						    vorbis_synthesis will
+						    reject them */
+
+	    /* suck in the synthesis data and track bitrate */
+	    {
+	      int oldsamples=vorbis_synthesis_pcmout(&vf->vd,NULL);
+	      /* for proper use of libvorbis within libvorbisfile,
+                 oldsamples will always be zero. */
+	      if(oldsamples)return(OV_EFAULT);
+	      
+	      vorbis_synthesis_blockin(&vf->vd,&vf->vb);
+	      vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples;
+	      vf->bittrack+=op_ptr->bytes*8;
+	    }
+	  
+	    /* update the pcm offset. */
+	    if(granulepos!=-1 && !op_ptr->e_o_s){
+	      int link=(vf->seekable?vf->current_link:0);
+	      int i,samples;
+	    
+	      /* this packet has a pcm_offset on it (the last packet
+	         completed on a page carries the offset) After processing
+	         (above), we know the pcm position of the *last* sample
+	         ready to be returned. Find the offset of the *first*
+
+	         As an aside, this trick is inaccurate if we begin
+	         reading anew right at the last page; the end-of-stream
+	         granulepos declares the last frame in the stream, and the
+	         last packet of the last page may be a partial frame.
+	         So, we need a previous granulepos from an in-sequence page
+	         to have a reference point.  Thus the !op_ptr->e_o_s clause
+	         above */
+
+	      if(vf->seekable && link>0)
+		granulepos-=vf->pcmlengths[link*2];
+	      if(granulepos<0)granulepos=0; /* actually, this
+					       shouldn't be possible
+					       here unless the stream
+					       is very broken */
+
+	      samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
+	    
+	      granulepos-=samples;
+	      for(i=0;i<link;i++)
+	        granulepos+=vf->pcmlengths[i*2+1];
+	      vf->pcm_offset=granulepos;
+	    }
+	    return(1);
+	  }
+	}
+	else 
+	  break;
+      }
+    }
+
+    if(vf->ready_state>=OPENED){
+      ogg_int64_t ret;
+      
+      while(1){ 
+	/* the loop is not strictly necessary, but there's no sense in
+	   doing the extra checks of the larger loop for the common
+	   case in a multiplexed bistream where the page is simply
+	   part of a different logical bitstream; keep reading until
+	   we get one with the correct serialno */
+	
+	if(!readp)return(0);
+	if((ret=_get_next_page(vf,&og,-1))<0){
+	  return(OV_EOF); /* eof. leave unitialized */
+	}
+
+	/* bitrate tracking; add the header's bytes here, the body bytes
+	   are done by packet above */
+	vf->bittrack+=og.header_len*8;
+	
+	if(vf->ready_state==INITSET){
+	  if(vf->current_serialno!=ogg_page_serialno(&og)){
+	    
+	    /* two possibilities: 
+	       1) our decoding just traversed a bitstream boundary
+	       2) another stream is multiplexed into this logical section? */
+	    
+	    if(ogg_page_bos(&og)){
+	      /* boundary case */
+	      if(!spanp)
+		return(OV_EOF);
+	      
+	      _decode_clear(vf);
+	      
+	      if(!vf->seekable){
+		vorbis_info_clear(vf->vi);
+		vorbis_comment_clear(vf->vc);
+	      }
+	      break;
+
+	    }else
+	      continue; /* possibility #2 */
+	  }
+	}
+
+	break;
+      }
+    }
+
+    /* Do we need to load a new machine before submitting the page? */
+    /* This is different in the seekable and non-seekable cases.  
+
+       In the seekable case, we already have all the header
+       information loaded and cached; we just initialize the machine
+       with it and continue on our merry way.
+
+       In the non-seekable (streaming) case, we'll only be at a
+       boundary if we just left the previous logical bitstream and
+       we're now nominally at the header of the next bitstream
+    */
+
+    if(vf->ready_state!=INITSET){ 
+      int link;
+
+      if(vf->ready_state<STREAMSET){
+	if(vf->seekable){
+	  long serialno = ogg_page_serialno(&og);
+
+	  /* match the serialno to bitstream section.  We use this rather than
+	     offset positions to avoid problems near logical bitstream
+	     boundaries */
+
+	  for(link=0;link<vf->links;link++)
+	    if(vf->serialnos[link]==serialno)break;
+
+	  if(link==vf->links) continue; /* not the desired Vorbis
+					   bitstream section; keep
+					   trying */
+
+	  vf->current_serialno=serialno;
+	  vf->current_link=link;
+	  
+	  ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
+	  vf->ready_state=STREAMSET;
+	  
+	}else{
+	  /* we're streaming */
+	  /* fetch the three header packets, build the info struct */
+	  
+	  int ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,&og);
+	  if(ret)return(ret);
+	  vf->current_link++;
+	  link=0;
+	}
+      }
+      
+      {
+	int ret=_make_decode_ready(vf);
+	if(ret<0)return ret;
+      }
+    }
+
+    /* the buffered page is the data we want, and we're ready for it;
+       add it to the stream state */
+    ogg_stream_pagein(&vf->os,&og);
+
+  }
+}
+
+/* if, eg, 64 bit stdio is configured by default, this will build with
+   fseek64 */
+static int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
+  if(f==NULL)return(-1);
+  return fseek(f,off,whence);
+}
+
+static int _ov_open1(void *f,OggVorbis_File *vf,char *initial,
+		     long ibytes, ov_callbacks callbacks){
+  int offsettest=((f && callbacks.seek_func)?callbacks.seek_func(f,0,SEEK_CUR):-1);
+  int ret;
+  
+  memset(vf,0,sizeof(*vf));
+  vf->datasource=f;
+  vf->callbacks = callbacks;
+
+  /* init the framing state */
+  ogg_sync_init(&vf->oy);
+
+  /* perhaps some data was previously read into a buffer for testing
+     against other stream types.  Allow initialization from this
+     previously read data (as we may be reading from a non-seekable
+     stream) */
+  if(initial){
+    char *buffer=ogg_sync_buffer(&vf->oy,ibytes);
+    memcpy(buffer,initial,ibytes);
+    ogg_sync_wrote(&vf->oy,ibytes);
+  }
+
+  /* can we seek? Stevens suggests the seek test was portable */
+  if(offsettest!=-1)vf->seekable=1;
+
+  /* No seeking yet; Set up a 'single' (current) logical bitstream
+     entry for partial open */
+  vf->links=1;
+  vf->vi=_ogg_calloc(vf->links,sizeof(*vf->vi));
+  vf->vc=_ogg_calloc(vf->links,sizeof(*vf->vc));
+  ogg_stream_init(&vf->os,-1); /* fill in the serialno later */
+
+  /* Try to fetch the headers, maintaining all the storage */
+  if((ret=_fetch_headers(vf,vf->vi,vf->vc,&vf->current_serialno,NULL))<0){
+    vf->datasource=NULL;
+    ov_clear(vf);
+  }else 
+    vf->ready_state=PARTOPEN;
+  return(ret);
+}
+
+static int _ov_open2(OggVorbis_File *vf){
+  if(vf->ready_state != PARTOPEN) return OV_EINVAL;
+  vf->ready_state=OPENED;
+  if(vf->seekable){
+    int ret=_open_seekable2(vf);
+    if(ret){
+      vf->datasource=NULL;
+      ov_clear(vf);
+    }
+    return(ret);
+  }else
+    vf->ready_state=STREAMSET;
+
+  return 0;
+}
+
+
+/* clear out the OggVorbis_File struct */
+int ov_clear(OggVorbis_File *vf){
+  if(vf){
+    vorbis_block_clear(&vf->vb);
+    vorbis_dsp_clear(&vf->vd);
+    ogg_stream_clear(&vf->os);
+    
+    if(vf->vi && vf->links){
+      int i;
+      for(i=0;i<vf->links;i++){
+	vorbis_info_clear(vf->vi+i);
+	vorbis_comment_clear(vf->vc+i);
+      }
+      _ogg_free(vf->vi);
+      _ogg_free(vf->vc);
+    }
+    if(vf->dataoffsets)_ogg_free(vf->dataoffsets);
+    if(vf->pcmlengths)_ogg_free(vf->pcmlengths);
+    if(vf->serialnos)_ogg_free(vf->serialnos);
+    if(vf->offsets)_ogg_free(vf->offsets);
+    ogg_sync_clear(&vf->oy);
+    if(vf->datasource && vf->callbacks.close_func)
+      (vf->callbacks.close_func)(vf->datasource);
+    memset(vf,0,sizeof(*vf));
+  }
+#ifdef DEBUG_LEAKS
+  _VDBG_dump();
+#endif
+  return(0);
+}
+
+/* inspects the OggVorbis file and finds/documents all the logical
+   bitstreams contained in it.  Tries to be tolerant of logical
+   bitstream sections that are truncated/woogie. 
+
+   return: -1) error
+            0) OK
+*/
+
+int ov_open_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
+    ov_callbacks callbacks){
+  int ret=_ov_open1(f,vf,initial,ibytes,callbacks);
+  if(ret)return ret;
+  return _ov_open2(vf);
+}
+
+int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
+  ov_callbacks callbacks = {
+    (size_t (*)(void *, size_t, size_t, void *))  fread,
+    (int (*)(void *, ogg_int64_t, int))              _fseek64_wrap,
+    (int (*)(void *))                             fclose,
+    (long (*)(void *))                            ftell
+  };
+
+  return ov_open_callbacks((void *)f, vf, initial, ibytes, callbacks);
+}
+
+int ov_fopen(char *path,OggVorbis_File *vf){
+  int ret;
+  FILE *f = fopen(path,"rb");
+  if(!f) return -1;
+
+  ret = ov_open(f,vf,NULL,0);
+  if(ret) fclose(f);
+  return ret;
+}
+
+ 
+/* cheap hack for game usage where downsampling is desirable; there's
+   no need for SRC as we can just do it cheaply in libvorbis. */
+ 
+int ov_halfrate(OggVorbis_File *vf,int flag){
+  int i;
+  if(vf->vi==NULL)return OV_EINVAL;
+  if(!vf->seekable)return OV_EINVAL;
+  if(vf->ready_state>=STREAMSET)
+    _decode_clear(vf); /* clear out stream state; later on libvorbis
+                          will be able to swap this on the fly, but
+                          for now dumping the decode machine is needed
+                          to reinit the MDCT lookups.  1.1 libvorbis
+                          is planned to be able to switch on the fly */
+  
+  for(i=0;i<vf->links;i++){
+    if(vorbis_synthesis_halfrate(vf->vi+i,flag)){
+      ov_halfrate(vf,0);
+      return OV_EINVAL;
+    }
+  }
+  return 0;
+}
+
+int ov_halfrate_p(OggVorbis_File *vf){
+  if(vf->vi==NULL)return OV_EINVAL;
+  return vorbis_synthesis_halfrate_p(vf->vi);
+}
+
+/* Only partially open the vorbis file; test for Vorbisness, and load
+   the headers for the first chain.  Do not seek (although test for
+   seekability).  Use ov_test_open to finish opening the file, else
+   ov_clear to close/free it. Same return codes as open. */
+
+int ov_test_callbacks(void *f,OggVorbis_File *vf,char *initial,long ibytes,
+    ov_callbacks callbacks)
+{
+  return _ov_open1(f,vf,initial,ibytes,callbacks);
+}
+
+int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes){
+  ov_callbacks callbacks = {
+    (size_t (*)(void *, size_t, size_t, void *))  fread,
+    (int (*)(void *, ogg_int64_t, int))              _fseek64_wrap,
+    (int (*)(void *))                             fclose,
+    (long (*)(void *))                            ftell
+  };
+
+  return ov_test_callbacks((void *)f, vf, initial, ibytes, callbacks);
+}
+  
+int ov_test_open(OggVorbis_File *vf){
+  if(vf->ready_state!=PARTOPEN)return(OV_EINVAL);
+  return _ov_open2(vf);
+}
+
+/* How many logical bitstreams in this physical bitstream? */
+long ov_streams(OggVorbis_File *vf){
+  return vf->links;
+}
+
+/* Is the FILE * associated with vf seekable? */
+long ov_seekable(OggVorbis_File *vf){
+  return vf->seekable;
+}
+
+/* returns the bitrate for a given logical bitstream or the entire
+   physical bitstream.  If the file is open for random access, it will
+   find the *actual* average bitrate.  If the file is streaming, it
+   returns the nominal bitrate (if set) else the average of the
+   upper/lower bounds (if set) else -1 (unset).
+
+   If you want the actual bitrate field settings, get them from the
+   vorbis_info structs */
+
+long ov_bitrate(OggVorbis_File *vf,int i){
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(i>=vf->links)return(OV_EINVAL);
+  if(!vf->seekable && i!=0)return(ov_bitrate(vf,0));
+  if(i<0){
+    ogg_int64_t bits=0;
+    int i;
+    float br;
+    for(i=0;i<vf->links;i++)
+      bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
+    /* This once read: return(rint(bits/ov_time_total(vf,-1)));
+     * gcc 3.x on x86 miscompiled this at optimisation level 2 and above,
+     * so this is slightly transformed to make it work.
+     */
+    br = bits/ov_time_total(vf,-1);
+    return(rint(br));
+  }else{
+    if(vf->seekable){
+      /* return the actual bitrate */
+      return(rint((vf->offsets[i+1]-vf->dataoffsets[i])*8/ov_time_total(vf,i)));
+    }else{
+      /* return nominal if set */
+      if(vf->vi[i].bitrate_nominal>0){
+	return vf->vi[i].bitrate_nominal;
+      }else{
+	if(vf->vi[i].bitrate_upper>0){
+	  if(vf->vi[i].bitrate_lower>0){
+	    return (vf->vi[i].bitrate_upper+vf->vi[i].bitrate_lower)/2;
+	  }else{
+	    return vf->vi[i].bitrate_upper;
+	  }
+	}
+	return(OV_FALSE);
+      }
+    }
+  }
+}
+
+/* returns the actual bitrate since last call.  returns -1 if no
+   additional data to offer since last call (or at beginning of stream),
+   EINVAL if stream is only partially open 
+*/
+long ov_bitrate_instant(OggVorbis_File *vf){
+  int link=(vf->seekable?vf->current_link:0);
+  long ret;
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(vf->samptrack==0)return(OV_FALSE);
+  ret=vf->bittrack/vf->samptrack*vf->vi[link].rate+.5;
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
+  return(ret);
+}
+
+/* Guess */
+long ov_serialnumber(OggVorbis_File *vf,int i){
+  if(i>=vf->links)return(ov_serialnumber(vf,vf->links-1));
+  if(!vf->seekable && i>=0)return(ov_serialnumber(vf,-1));
+  if(i<0){
+    return(vf->current_serialno);
+  }else{
+    return(vf->serialnos[i]);
+  }
+}
+
+/* returns: total raw (compressed) length of content if i==-1
+            raw (compressed) length of that logical bitstream for i==0 to n
+	    OV_EINVAL if the stream is not seekable (we can't know the length)
+	    or if stream is only partially open
+*/
+ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i){
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
+  if(i<0){
+    ogg_int64_t acc=0;
+    int i;
+    for(i=0;i<vf->links;i++)
+      acc+=ov_raw_total(vf,i);
+    return(acc);
+  }else{
+    return(vf->offsets[i+1]-vf->offsets[i]);
+  }
+}
+
+/* returns: total PCM length (samples) of content if i==-1 PCM length
+	    (samples) of that logical bitstream for i==0 to n
+	    OV_EINVAL if the stream is not seekable (we can't know the
+	    length) or only partially open 
+*/
+ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i){
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
+  if(i<0){
+    ogg_int64_t acc=0;
+    int i;
+    for(i=0;i<vf->links;i++)
+      acc+=ov_pcm_total(vf,i);
+    return(acc);
+  }else{
+    return(vf->pcmlengths[i*2+1]);
+  }
+}
+
+/* returns: total seconds of content if i==-1
+            seconds in that logical bitstream for i==0 to n
+	    OV_EINVAL if the stream is not seekable (we can't know the
+	    length) or only partially open 
+*/
+double ov_time_total(OggVorbis_File *vf,int i){
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable || i>=vf->links)return(OV_EINVAL);
+  if(i<0){
+    double acc=0;
+    int i;
+    for(i=0;i<vf->links;i++)
+      acc+=ov_time_total(vf,i);
+    return(acc);
+  }else{
+    return((double)(vf->pcmlengths[i*2+1])/vf->vi[i].rate);
+  }
+}
+
+/* seek to an offset relative to the *compressed* data. This also
+   scans packets to update the PCM cursor. It will cross a logical
+   bitstream boundary, but only if it can't get any packets out of the
+   tail of the bitstream we seek to (so no surprises).
+
+   returns zero on success, nonzero on failure */
+
+int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos){
+  ogg_stream_state work_os;
+  int ret;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable)
+    return(OV_ENOSEEK); /* don't dump machine if we can't seek */
+
+  if(pos<0 || pos>vf->end)return(OV_EINVAL);
+
+  /* don't yet clear out decoding machine (if it's initialized), in
+     the case we're in the same link.  Restart the decode lapping, and
+     let _fetch_and_process_packet deal with a potential bitstream
+     boundary */
+  vf->pcm_offset=-1;
+  ogg_stream_reset_serialno(&vf->os,
+			    vf->current_serialno); /* must set serialno */
+  vorbis_synthesis_restart(&vf->vd);
+    
+  ret=_seek_helper(vf,pos);
+  if(ret)goto seek_error;
+
+  /* we need to make sure the pcm_offset is set, but we don't want to
+     advance the raw cursor past good packets just to get to the first
+     with a granulepos.  That's not equivalent behavior to beginning
+     decoding as immediately after the seek position as possible.
+
+     So, a hack.  We use two stream states; a local scratch state and
+     the shared vf->os stream state.  We use the local state to
+     scan, and the shared state as a buffer for later decode. 
+
+     Unfortuantely, on the last page we still advance to last packet
+     because the granulepos on the last page is not necessarily on a
+     packet boundary, and we need to make sure the granpos is
+     correct. 
+  */
+
+  {
+    ogg_page og;
+    ogg_packet op;
+    int lastblock=0;
+    int accblock=0;
+    int thisblock=0;
+    int eosflag=0; 
+
+    ogg_stream_init(&work_os,vf->current_serialno); /* get the memory ready */
+    ogg_stream_reset(&work_os); /* eliminate the spurious OV_HOLE
+                                   return from not necessarily
+                                   starting from the beginning */
+
+    while(1){
+      if(vf->ready_state>=STREAMSET){
+	/* snarf/scan a packet if we can */
+	int result=ogg_stream_packetout(&work_os,&op);
+      
+	if(result>0){
+
+	  if(vf->vi[vf->current_link].codec_setup){
+	    thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
+	    if(thisblock<0){
+	      ogg_stream_packetout(&vf->os,NULL);
+	      thisblock=0;
+	    }else{
+	      
+	      if(eosflag)
+		ogg_stream_packetout(&vf->os,NULL);
+	      else
+		if(lastblock)accblock+=(lastblock+thisblock)>>2;
+	    }	    
+
+	    if(op.granulepos!=-1){
+	      int i,link=vf->current_link;
+	      ogg_int64_t granulepos=op.granulepos-vf->pcmlengths[link*2];
+	      if(granulepos<0)granulepos=0;
+	      
+	      for(i=0;i<link;i++)
+		granulepos+=vf->pcmlengths[i*2+1];
+	      vf->pcm_offset=granulepos-accblock;
+	      break;
+	    }
+	    lastblock=thisblock;
+	    continue;
+	  }else
+	    ogg_stream_packetout(&vf->os,NULL);
+	}
+      }
+      
+      if(!lastblock){
+	if(_get_next_page(vf,&og,-1)<0){
+	  vf->pcm_offset=ov_pcm_total(vf,-1);
+	  break;
+	}
+      }else{
+	/* huh?  Bogus stream with packets but no granulepos */
+	vf->pcm_offset=-1;
+	break;
+      }
+      
+      /* has our decoding just traversed a bitstream boundary? */
+      if(vf->ready_state>=STREAMSET){
+	if(vf->current_serialno!=ogg_page_serialno(&og)){
+	  
+	  /* two possibilities: 
+	     1) our decoding just traversed a bitstream boundary
+	     2) another stream is multiplexed into this logical section? */
+            
+	  if(ogg_page_bos(&og)){
+	    /* we traversed */
+	    _decode_clear(vf); /* clear out stream state */
+	    ogg_stream_clear(&work_os);
+	  } /* else, do nothing; next loop will scoop another page */
+	}
+      }
+
+      if(vf->ready_state<STREAMSET){
+	int link;
+	long serialno = ogg_page_serialno(&og);
+
+	for(link=0;link<vf->links;link++)
+	  if(vf->serialnos[link]==serialno)break;
+
+	if(link==vf->links) continue; /* not the desired Vorbis
+					 bitstream section; keep
+					 trying */
+	vf->current_link=link;
+	vf->current_serialno=serialno;
+	ogg_stream_reset_serialno(&vf->os,serialno);
+	ogg_stream_reset_serialno(&work_os,serialno); 
+	vf->ready_state=STREAMSET;
+	
+      }
+    
+      ogg_stream_pagein(&vf->os,&og);
+      ogg_stream_pagein(&work_os,&og);
+      eosflag=ogg_page_eos(&og);
+    }
+  }
+
+  ogg_stream_clear(&work_os);
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
+  return(0);
+
+ seek_error:
+  /* dump the machine so we're in a known state */
+  vf->pcm_offset=-1;
+  ogg_stream_clear(&work_os);
+  _decode_clear(vf);
+  return OV_EBADLINK;
+}
+
+/* Page granularity seek (faster than sample granularity because we
+   don't do the last bit of decode to find a specific sample).
+
+   Seek to the last [granule marked] page preceeding the specified pos
+   location, such that decoding past the returned point will quickly
+   arrive at the requested position. */
+int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){
+  int link=-1;
+  ogg_int64_t result=0;
+  ogg_int64_t total=ov_pcm_total(vf,-1);
+  
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable)return(OV_ENOSEEK);
+
+  if(pos<0 || pos>total)return(OV_EINVAL);
+ 
+  /* which bitstream section does this pcm offset occur in? */
+  for(link=vf->links-1;link>=0;link--){
+    total-=vf->pcmlengths[link*2+1];
+    if(pos>=total)break;
+  }
+
+  /* search within the logical bitstream for the page with the highest
+     pcm_pos preceeding (or equal to) pos.  There is a danger here;
+     missing pages or incorrect frame number information in the
+     bitstream could make our task impossible.  Account for that (it
+     would be an error condition) */
+
+  /* new search algorithm by HB (Nicholas Vinen) */
+  {
+    ogg_int64_t end=vf->offsets[link+1];
+    ogg_int64_t begin=vf->offsets[link];
+    ogg_int64_t begintime = vf->pcmlengths[link*2];
+    ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime;
+    ogg_int64_t target=pos-total+begintime;
+    ogg_int64_t best=begin;
+    
+    ogg_page og;
+    while(begin<end){
+      ogg_int64_t bisect;
+      
+      if(end-begin<CHUNKSIZE){
+	bisect=begin;
+      }else{
+	/* take a (pretty decent) guess. */
+	bisect=begin + 
+	  (target-begintime)*(end-begin)/(endtime-begintime) - CHUNKSIZE;
+	if(bisect<=begin)
+	  bisect=begin+1;
+      }
+      
+      result=_seek_helper(vf,bisect);
+      if(result) goto seek_error;
+      
+      while(begin<end){
+	result=_get_next_page(vf,&og,end-vf->offset);
+	if(result==OV_EREAD) goto seek_error;
+	if(result<0){
+	  if(bisect<=begin+1)
+	    end=begin; /* found it */
+	  else{
+	    if(bisect==0) goto seek_error;
+	    bisect-=CHUNKSIZE;
+	    if(bisect<=begin)bisect=begin+1;
+	    result=_seek_helper(vf,bisect);
+	    if(result) goto seek_error;
+	  }
+	}else{
+	  ogg_int64_t granulepos;
+
+	  if(ogg_page_serialno(&og)!=vf->serialnos[link])
+	    continue;
+
+	  granulepos=ogg_page_granulepos(&og);
+	  if(granulepos==-1)continue;
+	  
+	  if(granulepos<target){
+	    best=result;  /* raw offset of packet with granulepos */ 
+	    begin=vf->offset; /* raw offset of next page */
+	    begintime=granulepos;
+	    
+	    if(target-begintime>44100)break;
+	    bisect=begin; /* *not* begin + 1 */
+	  }else{
+	    if(bisect<=begin+1)
+	      end=begin;  /* found it */
+	    else{
+	      if(end==vf->offset){ /* we're pretty close - we'd be stuck in */
+		end=result;
+		bisect-=CHUNKSIZE; /* an endless loop otherwise. */
+		if(bisect<=begin)bisect=begin+1;
+		result=_seek_helper(vf,bisect);
+		if(result) goto seek_error;
+	      }else{
+		end=bisect;
+		endtime=granulepos;
+		break;
+	      }
+	    }
+	  }
+	}
+      }
+    }
+
+    /* found our page. seek to it, update pcm offset. Easier case than
+       raw_seek, don't keep packets preceeding granulepos. */
+    {
+      ogg_page og;
+      ogg_packet op;
+      
+      /* seek */
+      result=_seek_helper(vf,best);
+      vf->pcm_offset=-1;
+      if(result) goto seek_error;
+      result=_get_next_page(vf,&og,-1);
+      if(result<0) goto seek_error;
+      
+      if(link!=vf->current_link){
+	/* Different link; dump entire decode machine */
+	_decode_clear(vf);  
+	
+	vf->current_link=link;
+	vf->current_serialno=vf->serialnos[link];
+	vf->ready_state=STREAMSET;
+	
+      }else{
+	vorbis_synthesis_restart(&vf->vd);
+      }
+
+      ogg_stream_reset_serialno(&vf->os,vf->current_serialno);
+      ogg_stream_pagein(&vf->os,&og);
+
+      /* pull out all but last packet; the one with granulepos */
+      while(1){
+	result=ogg_stream_packetpeek(&vf->os,&op);
+	if(result==0){
+	  /* !!! the packet finishing this page originated on a
+             preceeding page. Keep fetching previous pages until we
+             get one with a granulepos or without the 'continued' flag
+             set.  Then just use raw_seek for simplicity. */
+	  
+	  result=_seek_helper(vf,best);
+	  if(result<0) goto seek_error;
+	  
+	  while(1){
+	    result=_get_prev_page(vf,&og);
+	    if(result<0) goto seek_error;
+	    if(ogg_page_serialno(&og)==vf->current_serialno &&
+	       (ogg_page_granulepos(&og)>-1 ||
+		!ogg_page_continued(&og))){
+	      return ov_raw_seek(vf,result);
+	    }
+	    vf->offset=result;
+	  }
+	}
+	if(result<0){
+	  result = OV_EBADPACKET; 
+	  goto seek_error;
+	}
+	if(op.granulepos!=-1){
+	  vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
+	  if(vf->pcm_offset<0)vf->pcm_offset=0;
+	  vf->pcm_offset+=total;
+	  break;
+	}else
+	  result=ogg_stream_packetout(&vf->os,NULL);
+      }
+    }
+  }
+  
+  /* verify result */
+  if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
+    result=OV_EFAULT;
+    goto seek_error;
+  }
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
+  return(0);
+  
+ seek_error:
+  /* dump machine so we're in a known state */
+  vf->pcm_offset=-1;
+  _decode_clear(vf);
+  return (int)result;
+}
+
+/* seek to a sample offset relative to the decompressed pcm stream 
+   returns zero on success, nonzero on failure */
+
+int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos){
+  int thisblock,lastblock=0;
+  int ret=ov_pcm_seek_page(vf,pos);
+  if(ret<0)return(ret);
+  if((ret=_make_decode_ready(vf)))return ret;
+
+  /* discard leading packets we don't need for the lapping of the
+     position we want; don't decode them */
+
+  while(1){
+    ogg_packet op;
+    ogg_page og;
+
+    int ret=ogg_stream_packetpeek(&vf->os,&op);
+    if(ret>0){
+      thisblock=vorbis_packet_blocksize(vf->vi+vf->current_link,&op);
+      if(thisblock<0){
+	ogg_stream_packetout(&vf->os,NULL);
+	continue; /* non audio packet */
+      }
+      if(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
+      
+      if(vf->pcm_offset+((thisblock+
+			  vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
+      
+      /* remove the packet from packet queue and track its granulepos */
+      ogg_stream_packetout(&vf->os,NULL);
+      vorbis_synthesis_trackonly(&vf->vb,&op);  /* set up a vb with
+                                                   only tracking, no
+                                                   pcm_decode */
+      vorbis_synthesis_blockin(&vf->vd,&vf->vb); 
+      
+      /* end of logical stream case is hard, especially with exact
+	 length positioning. */
+      
+      if(op.granulepos>-1){
+	int i;
+	/* always believe the stream markers */
+	vf->pcm_offset=op.granulepos-vf->pcmlengths[vf->current_link*2];
+	if(vf->pcm_offset<0)vf->pcm_offset=0;
+	for(i=0;i<vf->current_link;i++)
+	  vf->pcm_offset+=vf->pcmlengths[i*2+1];
+      }
+	
+      lastblock=thisblock;
+      
+    }else{
+      if(ret<0 && ret!=OV_HOLE)break;
+      
+      /* suck in a new page */
+      if(_get_next_page(vf,&og,-1)<0)break;
+      if(ogg_page_bos(&og))_decode_clear(vf);
+      
+      if(vf->ready_state<STREAMSET){
+	long serialno=ogg_page_serialno(&og);
+	int link;
+	
+	for(link=0;link<vf->links;link++)
+	  if(vf->serialnos[link]==serialno)break;
+	if(link==vf->links) continue; 
+	vf->current_link=link;
+	
+	vf->ready_state=STREAMSET;      
+	vf->current_serialno=ogg_page_serialno(&og);
+	ogg_stream_reset_serialno(&vf->os,serialno); 
+	ret=_make_decode_ready(vf);
+	if(ret)return ret;
+	lastblock=0;
+      }
+
+      ogg_stream_pagein(&vf->os,&og);
+    }
+  }
+
+  vf->bittrack=0.f;
+  vf->samptrack=0.f;
+  /* discard samples until we reach the desired position. Crossing a
+     logical bitstream boundary with abandon is OK. */
+  while(vf->pcm_offset<pos){
+    ogg_int64_t target=pos-vf->pcm_offset;
+    long samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
+
+    if(samples>target)samples=target;
+    vorbis_synthesis_read(&vf->vd,samples);
+    vf->pcm_offset+=samples;
+    
+    if(samples<target)
+      if(_fetch_and_process_packet(vf,NULL,1,1)<=0)
+	vf->pcm_offset=ov_pcm_total(vf,-1); /* eof */
+  }
+  return 0;
+}
+
+/* seek to a playback time relative to the decompressed pcm stream 
+   returns zero on success, nonzero on failure */
+int ov_time_seek(OggVorbis_File *vf,double seconds){
+  /* translate time to PCM position and call ov_pcm_seek */
+
+  int link=-1;
+  ogg_int64_t pcm_total=0;
+  double time_total=0.;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable)return(OV_ENOSEEK);
+  if(seconds<0)return(OV_EINVAL);
+  
+  /* which bitstream section does this time offset occur in? */
+  for(link=0;link<vf->links;link++){
+    double addsec = ov_time_total(vf,link);
+    if(seconds<time_total+addsec)break;
+    time_total+=addsec;
+    pcm_total+=vf->pcmlengths[link*2+1];
+  }
+
+  if(link==vf->links)return(OV_EINVAL);
+
+  /* enough information to convert time offset to pcm offset */
+  {
+    ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
+    return(ov_pcm_seek(vf,target));
+  }
+}
+
+/* page-granularity version of ov_time_seek 
+   returns zero on success, nonzero on failure */
+int ov_time_seek_page(OggVorbis_File *vf,double seconds){
+  /* translate time to PCM position and call ov_pcm_seek */
+
+  int link=-1;
+  ogg_int64_t pcm_total=0;
+  double time_total=0.;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(!vf->seekable)return(OV_ENOSEEK);
+  if(seconds<0)return(OV_EINVAL);
+  
+  /* which bitstream section does this time offset occur in? */
+  for(link=0;link<vf->links;link++){
+    double addsec = ov_time_total(vf,link);
+    if(seconds<time_total+addsec)break;
+    time_total+=addsec;
+    pcm_total+=vf->pcmlengths[link*2+1];
+  }
+
+  if(link==vf->links)return(OV_EINVAL);
+
+  /* enough information to convert time offset to pcm offset */
+  {
+    ogg_int64_t target=pcm_total+(seconds-time_total)*vf->vi[link].rate;
+    return(ov_pcm_seek_page(vf,target));
+  }
+}
+
+/* tell the current stream offset cursor.  Note that seek followed by
+   tell will likely not give the set offset due to caching */
+ogg_int64_t ov_raw_tell(OggVorbis_File *vf){
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  return(vf->offset);
+}
+
+/* return PCM offset (sample) of next PCM sample to be read */
+ogg_int64_t ov_pcm_tell(OggVorbis_File *vf){
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  return(vf->pcm_offset);
+}
+
+/* return time offset (seconds) of next PCM sample to be read */
+double ov_time_tell(OggVorbis_File *vf){
+  int link=0;
+  ogg_int64_t pcm_total=0;
+  double time_total=0.f;
+  
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  if(vf->seekable){
+    pcm_total=ov_pcm_total(vf,-1);
+    time_total=ov_time_total(vf,-1);
+  
+    /* which bitstream section does this time offset occur in? */
+    for(link=vf->links-1;link>=0;link--){
+      pcm_total-=vf->pcmlengths[link*2+1];
+      time_total-=ov_time_total(vf,link);
+      if(vf->pcm_offset>=pcm_total)break;
+    }
+  }
+
+  return((double)time_total+(double)(vf->pcm_offset-pcm_total)/vf->vi[link].rate);
+}
+
+/*  link:   -1) return the vorbis_info struct for the bitstream section
+                currently being decoded
+           0-n) to request information for a specific bitstream section
+    
+    In the case of a non-seekable bitstream, any call returns the
+    current bitstream.  NULL in the case that the machine is not
+    initialized */
+
+vorbis_info *ov_info(OggVorbis_File *vf,int link){
+  if(vf->seekable){
+    if(link<0)
+      if(vf->ready_state>=STREAMSET)
+	return vf->vi+vf->current_link;
+      else
+      return vf->vi;
+    else
+      if(link>=vf->links)
+	return NULL;
+      else
+	return vf->vi+link;
+  }else{
+    return vf->vi;
+  }
+}
+
+/* grr, strong typing, grr, no templates/inheritence, grr */
+vorbis_comment *ov_comment(OggVorbis_File *vf,int link){
+  if(vf->seekable){
+    if(link<0)
+      if(vf->ready_state>=STREAMSET)
+	return vf->vc+vf->current_link;
+      else
+	return vf->vc;
+    else
+      if(link>=vf->links)
+	return NULL;
+      else
+	return vf->vc+link;
+  }else{
+    return vf->vc;
+  }
+}
+
+static int host_is_big_endian() {
+  ogg_int32_t pattern = 0xfeedface; /* deadbeef */
+  unsigned char *bytewise = (unsigned char *)&pattern;
+  if (bytewise[0] == 0xfe) return 1;
+  return 0;
+}
+
+/* up to this point, everything could more or less hide the multiple
+   logical bitstream nature of chaining from the toplevel application
+   if the toplevel application didn't particularly care.  However, at
+   the point that we actually read audio back, the multiple-section
+   nature must surface: Multiple bitstream sections do not necessarily
+   have to have the same number of channels or sampling rate.
+
+   ov_read returns the sequential logical bitstream number currently
+   being decoded along with the PCM data in order that the toplevel
+   application can take action on channel/sample rate changes.  This
+   number will be incremented even for streamed (non-seekable) streams
+   (for seekable streams, it represents the actual logical bitstream
+   index within the physical bitstream.  Note that the accessor
+   functions above are aware of this dichotomy).
+
+   input values: buffer) a buffer to hold packed PCM data for return
+		 length) the byte length requested to be placed into buffer
+		 bigendianp) should the data be packed LSB first (0) or
+		             MSB first (1)
+		 word) word size for output.  currently 1 (byte) or 
+		       2 (16 bit short)
+
+   return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
+                   0) EOF
+		   n) number of bytes of PCM actually returned.  The
+		   below works on a packet-by-packet basis, so the
+		   return length is not related to the 'length' passed
+		   in, just guaranteed to fit.
+
+	    *section) set to the logical bitstream number */
+
+long ov_read(OggVorbis_File *vf,char *buffer,int length,
+		    int bigendianp,int word,int sgned,int *bitstream){
+  int i,j;
+  int host_endian = host_is_big_endian();
+
+  float **pcm;
+  long samples;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+
+  while(1){
+    if(vf->ready_state==INITSET){
+      samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
+      if(samples)break;
+    }
+
+    /* suck in another packet */
+    {
+      int ret=_fetch_and_process_packet(vf,NULL,1,1);
+      if(ret==OV_EOF)
+	return(0);
+      if(ret<=0)
+	return(ret);
+    }
+
+  }
+
+  if(samples>0){
+  
+    /* yay! proceed to pack data into the byte buffer */
+    
+    long channels=ov_info(vf,-1)->channels;
+    long bytespersample=word * channels;
+    vorbis_fpu_control fpu;
+    if(samples>length/bytespersample)samples=length/bytespersample;
+
+    if(samples <= 0)
+      return OV_EINVAL;
+    
+    /* a tight loop to pack each size */
+    {
+      int val;
+      if(word==1){
+	int off=(sgned?0:128);
+	vorbis_fpu_setround(&fpu);
+	for(j=0;j<samples;j++)
+	  for(i=0;i<channels;i++){
+	    val=vorbis_ftoi(pcm[i][j]*128.f);
+	    if(val>127)val=127;
+	    else if(val<-128)val=-128;
+	    *buffer++=val+off;
+	  }
+	vorbis_fpu_restore(fpu);
+      }else{
+	int off=(sgned?0:32768);
+	
+	if(host_endian==bigendianp){
+	  if(sgned){
+	    
+	    vorbis_fpu_setround(&fpu);
+	    for(i=0;i<channels;i++) { /* It's faster in this order */
+	      float *src=pcm[i];
+	      short *dest=((short *)buffer)+i;
+	      for(j=0;j<samples;j++) {
+		val=vorbis_ftoi(src[j]*32768.f);
+		if(val>32767)val=32767;
+		else if(val<-32768)val=-32768;
+		*dest=val;
+		dest+=channels;
+	      }
+	    }
+	    vorbis_fpu_restore(fpu);
+	    
+	  }else{
+	    
+	    vorbis_fpu_setround(&fpu);
+	    for(i=0;i<channels;i++) {
+	      float *src=pcm[i];
+	      short *dest=((short *)buffer)+i;
+	      for(j=0;j<samples;j++) {
+		val=vorbis_ftoi(src[j]*32768.f);
+		if(val>32767)val=32767;
+		else if(val<-32768)val=-32768;
+		*dest=val+off;
+		dest+=channels;
+	      }
+	    }
+	    vorbis_fpu_restore(fpu);
+	    
+	  }
+	}else if(bigendianp){
+	  
+	  vorbis_fpu_setround(&fpu);
+	  for(j=0;j<samples;j++)
+	    for(i=0;i<channels;i++){
+	      val=vorbis_ftoi(pcm[i][j]*32768.f);
+	      if(val>32767)val=32767;
+	      else if(val<-32768)val=-32768;
+	      val+=off;
+	      *buffer++=(val>>8);
+	      *buffer++=(val&0xff);
+	    }
+	  vorbis_fpu_restore(fpu);
+	  
+	}else{
+	  int val;
+	  vorbis_fpu_setround(&fpu);
+	  for(j=0;j<samples;j++)
+	    for(i=0;i<channels;i++){
+	      val=vorbis_ftoi(pcm[i][j]*32768.f);
+	      if(val>32767)val=32767;
+	      else if(val<-32768)val=-32768;
+	      val+=off;
+	      *buffer++=(val&0xff);
+	      *buffer++=(val>>8);
+	  	}
+	  vorbis_fpu_restore(fpu);  
+	  
+	}
+      }
+    }
+    
+    vorbis_synthesis_read(&vf->vd,samples);
+    vf->pcm_offset+=samples;
+    if(bitstream)*bitstream=vf->current_link;
+    return(samples*bytespersample);
+  }else{
+    return(samples);
+  }
+}
+
+/* input values: pcm_channels) a float vector per channel of output
+		 length) the sample length being read by the app
+
+   return values: <0) error/hole in data (OV_HOLE), partial open (OV_EINVAL)
+                   0) EOF
+		   n) number of samples of PCM actually returned.  The
+		   below works on a packet-by-packet basis, so the
+		   return length is not related to the 'length' passed
+		   in, just guaranteed to fit.
+
+	    *section) set to the logical bitstream number */
+
+
+
+long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length,
+		   int *bitstream){
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+
+  while(1){
+    if(vf->ready_state==INITSET){
+      float **pcm;
+      long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
+      if(samples){
+	if(pcm_channels)*pcm_channels=pcm;
+	if(samples>length)samples=length;
+	vorbis_synthesis_read(&vf->vd,samples);
+	vf->pcm_offset+=samples;
+	if(bitstream)*bitstream=vf->current_link;
+	return samples;
+
+      }
+    }
+
+    /* suck in another packet */
+    {
+      int ret=_fetch_and_process_packet(vf,NULL,1,1);
+      if(ret==OV_EOF)return(0);
+      if(ret<=0)return(ret);
+    }
+
+  }
+}
+
+extern float *vorbis_window(vorbis_dsp_state *v,int W);
+extern void _analysis_output_always(char *base,int i,float *v,int n,int bark,int dB,
+			     ogg_int64_t off);
+
+static void _ov_splice(float **pcm,float **lappcm,
+		       int n1, int n2,
+		       int ch1, int ch2,
+		       float *w1, float *w2){
+  int i,j;
+  float *w=w1;
+  int n=n1;
+
+  if(n1>n2){
+    n=n2;
+    w=w2;
+  }
+
+  /* splice */
+  for(j=0;j<ch1 && j<ch2;j++){
+    float *s=lappcm[j];
+    float *d=pcm[j];
+
+    for(i=0;i<n;i++){
+      float wd=w[i]*w[i];
+      float ws=1.-wd;
+      d[i]=d[i]*wd + s[i]*ws;
+    }
+  }
+  /* window from zero */
+  for(;j<ch2;j++){
+    float *d=pcm[j];
+    for(i=0;i<n;i++){
+      float wd=w[i]*w[i];
+      d[i]=d[i]*wd;
+    }
+  }
+
+}
+		
+/* make sure vf is INITSET */
+static int _ov_initset(OggVorbis_File *vf){
+  while(1){
+    if(vf->ready_state==INITSET)break;
+    /* suck in another packet */
+    {
+      int ret=_fetch_and_process_packet(vf,NULL,1,0);
+      if(ret<0 && ret!=OV_HOLE)return(ret);
+    }
+  }
+  return 0;
+}
+
+/* make sure vf is INITSET and that we have a primed buffer; if
+   we're crosslapping at a stream section boundary, this also makes
+   sure we're sanity checking against the right stream information */
+static int _ov_initprime(OggVorbis_File *vf){
+  vorbis_dsp_state *vd=&vf->vd;
+  while(1){
+    if(vf->ready_state==INITSET)
+      if(vorbis_synthesis_pcmout(vd,NULL))break;
+    
+    /* suck in another packet */
+    {
+      int ret=_fetch_and_process_packet(vf,NULL,1,0);
+      if(ret<0 && ret!=OV_HOLE)return(ret);
+    }
+  }  
+  return 0;
+}
+
+/* grab enough data for lapping from vf; this may be in the form of
+   unreturned, already-decoded pcm, remaining PCM we will need to
+   decode, or synthetic postextrapolation from last packets. */
+static void _ov_getlap(OggVorbis_File *vf,vorbis_info *vi,vorbis_dsp_state *vd,
+		       float **lappcm,int lapsize){
+  int lapcount=0,i;
+  float **pcm;
+
+  /* try first to decode the lapping data */
+  while(lapcount<lapsize){
+    int samples=vorbis_synthesis_pcmout(vd,&pcm);
+    if(samples){
+      if(samples>lapsize-lapcount)samples=lapsize-lapcount;
+      for(i=0;i<vi->channels;i++)
+	memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
+      lapcount+=samples;
+      vorbis_synthesis_read(vd,samples);
+    }else{
+    /* suck in another packet */
+      int ret=_fetch_and_process_packet(vf,NULL,1,0); /* do *not* span */
+      if(ret==OV_EOF)break;
+    }
+  }
+  if(lapcount<lapsize){
+    /* failed to get lapping data from normal decode; pry it from the
+       postextrapolation buffering, or the second half of the MDCT
+       from the last packet */
+    int samples=vorbis_synthesis_lapout(&vf->vd,&pcm);
+    if(samples==0){
+      for(i=0;i<vi->channels;i++)
+	memset(lappcm[i]+lapcount,0,sizeof(**pcm)*lapsize-lapcount);
+      lapcount=lapsize;
+    }else{
+      if(samples>lapsize-lapcount)samples=lapsize-lapcount;
+      for(i=0;i<vi->channels;i++)
+	memcpy(lappcm[i]+lapcount,pcm[i],sizeof(**pcm)*samples);
+      lapcount+=samples;
+    }
+  }
+}
+
+/* this sets up crosslapping of a sample by using trailing data from
+   sample 1 and lapping it into the windowing buffer of sample 2 */
+int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){
+  vorbis_info *vi1,*vi2;
+  float **lappcm;
+  float **pcm;
+  float *w1,*w2;
+  int n1,n2,i,ret,hs1,hs2;
+
+  if(vf1==vf2)return(0); /* degenerate case */
+  if(vf1->ready_state<OPENED)return(OV_EINVAL);
+  if(vf2->ready_state<OPENED)return(OV_EINVAL);
+
+  /* the relevant overlap buffers must be pre-checked and pre-primed
+     before looking at settings in the event that priming would cross
+     a bitstream boundary.  So, do it now */
+
+  ret=_ov_initset(vf1);
+  if(ret)return(ret);
+  ret=_ov_initprime(vf2);
+  if(ret)return(ret);
+
+  vi1=ov_info(vf1,-1);
+  vi2=ov_info(vf2,-1);
+  hs1=ov_halfrate_p(vf1);
+  hs2=ov_halfrate_p(vf2);
+
+  lappcm=alloca(sizeof(*lappcm)*vi1->channels);
+  n1=vorbis_info_blocksize(vi1,0)>>(1+hs1);
+  n2=vorbis_info_blocksize(vi2,0)>>(1+hs2);
+  w1=vorbis_window(&vf1->vd,0);
+  w2=vorbis_window(&vf2->vd,0);
+
+  for(i=0;i<vi1->channels;i++)
+    lappcm[i]=alloca(sizeof(**lappcm)*n1);
+
+  _ov_getlap(vf1,vi1,&vf1->vd,lappcm,n1);
+
+  /* have a lapping buffer from vf1; now to splice it into the lapping
+     buffer of vf2 */
+  /* consolidate and expose the buffer. */
+  vorbis_synthesis_lapout(&vf2->vd,&pcm);
+  _analysis_output_always("pcmL",0,pcm[0],n1*2,0,0,0);
+  _analysis_output_always("pcmR",0,pcm[1],n1*2,0,0,0);
+
+  /* splice */
+  _ov_splice(pcm,lappcm,n1,n2,vi1->channels,vi2->channels,w1,w2);
+  
+  /* done */
+  return(0);
+}
+
+static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos,
+			   int (*localseek)(OggVorbis_File *,ogg_int64_t)){
+  vorbis_info *vi;
+  float **lappcm;
+  float **pcm;
+  float *w1,*w2;
+  int n1,n2,ch1,ch2,hs;
+  int i,ret;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  ret=_ov_initset(vf);
+  if(ret)return(ret);
+  vi=ov_info(vf,-1);
+  hs=ov_halfrate_p(vf);
+  
+  ch1=vi->channels;
+  n1=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w1=vorbis_window(&vf->vd,0);  /* window arrays from libvorbis are
+				   persistent; even if the decode state
+				   from this link gets dumped, this
+				   window array continues to exist */
+
+  lappcm=alloca(sizeof(*lappcm)*ch1);
+  for(i=0;i<ch1;i++)
+    lappcm[i]=alloca(sizeof(**lappcm)*n1);
+  _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
+
+  /* have lapping data; seek and prime the buffer */
+  ret=localseek(vf,pos);
+  if(ret)return ret;
+  ret=_ov_initprime(vf);
+  if(ret)return(ret);
+
+ /* Guard against cross-link changes; they're perfectly legal */
+  vi=ov_info(vf,-1);
+  ch2=vi->channels;
+  n2=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w2=vorbis_window(&vf->vd,0);
+
+  /* consolidate and expose the buffer. */
+  vorbis_synthesis_lapout(&vf->vd,&pcm);
+
+  /* splice */
+  _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
+
+  /* done */
+  return(0);
+}
+
+int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
+  return _ov_64_seek_lap(vf,pos,ov_raw_seek);
+}
+
+int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos){
+  return _ov_64_seek_lap(vf,pos,ov_pcm_seek);
+}
+
+int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos){
+  return _ov_64_seek_lap(vf,pos,ov_pcm_seek_page);
+}
+
+static int _ov_d_seek_lap(OggVorbis_File *vf,double pos,
+			   int (*localseek)(OggVorbis_File *,double)){
+  vorbis_info *vi;
+  float **lappcm;
+  float **pcm;
+  float *w1,*w2;
+  int n1,n2,ch1,ch2,hs;
+  int i,ret;
+
+  if(vf->ready_state<OPENED)return(OV_EINVAL);
+  ret=_ov_initset(vf);
+  if(ret)return(ret);
+  vi=ov_info(vf,-1);
+  hs=ov_halfrate_p(vf);
+
+  ch1=vi->channels;
+  n1=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w1=vorbis_window(&vf->vd,0);  /* window arrays from libvorbis are
+				   persistent; even if the decode state
+				   from this link gets dumped, this
+				   window array continues to exist */
+
+  lappcm=alloca(sizeof(*lappcm)*ch1);
+  for(i=0;i<ch1;i++)
+    lappcm[i]=alloca(sizeof(**lappcm)*n1);
+  _ov_getlap(vf,vi,&vf->vd,lappcm,n1);
+
+  /* have lapping data; seek and prime the buffer */
+  ret=localseek(vf,pos);
+  if(ret)return ret;
+  ret=_ov_initprime(vf);
+  if(ret)return(ret);
+
+ /* Guard against cross-link changes; they're perfectly legal */
+  vi=ov_info(vf,-1);
+  ch2=vi->channels;
+  n2=vorbis_info_blocksize(vi,0)>>(1+hs);
+  w2=vorbis_window(&vf->vd,0);
+
+  /* consolidate and expose the buffer. */
+  vorbis_synthesis_lapout(&vf->vd,&pcm);
+
+  /* splice */
+  _ov_splice(pcm,lappcm,n1,n2,ch1,ch2,w1,w2);
+
+  /* done */
+  return(0);
+}
+
+int ov_time_seek_lap(OggVorbis_File *vf,double pos){
+  return _ov_d_seek_lap(vf,pos,ov_time_seek);
+}
+
+int ov_time_seek_page_lap(OggVorbis_File *vf,double pos){
+  return _ov_d_seek_lap(vf,pos,ov_time_seek_page);
+}
Index: /libvorbis-1.2.0/lib/window.c
===================================================================
--- /libvorbis-1.2.0/lib/window.c	(revision 16)
+++ /libvorbis-1.2.0/lib/window.c	(revision 16)
@@ -0,0 +1,2136 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: window functions
+ last mod: $Id: window.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include "os.h"
+#include "misc.h"
+
+static float vwin64[32] = {
+  0.0009460463F, 0.0085006468F, 0.0235352254F, 0.0458950567F, 
+  0.0753351908F, 0.1115073077F, 0.1539457973F, 0.2020557475F, 
+  0.2551056759F, 0.3122276645F, 0.3724270287F, 0.4346027792F, 
+  0.4975789974F, 0.5601459521F, 0.6211085051F, 0.6793382689F, 
+  0.7338252629F, 0.7837245849F, 0.8283939355F, 0.8674186656F, 
+  0.9006222429F, 0.9280614787F, 0.9500073081F, 0.9669131782F, 
+  0.9793740220F, 0.9880792941F, 0.9937636139F, 0.9971582668F, 
+  0.9989462667F, 0.9997230082F, 0.9999638688F, 0.9999995525F, 
+};
+
+static float vwin128[64] = {
+  0.0002365472F, 0.0021280687F, 0.0059065254F, 0.0115626550F, 
+  0.0190823442F, 0.0284463735F, 0.0396300935F, 0.0526030430F, 
+  0.0673285281F, 0.0837631763F, 0.1018564887F, 0.1215504095F, 
+  0.1427789367F, 0.1654677960F, 0.1895342001F, 0.2148867160F, 
+  0.2414252576F, 0.2690412240F, 0.2976177952F, 0.3270303960F, 
+  0.3571473350F, 0.3878306189F, 0.4189369387F, 0.4503188188F, 
+  0.4818259135F, 0.5133064334F, 0.5446086751F, 0.5755826278F, 
+  0.6060816248F, 0.6359640047F, 0.6650947483F, 0.6933470543F, 
+  0.7206038179F, 0.7467589810F, 0.7717187213F, 0.7954024542F, 
+  0.8177436264F, 0.8386902831F, 0.8582053981F, 0.8762669622F, 
+  0.8928678298F, 0.9080153310F, 0.9217306608F, 0.9340480615F, 
+  0.9450138200F, 0.9546851041F, 0.9631286621F, 0.9704194171F, 
+  0.9766389810F, 0.9818741197F, 0.9862151938F, 0.9897546035F, 
+  0.9925852598F, 0.9947991032F, 0.9964856900F, 0.9977308602F, 
+  0.9986155015F, 0.9992144193F, 0.9995953200F, 0.9998179155F, 
+  0.9999331503F, 0.9999825563F, 0.9999977357F, 0.9999999720F, 
+};
+
+static float vwin256[128] = {
+  0.0000591390F, 0.0005321979F, 0.0014780301F, 0.0028960636F, 
+  0.0047854363F, 0.0071449926F, 0.0099732775F, 0.0132685298F, 
+  0.0170286741F, 0.0212513119F, 0.0259337111F, 0.0310727950F, 
+  0.0366651302F, 0.0427069140F, 0.0491939614F, 0.0561216907F, 
+  0.0634851102F, 0.0712788035F, 0.0794969160F, 0.0881331402F, 
+  0.0971807028F, 0.1066323515F, 0.1164803426F, 0.1267164297F, 
+  0.1373318534F, 0.1483173323F, 0.1596630553F, 0.1713586755F, 
+  0.1833933062F, 0.1957555184F, 0.2084333404F, 0.2214142599F, 
+  0.2346852280F, 0.2482326664F, 0.2620424757F, 0.2761000481F, 
+  0.2903902813F, 0.3048975959F, 0.3196059553F, 0.3344988887F, 
+  0.3495595160F, 0.3647705766F, 0.3801144597F, 0.3955732382F, 
+  0.4111287047F, 0.4267624093F, 0.4424557009F, 0.4581897696F, 
+  0.4739456913F, 0.4897044744F, 0.5054471075F, 0.5211546088F, 
+  0.5368080763F, 0.5523887395F, 0.5678780103F, 0.5832575361F, 
+  0.5985092508F, 0.6136154277F, 0.6285587300F, 0.6433222619F, 
+  0.6578896175F, 0.6722449294F, 0.6863729144F, 0.7002589187F, 
+  0.7138889597F, 0.7272497662F, 0.7403288154F, 0.7531143679F, 
+  0.7655954985F, 0.7777621249F, 0.7896050322F, 0.8011158947F, 
+  0.8122872932F, 0.8231127294F, 0.8335866365F, 0.8437043850F, 
+  0.8534622861F, 0.8628575905F, 0.8718884835F, 0.8805540765F, 
+  0.8888543947F, 0.8967903616F, 0.9043637797F, 0.9115773078F, 
+  0.9184344360F, 0.9249394562F, 0.9310974312F, 0.9369141608F, 
+  0.9423961446F, 0.9475505439F, 0.9523851406F, 0.9569082947F, 
+  0.9611289005F, 0.9650563408F, 0.9687004405F, 0.9720714191F, 
+  0.9751798427F, 0.9780365753F, 0.9806527301F, 0.9830396204F, 
+  0.9852087111F, 0.9871715701F, 0.9889398207F, 0.9905250941F, 
+  0.9919389832F, 0.9931929973F, 0.9942985174F, 0.9952667537F, 
+  0.9961087037F, 0.9968351119F, 0.9974564312F, 0.9979827858F, 
+  0.9984239359F, 0.9987892441F, 0.9990876435F, 0.9993276081F, 
+  0.9995171241F, 0.9996636648F, 0.9997741654F, 0.9998550016F, 
+  0.9999119692F, 0.9999502656F, 0.9999744742F, 0.9999885497F, 
+  0.9999958064F, 0.9999989077F, 0.9999998584F, 0.9999999983F, 
+};
+
+static float vwin512[256] = {
+  0.0000147849F, 0.0001330607F, 0.0003695946F, 0.0007243509F, 
+  0.0011972759F, 0.0017882983F, 0.0024973285F, 0.0033242588F, 
+  0.0042689632F, 0.0053312973F, 0.0065110982F, 0.0078081841F, 
+  0.0092223540F, 0.0107533880F, 0.0124010466F, 0.0141650703F, 
+  0.0160451800F, 0.0180410758F, 0.0201524373F, 0.0223789233F, 
+  0.0247201710F, 0.0271757958F, 0.0297453914F, 0.0324285286F, 
+  0.0352247556F, 0.0381335972F, 0.0411545545F, 0.0442871045F, 
+  0.0475306997F, 0.0508847676F, 0.0543487103F, 0.0579219038F, 
+  0.0616036982F, 0.0653934164F, 0.0692903546F, 0.0732937809F, 
+  0.0774029356F, 0.0816170305F, 0.0859352485F, 0.0903567428F, 
+  0.0948806375F, 0.0995060259F, 0.1042319712F, 0.1090575056F, 
+  0.1139816300F, 0.1190033137F, 0.1241214941F, 0.1293350764F, 
+  0.1346429333F, 0.1400439046F, 0.1455367974F, 0.1511203852F, 
+  0.1567934083F, 0.1625545735F, 0.1684025537F, 0.1743359881F, 
+  0.1803534820F, 0.1864536069F, 0.1926349000F, 0.1988958650F, 
+  0.2052349715F, 0.2116506555F, 0.2181413191F, 0.2247053313F, 
+  0.2313410275F, 0.2380467105F, 0.2448206500F, 0.2516610835F, 
+  0.2585662164F, 0.2655342226F, 0.2725632448F, 0.2796513950F, 
+  0.2867967551F, 0.2939973773F, 0.3012512852F, 0.3085564739F, 
+  0.3159109111F, 0.3233125375F, 0.3307592680F, 0.3382489922F, 
+  0.3457795756F, 0.3533488602F, 0.3609546657F, 0.3685947904F, 
+  0.3762670121F, 0.3839690896F, 0.3916987634F, 0.3994537572F, 
+  0.4072317788F, 0.4150305215F, 0.4228476653F, 0.4306808783F, 
+  0.4385278181F, 0.4463861329F, 0.4542534630F, 0.4621274424F, 
+  0.4700057001F, 0.4778858615F, 0.4857655502F, 0.4936423891F, 
+  0.5015140023F, 0.5093780165F, 0.5172320626F, 0.5250737772F, 
+  0.5329008043F, 0.5407107971F, 0.5485014192F, 0.5562703465F, 
+  0.5640152688F, 0.5717338914F, 0.5794239366F, 0.5870831457F, 
+  0.5947092801F, 0.6023001235F, 0.6098534829F, 0.6173671907F, 
+  0.6248391059F, 0.6322671161F, 0.6396491384F, 0.6469831217F, 
+  0.6542670475F, 0.6614989319F, 0.6686768267F, 0.6757988210F, 
+  0.6828630426F, 0.6898676592F, 0.6968108799F, 0.7036909564F, 
+  0.7105061843F, 0.7172549043F, 0.7239355032F, 0.7305464154F, 
+  0.7370861235F, 0.7435531598F, 0.7499461068F, 0.7562635986F, 
+  0.7625043214F, 0.7686670148F, 0.7747504721F, 0.7807535410F, 
+  0.7866751247F, 0.7925141825F, 0.7982697296F, 0.8039408387F, 
+  0.8095266395F, 0.8150263196F, 0.8204391248F, 0.8257643590F, 
+  0.8310013848F, 0.8361496236F, 0.8412085555F, 0.8461777194F, 
+  0.8510567129F, 0.8558451924F, 0.8605428730F, 0.8651495278F, 
+  0.8696649882F, 0.8740891432F, 0.8784219392F, 0.8826633797F, 
+  0.8868135244F, 0.8908724888F, 0.8948404441F, 0.8987176157F, 
+  0.9025042831F, 0.9062007791F, 0.9098074886F, 0.9133248482F, 
+  0.9167533451F, 0.9200935163F, 0.9233459472F, 0.9265112712F, 
+  0.9295901680F, 0.9325833632F, 0.9354916263F, 0.9383157705F, 
+  0.9410566504F, 0.9437151618F, 0.9462922398F, 0.9487888576F, 
+  0.9512060252F, 0.9535447882F, 0.9558062262F, 0.9579914516F, 
+  0.9601016078F, 0.9621378683F, 0.9641014348F, 0.9659935361F, 
+  0.9678154261F, 0.9695683830F, 0.9712537071F, 0.9728727198F, 
+  0.9744267618F, 0.9759171916F, 0.9773453842F, 0.9787127293F, 
+  0.9800206298F, 0.9812705006F, 0.9824637665F, 0.9836018613F, 
+  0.9846862258F, 0.9857183066F, 0.9866995544F, 0.9876314227F, 
+  0.9885153662F, 0.9893528393F, 0.9901452948F, 0.9908941823F, 
+  0.9916009470F, 0.9922670279F, 0.9928938570F, 0.9934828574F, 
+  0.9940354423F, 0.9945530133F, 0.9950369595F, 0.9954886562F, 
+  0.9959094633F, 0.9963007242F, 0.9966637649F, 0.9969998925F, 
+  0.9973103939F, 0.9975965351F, 0.9978595598F, 0.9981006885F, 
+  0.9983211172F, 0.9985220166F, 0.9987045311F, 0.9988697776F, 
+  0.9990188449F, 0.9991527924F, 0.9992726499F, 0.9993794157F, 
+  0.9994740570F, 0.9995575079F, 0.9996306699F, 0.9996944099F, 
+  0.9997495605F, 0.9997969190F, 0.9998372465F, 0.9998712678F, 
+  0.9998996704F, 0.9999231041F, 0.9999421807F, 0.9999574732F, 
+  0.9999695157F, 0.9999788026F, 0.9999857885F, 0.9999908879F, 
+  0.9999944746F, 0.9999968817F, 0.9999984010F, 0.9999992833F, 
+  0.9999997377F, 0.9999999317F, 0.9999999911F, 0.9999999999F, 
+};
+
+static float vwin1024[512] = {
+  0.0000036962F, 0.0000332659F, 0.0000924041F, 0.0001811086F, 
+  0.0002993761F, 0.0004472021F, 0.0006245811F, 0.0008315063F, 
+  0.0010679699F, 0.0013339631F, 0.0016294757F, 0.0019544965F, 
+  0.0023090133F, 0.0026930125F, 0.0031064797F, 0.0035493989F, 
+  0.0040217533F, 0.0045235250F, 0.0050546946F, 0.0056152418F, 
+  0.0062051451F, 0.0068243817F, 0.0074729278F, 0.0081507582F, 
+  0.0088578466F, 0.0095941655F, 0.0103596863F, 0.0111543789F, 
+  0.0119782122F, 0.0128311538F, 0.0137131701F, 0.0146242260F, 
+  0.0155642855F, 0.0165333111F, 0.0175312640F, 0.0185581042F, 
+  0.0196137903F, 0.0206982797F, 0.0218115284F, 0.0229534910F, 
+  0.0241241208F, 0.0253233698F, 0.0265511886F, 0.0278075263F, 
+  0.0290923308F, 0.0304055484F, 0.0317471241F, 0.0331170013F, 
+  0.0345151222F, 0.0359414274F, 0.0373958560F, 0.0388783456F, 
+  0.0403888325F, 0.0419272511F, 0.0434935347F, 0.0450876148F, 
+  0.0467094213F, 0.0483588828F, 0.0500359261F, 0.0517404765F, 
+  0.0534724575F, 0.0552317913F, 0.0570183983F, 0.0588321971F, 
+  0.0606731048F, 0.0625410369F, 0.0644359070F, 0.0663576272F, 
+  0.0683061077F, 0.0702812571F, 0.0722829821F, 0.0743111878F, 
+  0.0763657775F, 0.0784466526F, 0.0805537129F, 0.0826868561F, 
+  0.0848459782F, 0.0870309736F, 0.0892417345F, 0.0914781514F, 
+  0.0937401128F, 0.0960275056F, 0.0983402145F, 0.1006781223F, 
+  0.1030411101F, 0.1054290568F, 0.1078418397F, 0.1102793336F, 
+  0.1127414119F, 0.1152279457F, 0.1177388042F, 0.1202738544F, 
+  0.1228329618F, 0.1254159892F, 0.1280227980F, 0.1306532471F, 
+  0.1333071937F, 0.1359844927F, 0.1386849970F, 0.1414085575F, 
+  0.1441550230F, 0.1469242403F, 0.1497160539F, 0.1525303063F, 
+  0.1553668381F, 0.1582254875F, 0.1611060909F, 0.1640084822F, 
+  0.1669324936F, 0.1698779549F, 0.1728446939F, 0.1758325362F, 
+  0.1788413055F, 0.1818708232F, 0.1849209084F, 0.1879913785F, 
+  0.1910820485F, 0.1941927312F, 0.1973232376F, 0.2004733764F, 
+  0.2036429541F, 0.2068317752F, 0.2100396421F, 0.2132663552F, 
+  0.2165117125F, 0.2197755102F, 0.2230575422F, 0.2263576007F, 
+  0.2296754753F, 0.2330109540F, 0.2363638225F, 0.2397338646F, 
+  0.2431208619F, 0.2465245941F, 0.2499448389F, 0.2533813719F, 
+  0.2568339669F, 0.2603023956F, 0.2637864277F, 0.2672858312F, 
+  0.2708003718F, 0.2743298135F, 0.2778739186F, 0.2814324472F, 
+  0.2850051576F, 0.2885918065F, 0.2921921485F, 0.2958059366F, 
+  0.2994329219F, 0.3030728538F, 0.3067254799F, 0.3103905462F, 
+  0.3140677969F, 0.3177569747F, 0.3214578205F, 0.3251700736F, 
+  0.3288934718F, 0.3326277513F, 0.3363726468F, 0.3401278914F, 
+  0.3438932168F, 0.3476683533F, 0.3514530297F, 0.3552469734F, 
+  0.3590499106F, 0.3628615659F, 0.3666816630F, 0.3705099239F, 
+  0.3743460698F, 0.3781898204F, 0.3820408945F, 0.3858990095F, 
+  0.3897638820F, 0.3936352274F, 0.3975127601F, 0.4013961936F, 
+  0.4052852405F, 0.4091796123F, 0.4130790198F, 0.4169831732F, 
+  0.4208917815F, 0.4248045534F, 0.4287211965F, 0.4326414181F, 
+  0.4365649248F, 0.4404914225F, 0.4444206167F, 0.4483522125F, 
+  0.4522859146F, 0.4562214270F, 0.4601584538F, 0.4640966984F, 
+  0.4680358644F, 0.4719756548F, 0.4759157726F, 0.4798559209F, 
+  0.4837958024F, 0.4877351199F, 0.4916735765F, 0.4956108751F, 
+  0.4995467188F, 0.5034808109F, 0.5074128550F, 0.5113425550F, 
+  0.5152696149F, 0.5191937395F, 0.5231146336F, 0.5270320028F, 
+  0.5309455530F, 0.5348549910F, 0.5387600239F, 0.5426603597F, 
+  0.5465557070F, 0.5504457754F, 0.5543302752F, 0.5582089175F, 
+  0.5620814145F, 0.5659474793F, 0.5698068262F, 0.5736591704F, 
+  0.5775042283F, 0.5813417176F, 0.5851713571F, 0.5889928670F, 
+  0.5928059689F, 0.5966103856F, 0.6004058415F, 0.6041920626F, 
+  0.6079687761F, 0.6117357113F, 0.6154925986F, 0.6192391705F, 
+  0.6229751612F, 0.6267003064F, 0.6304143441F, 0.6341170137F, 
+  0.6378080569F, 0.6414872173F, 0.6451542405F, 0.6488088741F, 
+  0.6524508681F, 0.6560799742F, 0.6596959469F, 0.6632985424F, 
+  0.6668875197F, 0.6704626398F, 0.6740236662F, 0.6775703649F, 
+  0.6811025043F, 0.6846198554F, 0.6881221916F, 0.6916092892F, 
+  0.6950809269F, 0.6985368861F, 0.7019769510F, 0.7054009085F, 
+  0.7088085484F, 0.7121996632F, 0.7155740484F, 0.7189315023F, 
+  0.7222718263F, 0.7255948245F, 0.7289003043F, 0.7321880760F, 
+  0.7354579530F, 0.7387097518F, 0.7419432921F, 0.7451583966F, 
+  0.7483548915F, 0.7515326059F, 0.7546913723F, 0.7578310265F, 
+  0.7609514077F, 0.7640523581F, 0.7671337237F, 0.7701953535F, 
+  0.7732371001F, 0.7762588195F, 0.7792603711F, 0.7822416178F, 
+  0.7852024259F, 0.7881426654F, 0.7910622097F, 0.7939609356F, 
+  0.7968387237F, 0.7996954579F, 0.8025310261F, 0.8053453193F, 
+  0.8081382324F, 0.8109096638F, 0.8136595156F, 0.8163876936F, 
+  0.8190941071F, 0.8217786690F, 0.8244412960F, 0.8270819086F, 
+  0.8297004305F, 0.8322967896F, 0.8348709171F, 0.8374227481F, 
+  0.8399522213F, 0.8424592789F, 0.8449438672F, 0.8474059356F, 
+  0.8498454378F, 0.8522623306F, 0.8546565748F, 0.8570281348F, 
+  0.8593769787F, 0.8617030779F, 0.8640064080F, 0.8662869477F, 
+  0.8685446796F, 0.8707795899F, 0.8729916682F, 0.8751809079F, 
+  0.8773473059F, 0.8794908626F, 0.8816115819F, 0.8837094713F, 
+  0.8857845418F, 0.8878368079F, 0.8898662874F, 0.8918730019F, 
+  0.8938569760F, 0.8958182380F, 0.8977568194F, 0.8996727552F, 
+  0.9015660837F, 0.9034368465F, 0.9052850885F, 0.9071108577F, 
+  0.9089142057F, 0.9106951869F, 0.9124538591F, 0.9141902832F, 
+  0.9159045233F, 0.9175966464F, 0.9192667228F, 0.9209148257F, 
+  0.9225410313F, 0.9241454187F, 0.9257280701F, 0.9272890704F, 
+  0.9288285075F, 0.9303464720F, 0.9318430576F, 0.9333183603F, 
+  0.9347724792F, 0.9362055158F, 0.9376175745F, 0.9390087622F, 
+  0.9403791881F, 0.9417289644F, 0.9430582055F, 0.9443670283F, 
+  0.9456555521F, 0.9469238986F, 0.9481721917F, 0.9494005577F, 
+  0.9506091252F, 0.9517980248F, 0.9529673894F, 0.9541173540F, 
+  0.9552480557F, 0.9563596334F, 0.9574522282F, 0.9585259830F, 
+  0.9595810428F, 0.9606175542F, 0.9616356656F, 0.9626355274F, 
+  0.9636172915F, 0.9645811114F, 0.9655271425F, 0.9664555414F, 
+  0.9673664664F, 0.9682600774F, 0.9691365355F, 0.9699960034F, 
+  0.9708386448F, 0.9716646250F, 0.9724741103F, 0.9732672685F, 
+  0.9740442683F, 0.9748052795F, 0.9755504729F, 0.9762800205F, 
+  0.9769940950F, 0.9776928703F, 0.9783765210F, 0.9790452223F, 
+  0.9796991504F, 0.9803384823F, 0.9809633954F, 0.9815740679F, 
+  0.9821706784F, 0.9827534063F, 0.9833224312F, 0.9838779332F, 
+  0.9844200928F, 0.9849490910F, 0.9854651087F, 0.9859683274F, 
+  0.9864589286F, 0.9869370940F, 0.9874030054F, 0.9878568447F, 
+  0.9882987937F, 0.9887290343F, 0.9891477481F, 0.9895551169F, 
+  0.9899513220F, 0.9903365446F, 0.9907109658F, 0.9910747662F, 
+  0.9914281260F, 0.9917712252F, 0.9921042433F, 0.9924273593F, 
+  0.9927407516F, 0.9930445982F, 0.9933390763F, 0.9936243626F, 
+  0.9939006331F, 0.9941680631F, 0.9944268269F, 0.9946770982F, 
+  0.9949190498F, 0.9951528537F, 0.9953786808F, 0.9955967011F, 
+  0.9958070836F, 0.9960099963F, 0.9962056061F, 0.9963940787F, 
+  0.9965755786F, 0.9967502693F, 0.9969183129F, 0.9970798704F, 
+  0.9972351013F, 0.9973841640F, 0.9975272151F, 0.9976644103F, 
+  0.9977959036F, 0.9979218476F, 0.9980423932F, 0.9981576901F, 
+  0.9982678862F, 0.9983731278F, 0.9984735596F, 0.9985693247F, 
+  0.9986605645F, 0.9987474186F, 0.9988300248F, 0.9989085193F, 
+  0.9989830364F, 0.9990537085F, 0.9991206662F, 0.9991840382F, 
+  0.9992439513F, 0.9993005303F, 0.9993538982F, 0.9994041757F, 
+  0.9994514817F, 0.9994959330F, 0.9995376444F, 0.9995767286F, 
+  0.9996132960F, 0.9996474550F, 0.9996793121F, 0.9997089710F, 
+  0.9997365339F, 0.9997621003F, 0.9997857677F, 0.9998076311F, 
+  0.9998277836F, 0.9998463156F, 0.9998633155F, 0.9998788692F, 
+  0.9998930603F, 0.9999059701F, 0.9999176774F, 0.9999282586F, 
+  0.9999377880F, 0.9999463370F, 0.9999539749F, 0.9999607685F, 
+  0.9999667820F, 0.9999720773F, 0.9999767136F, 0.9999807479F, 
+  0.9999842344F, 0.9999872249F, 0.9999897688F, 0.9999919127F, 
+  0.9999937009F, 0.9999951749F, 0.9999963738F, 0.9999973342F, 
+  0.9999980900F, 0.9999986724F, 0.9999991103F, 0.9999994297F, 
+  0.9999996543F, 0.9999998049F, 0.9999999000F, 0.9999999552F, 
+  0.9999999836F, 0.9999999957F, 0.9999999994F, 1.0000000000F, 
+};
+
+static float vwin2048[1024] = {
+  0.0000009241F, 0.0000083165F, 0.0000231014F, 0.0000452785F, 
+  0.0000748476F, 0.0001118085F, 0.0001561608F, 0.0002079041F, 
+  0.0002670379F, 0.0003335617F, 0.0004074748F, 0.0004887765F, 
+  0.0005774661F, 0.0006735427F, 0.0007770054F, 0.0008878533F, 
+  0.0010060853F, 0.0011317002F, 0.0012646969F, 0.0014050742F, 
+  0.0015528307F, 0.0017079650F, 0.0018704756F, 0.0020403610F, 
+  0.0022176196F, 0.0024022497F, 0.0025942495F, 0.0027936173F, 
+  0.0030003511F, 0.0032144490F, 0.0034359088F, 0.0036647286F, 
+  0.0039009061F, 0.0041444391F, 0.0043953253F, 0.0046535621F, 
+  0.0049191472F, 0.0051920781F, 0.0054723520F, 0.0057599664F, 
+  0.0060549184F, 0.0063572052F, 0.0066668239F, 0.0069837715F, 
+  0.0073080449F, 0.0076396410F, 0.0079785566F, 0.0083247884F, 
+  0.0086783330F, 0.0090391871F, 0.0094073470F, 0.0097828092F, 
+  0.0101655700F, 0.0105556258F, 0.0109529726F, 0.0113576065F, 
+  0.0117695237F, 0.0121887200F, 0.0126151913F, 0.0130489335F, 
+  0.0134899422F, 0.0139382130F, 0.0143937415F, 0.0148565233F, 
+  0.0153265536F, 0.0158038279F, 0.0162883413F, 0.0167800889F, 
+  0.0172790660F, 0.0177852675F, 0.0182986882F, 0.0188193231F, 
+  0.0193471668F, 0.0198822141F, 0.0204244594F, 0.0209738974F, 
+  0.0215305225F, 0.0220943289F, 0.0226653109F, 0.0232434627F, 
+  0.0238287784F, 0.0244212519F, 0.0250208772F, 0.0256276481F, 
+  0.0262415582F, 0.0268626014F, 0.0274907711F, 0.0281260608F, 
+  0.0287684638F, 0.0294179736F, 0.0300745833F, 0.0307382859F, 
+  0.0314090747F, 0.0320869424F, 0.0327718819F, 0.0334638860F, 
+  0.0341629474F, 0.0348690586F, 0.0355822122F, 0.0363024004F, 
+  0.0370296157F, 0.0377638502F, 0.0385050960F, 0.0392533451F, 
+  0.0400085896F, 0.0407708211F, 0.0415400315F, 0.0423162123F, 
+  0.0430993552F, 0.0438894515F, 0.0446864926F, 0.0454904698F, 
+  0.0463013742F, 0.0471191969F, 0.0479439288F, 0.0487755607F, 
+  0.0496140836F, 0.0504594879F, 0.0513117642F, 0.0521709031F, 
+  0.0530368949F, 0.0539097297F, 0.0547893979F, 0.0556758894F, 
+  0.0565691941F, 0.0574693019F, 0.0583762026F, 0.0592898858F, 
+  0.0602103410F, 0.0611375576F, 0.0620715250F, 0.0630122324F, 
+  0.0639596688F, 0.0649138234F, 0.0658746848F, 0.0668422421F, 
+  0.0678164838F, 0.0687973985F, 0.0697849746F, 0.0707792005F, 
+  0.0717800645F, 0.0727875547F, 0.0738016591F, 0.0748223656F, 
+  0.0758496620F, 0.0768835359F, 0.0779239751F, 0.0789709668F, 
+  0.0800244985F, 0.0810845574F, 0.0821511306F, 0.0832242052F, 
+  0.0843037679F, 0.0853898056F, 0.0864823050F, 0.0875812525F, 
+  0.0886866347F, 0.0897984378F, 0.0909166480F, 0.0920412513F, 
+  0.0931722338F, 0.0943095813F, 0.0954532795F, 0.0966033140F, 
+  0.0977596702F, 0.0989223336F, 0.1000912894F, 0.1012665227F, 
+  0.1024480185F, 0.1036357616F, 0.1048297369F, 0.1060299290F, 
+  0.1072363224F, 0.1084489014F, 0.1096676504F, 0.1108925534F, 
+  0.1121235946F, 0.1133607577F, 0.1146040267F, 0.1158533850F, 
+  0.1171088163F, 0.1183703040F, 0.1196378312F, 0.1209113812F, 
+  0.1221909370F, 0.1234764815F, 0.1247679974F, 0.1260654674F, 
+  0.1273688740F, 0.1286781995F, 0.1299934263F, 0.1313145365F, 
+  0.1326415121F, 0.1339743349F, 0.1353129866F, 0.1366574490F, 
+  0.1380077035F, 0.1393637315F, 0.1407255141F, 0.1420930325F, 
+  0.1434662677F, 0.1448452004F, 0.1462298115F, 0.1476200814F, 
+  0.1490159906F, 0.1504175195F, 0.1518246482F, 0.1532373569F, 
+  0.1546556253F, 0.1560794333F, 0.1575087606F, 0.1589435866F, 
+  0.1603838909F, 0.1618296526F, 0.1632808509F, 0.1647374648F, 
+  0.1661994731F, 0.1676668546F, 0.1691395880F, 0.1706176516F, 
+  0.1721010238F, 0.1735896829F, 0.1750836068F, 0.1765827736F, 
+  0.1780871610F, 0.1795967468F, 0.1811115084F, 0.1826314234F, 
+  0.1841564689F, 0.1856866221F, 0.1872218600F, 0.1887621595F, 
+  0.1903074974F, 0.1918578503F, 0.1934131947F, 0.1949735068F, 
+  0.1965387630F, 0.1981089393F, 0.1996840117F, 0.2012639560F, 
+  0.2028487479F, 0.2044383630F, 0.2060327766F, 0.2076319642F, 
+  0.2092359007F, 0.2108445614F, 0.2124579211F, 0.2140759545F, 
+  0.2156986364F, 0.2173259411F, 0.2189578432F, 0.2205943168F, 
+  0.2222353361F, 0.2238808751F, 0.2255309076F, 0.2271854073F, 
+  0.2288443480F, 0.2305077030F, 0.2321754457F, 0.2338475493F, 
+  0.2355239869F, 0.2372047315F, 0.2388897560F, 0.2405790329F, 
+  0.2422725350F, 0.2439702347F, 0.2456721043F, 0.2473781159F, 
+  0.2490882418F, 0.2508024539F, 0.2525207240F, 0.2542430237F, 
+  0.2559693248F, 0.2576995986F, 0.2594338166F, 0.2611719498F, 
+  0.2629139695F, 0.2646598466F, 0.2664095520F, 0.2681630564F, 
+  0.2699203304F, 0.2716813445F, 0.2734460691F, 0.2752144744F, 
+  0.2769865307F, 0.2787622079F, 0.2805414760F, 0.2823243047F, 
+  0.2841106637F, 0.2859005227F, 0.2876938509F, 0.2894906179F, 
+  0.2912907928F, 0.2930943447F, 0.2949012426F, 0.2967114554F, 
+  0.2985249520F, 0.3003417009F, 0.3021616708F, 0.3039848301F, 
+  0.3058111471F, 0.3076405901F, 0.3094731273F, 0.3113087266F, 
+  0.3131473560F, 0.3149889833F, 0.3168335762F, 0.3186811024F, 
+  0.3205315294F, 0.3223848245F, 0.3242409552F, 0.3260998886F, 
+  0.3279615918F, 0.3298260319F, 0.3316931758F, 0.3335629903F, 
+  0.3354354423F, 0.3373104982F, 0.3391881247F, 0.3410682882F, 
+  0.3429509551F, 0.3448360917F, 0.3467236642F, 0.3486136387F, 
+  0.3505059811F, 0.3524006575F, 0.3542976336F, 0.3561968753F, 
+  0.3580983482F, 0.3600020179F, 0.3619078499F, 0.3638158096F, 
+  0.3657258625F, 0.3676379737F, 0.3695521086F, 0.3714682321F, 
+  0.3733863094F, 0.3753063055F, 0.3772281852F, 0.3791519134F, 
+  0.3810774548F, 0.3830047742F, 0.3849338362F, 0.3868646053F, 
+  0.3887970459F, 0.3907311227F, 0.3926667998F, 0.3946040417F, 
+  0.3965428125F, 0.3984830765F, 0.4004247978F, 0.4023679403F, 
+  0.4043124683F, 0.4062583455F, 0.4082055359F, 0.4101540034F, 
+  0.4121037117F, 0.4140546246F, 0.4160067058F, 0.4179599190F, 
+  0.4199142277F, 0.4218695956F, 0.4238259861F, 0.4257833627F, 
+  0.4277416888F, 0.4297009279F, 0.4316610433F, 0.4336219983F, 
+  0.4355837562F, 0.4375462803F, 0.4395095337F, 0.4414734797F, 
+  0.4434380815F, 0.4454033021F, 0.4473691046F, 0.4493354521F, 
+  0.4513023078F, 0.4532696345F, 0.4552373954F, 0.4572055533F, 
+  0.4591740713F, 0.4611429123F, 0.4631120393F, 0.4650814151F, 
+  0.4670510028F, 0.4690207650F, 0.4709906649F, 0.4729606651F, 
+  0.4749307287F, 0.4769008185F, 0.4788708972F, 0.4808409279F, 
+  0.4828108732F, 0.4847806962F, 0.4867503597F, 0.4887198264F, 
+  0.4906890593F, 0.4926580213F, 0.4946266753F, 0.4965949840F, 
+  0.4985629105F, 0.5005304176F, 0.5024974683F, 0.5044640255F, 
+  0.5064300522F, 0.5083955114F, 0.5103603659F, 0.5123245790F, 
+  0.5142881136F, 0.5162509328F, 0.5182129997F, 0.5201742774F, 
+  0.5221347290F, 0.5240943178F, 0.5260530070F, 0.5280107598F, 
+  0.5299675395F, 0.5319233095F, 0.5338780330F, 0.5358316736F, 
+  0.5377841946F, 0.5397355596F, 0.5416857320F, 0.5436346755F, 
+  0.5455823538F, 0.5475287304F, 0.5494737691F, 0.5514174337F, 
+  0.5533596881F, 0.5553004962F, 0.5572398218F, 0.5591776291F, 
+  0.5611138821F, 0.5630485449F, 0.5649815818F, 0.5669129570F, 
+  0.5688426349F, 0.5707705799F, 0.5726967564F, 0.5746211290F, 
+  0.5765436624F, 0.5784643212F, 0.5803830702F, 0.5822998743F, 
+  0.5842146984F, 0.5861275076F, 0.5880382669F, 0.5899469416F, 
+  0.5918534968F, 0.5937578981F, 0.5956601107F, 0.5975601004F, 
+  0.5994578326F, 0.6013532732F, 0.6032463880F, 0.6051371429F, 
+  0.6070255039F, 0.6089114372F, 0.6107949090F, 0.6126758856F, 
+  0.6145543334F, 0.6164302191F, 0.6183035092F, 0.6201741706F, 
+  0.6220421700F, 0.6239074745F, 0.6257700513F, 0.6276298674F, 
+  0.6294868903F, 0.6313410873F, 0.6331924262F, 0.6350408745F, 
+  0.6368864001F, 0.6387289710F, 0.6405685552F, 0.6424051209F, 
+  0.6442386364F, 0.6460690702F, 0.6478963910F, 0.6497205673F, 
+  0.6515415682F, 0.6533593625F, 0.6551739194F, 0.6569852082F, 
+  0.6587931984F, 0.6605978593F, 0.6623991609F, 0.6641970728F, 
+  0.6659915652F, 0.6677826081F, 0.6695701718F, 0.6713542268F, 
+  0.6731347437F, 0.6749116932F, 0.6766850461F, 0.6784547736F, 
+  0.6802208469F, 0.6819832374F, 0.6837419164F, 0.6854968559F, 
+  0.6872480275F, 0.6889954034F, 0.6907389556F, 0.6924786566F, 
+  0.6942144788F, 0.6959463950F, 0.6976743780F, 0.6993984008F, 
+  0.7011184365F, 0.7028344587F, 0.7045464407F, 0.7062543564F, 
+  0.7079581796F, 0.7096578844F, 0.7113534450F, 0.7130448359F, 
+  0.7147320316F, 0.7164150070F, 0.7180937371F, 0.7197681970F, 
+  0.7214383620F, 0.7231042077F, 0.7247657098F, 0.7264228443F, 
+  0.7280755871F, 0.7297239147F, 0.7313678035F, 0.7330072301F, 
+  0.7346421715F, 0.7362726046F, 0.7378985069F, 0.7395198556F, 
+  0.7411366285F, 0.7427488034F, 0.7443563584F, 0.7459592717F, 
+  0.7475575218F, 0.7491510873F, 0.7507399471F, 0.7523240803F, 
+  0.7539034661F, 0.7554780839F, 0.7570479136F, 0.7586129349F, 
+  0.7601731279F, 0.7617284730F, 0.7632789506F, 0.7648245416F, 
+  0.7663652267F, 0.7679009872F, 0.7694318044F, 0.7709576599F, 
+  0.7724785354F, 0.7739944130F, 0.7755052749F, 0.7770111035F, 
+  0.7785118815F, 0.7800075916F, 0.7814982170F, 0.7829837410F, 
+  0.7844641472F, 0.7859394191F, 0.7874095408F, 0.7888744965F, 
+  0.7903342706F, 0.7917888476F, 0.7932382124F, 0.7946823501F, 
+  0.7961212460F, 0.7975548855F, 0.7989832544F, 0.8004063386F, 
+  0.8018241244F, 0.8032365981F, 0.8046437463F, 0.8060455560F, 
+  0.8074420141F, 0.8088331080F, 0.8102188253F, 0.8115991536F, 
+  0.8129740810F, 0.8143435957F, 0.8157076861F, 0.8170663409F, 
+  0.8184195489F, 0.8197672994F, 0.8211095817F, 0.8224463853F, 
+  0.8237777001F, 0.8251035161F, 0.8264238235F, 0.8277386129F, 
+  0.8290478750F, 0.8303516008F, 0.8316497814F, 0.8329424083F, 
+  0.8342294731F, 0.8355109677F, 0.8367868841F, 0.8380572148F, 
+  0.8393219523F, 0.8405810893F, 0.8418346190F, 0.8430825345F, 
+  0.8443248294F, 0.8455614974F, 0.8467925323F, 0.8480179285F, 
+  0.8492376802F, 0.8504517822F, 0.8516602292F, 0.8528630164F, 
+  0.8540601391F, 0.8552515928F, 0.8564373733F, 0.8576174766F, 
+  0.8587918990F, 0.8599606368F, 0.8611236868F, 0.8622810460F, 
+  0.8634327113F, 0.8645786802F, 0.8657189504F, 0.8668535195F, 
+  0.8679823857F, 0.8691055472F, 0.8702230025F, 0.8713347503F, 
+  0.8724407896F, 0.8735411194F, 0.8746357394F, 0.8757246489F, 
+  0.8768078479F, 0.8778853364F, 0.8789571146F, 0.8800231832F, 
+  0.8810835427F, 0.8821381942F, 0.8831871387F, 0.8842303777F, 
+  0.8852679127F, 0.8862997456F, 0.8873258784F, 0.8883463132F, 
+  0.8893610527F, 0.8903700994F, 0.8913734562F, 0.8923711263F, 
+  0.8933631129F, 0.8943494196F, 0.8953300500F, 0.8963050083F, 
+  0.8972742985F, 0.8982379249F, 0.8991958922F, 0.9001482052F, 
+  0.9010948688F, 0.9020358883F, 0.9029712690F, 0.9039010165F, 
+  0.9048251367F, 0.9057436357F, 0.9066565195F, 0.9075637946F, 
+  0.9084654678F, 0.9093615456F, 0.9102520353F, 0.9111369440F, 
+  0.9120162792F, 0.9128900484F, 0.9137582595F, 0.9146209204F, 
+  0.9154780394F, 0.9163296248F, 0.9171756853F, 0.9180162296F, 
+  0.9188512667F, 0.9196808057F, 0.9205048559F, 0.9213234270F, 
+  0.9221365285F, 0.9229441704F, 0.9237463629F, 0.9245431160F, 
+  0.9253344404F, 0.9261203465F, 0.9269008453F, 0.9276759477F, 
+  0.9284456648F, 0.9292100080F, 0.9299689889F, 0.9307226190F, 
+  0.9314709103F, 0.9322138747F, 0.9329515245F, 0.9336838721F, 
+  0.9344109300F, 0.9351327108F, 0.9358492275F, 0.9365604931F, 
+  0.9372665208F, 0.9379673239F, 0.9386629160F, 0.9393533107F, 
+  0.9400385220F, 0.9407185637F, 0.9413934501F, 0.9420631954F, 
+  0.9427278141F, 0.9433873208F, 0.9440417304F, 0.9446910576F, 
+  0.9453353176F, 0.9459745255F, 0.9466086968F, 0.9472378469F, 
+  0.9478619915F, 0.9484811463F, 0.9490953274F, 0.9497045506F, 
+  0.9503088323F, 0.9509081888F, 0.9515026365F, 0.9520921921F, 
+  0.9526768723F, 0.9532566940F, 0.9538316742F, 0.9544018300F, 
+  0.9549671786F, 0.9555277375F, 0.9560835241F, 0.9566345562F, 
+  0.9571808513F, 0.9577224275F, 0.9582593027F, 0.9587914949F, 
+  0.9593190225F, 0.9598419038F, 0.9603601571F, 0.9608738012F, 
+  0.9613828546F, 0.9618873361F, 0.9623872646F, 0.9628826591F, 
+  0.9633735388F, 0.9638599227F, 0.9643418303F, 0.9648192808F, 
+  0.9652922939F, 0.9657608890F, 0.9662250860F, 0.9666849046F, 
+  0.9671403646F, 0.9675914861F, 0.9680382891F, 0.9684807937F, 
+  0.9689190202F, 0.9693529890F, 0.9697827203F, 0.9702082347F, 
+  0.9706295529F, 0.9710466953F, 0.9714596828F, 0.9718685362F, 
+  0.9722732762F, 0.9726739240F, 0.9730705005F, 0.9734630267F, 
+  0.9738515239F, 0.9742360134F, 0.9746165163F, 0.9749930540F, 
+  0.9753656481F, 0.9757343198F, 0.9760990909F, 0.9764599829F, 
+  0.9768170175F, 0.9771702164F, 0.9775196013F, 0.9778651941F, 
+  0.9782070167F, 0.9785450909F, 0.9788794388F, 0.9792100824F, 
+  0.9795370437F, 0.9798603449F, 0.9801800080F, 0.9804960554F, 
+  0.9808085092F, 0.9811173916F, 0.9814227251F, 0.9817245318F, 
+  0.9820228343F, 0.9823176549F, 0.9826090160F, 0.9828969402F, 
+  0.9831814498F, 0.9834625674F, 0.9837403156F, 0.9840147169F, 
+  0.9842857939F, 0.9845535692F, 0.9848180654F, 0.9850793052F, 
+  0.9853373113F, 0.9855921062F, 0.9858437127F, 0.9860921535F, 
+  0.9863374512F, 0.9865796287F, 0.9868187085F, 0.9870547136F, 
+  0.9872876664F, 0.9875175899F, 0.9877445067F, 0.9879684396F, 
+  0.9881894112F, 0.9884074444F, 0.9886225619F, 0.9888347863F, 
+  0.9890441404F, 0.9892506468F, 0.9894543284F, 0.9896552077F, 
+  0.9898533074F, 0.9900486502F, 0.9902412587F, 0.9904311555F, 
+  0.9906183633F, 0.9908029045F, 0.9909848019F, 0.9911640779F, 
+  0.9913407550F, 0.9915148557F, 0.9916864025F, 0.9918554179F, 
+  0.9920219241F, 0.9921859437F, 0.9923474989F, 0.9925066120F, 
+  0.9926633054F, 0.9928176012F, 0.9929695218F, 0.9931190891F, 
+  0.9932663254F, 0.9934112527F, 0.9935538932F, 0.9936942686F, 
+  0.9938324012F, 0.9939683126F, 0.9941020248F, 0.9942335597F, 
+  0.9943629388F, 0.9944901841F, 0.9946153170F, 0.9947383593F, 
+  0.9948593325F, 0.9949782579F, 0.9950951572F, 0.9952100516F, 
+  0.9953229625F, 0.9954339111F, 0.9955429186F, 0.9956500062F, 
+  0.9957551948F, 0.9958585056F, 0.9959599593F, 0.9960595769F, 
+  0.9961573792F, 0.9962533869F, 0.9963476206F, 0.9964401009F, 
+  0.9965308483F, 0.9966198833F, 0.9967072261F, 0.9967928971F, 
+  0.9968769164F, 0.9969593041F, 0.9970400804F, 0.9971192651F, 
+  0.9971968781F, 0.9972729391F, 0.9973474680F, 0.9974204842F, 
+  0.9974920074F, 0.9975620569F, 0.9976306521F, 0.9976978122F, 
+  0.9977635565F, 0.9978279039F, 0.9978908736F, 0.9979524842F, 
+  0.9980127547F, 0.9980717037F, 0.9981293499F, 0.9981857116F, 
+  0.9982408073F, 0.9982946554F, 0.9983472739F, 0.9983986810F, 
+  0.9984488947F, 0.9984979328F, 0.9985458132F, 0.9985925534F, 
+  0.9986381711F, 0.9986826838F, 0.9987261086F, 0.9987684630F, 
+  0.9988097640F, 0.9988500286F, 0.9988892738F, 0.9989275163F, 
+  0.9989647727F, 0.9990010597F, 0.9990363938F, 0.9990707911F, 
+  0.9991042679F, 0.9991368404F, 0.9991685244F, 0.9991993358F, 
+  0.9992292905F, 0.9992584038F, 0.9992866914F, 0.9993141686F, 
+  0.9993408506F, 0.9993667526F, 0.9993918895F, 0.9994162761F, 
+  0.9994399273F, 0.9994628576F, 0.9994850815F, 0.9995066133F, 
+  0.9995274672F, 0.9995476574F, 0.9995671978F, 0.9995861021F, 
+  0.9996043841F, 0.9996220573F, 0.9996391352F, 0.9996556310F, 
+  0.9996715579F, 0.9996869288F, 0.9997017568F, 0.9997160543F, 
+  0.9997298342F, 0.9997431088F, 0.9997558905F, 0.9997681914F, 
+  0.9997800236F, 0.9997913990F, 0.9998023292F, 0.9998128261F, 
+  0.9998229009F, 0.9998325650F, 0.9998418296F, 0.9998507058F, 
+  0.9998592044F, 0.9998673362F, 0.9998751117F, 0.9998825415F, 
+  0.9998896358F, 0.9998964047F, 0.9999028584F, 0.9999090066F, 
+  0.9999148590F, 0.9999204253F, 0.9999257148F, 0.9999307368F, 
+  0.9999355003F, 0.9999400144F, 0.9999442878F, 0.9999483293F, 
+  0.9999521472F, 0.9999557499F, 0.9999591457F, 0.9999623426F, 
+  0.9999653483F, 0.9999681708F, 0.9999708175F, 0.9999732959F, 
+  0.9999756132F, 0.9999777765F, 0.9999797928F, 0.9999816688F, 
+  0.9999834113F, 0.9999850266F, 0.9999865211F, 0.9999879009F, 
+  0.9999891721F, 0.9999903405F, 0.9999914118F, 0.9999923914F, 
+  0.9999932849F, 0.9999940972F, 0.9999948336F, 0.9999954989F, 
+  0.9999960978F, 0.9999966349F, 0.9999971146F, 0.9999975411F, 
+  0.9999979185F, 0.9999982507F, 0.9999985414F, 0.9999987944F, 
+  0.9999990129F, 0.9999992003F, 0.9999993596F, 0.9999994939F, 
+  0.9999996059F, 0.9999996981F, 0.9999997732F, 0.9999998333F, 
+  0.9999998805F, 0.9999999170F, 0.9999999444F, 0.9999999643F, 
+  0.9999999784F, 0.9999999878F, 0.9999999937F, 0.9999999972F, 
+  0.9999999990F, 0.9999999997F, 1.0000000000F, 1.0000000000F, 
+};
+
+static float vwin4096[2048] = {
+  0.0000002310F, 0.0000020791F, 0.0000057754F, 0.0000113197F, 
+  0.0000187121F, 0.0000279526F, 0.0000390412F, 0.0000519777F, 
+  0.0000667623F, 0.0000833949F, 0.0001018753F, 0.0001222036F, 
+  0.0001443798F, 0.0001684037F, 0.0001942754F, 0.0002219947F, 
+  0.0002515616F, 0.0002829761F, 0.0003162380F, 0.0003513472F, 
+  0.0003883038F, 0.0004271076F, 0.0004677584F, 0.0005102563F, 
+  0.0005546011F, 0.0006007928F, 0.0006488311F, 0.0006987160F, 
+  0.0007504474F, 0.0008040251F, 0.0008594490F, 0.0009167191F, 
+  0.0009758351F, 0.0010367969F, 0.0010996044F, 0.0011642574F, 
+  0.0012307558F, 0.0012990994F, 0.0013692880F, 0.0014413216F, 
+  0.0015151998F, 0.0015909226F, 0.0016684898F, 0.0017479011F, 
+  0.0018291565F, 0.0019122556F, 0.0019971983F, 0.0020839845F, 
+  0.0021726138F, 0.0022630861F, 0.0023554012F, 0.0024495588F, 
+  0.0025455588F, 0.0026434008F, 0.0027430847F, 0.0028446103F, 
+  0.0029479772F, 0.0030531853F, 0.0031602342F, 0.0032691238F, 
+  0.0033798538F, 0.0034924239F, 0.0036068338F, 0.0037230833F, 
+  0.0038411721F, 0.0039610999F, 0.0040828664F, 0.0042064714F, 
+  0.0043319145F, 0.0044591954F, 0.0045883139F, 0.0047192696F, 
+  0.0048520622F, 0.0049866914F, 0.0051231569F, 0.0052614583F, 
+  0.0054015953F, 0.0055435676F, 0.0056873748F, 0.0058330166F, 
+  0.0059804926F, 0.0061298026F, 0.0062809460F, 0.0064339226F, 
+  0.0065887320F, 0.0067453738F, 0.0069038476F, 0.0070641531F, 
+  0.0072262899F, 0.0073902575F, 0.0075560556F, 0.0077236838F, 
+  0.0078931417F, 0.0080644288F, 0.0082375447F, 0.0084124891F, 
+  0.0085892615F, 0.0087678614F, 0.0089482885F, 0.0091305422F, 
+  0.0093146223F, 0.0095005281F, 0.0096882592F, 0.0098778153F, 
+  0.0100691958F, 0.0102624002F, 0.0104574281F, 0.0106542791F, 
+  0.0108529525F, 0.0110534480F, 0.0112557651F, 0.0114599032F, 
+  0.0116658618F, 0.0118736405F, 0.0120832387F, 0.0122946560F, 
+  0.0125078917F, 0.0127229454F, 0.0129398166F, 0.0131585046F, 
+  0.0133790090F, 0.0136013292F, 0.0138254647F, 0.0140514149F, 
+  0.0142791792F, 0.0145087572F, 0.0147401481F, 0.0149733515F, 
+  0.0152083667F, 0.0154451932F, 0.0156838304F, 0.0159242777F, 
+  0.0161665345F, 0.0164106001F, 0.0166564741F, 0.0169041557F, 
+  0.0171536443F, 0.0174049393F, 0.0176580401F, 0.0179129461F, 
+  0.0181696565F, 0.0184281708F, 0.0186884883F, 0.0189506084F, 
+  0.0192145303F, 0.0194802535F, 0.0197477772F, 0.0200171008F, 
+  0.0202882236F, 0.0205611449F, 0.0208358639F, 0.0211123801F, 
+  0.0213906927F, 0.0216708011F, 0.0219527043F, 0.0222364019F, 
+  0.0225218930F, 0.0228091769F, 0.0230982529F, 0.0233891203F, 
+  0.0236817782F, 0.0239762259F, 0.0242724628F, 0.0245704880F, 
+  0.0248703007F, 0.0251719002F, 0.0254752858F, 0.0257804565F, 
+  0.0260874117F, 0.0263961506F, 0.0267066722F, 0.0270189760F, 
+  0.0273330609F, 0.0276489263F, 0.0279665712F, 0.0282859949F, 
+  0.0286071966F, 0.0289301753F, 0.0292549303F, 0.0295814607F, 
+  0.0299097656F, 0.0302398442F, 0.0305716957F, 0.0309053191F, 
+  0.0312407135F, 0.0315778782F, 0.0319168122F, 0.0322575145F, 
+  0.0325999844F, 0.0329442209F, 0.0332902231F, 0.0336379900F, 
+  0.0339875208F, 0.0343388146F, 0.0346918703F, 0.0350466871F, 
+  0.0354032640F, 0.0357616000F, 0.0361216943F, 0.0364835458F, 
+  0.0368471535F, 0.0372125166F, 0.0375796339F, 0.0379485046F, 
+  0.0383191276F, 0.0386915020F, 0.0390656267F, 0.0394415008F, 
+  0.0398191231F, 0.0401984927F, 0.0405796086F, 0.0409624698F, 
+  0.0413470751F, 0.0417334235F, 0.0421215141F, 0.0425113457F, 
+  0.0429029172F, 0.0432962277F, 0.0436912760F, 0.0440880610F, 
+  0.0444865817F, 0.0448868370F, 0.0452888257F, 0.0456925468F, 
+  0.0460979992F, 0.0465051816F, 0.0469140931F, 0.0473247325F, 
+  0.0477370986F, 0.0481511902F, 0.0485670064F, 0.0489845458F, 
+  0.0494038074F, 0.0498247899F, 0.0502474922F, 0.0506719131F, 
+  0.0510980514F, 0.0515259060F, 0.0519554756F, 0.0523867590F, 
+  0.0528197550F, 0.0532544624F, 0.0536908800F, 0.0541290066F, 
+  0.0545688408F, 0.0550103815F, 0.0554536274F, 0.0558985772F, 
+  0.0563452297F, 0.0567935837F, 0.0572436377F, 0.0576953907F, 
+  0.0581488412F, 0.0586039880F, 0.0590608297F, 0.0595193651F, 
+  0.0599795929F, 0.0604415117F, 0.0609051202F, 0.0613704170F, 
+  0.0618374009F, 0.0623060704F, 0.0627764243F, 0.0632484611F, 
+  0.0637221795F, 0.0641975781F, 0.0646746555F, 0.0651534104F, 
+  0.0656338413F, 0.0661159469F, 0.0665997257F, 0.0670851763F, 
+  0.0675722973F, 0.0680610873F, 0.0685515448F, 0.0690436684F, 
+  0.0695374567F, 0.0700329081F, 0.0705300213F, 0.0710287947F, 
+  0.0715292269F, 0.0720313163F, 0.0725350616F, 0.0730404612F, 
+  0.0735475136F, 0.0740562172F, 0.0745665707F, 0.0750785723F, 
+  0.0755922207F, 0.0761075143F, 0.0766244515F, 0.0771430307F, 
+  0.0776632505F, 0.0781851092F, 0.0787086052F, 0.0792337371F, 
+  0.0797605032F, 0.0802889018F, 0.0808189315F, 0.0813505905F, 
+  0.0818838773F, 0.0824187903F, 0.0829553277F, 0.0834934881F, 
+  0.0840332697F, 0.0845746708F, 0.0851176899F, 0.0856623252F, 
+  0.0862085751F, 0.0867564379F, 0.0873059119F, 0.0878569954F, 
+  0.0884096867F, 0.0889639840F, 0.0895198858F, 0.0900773902F, 
+  0.0906364955F, 0.0911972000F, 0.0917595019F, 0.0923233995F, 
+  0.0928888909F, 0.0934559745F, 0.0940246485F, 0.0945949110F, 
+  0.0951667604F, 0.0957401946F, 0.0963152121F, 0.0968918109F, 
+  0.0974699893F, 0.0980497454F, 0.0986310773F, 0.0992139832F, 
+  0.0997984614F, 0.1003845098F, 0.1009721267F, 0.1015613101F, 
+  0.1021520582F, 0.1027443692F, 0.1033382410F, 0.1039336718F, 
+  0.1045306597F, 0.1051292027F, 0.1057292990F, 0.1063309466F, 
+  0.1069341435F, 0.1075388878F, 0.1081451776F, 0.1087530108F, 
+  0.1093623856F, 0.1099732998F, 0.1105857516F, 0.1111997389F, 
+  0.1118152597F, 0.1124323121F, 0.1130508939F, 0.1136710032F, 
+  0.1142926379F, 0.1149157960F, 0.1155404755F, 0.1161666742F, 
+  0.1167943901F, 0.1174236211F, 0.1180543652F, 0.1186866202F, 
+  0.1193203841F, 0.1199556548F, 0.1205924300F, 0.1212307078F, 
+  0.1218704860F, 0.1225117624F, 0.1231545349F, 0.1237988013F, 
+  0.1244445596F, 0.1250918074F, 0.1257405427F, 0.1263907632F, 
+  0.1270424667F, 0.1276956512F, 0.1283503142F, 0.1290064537F, 
+  0.1296640674F, 0.1303231530F, 0.1309837084F, 0.1316457312F, 
+  0.1323092193F, 0.1329741703F, 0.1336405820F, 0.1343084520F, 
+  0.1349777782F, 0.1356485582F, 0.1363207897F, 0.1369944704F, 
+  0.1376695979F, 0.1383461700F, 0.1390241842F, 0.1397036384F, 
+  0.1403845300F, 0.1410668567F, 0.1417506162F, 0.1424358061F, 
+  0.1431224240F, 0.1438104674F, 0.1444999341F, 0.1451908216F, 
+  0.1458831274F, 0.1465768492F, 0.1472719844F, 0.1479685308F, 
+  0.1486664857F, 0.1493658468F, 0.1500666115F, 0.1507687775F, 
+  0.1514723422F, 0.1521773031F, 0.1528836577F, 0.1535914035F, 
+  0.1543005380F, 0.1550110587F, 0.1557229631F, 0.1564362485F, 
+  0.1571509124F, 0.1578669524F, 0.1585843657F, 0.1593031499F, 
+  0.1600233024F, 0.1607448205F, 0.1614677017F, 0.1621919433F, 
+  0.1629175428F, 0.1636444975F, 0.1643728047F, 0.1651024619F, 
+  0.1658334665F, 0.1665658156F, 0.1672995067F, 0.1680345371F, 
+  0.1687709041F, 0.1695086050F, 0.1702476372F, 0.1709879978F, 
+  0.1717296843F, 0.1724726938F, 0.1732170237F, 0.1739626711F, 
+  0.1747096335F, 0.1754579079F, 0.1762074916F, 0.1769583819F, 
+  0.1777105760F, 0.1784640710F, 0.1792188642F, 0.1799749529F, 
+  0.1807323340F, 0.1814910049F, 0.1822509628F, 0.1830122046F, 
+  0.1837747277F, 0.1845385292F, 0.1853036062F, 0.1860699558F, 
+  0.1868375751F, 0.1876064613F, 0.1883766114F, 0.1891480226F, 
+  0.1899206919F, 0.1906946164F, 0.1914697932F, 0.1922462194F, 
+  0.1930238919F, 0.1938028079F, 0.1945829643F, 0.1953643583F, 
+  0.1961469868F, 0.1969308468F, 0.1977159353F, 0.1985022494F, 
+  0.1992897859F, 0.2000785420F, 0.2008685145F, 0.2016597005F, 
+  0.2024520968F, 0.2032457005F, 0.2040405084F, 0.2048365175F, 
+  0.2056337247F, 0.2064321269F, 0.2072317211F, 0.2080325041F, 
+  0.2088344727F, 0.2096376240F, 0.2104419547F, 0.2112474618F, 
+  0.2120541420F, 0.2128619923F, 0.2136710094F, 0.2144811902F, 
+  0.2152925315F, 0.2161050301F, 0.2169186829F, 0.2177334866F, 
+  0.2185494381F, 0.2193665340F, 0.2201847712F, 0.2210041465F, 
+  0.2218246565F, 0.2226462981F, 0.2234690680F, 0.2242929629F, 
+  0.2251179796F, 0.2259441147F, 0.2267713650F, 0.2275997272F, 
+  0.2284291979F, 0.2292597739F, 0.2300914518F, 0.2309242283F, 
+  0.2317581001F, 0.2325930638F, 0.2334291160F, 0.2342662534F, 
+  0.2351044727F, 0.2359437703F, 0.2367841431F, 0.2376255875F, 
+  0.2384681001F, 0.2393116776F, 0.2401563165F, 0.2410020134F, 
+  0.2418487649F, 0.2426965675F, 0.2435454178F, 0.2443953122F, 
+  0.2452462474F, 0.2460982199F, 0.2469512262F, 0.2478052628F, 
+  0.2486603262F, 0.2495164129F, 0.2503735194F, 0.2512316421F, 
+  0.2520907776F, 0.2529509222F, 0.2538120726F, 0.2546742250F, 
+  0.2555373760F, 0.2564015219F, 0.2572666593F, 0.2581327845F, 
+  0.2589998939F, 0.2598679840F, 0.2607370510F, 0.2616070916F, 
+  0.2624781019F, 0.2633500783F, 0.2642230173F, 0.2650969152F, 
+  0.2659717684F, 0.2668475731F, 0.2677243257F, 0.2686020226F, 
+  0.2694806601F, 0.2703602344F, 0.2712407419F, 0.2721221789F, 
+  0.2730045417F, 0.2738878265F, 0.2747720297F, 0.2756571474F, 
+  0.2765431760F, 0.2774301117F, 0.2783179508F, 0.2792066895F, 
+  0.2800963240F, 0.2809868505F, 0.2818782654F, 0.2827705647F, 
+  0.2836637447F, 0.2845578016F, 0.2854527315F, 0.2863485307F, 
+  0.2872451953F, 0.2881427215F, 0.2890411055F, 0.2899403433F, 
+  0.2908404312F, 0.2917413654F, 0.2926431418F, 0.2935457567F, 
+  0.2944492061F, 0.2953534863F, 0.2962585932F, 0.2971645230F, 
+  0.2980712717F, 0.2989788356F, 0.2998872105F, 0.3007963927F, 
+  0.3017063781F, 0.3026171629F, 0.3035287430F, 0.3044411145F, 
+  0.3053542736F, 0.3062682161F, 0.3071829381F, 0.3080984356F, 
+  0.3090147047F, 0.3099317413F, 0.3108495414F, 0.3117681011F, 
+  0.3126874163F, 0.3136074830F, 0.3145282972F, 0.3154498548F, 
+  0.3163721517F, 0.3172951841F, 0.3182189477F, 0.3191434385F, 
+  0.3200686525F, 0.3209945856F, 0.3219212336F, 0.3228485927F, 
+  0.3237766585F, 0.3247054271F, 0.3256348943F, 0.3265650560F, 
+  0.3274959081F, 0.3284274465F, 0.3293596671F, 0.3302925657F, 
+  0.3312261382F, 0.3321603804F, 0.3330952882F, 0.3340308574F, 
+  0.3349670838F, 0.3359039634F, 0.3368414919F, 0.3377796651F, 
+  0.3387184789F, 0.3396579290F, 0.3405980113F, 0.3415387216F, 
+  0.3424800556F, 0.3434220091F, 0.3443645779F, 0.3453077578F, 
+  0.3462515446F, 0.3471959340F, 0.3481409217F, 0.3490865036F, 
+  0.3500326754F, 0.3509794328F, 0.3519267715F, 0.3528746873F, 
+  0.3538231759F, 0.3547722330F, 0.3557218544F, 0.3566720357F, 
+  0.3576227727F, 0.3585740610F, 0.3595258964F, 0.3604782745F, 
+  0.3614311910F, 0.3623846417F, 0.3633386221F, 0.3642931280F, 
+  0.3652481549F, 0.3662036987F, 0.3671597548F, 0.3681163191F, 
+  0.3690733870F, 0.3700309544F, 0.3709890167F, 0.3719475696F, 
+  0.3729066089F, 0.3738661299F, 0.3748261285F, 0.3757866002F, 
+  0.3767475406F, 0.3777089453F, 0.3786708100F, 0.3796331302F, 
+  0.3805959014F, 0.3815591194F, 0.3825227796F, 0.3834868777F, 
+  0.3844514093F, 0.3854163698F, 0.3863817549F, 0.3873475601F, 
+  0.3883137810F, 0.3892804131F, 0.3902474521F, 0.3912148933F, 
+  0.3921827325F, 0.3931509650F, 0.3941195865F, 0.3950885925F, 
+  0.3960579785F, 0.3970277400F, 0.3979978725F, 0.3989683716F, 
+  0.3999392328F, 0.4009104516F, 0.4018820234F, 0.4028539438F, 
+  0.4038262084F, 0.4047988125F, 0.4057717516F, 0.4067450214F, 
+  0.4077186172F, 0.4086925345F, 0.4096667688F, 0.4106413155F, 
+  0.4116161703F, 0.4125913284F, 0.4135667854F, 0.4145425368F, 
+  0.4155185780F, 0.4164949044F, 0.4174715116F, 0.4184483949F, 
+  0.4194255498F, 0.4204029718F, 0.4213806563F, 0.4223585987F, 
+  0.4233367946F, 0.4243152392F, 0.4252939281F, 0.4262728566F, 
+  0.4272520202F, 0.4282314144F, 0.4292110345F, 0.4301908760F, 
+  0.4311709343F, 0.4321512047F, 0.4331316828F, 0.4341123639F, 
+  0.4350932435F, 0.4360743168F, 0.4370555794F, 0.4380370267F, 
+  0.4390186540F, 0.4400004567F, 0.4409824303F, 0.4419645701F, 
+  0.4429468716F, 0.4439293300F, 0.4449119409F, 0.4458946996F, 
+  0.4468776014F, 0.4478606418F, 0.4488438162F, 0.4498271199F, 
+  0.4508105483F, 0.4517940967F, 0.4527777607F, 0.4537615355F, 
+  0.4547454165F, 0.4557293991F, 0.4567134786F, 0.4576976505F, 
+  0.4586819101F, 0.4596662527F, 0.4606506738F, 0.4616351687F, 
+  0.4626197328F, 0.4636043614F, 0.4645890499F, 0.4655737936F, 
+  0.4665585880F, 0.4675434284F, 0.4685283101F, 0.4695132286F, 
+  0.4704981791F, 0.4714831570F, 0.4724681577F, 0.4734531766F, 
+  0.4744382089F, 0.4754232501F, 0.4764082956F, 0.4773933406F, 
+  0.4783783806F, 0.4793634108F, 0.4803484267F, 0.4813334237F, 
+  0.4823183969F, 0.4833033419F, 0.4842882540F, 0.4852731285F, 
+  0.4862579608F, 0.4872427462F, 0.4882274802F, 0.4892121580F, 
+  0.4901967751F, 0.4911813267F, 0.4921658083F, 0.4931502151F, 
+  0.4941345427F, 0.4951187863F, 0.4961029412F, 0.4970870029F, 
+  0.4980709667F, 0.4990548280F, 0.5000385822F, 0.5010222245F, 
+  0.5020057505F, 0.5029891553F, 0.5039724345F, 0.5049555834F, 
+  0.5059385973F, 0.5069214716F, 0.5079042018F, 0.5088867831F, 
+  0.5098692110F, 0.5108514808F, 0.5118335879F, 0.5128155277F, 
+  0.5137972956F, 0.5147788869F, 0.5157602971F, 0.5167415215F, 
+  0.5177225555F, 0.5187033945F, 0.5196840339F, 0.5206644692F, 
+  0.5216446956F, 0.5226247086F, 0.5236045035F, 0.5245840759F, 
+  0.5255634211F, 0.5265425344F, 0.5275214114F, 0.5285000474F, 
+  0.5294784378F, 0.5304565781F, 0.5314344637F, 0.5324120899F, 
+  0.5333894522F, 0.5343665461F, 0.5353433670F, 0.5363199102F, 
+  0.5372961713F, 0.5382721457F, 0.5392478287F, 0.5402232159F, 
+  0.5411983027F, 0.5421730845F, 0.5431475569F, 0.5441217151F, 
+  0.5450955548F, 0.5460690714F, 0.5470422602F, 0.5480151169F, 
+  0.5489876368F, 0.5499598155F, 0.5509316484F, 0.5519031310F, 
+  0.5528742587F, 0.5538450271F, 0.5548154317F, 0.5557854680F, 
+  0.5567551314F, 0.5577244174F, 0.5586933216F, 0.5596618395F, 
+  0.5606299665F, 0.5615976983F, 0.5625650302F, 0.5635319580F, 
+  0.5644984770F, 0.5654645828F, 0.5664302709F, 0.5673955370F, 
+  0.5683603765F, 0.5693247850F, 0.5702887580F, 0.5712522912F, 
+  0.5722153800F, 0.5731780200F, 0.5741402069F, 0.5751019362F, 
+  0.5760632034F, 0.5770240042F, 0.5779843341F, 0.5789441889F, 
+  0.5799035639F, 0.5808624549F, 0.5818208575F, 0.5827787673F, 
+  0.5837361800F, 0.5846930910F, 0.5856494961F, 0.5866053910F, 
+  0.5875607712F, 0.5885156324F, 0.5894699703F, 0.5904237804F, 
+  0.5913770586F, 0.5923298004F, 0.5932820016F, 0.5942336578F, 
+  0.5951847646F, 0.5961353179F, 0.5970853132F, 0.5980347464F, 
+  0.5989836131F, 0.5999319090F, 0.6008796298F, 0.6018267713F, 
+  0.6027733292F, 0.6037192993F, 0.6046646773F, 0.6056094589F, 
+  0.6065536400F, 0.6074972162F, 0.6084401833F, 0.6093825372F, 
+  0.6103242736F, 0.6112653884F, 0.6122058772F, 0.6131457359F, 
+  0.6140849604F, 0.6150235464F, 0.6159614897F, 0.6168987862F, 
+  0.6178354318F, 0.6187714223F, 0.6197067535F, 0.6206414213F, 
+  0.6215754215F, 0.6225087501F, 0.6234414028F, 0.6243733757F, 
+  0.6253046646F, 0.6262352654F, 0.6271651739F, 0.6280943862F, 
+  0.6290228982F, 0.6299507057F, 0.6308778048F, 0.6318041913F, 
+  0.6327298612F, 0.6336548105F, 0.6345790352F, 0.6355025312F, 
+  0.6364252945F, 0.6373473211F, 0.6382686070F, 0.6391891483F, 
+  0.6401089409F, 0.6410279808F, 0.6419462642F, 0.6428637869F, 
+  0.6437805452F, 0.6446965350F, 0.6456117524F, 0.6465261935F, 
+  0.6474398544F, 0.6483527311F, 0.6492648197F, 0.6501761165F, 
+  0.6510866174F, 0.6519963186F, 0.6529052162F, 0.6538133064F, 
+  0.6547205854F, 0.6556270492F, 0.6565326941F, 0.6574375162F, 
+  0.6583415117F, 0.6592446769F, 0.6601470079F, 0.6610485009F, 
+  0.6619491521F, 0.6628489578F, 0.6637479143F, 0.6646460177F, 
+  0.6655432643F, 0.6664396505F, 0.6673351724F, 0.6682298264F, 
+  0.6691236087F, 0.6700165157F, 0.6709085436F, 0.6717996889F, 
+  0.6726899478F, 0.6735793167F, 0.6744677918F, 0.6753553697F, 
+  0.6762420466F, 0.6771278190F, 0.6780126832F, 0.6788966357F, 
+  0.6797796728F, 0.6806617909F, 0.6815429866F, 0.6824232562F, 
+  0.6833025961F, 0.6841810030F, 0.6850584731F, 0.6859350031F, 
+  0.6868105894F, 0.6876852284F, 0.6885589168F, 0.6894316510F, 
+  0.6903034275F, 0.6911742430F, 0.6920440939F, 0.6929129769F, 
+  0.6937808884F, 0.6946478251F, 0.6955137837F, 0.6963787606F, 
+  0.6972427525F, 0.6981057560F, 0.6989677678F, 0.6998287845F, 
+  0.7006888028F, 0.7015478194F, 0.7024058309F, 0.7032628340F, 
+  0.7041188254F, 0.7049738019F, 0.7058277601F, 0.7066806969F, 
+  0.7075326089F, 0.7083834929F, 0.7092333457F, 0.7100821640F, 
+  0.7109299447F, 0.7117766846F, 0.7126223804F, 0.7134670291F, 
+  0.7143106273F, 0.7151531721F, 0.7159946602F, 0.7168350885F, 
+  0.7176744539F, 0.7185127534F, 0.7193499837F, 0.7201861418F, 
+  0.7210212247F, 0.7218552293F, 0.7226881526F, 0.7235199914F, 
+  0.7243507428F, 0.7251804039F, 0.7260089715F, 0.7268364426F, 
+  0.7276628144F, 0.7284880839F, 0.7293122481F, 0.7301353040F, 
+  0.7309572487F, 0.7317780794F, 0.7325977930F, 0.7334163868F, 
+  0.7342338579F, 0.7350502033F, 0.7358654202F, 0.7366795059F, 
+  0.7374924573F, 0.7383042718F, 0.7391149465F, 0.7399244787F, 
+  0.7407328655F, 0.7415401041F, 0.7423461920F, 0.7431511261F, 
+  0.7439549040F, 0.7447575227F, 0.7455589797F, 0.7463592723F, 
+  0.7471583976F, 0.7479563532F, 0.7487531363F, 0.7495487443F, 
+  0.7503431745F, 0.7511364244F, 0.7519284913F, 0.7527193726F, 
+  0.7535090658F, 0.7542975683F, 0.7550848776F, 0.7558709910F, 
+  0.7566559062F, 0.7574396205F, 0.7582221314F, 0.7590034366F, 
+  0.7597835334F, 0.7605624194F, 0.7613400923F, 0.7621165495F, 
+  0.7628917886F, 0.7636658072F, 0.7644386030F, 0.7652101735F, 
+  0.7659805164F, 0.7667496292F, 0.7675175098F, 0.7682841556F, 
+  0.7690495645F, 0.7698137341F, 0.7705766622F, 0.7713383463F, 
+  0.7720987844F, 0.7728579741F, 0.7736159132F, 0.7743725994F, 
+  0.7751280306F, 0.7758822046F, 0.7766351192F, 0.7773867722F, 
+  0.7781371614F, 0.7788862848F, 0.7796341401F, 0.7803807253F, 
+  0.7811260383F, 0.7818700769F, 0.7826128392F, 0.7833543230F, 
+  0.7840945263F, 0.7848334471F, 0.7855710833F, 0.7863074330F, 
+  0.7870424941F, 0.7877762647F, 0.7885087428F, 0.7892399264F, 
+  0.7899698137F, 0.7906984026F, 0.7914256914F, 0.7921516780F, 
+  0.7928763607F, 0.7935997375F, 0.7943218065F, 0.7950425661F, 
+  0.7957620142F, 0.7964801492F, 0.7971969692F, 0.7979124724F, 
+  0.7986266570F, 0.7993395214F, 0.8000510638F, 0.8007612823F, 
+  0.8014701754F, 0.8021777413F, 0.8028839784F, 0.8035888849F, 
+  0.8042924592F, 0.8049946997F, 0.8056956048F, 0.8063951727F, 
+  0.8070934020F, 0.8077902910F, 0.8084858381F, 0.8091800419F, 
+  0.8098729007F, 0.8105644130F, 0.8112545774F, 0.8119433922F, 
+  0.8126308561F, 0.8133169676F, 0.8140017251F, 0.8146851272F, 
+  0.8153671726F, 0.8160478598F, 0.8167271874F, 0.8174051539F, 
+  0.8180817582F, 0.8187569986F, 0.8194308741F, 0.8201033831F, 
+  0.8207745244F, 0.8214442966F, 0.8221126986F, 0.8227797290F, 
+  0.8234453865F, 0.8241096700F, 0.8247725781F, 0.8254341097F, 
+  0.8260942636F, 0.8267530385F, 0.8274104334F, 0.8280664470F, 
+  0.8287210782F, 0.8293743259F, 0.8300261889F, 0.8306766662F, 
+  0.8313257566F, 0.8319734591F, 0.8326197727F, 0.8332646963F, 
+  0.8339082288F, 0.8345503692F, 0.8351911167F, 0.8358304700F, 
+  0.8364684284F, 0.8371049907F, 0.8377401562F, 0.8383739238F, 
+  0.8390062927F, 0.8396372618F, 0.8402668305F, 0.8408949977F, 
+  0.8415217626F, 0.8421471245F, 0.8427710823F, 0.8433936354F, 
+  0.8440147830F, 0.8446345242F, 0.8452528582F, 0.8458697844F, 
+  0.8464853020F, 0.8470994102F, 0.8477121084F, 0.8483233958F, 
+  0.8489332718F, 0.8495417356F, 0.8501487866F, 0.8507544243F, 
+  0.8513586479F, 0.8519614568F, 0.8525628505F, 0.8531628283F, 
+  0.8537613897F, 0.8543585341F, 0.8549542611F, 0.8555485699F, 
+  0.8561414603F, 0.8567329315F, 0.8573229832F, 0.8579116149F, 
+  0.8584988262F, 0.8590846165F, 0.8596689855F, 0.8602519327F, 
+  0.8608334577F, 0.8614135603F, 0.8619922399F, 0.8625694962F, 
+  0.8631453289F, 0.8637197377F, 0.8642927222F, 0.8648642821F, 
+  0.8654344172F, 0.8660031272F, 0.8665704118F, 0.8671362708F, 
+  0.8677007039F, 0.8682637109F, 0.8688252917F, 0.8693854460F, 
+  0.8699441737F, 0.8705014745F, 0.8710573485F, 0.8716117953F, 
+  0.8721648150F, 0.8727164073F, 0.8732665723F, 0.8738153098F, 
+  0.8743626197F, 0.8749085021F, 0.8754529569F, 0.8759959840F, 
+  0.8765375835F, 0.8770777553F, 0.8776164996F, 0.8781538162F, 
+  0.8786897054F, 0.8792241670F, 0.8797572013F, 0.8802888082F, 
+  0.8808189880F, 0.8813477407F, 0.8818750664F, 0.8824009653F, 
+  0.8829254375F, 0.8834484833F, 0.8839701028F, 0.8844902961F, 
+  0.8850090636F, 0.8855264054F, 0.8860423218F, 0.8865568131F, 
+  0.8870698794F, 0.8875815212F, 0.8880917386F, 0.8886005319F, 
+  0.8891079016F, 0.8896138479F, 0.8901183712F, 0.8906214719F, 
+  0.8911231503F, 0.8916234067F, 0.8921222417F, 0.8926196556F, 
+  0.8931156489F, 0.8936102219F, 0.8941033752F, 0.8945951092F, 
+  0.8950854244F, 0.8955743212F, 0.8960618003F, 0.8965478621F, 
+  0.8970325071F, 0.8975157359F, 0.8979975490F, 0.8984779471F, 
+  0.8989569307F, 0.8994345004F, 0.8999106568F, 0.9003854005F, 
+  0.9008587323F, 0.9013306526F, 0.9018011623F, 0.9022702619F, 
+  0.9027379521F, 0.9032042337F, 0.9036691074F, 0.9041325739F, 
+  0.9045946339F, 0.9050552882F, 0.9055145376F, 0.9059723828F, 
+  0.9064288246F, 0.9068838638F, 0.9073375013F, 0.9077897379F, 
+  0.9082405743F, 0.9086900115F, 0.9091380503F, 0.9095846917F, 
+  0.9100299364F, 0.9104737854F, 0.9109162397F, 0.9113573001F, 
+  0.9117969675F, 0.9122352430F, 0.9126721275F, 0.9131076219F, 
+  0.9135417273F, 0.9139744447F, 0.9144057750F, 0.9148357194F, 
+  0.9152642787F, 0.9156914542F, 0.9161172468F, 0.9165416576F, 
+  0.9169646877F, 0.9173863382F, 0.9178066102F, 0.9182255048F, 
+  0.9186430232F, 0.9190591665F, 0.9194739359F, 0.9198873324F, 
+  0.9202993574F, 0.9207100120F, 0.9211192973F, 0.9215272147F, 
+  0.9219337653F, 0.9223389504F, 0.9227427713F, 0.9231452290F, 
+  0.9235463251F, 0.9239460607F, 0.9243444371F, 0.9247414557F, 
+  0.9251371177F, 0.9255314245F, 0.9259243774F, 0.9263159778F, 
+  0.9267062270F, 0.9270951264F, 0.9274826774F, 0.9278688814F, 
+  0.9282537398F, 0.9286372540F, 0.9290194254F, 0.9294002555F, 
+  0.9297797458F, 0.9301578976F, 0.9305347125F, 0.9309101919F, 
+  0.9312843373F, 0.9316571503F, 0.9320286323F, 0.9323987849F, 
+  0.9327676097F, 0.9331351080F, 0.9335012816F, 0.9338661320F, 
+  0.9342296607F, 0.9345918694F, 0.9349527596F, 0.9353123330F, 
+  0.9356705911F, 0.9360275357F, 0.9363831683F, 0.9367374905F, 
+  0.9370905042F, 0.9374422108F, 0.9377926122F, 0.9381417099F, 
+  0.9384895057F, 0.9388360014F, 0.9391811985F, 0.9395250989F, 
+  0.9398677043F, 0.9402090165F, 0.9405490371F, 0.9408877680F, 
+  0.9412252110F, 0.9415613678F, 0.9418962402F, 0.9422298301F, 
+  0.9425621392F, 0.9428931695F, 0.9432229226F, 0.9435514005F, 
+  0.9438786050F, 0.9442045381F, 0.9445292014F, 0.9448525971F, 
+  0.9451747268F, 0.9454955926F, 0.9458151963F, 0.9461335399F, 
+  0.9464506253F, 0.9467664545F, 0.9470810293F, 0.9473943517F, 
+  0.9477064238F, 0.9480172474F, 0.9483268246F, 0.9486351573F, 
+  0.9489422475F, 0.9492480973F, 0.9495527087F, 0.9498560837F, 
+  0.9501582243F, 0.9504591325F, 0.9507588105F, 0.9510572603F, 
+  0.9513544839F, 0.9516504834F, 0.9519452609F, 0.9522388186F, 
+  0.9525311584F, 0.9528222826F, 0.9531121932F, 0.9534008923F, 
+  0.9536883821F, 0.9539746647F, 0.9542597424F, 0.9545436171F, 
+  0.9548262912F, 0.9551077667F, 0.9553880459F, 0.9556671309F, 
+  0.9559450239F, 0.9562217272F, 0.9564972429F, 0.9567715733F, 
+  0.9570447206F, 0.9573166871F, 0.9575874749F, 0.9578570863F, 
+  0.9581255236F, 0.9583927890F, 0.9586588849F, 0.9589238134F, 
+  0.9591875769F, 0.9594501777F, 0.9597116180F, 0.9599719003F, 
+  0.9602310267F, 0.9604889995F, 0.9607458213F, 0.9610014942F, 
+  0.9612560206F, 0.9615094028F, 0.9617616433F, 0.9620127443F, 
+  0.9622627083F, 0.9625115376F, 0.9627592345F, 0.9630058016F, 
+  0.9632512411F, 0.9634955555F, 0.9637387471F, 0.9639808185F, 
+  0.9642217720F, 0.9644616100F, 0.9647003349F, 0.9649379493F, 
+  0.9651744556F, 0.9654098561F, 0.9656441534F, 0.9658773499F, 
+  0.9661094480F, 0.9663404504F, 0.9665703593F, 0.9667991774F, 
+  0.9670269071F, 0.9672535509F, 0.9674791114F, 0.9677035909F, 
+  0.9679269921F, 0.9681493174F, 0.9683705694F, 0.9685907506F, 
+  0.9688098636F, 0.9690279108F, 0.9692448948F, 0.9694608182F, 
+  0.9696756836F, 0.9698894934F, 0.9701022503F, 0.9703139569F, 
+  0.9705246156F, 0.9707342291F, 0.9709428000F, 0.9711503309F, 
+  0.9713568243F, 0.9715622829F, 0.9717667093F, 0.9719701060F, 
+  0.9721724757F, 0.9723738210F, 0.9725741446F, 0.9727734490F, 
+  0.9729717369F, 0.9731690109F, 0.9733652737F, 0.9735605279F, 
+  0.9737547762F, 0.9739480212F, 0.9741402656F, 0.9743315120F, 
+  0.9745217631F, 0.9747110216F, 0.9748992901F, 0.9750865714F, 
+  0.9752728681F, 0.9754581829F, 0.9756425184F, 0.9758258775F, 
+  0.9760082627F, 0.9761896768F, 0.9763701224F, 0.9765496024F, 
+  0.9767281193F, 0.9769056760F, 0.9770822751F, 0.9772579193F, 
+  0.9774326114F, 0.9776063542F, 0.9777791502F, 0.9779510023F, 
+  0.9781219133F, 0.9782918858F, 0.9784609226F, 0.9786290264F, 
+  0.9787962000F, 0.9789624461F, 0.9791277676F, 0.9792921671F, 
+  0.9794556474F, 0.9796182113F, 0.9797798615F, 0.9799406009F, 
+  0.9801004321F, 0.9802593580F, 0.9804173813F, 0.9805745049F, 
+  0.9807307314F, 0.9808860637F, 0.9810405046F, 0.9811940568F, 
+  0.9813467232F, 0.9814985065F, 0.9816494095F, 0.9817994351F, 
+  0.9819485860F, 0.9820968650F, 0.9822442750F, 0.9823908186F, 
+  0.9825364988F, 0.9826813184F, 0.9828252801F, 0.9829683868F, 
+  0.9831106413F, 0.9832520463F, 0.9833926048F, 0.9835323195F, 
+  0.9836711932F, 0.9838092288F, 0.9839464291F, 0.9840827969F, 
+  0.9842183351F, 0.9843530464F, 0.9844869337F, 0.9846199998F, 
+  0.9847522475F, 0.9848836798F, 0.9850142993F, 0.9851441090F, 
+  0.9852731117F, 0.9854013101F, 0.9855287073F, 0.9856553058F, 
+  0.9857811087F, 0.9859061188F, 0.9860303388F, 0.9861537717F, 
+  0.9862764202F, 0.9863982872F, 0.9865193756F, 0.9866396882F, 
+  0.9867592277F, 0.9868779972F, 0.9869959993F, 0.9871132370F, 
+  0.9872297131F, 0.9873454304F, 0.9874603918F, 0.9875746001F, 
+  0.9876880581F, 0.9878007688F, 0.9879127348F, 0.9880239592F, 
+  0.9881344447F, 0.9882441941F, 0.9883532104F, 0.9884614962F, 
+  0.9885690546F, 0.9886758883F, 0.9887820001F, 0.9888873930F, 
+  0.9889920697F, 0.9890960331F, 0.9891992859F, 0.9893018312F, 
+  0.9894036716F, 0.9895048100F, 0.9896052493F, 0.9897049923F, 
+  0.9898040418F, 0.9899024006F, 0.9900000717F, 0.9900970577F, 
+  0.9901933616F, 0.9902889862F, 0.9903839343F, 0.9904782087F, 
+  0.9905718122F, 0.9906647477F, 0.9907570180F, 0.9908486259F, 
+  0.9909395742F, 0.9910298658F, 0.9911195034F, 0.9912084899F, 
+  0.9912968281F, 0.9913845208F, 0.9914715708F, 0.9915579810F, 
+  0.9916437540F, 0.9917288928F, 0.9918134001F, 0.9918972788F, 
+  0.9919805316F, 0.9920631613F, 0.9921451707F, 0.9922265626F, 
+  0.9923073399F, 0.9923875052F, 0.9924670615F, 0.9925460114F, 
+  0.9926243577F, 0.9927021033F, 0.9927792508F, 0.9928558032F, 
+  0.9929317631F, 0.9930071333F, 0.9930819167F, 0.9931561158F, 
+  0.9932297337F, 0.9933027728F, 0.9933752362F, 0.9934471264F, 
+  0.9935184462F, 0.9935891985F, 0.9936593859F, 0.9937290112F, 
+  0.9937980771F, 0.9938665864F, 0.9939345418F, 0.9940019460F, 
+  0.9940688018F, 0.9941351118F, 0.9942008789F, 0.9942661057F, 
+  0.9943307950F, 0.9943949494F, 0.9944585717F, 0.9945216645F, 
+  0.9945842307F, 0.9946462728F, 0.9947077936F, 0.9947687957F, 
+  0.9948292820F, 0.9948892550F, 0.9949487174F, 0.9950076719F, 
+  0.9950661212F, 0.9951240679F, 0.9951815148F, 0.9952384645F, 
+  0.9952949196F, 0.9953508828F, 0.9954063568F, 0.9954613442F, 
+  0.9955158476F, 0.9955698697F, 0.9956234132F, 0.9956764806F, 
+  0.9957290746F, 0.9957811978F, 0.9958328528F, 0.9958840423F, 
+  0.9959347688F, 0.9959850351F, 0.9960348435F, 0.9960841969F, 
+  0.9961330977F, 0.9961815486F, 0.9962295521F, 0.9962771108F, 
+  0.9963242274F, 0.9963709043F, 0.9964171441F, 0.9964629494F, 
+  0.9965083228F, 0.9965532668F, 0.9965977840F, 0.9966418768F, 
+  0.9966855479F, 0.9967287998F, 0.9967716350F, 0.9968140559F, 
+  0.9968560653F, 0.9968976655F, 0.9969388591F, 0.9969796485F, 
+  0.9970200363F, 0.9970600250F, 0.9970996170F, 0.9971388149F, 
+  0.9971776211F, 0.9972160380F, 0.9972540683F, 0.9972917142F, 
+  0.9973289783F, 0.9973658631F, 0.9974023709F, 0.9974385042F, 
+  0.9974742655F, 0.9975096571F, 0.9975446816F, 0.9975793413F, 
+  0.9976136386F, 0.9976475759F, 0.9976811557F, 0.9977143803F, 
+  0.9977472521F, 0.9977797736F, 0.9978119470F, 0.9978437748F, 
+  0.9978752593F, 0.9979064029F, 0.9979372079F, 0.9979676768F, 
+  0.9979978117F, 0.9980276151F, 0.9980570893F, 0.9980862367F, 
+  0.9981150595F, 0.9981435600F, 0.9981717406F, 0.9981996035F, 
+  0.9982271511F, 0.9982543856F, 0.9982813093F, 0.9983079246F, 
+  0.9983342336F, 0.9983602386F, 0.9983859418F, 0.9984113456F, 
+  0.9984364522F, 0.9984612638F, 0.9984857825F, 0.9985100108F, 
+  0.9985339507F, 0.9985576044F, 0.9985809743F, 0.9986040624F, 
+  0.9986268710F, 0.9986494022F, 0.9986716583F, 0.9986936413F, 
+  0.9987153535F, 0.9987367969F, 0.9987579738F, 0.9987788864F, 
+  0.9987995366F, 0.9988199267F, 0.9988400587F, 0.9988599348F, 
+  0.9988795572F, 0.9988989278F, 0.9989180487F, 0.9989369222F, 
+  0.9989555501F, 0.9989739347F, 0.9989920780F, 0.9990099820F, 
+  0.9990276487F, 0.9990450803F, 0.9990622787F, 0.9990792460F, 
+  0.9990959841F, 0.9991124952F, 0.9991287812F, 0.9991448440F, 
+  0.9991606858F, 0.9991763084F, 0.9991917139F, 0.9992069042F, 
+  0.9992218813F, 0.9992366471F, 0.9992512035F, 0.9992655525F, 
+  0.9992796961F, 0.9992936361F, 0.9993073744F, 0.9993209131F, 
+  0.9993342538F, 0.9993473987F, 0.9993603494F, 0.9993731080F, 
+  0.9993856762F, 0.9993980559F, 0.9994102490F, 0.9994222573F, 
+  0.9994340827F, 0.9994457269F, 0.9994571918F, 0.9994684793F, 
+  0.9994795910F, 0.9994905288F, 0.9995012945F, 0.9995118898F, 
+  0.9995223165F, 0.9995325765F, 0.9995426713F, 0.9995526029F, 
+  0.9995623728F, 0.9995719829F, 0.9995814349F, 0.9995907304F, 
+  0.9995998712F, 0.9996088590F, 0.9996176954F, 0.9996263821F, 
+  0.9996349208F, 0.9996433132F, 0.9996515609F, 0.9996596656F, 
+  0.9996676288F, 0.9996754522F, 0.9996831375F, 0.9996906862F, 
+  0.9996981000F, 0.9997053804F, 0.9997125290F, 0.9997195474F, 
+  0.9997264371F, 0.9997331998F, 0.9997398369F, 0.9997463500F, 
+  0.9997527406F, 0.9997590103F, 0.9997651606F, 0.9997711930F, 
+  0.9997771089F, 0.9997829098F, 0.9997885973F, 0.9997941728F, 
+  0.9997996378F, 0.9998049936F, 0.9998102419F, 0.9998153839F, 
+  0.9998204211F, 0.9998253550F, 0.9998301868F, 0.9998349182F, 
+  0.9998395503F, 0.9998440847F, 0.9998485226F, 0.9998528654F, 
+  0.9998571146F, 0.9998612713F, 0.9998653370F, 0.9998693130F, 
+  0.9998732007F, 0.9998770012F, 0.9998807159F, 0.9998843461F, 
+  0.9998878931F, 0.9998913581F, 0.9998947424F, 0.9998980473F, 
+  0.9999012740F, 0.9999044237F, 0.9999074976F, 0.9999104971F, 
+  0.9999134231F, 0.9999162771F, 0.9999190601F, 0.9999217733F, 
+  0.9999244179F, 0.9999269950F, 0.9999295058F, 0.9999319515F, 
+  0.9999343332F, 0.9999366519F, 0.9999389088F, 0.9999411050F, 
+  0.9999432416F, 0.9999453196F, 0.9999473402F, 0.9999493044F, 
+  0.9999512132F, 0.9999530677F, 0.9999548690F, 0.9999566180F, 
+  0.9999583157F, 0.9999599633F, 0.9999615616F, 0.9999631116F, 
+  0.9999646144F, 0.9999660709F, 0.9999674820F, 0.9999688487F, 
+  0.9999701719F, 0.9999714526F, 0.9999726917F, 0.9999738900F, 
+  0.9999750486F, 0.9999761682F, 0.9999772497F, 0.9999782941F, 
+  0.9999793021F, 0.9999802747F, 0.9999812126F, 0.9999821167F, 
+  0.9999829878F, 0.9999838268F, 0.9999846343F, 0.9999854113F, 
+  0.9999861584F, 0.9999868765F, 0.9999875664F, 0.9999882287F, 
+  0.9999888642F, 0.9999894736F, 0.9999900577F, 0.9999906172F, 
+  0.9999911528F, 0.9999916651F, 0.9999921548F, 0.9999926227F, 
+  0.9999930693F, 0.9999934954F, 0.9999939015F, 0.9999942883F, 
+  0.9999946564F, 0.9999950064F, 0.9999953390F, 0.9999956547F, 
+  0.9999959541F, 0.9999962377F, 0.9999965062F, 0.9999967601F, 
+  0.9999969998F, 0.9999972260F, 0.9999974392F, 0.9999976399F, 
+  0.9999978285F, 0.9999980056F, 0.9999981716F, 0.9999983271F, 
+  0.9999984724F, 0.9999986081F, 0.9999987345F, 0.9999988521F, 
+  0.9999989613F, 0.9999990625F, 0.9999991562F, 0.9999992426F, 
+  0.9999993223F, 0.9999993954F, 0.9999994625F, 0.9999995239F, 
+  0.9999995798F, 0.9999996307F, 0.9999996768F, 0.9999997184F, 
+  0.9999997559F, 0.9999997895F, 0.9999998195F, 0.9999998462F, 
+  0.9999998698F, 0.9999998906F, 0.9999999088F, 0.9999999246F, 
+  0.9999999383F, 0.9999999500F, 0.9999999600F, 0.9999999684F, 
+  0.9999999754F, 0.9999999811F, 0.9999999858F, 0.9999999896F, 
+  0.9999999925F, 0.9999999948F, 0.9999999965F, 0.9999999978F, 
+  0.9999999986F, 0.9999999992F, 0.9999999996F, 0.9999999998F, 
+  0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F, 
+};
+
+static float vwin8192[4096] = {
+  0.0000000578F, 0.0000005198F, 0.0000014438F, 0.0000028299F, 
+  0.0000046780F, 0.0000069882F, 0.0000097604F, 0.0000129945F, 
+  0.0000166908F, 0.0000208490F, 0.0000254692F, 0.0000305515F, 
+  0.0000360958F, 0.0000421021F, 0.0000485704F, 0.0000555006F, 
+  0.0000628929F, 0.0000707472F, 0.0000790635F, 0.0000878417F, 
+  0.0000970820F, 0.0001067842F, 0.0001169483F, 0.0001275744F, 
+  0.0001386625F, 0.0001502126F, 0.0001622245F, 0.0001746984F, 
+  0.0001876343F, 0.0002010320F, 0.0002148917F, 0.0002292132F, 
+  0.0002439967F, 0.0002592421F, 0.0002749493F, 0.0002911184F, 
+  0.0003077493F, 0.0003248421F, 0.0003423967F, 0.0003604132F, 
+  0.0003788915F, 0.0003978316F, 0.0004172335F, 0.0004370971F, 
+  0.0004574226F, 0.0004782098F, 0.0004994587F, 0.0005211694F, 
+  0.0005433418F, 0.0005659759F, 0.0005890717F, 0.0006126292F, 
+  0.0006366484F, 0.0006611292F, 0.0006860716F, 0.0007114757F, 
+  0.0007373414F, 0.0007636687F, 0.0007904576F, 0.0008177080F, 
+  0.0008454200F, 0.0008735935F, 0.0009022285F, 0.0009313250F, 
+  0.0009608830F, 0.0009909025F, 0.0010213834F, 0.0010523257F, 
+  0.0010837295F, 0.0011155946F, 0.0011479211F, 0.0011807090F, 
+  0.0012139582F, 0.0012476687F, 0.0012818405F, 0.0013164736F, 
+  0.0013515679F, 0.0013871235F, 0.0014231402F, 0.0014596182F, 
+  0.0014965573F, 0.0015339576F, 0.0015718190F, 0.0016101415F, 
+  0.0016489251F, 0.0016881698F, 0.0017278754F, 0.0017680421F, 
+  0.0018086698F, 0.0018497584F, 0.0018913080F, 0.0019333185F, 
+  0.0019757898F, 0.0020187221F, 0.0020621151F, 0.0021059690F, 
+  0.0021502837F, 0.0021950591F, 0.0022402953F, 0.0022859921F, 
+  0.0023321497F, 0.0023787679F, 0.0024258467F, 0.0024733861F, 
+  0.0025213861F, 0.0025698466F, 0.0026187676F, 0.0026681491F, 
+  0.0027179911F, 0.0027682935F, 0.0028190562F, 0.0028702794F, 
+  0.0029219628F, 0.0029741066F, 0.0030267107F, 0.0030797749F, 
+  0.0031332994F, 0.0031872841F, 0.0032417289F, 0.0032966338F, 
+  0.0033519988F, 0.0034078238F, 0.0034641089F, 0.0035208539F, 
+  0.0035780589F, 0.0036357237F, 0.0036938485F, 0.0037524331F, 
+  0.0038114775F, 0.0038709817F, 0.0039309456F, 0.0039913692F, 
+  0.0040522524F, 0.0041135953F, 0.0041753978F, 0.0042376599F, 
+  0.0043003814F, 0.0043635624F, 0.0044272029F, 0.0044913028F, 
+  0.0045558620F, 0.0046208806F, 0.0046863585F, 0.0047522955F, 
+  0.0048186919F, 0.0048855473F, 0.0049528619F, 0.0050206356F, 
+  0.0050888684F, 0.0051575601F, 0.0052267108F, 0.0052963204F, 
+  0.0053663890F, 0.0054369163F, 0.0055079025F, 0.0055793474F, 
+  0.0056512510F, 0.0057236133F, 0.0057964342F, 0.0058697137F, 
+  0.0059434517F, 0.0060176482F, 0.0060923032F, 0.0061674166F, 
+  0.0062429883F, 0.0063190183F, 0.0063955066F, 0.0064724532F, 
+  0.0065498579F, 0.0066277207F, 0.0067060416F, 0.0067848205F, 
+  0.0068640575F, 0.0069437523F, 0.0070239051F, 0.0071045157F, 
+  0.0071855840F, 0.0072671102F, 0.0073490940F, 0.0074315355F, 
+  0.0075144345F, 0.0075977911F, 0.0076816052F, 0.0077658768F, 
+  0.0078506057F, 0.0079357920F, 0.0080214355F, 0.0081075363F, 
+  0.0081940943F, 0.0082811094F, 0.0083685816F, 0.0084565108F, 
+  0.0085448970F, 0.0086337401F, 0.0087230401F, 0.0088127969F, 
+  0.0089030104F, 0.0089936807F, 0.0090848076F, 0.0091763911F, 
+  0.0092684311F, 0.0093609276F, 0.0094538805F, 0.0095472898F, 
+  0.0096411554F, 0.0097354772F, 0.0098302552F, 0.0099254894F, 
+  0.0100211796F, 0.0101173259F, 0.0102139281F, 0.0103109863F, 
+  0.0104085002F, 0.0105064700F, 0.0106048955F, 0.0107037766F, 
+  0.0108031133F, 0.0109029056F, 0.0110031534F, 0.0111038565F, 
+  0.0112050151F, 0.0113066289F, 0.0114086980F, 0.0115112222F, 
+  0.0116142015F, 0.0117176359F, 0.0118215252F, 0.0119258695F, 
+  0.0120306686F, 0.0121359225F, 0.0122416312F, 0.0123477944F, 
+  0.0124544123F, 0.0125614847F, 0.0126690116F, 0.0127769928F, 
+  0.0128854284F, 0.0129943182F, 0.0131036623F, 0.0132134604F, 
+  0.0133237126F, 0.0134344188F, 0.0135455790F, 0.0136571929F, 
+  0.0137692607F, 0.0138817821F, 0.0139947572F, 0.0141081859F, 
+  0.0142220681F, 0.0143364037F, 0.0144511927F, 0.0145664350F, 
+  0.0146821304F, 0.0147982791F, 0.0149148808F, 0.0150319355F, 
+  0.0151494431F, 0.0152674036F, 0.0153858168F, 0.0155046828F, 
+  0.0156240014F, 0.0157437726F, 0.0158639962F, 0.0159846723F, 
+  0.0161058007F, 0.0162273814F, 0.0163494142F, 0.0164718991F, 
+  0.0165948361F, 0.0167182250F, 0.0168420658F, 0.0169663584F, 
+  0.0170911027F, 0.0172162987F, 0.0173419462F, 0.0174680452F, 
+  0.0175945956F, 0.0177215974F, 0.0178490504F, 0.0179769545F, 
+  0.0181053098F, 0.0182341160F, 0.0183633732F, 0.0184930812F, 
+  0.0186232399F, 0.0187538494F, 0.0188849094F, 0.0190164200F, 
+  0.0191483809F, 0.0192807923F, 0.0194136539F, 0.0195469656F, 
+  0.0196807275F, 0.0198149394F, 0.0199496012F, 0.0200847128F, 
+  0.0202202742F, 0.0203562853F, 0.0204927460F, 0.0206296561F, 
+  0.0207670157F, 0.0209048245F, 0.0210430826F, 0.0211817899F, 
+  0.0213209462F, 0.0214605515F, 0.0216006057F, 0.0217411086F, 
+  0.0218820603F, 0.0220234605F, 0.0221653093F, 0.0223076066F, 
+  0.0224503521F, 0.0225935459F, 0.0227371879F, 0.0228812779F, 
+  0.0230258160F, 0.0231708018F, 0.0233162355F, 0.0234621169F, 
+  0.0236084459F, 0.0237552224F, 0.0239024462F, 0.0240501175F, 
+  0.0241982359F, 0.0243468015F, 0.0244958141F, 0.0246452736F, 
+  0.0247951800F, 0.0249455331F, 0.0250963329F, 0.0252475792F, 
+  0.0253992720F, 0.0255514111F, 0.0257039965F, 0.0258570281F, 
+  0.0260105057F, 0.0261644293F, 0.0263187987F, 0.0264736139F, 
+  0.0266288747F, 0.0267845811F, 0.0269407330F, 0.0270973302F, 
+  0.0272543727F, 0.0274118604F, 0.0275697930F, 0.0277281707F, 
+  0.0278869932F, 0.0280462604F, 0.0282059723F, 0.0283661287F, 
+  0.0285267295F, 0.0286877747F, 0.0288492641F, 0.0290111976F, 
+  0.0291735751F, 0.0293363965F, 0.0294996617F, 0.0296633706F, 
+  0.0298275231F, 0.0299921190F, 0.0301571583F, 0.0303226409F, 
+  0.0304885667F, 0.0306549354F, 0.0308217472F, 0.0309890017F, 
+  0.0311566989F, 0.0313248388F, 0.0314934211F, 0.0316624459F, 
+  0.0318319128F, 0.0320018220F, 0.0321721732F, 0.0323429663F, 
+  0.0325142013F, 0.0326858779F, 0.0328579962F, 0.0330305559F, 
+  0.0332035570F, 0.0333769994F, 0.0335508829F, 0.0337252074F, 
+  0.0338999728F, 0.0340751790F, 0.0342508259F, 0.0344269134F, 
+  0.0346034412F, 0.0347804094F, 0.0349578178F, 0.0351356663F, 
+  0.0353139548F, 0.0354926831F, 0.0356718511F, 0.0358514588F, 
+  0.0360315059F, 0.0362119924F, 0.0363929182F, 0.0365742831F, 
+  0.0367560870F, 0.0369383297F, 0.0371210113F, 0.0373041315F, 
+  0.0374876902F, 0.0376716873F, 0.0378561226F, 0.0380409961F, 
+  0.0382263077F, 0.0384120571F, 0.0385982443F, 0.0387848691F, 
+  0.0389719315F, 0.0391594313F, 0.0393473683F, 0.0395357425F, 
+  0.0397245537F, 0.0399138017F, 0.0401034866F, 0.0402936080F, 
+  0.0404841660F, 0.0406751603F, 0.0408665909F, 0.0410584576F, 
+  0.0412507603F, 0.0414434988F, 0.0416366731F, 0.0418302829F, 
+  0.0420243282F, 0.0422188088F, 0.0424137246F, 0.0426090755F, 
+  0.0428048613F, 0.0430010819F, 0.0431977371F, 0.0433948269F, 
+  0.0435923511F, 0.0437903095F, 0.0439887020F, 0.0441875285F, 
+  0.0443867889F, 0.0445864830F, 0.0447866106F, 0.0449871717F, 
+  0.0451881661F, 0.0453895936F, 0.0455914542F, 0.0457937477F, 
+  0.0459964738F, 0.0461996326F, 0.0464032239F, 0.0466072475F, 
+  0.0468117032F, 0.0470165910F, 0.0472219107F, 0.0474276622F, 
+  0.0476338452F, 0.0478404597F, 0.0480475056F, 0.0482549827F, 
+  0.0484628907F, 0.0486712297F, 0.0488799994F, 0.0490891998F, 
+  0.0492988306F, 0.0495088917F, 0.0497193830F, 0.0499303043F, 
+  0.0501416554F, 0.0503534363F, 0.0505656468F, 0.0507782867F, 
+  0.0509913559F, 0.0512048542F, 0.0514187815F, 0.0516331376F, 
+  0.0518479225F, 0.0520631358F, 0.0522787775F, 0.0524948475F, 
+  0.0527113455F, 0.0529282715F, 0.0531456252F, 0.0533634066F, 
+  0.0535816154F, 0.0538002515F, 0.0540193148F, 0.0542388051F, 
+  0.0544587222F, 0.0546790660F, 0.0548998364F, 0.0551210331F, 
+  0.0553426561F, 0.0555647051F, 0.0557871801F, 0.0560100807F, 
+  0.0562334070F, 0.0564571587F, 0.0566813357F, 0.0569059378F, 
+  0.0571309649F, 0.0573564168F, 0.0575822933F, 0.0578085942F, 
+  0.0580353195F, 0.0582624689F, 0.0584900423F, 0.0587180396F, 
+  0.0589464605F, 0.0591753049F, 0.0594045726F, 0.0596342635F, 
+  0.0598643774F, 0.0600949141F, 0.0603258735F, 0.0605572555F, 
+  0.0607890597F, 0.0610212862F, 0.0612539346F, 0.0614870049F, 
+  0.0617204968F, 0.0619544103F, 0.0621887451F, 0.0624235010F, 
+  0.0626586780F, 0.0628942758F, 0.0631302942F, 0.0633667331F, 
+  0.0636035923F, 0.0638408717F, 0.0640785710F, 0.0643166901F, 
+  0.0645552288F, 0.0647941870F, 0.0650335645F, 0.0652733610F, 
+  0.0655135765F, 0.0657542108F, 0.0659952636F, 0.0662367348F, 
+  0.0664786242F, 0.0667209316F, 0.0669636570F, 0.0672068000F, 
+  0.0674503605F, 0.0676943384F, 0.0679387334F, 0.0681835454F, 
+  0.0684287742F, 0.0686744196F, 0.0689204814F, 0.0691669595F, 
+  0.0694138536F, 0.0696611637F, 0.0699088894F, 0.0701570307F, 
+  0.0704055873F, 0.0706545590F, 0.0709039458F, 0.0711537473F, 
+  0.0714039634F, 0.0716545939F, 0.0719056387F, 0.0721570975F, 
+  0.0724089702F, 0.0726612565F, 0.0729139563F, 0.0731670694F, 
+  0.0734205956F, 0.0736745347F, 0.0739288866F, 0.0741836510F, 
+  0.0744388277F, 0.0746944166F, 0.0749504175F, 0.0752068301F, 
+  0.0754636543F, 0.0757208899F, 0.0759785367F, 0.0762365946F, 
+  0.0764950632F, 0.0767539424F, 0.0770132320F, 0.0772729319F, 
+  0.0775330418F, 0.0777935616F, 0.0780544909F, 0.0783158298F, 
+  0.0785775778F, 0.0788397349F, 0.0791023009F, 0.0793652755F, 
+  0.0796286585F, 0.0798924498F, 0.0801566492F, 0.0804212564F, 
+  0.0806862712F, 0.0809516935F, 0.0812175231F, 0.0814837597F, 
+  0.0817504031F, 0.0820174532F, 0.0822849097F, 0.0825527724F, 
+  0.0828210412F, 0.0830897158F, 0.0833587960F, 0.0836282816F, 
+  0.0838981724F, 0.0841684682F, 0.0844391688F, 0.0847102740F, 
+  0.0849817835F, 0.0852536973F, 0.0855260150F, 0.0857987364F, 
+  0.0860718614F, 0.0863453897F, 0.0866193211F, 0.0868936554F, 
+  0.0871683924F, 0.0874435319F, 0.0877190737F, 0.0879950175F, 
+  0.0882713632F, 0.0885481105F, 0.0888252592F, 0.0891028091F, 
+  0.0893807600F, 0.0896591117F, 0.0899378639F, 0.0902170165F, 
+  0.0904965692F, 0.0907765218F, 0.0910568740F, 0.0913376258F, 
+  0.0916187767F, 0.0919003268F, 0.0921822756F, 0.0924646230F, 
+  0.0927473687F, 0.0930305126F, 0.0933140545F, 0.0935979940F, 
+  0.0938823310F, 0.0941670653F, 0.0944521966F, 0.0947377247F, 
+  0.0950236494F, 0.0953099704F, 0.0955966876F, 0.0958838007F, 
+  0.0961713094F, 0.0964592136F, 0.0967475131F, 0.0970362075F, 
+  0.0973252967F, 0.0976147805F, 0.0979046585F, 0.0981949307F, 
+  0.0984855967F, 0.0987766563F, 0.0990681093F, 0.0993599555F, 
+  0.0996521945F, 0.0999448263F, 0.1002378506F, 0.1005312671F, 
+  0.1008250755F, 0.1011192757F, 0.1014138675F, 0.1017088505F, 
+  0.1020042246F, 0.1022999895F, 0.1025961450F, 0.1028926909F, 
+  0.1031896268F, 0.1034869526F, 0.1037846680F, 0.1040827729F, 
+  0.1043812668F, 0.1046801497F, 0.1049794213F, 0.1052790813F, 
+  0.1055791294F, 0.1058795656F, 0.1061803894F, 0.1064816006F, 
+  0.1067831991F, 0.1070851846F, 0.1073875568F, 0.1076903155F, 
+  0.1079934604F, 0.1082969913F, 0.1086009079F, 0.1089052101F, 
+  0.1092098975F, 0.1095149699F, 0.1098204270F, 0.1101262687F, 
+  0.1104324946F, 0.1107391045F, 0.1110460982F, 0.1113534754F, 
+  0.1116612359F, 0.1119693793F, 0.1122779055F, 0.1125868142F, 
+  0.1128961052F, 0.1132057781F, 0.1135158328F, 0.1138262690F, 
+  0.1141370863F, 0.1144482847F, 0.1147598638F, 0.1150718233F, 
+  0.1153841631F, 0.1156968828F, 0.1160099822F, 0.1163234610F, 
+  0.1166373190F, 0.1169515559F, 0.1172661714F, 0.1175811654F, 
+  0.1178965374F, 0.1182122874F, 0.1185284149F, 0.1188449198F, 
+  0.1191618018F, 0.1194790606F, 0.1197966960F, 0.1201147076F, 
+  0.1204330953F, 0.1207518587F, 0.1210709976F, 0.1213905118F, 
+  0.1217104009F, 0.1220306647F, 0.1223513029F, 0.1226723153F, 
+  0.1229937016F, 0.1233154615F, 0.1236375948F, 0.1239601011F, 
+  0.1242829803F, 0.1246062319F, 0.1249298559F, 0.1252538518F, 
+  0.1255782195F, 0.1259029586F, 0.1262280689F, 0.1265535501F, 
+  0.1268794019F, 0.1272056241F, 0.1275322163F, 0.1278591784F, 
+  0.1281865099F, 0.1285142108F, 0.1288422805F, 0.1291707190F, 
+  0.1294995259F, 0.1298287009F, 0.1301582437F, 0.1304881542F, 
+  0.1308184319F, 0.1311490766F, 0.1314800881F, 0.1318114660F, 
+  0.1321432100F, 0.1324753200F, 0.1328077955F, 0.1331406364F, 
+  0.1334738422F, 0.1338074129F, 0.1341413479F, 0.1344756472F, 
+  0.1348103103F, 0.1351453370F, 0.1354807270F, 0.1358164801F, 
+  0.1361525959F, 0.1364890741F, 0.1368259145F, 0.1371631167F, 
+  0.1375006805F, 0.1378386056F, 0.1381768917F, 0.1385155384F, 
+  0.1388545456F, 0.1391939129F, 0.1395336400F, 0.1398737266F, 
+  0.1402141724F, 0.1405549772F, 0.1408961406F, 0.1412376623F, 
+  0.1415795421F, 0.1419217797F, 0.1422643746F, 0.1426073268F, 
+  0.1429506358F, 0.1432943013F, 0.1436383231F, 0.1439827008F, 
+  0.1443274342F, 0.1446725229F, 0.1450179667F, 0.1453637652F, 
+  0.1457099181F, 0.1460564252F, 0.1464032861F, 0.1467505006F, 
+  0.1470980682F, 0.1474459888F, 0.1477942620F, 0.1481428875F, 
+  0.1484918651F, 0.1488411942F, 0.1491908748F, 0.1495409065F, 
+  0.1498912889F, 0.1502420218F, 0.1505931048F, 0.1509445376F, 
+  0.1512963200F, 0.1516484516F, 0.1520009321F, 0.1523537612F, 
+  0.1527069385F, 0.1530604638F, 0.1534143368F, 0.1537685571F, 
+  0.1541231244F, 0.1544780384F, 0.1548332987F, 0.1551889052F, 
+  0.1555448574F, 0.1559011550F, 0.1562577978F, 0.1566147853F, 
+  0.1569721173F, 0.1573297935F, 0.1576878135F, 0.1580461771F, 
+  0.1584048838F, 0.1587639334F, 0.1591233255F, 0.1594830599F, 
+  0.1598431361F, 0.1602035540F, 0.1605643131F, 0.1609254131F, 
+  0.1612868537F, 0.1616486346F, 0.1620107555F, 0.1623732160F, 
+  0.1627360158F, 0.1630991545F, 0.1634626319F, 0.1638264476F, 
+  0.1641906013F, 0.1645550926F, 0.1649199212F, 0.1652850869F, 
+  0.1656505892F, 0.1660164278F, 0.1663826024F, 0.1667491127F, 
+  0.1671159583F, 0.1674831388F, 0.1678506541F, 0.1682185036F, 
+  0.1685866872F, 0.1689552044F, 0.1693240549F, 0.1696932384F, 
+  0.1700627545F, 0.1704326029F, 0.1708027833F, 0.1711732952F, 
+  0.1715441385F, 0.1719153127F, 0.1722868175F, 0.1726586526F, 
+  0.1730308176F, 0.1734033121F, 0.1737761359F, 0.1741492886F, 
+  0.1745227698F, 0.1748965792F, 0.1752707164F, 0.1756451812F, 
+  0.1760199731F, 0.1763950918F, 0.1767705370F, 0.1771463083F, 
+  0.1775224054F, 0.1778988279F, 0.1782755754F, 0.1786526477F, 
+  0.1790300444F, 0.1794077651F, 0.1797858094F, 0.1801641771F, 
+  0.1805428677F, 0.1809218810F, 0.1813012165F, 0.1816808739F, 
+  0.1820608528F, 0.1824411530F, 0.1828217739F, 0.1832027154F, 
+  0.1835839770F, 0.1839655584F, 0.1843474592F, 0.1847296790F, 
+  0.1851122175F, 0.1854950744F, 0.1858782492F, 0.1862617417F, 
+  0.1866455514F, 0.1870296780F, 0.1874141211F, 0.1877988804F, 
+  0.1881839555F, 0.1885693461F, 0.1889550517F, 0.1893410721F, 
+  0.1897274068F, 0.1901140555F, 0.1905010178F, 0.1908882933F, 
+  0.1912758818F, 0.1916637828F, 0.1920519959F, 0.1924405208F, 
+  0.1928293571F, 0.1932185044F, 0.1936079625F, 0.1939977308F, 
+  0.1943878091F, 0.1947781969F, 0.1951688939F, 0.1955598998F, 
+  0.1959512141F, 0.1963428364F, 0.1967347665F, 0.1971270038F, 
+  0.1975195482F, 0.1979123990F, 0.1983055561F, 0.1986990190F, 
+  0.1990927873F, 0.1994868607F, 0.1998812388F, 0.2002759212F, 
+  0.2006709075F, 0.2010661974F, 0.2014617904F, 0.2018576862F, 
+  0.2022538844F, 0.2026503847F, 0.2030471865F, 0.2034442897F, 
+  0.2038416937F, 0.2042393982F, 0.2046374028F, 0.2050357071F, 
+  0.2054343107F, 0.2058332133F, 0.2062324145F, 0.2066319138F, 
+  0.2070317110F, 0.2074318055F, 0.2078321970F, 0.2082328852F, 
+  0.2086338696F, 0.2090351498F, 0.2094367255F, 0.2098385962F, 
+  0.2102407617F, 0.2106432213F, 0.2110459749F, 0.2114490220F, 
+  0.2118523621F, 0.2122559950F, 0.2126599202F, 0.2130641373F, 
+  0.2134686459F, 0.2138734456F, 0.2142785361F, 0.2146839168F, 
+  0.2150895875F, 0.2154955478F, 0.2159017972F, 0.2163083353F, 
+  0.2167151617F, 0.2171222761F, 0.2175296780F, 0.2179373670F, 
+  0.2183453428F, 0.2187536049F, 0.2191621529F, 0.2195709864F, 
+  0.2199801051F, 0.2203895085F, 0.2207991961F, 0.2212091677F, 
+  0.2216194228F, 0.2220299610F, 0.2224407818F, 0.2228518850F, 
+  0.2232632699F, 0.2236749364F, 0.2240868839F, 0.2244991121F, 
+  0.2249116204F, 0.2253244086F, 0.2257374763F, 0.2261508229F, 
+  0.2265644481F, 0.2269783514F, 0.2273925326F, 0.2278069911F, 
+  0.2282217265F, 0.2286367384F, 0.2290520265F, 0.2294675902F, 
+  0.2298834292F, 0.2302995431F, 0.2307159314F, 0.2311325937F, 
+  0.2315495297F, 0.2319667388F, 0.2323842207F, 0.2328019749F, 
+  0.2332200011F, 0.2336382988F, 0.2340568675F, 0.2344757070F, 
+  0.2348948166F, 0.2353141961F, 0.2357338450F, 0.2361537629F, 
+  0.2365739493F, 0.2369944038F, 0.2374151261F, 0.2378361156F, 
+  0.2382573720F, 0.2386788948F, 0.2391006836F, 0.2395227380F, 
+  0.2399450575F, 0.2403676417F, 0.2407904902F, 0.2412136026F, 
+  0.2416369783F, 0.2420606171F, 0.2424845185F, 0.2429086820F, 
+  0.2433331072F, 0.2437577936F, 0.2441827409F, 0.2446079486F, 
+  0.2450334163F, 0.2454591435F, 0.2458851298F, 0.2463113747F, 
+  0.2467378779F, 0.2471646389F, 0.2475916573F, 0.2480189325F, 
+  0.2484464643F, 0.2488742521F, 0.2493022955F, 0.2497305940F, 
+  0.2501591473F, 0.2505879549F, 0.2510170163F, 0.2514463311F, 
+  0.2518758989F, 0.2523057193F, 0.2527357916F, 0.2531661157F, 
+  0.2535966909F, 0.2540275169F, 0.2544585931F, 0.2548899193F, 
+  0.2553214948F, 0.2557533193F, 0.2561853924F, 0.2566177135F, 
+  0.2570502822F, 0.2574830981F, 0.2579161608F, 0.2583494697F, 
+  0.2587830245F, 0.2592168246F, 0.2596508697F, 0.2600851593F, 
+  0.2605196929F, 0.2609544701F, 0.2613894904F, 0.2618247534F, 
+  0.2622602586F, 0.2626960055F, 0.2631319938F, 0.2635682230F, 
+  0.2640046925F, 0.2644414021F, 0.2648783511F, 0.2653155391F, 
+  0.2657529657F, 0.2661906305F, 0.2666285329F, 0.2670666725F, 
+  0.2675050489F, 0.2679436616F, 0.2683825101F, 0.2688215940F, 
+  0.2692609127F, 0.2697004660F, 0.2701402532F, 0.2705802739F, 
+  0.2710205278F, 0.2714610142F, 0.2719017327F, 0.2723426830F, 
+  0.2727838644F, 0.2732252766F, 0.2736669191F, 0.2741087914F, 
+  0.2745508930F, 0.2749932235F, 0.2754357824F, 0.2758785693F, 
+  0.2763215837F, 0.2767648251F, 0.2772082930F, 0.2776519870F, 
+  0.2780959066F, 0.2785400513F, 0.2789844207F, 0.2794290143F, 
+  0.2798738316F, 0.2803188722F, 0.2807641355F, 0.2812096211F, 
+  0.2816553286F, 0.2821012574F, 0.2825474071F, 0.2829937773F, 
+  0.2834403673F, 0.2838871768F, 0.2843342053F, 0.2847814523F, 
+  0.2852289174F, 0.2856765999F, 0.2861244996F, 0.2865726159F, 
+  0.2870209482F, 0.2874694962F, 0.2879182594F, 0.2883672372F, 
+  0.2888164293F, 0.2892658350F, 0.2897154540F, 0.2901652858F, 
+  0.2906153298F, 0.2910655856F, 0.2915160527F, 0.2919667306F, 
+  0.2924176189F, 0.2928687171F, 0.2933200246F, 0.2937715409F, 
+  0.2942232657F, 0.2946751984F, 0.2951273386F, 0.2955796856F, 
+  0.2960322391F, 0.2964849986F, 0.2969379636F, 0.2973911335F, 
+  0.2978445080F, 0.2982980864F, 0.2987518684F, 0.2992058534F, 
+  0.2996600409F, 0.3001144305F, 0.3005690217F, 0.3010238139F, 
+  0.3014788067F, 0.3019339995F, 0.3023893920F, 0.3028449835F, 
+  0.3033007736F, 0.3037567618F, 0.3042129477F, 0.3046693306F, 
+  0.3051259102F, 0.3055826859F, 0.3060396572F, 0.3064968236F, 
+  0.3069541847F, 0.3074117399F, 0.3078694887F, 0.3083274307F, 
+  0.3087855653F, 0.3092438920F, 0.3097024104F, 0.3101611199F, 
+  0.3106200200F, 0.3110791103F, 0.3115383902F, 0.3119978592F, 
+  0.3124575169F, 0.3129173627F, 0.3133773961F, 0.3138376166F, 
+  0.3142980238F, 0.3147586170F, 0.3152193959F, 0.3156803598F, 
+  0.3161415084F, 0.3166028410F, 0.3170643573F, 0.3175260566F, 
+  0.3179879384F, 0.3184500023F, 0.3189122478F, 0.3193746743F, 
+  0.3198372814F, 0.3203000685F, 0.3207630351F, 0.3212261807F, 
+  0.3216895048F, 0.3221530069F, 0.3226166865F, 0.3230805430F, 
+  0.3235445760F, 0.3240087849F, 0.3244731693F, 0.3249377285F, 
+  0.3254024622F, 0.3258673698F, 0.3263324507F, 0.3267977045F, 
+  0.3272631306F, 0.3277287286F, 0.3281944978F, 0.3286604379F, 
+  0.3291265482F, 0.3295928284F, 0.3300592777F, 0.3305258958F, 
+  0.3309926821F, 0.3314596361F, 0.3319267573F, 0.3323940451F, 
+  0.3328614990F, 0.3333291186F, 0.3337969033F, 0.3342648525F, 
+  0.3347329658F, 0.3352012427F, 0.3356696825F, 0.3361382849F, 
+  0.3366070492F, 0.3370759749F, 0.3375450616F, 0.3380143087F, 
+  0.3384837156F, 0.3389532819F, 0.3394230071F, 0.3398928905F, 
+  0.3403629317F, 0.3408331302F, 0.3413034854F, 0.3417739967F, 
+  0.3422446638F, 0.3427154860F, 0.3431864628F, 0.3436575938F, 
+  0.3441288782F, 0.3446003158F, 0.3450719058F, 0.3455436478F, 
+  0.3460155412F, 0.3464875856F, 0.3469597804F, 0.3474321250F, 
+  0.3479046189F, 0.3483772617F, 0.3488500527F, 0.3493229914F, 
+  0.3497960774F, 0.3502693100F, 0.3507426887F, 0.3512162131F, 
+  0.3516898825F, 0.3521636965F, 0.3526376545F, 0.3531117559F, 
+  0.3535860003F, 0.3540603870F, 0.3545349157F, 0.3550095856F, 
+  0.3554843964F, 0.3559593474F, 0.3564344381F, 0.3569096680F, 
+  0.3573850366F, 0.3578605432F, 0.3583361875F, 0.3588119687F, 
+  0.3592878865F, 0.3597639402F, 0.3602401293F, 0.3607164533F, 
+  0.3611929117F, 0.3616695038F, 0.3621462292F, 0.3626230873F, 
+  0.3631000776F, 0.3635771995F, 0.3640544525F, 0.3645318360F, 
+  0.3650093496F, 0.3654869926F, 0.3659647645F, 0.3664426648F, 
+  0.3669206930F, 0.3673988484F, 0.3678771306F, 0.3683555390F, 
+  0.3688340731F, 0.3693127322F, 0.3697915160F, 0.3702704237F, 
+  0.3707494549F, 0.3712286091F, 0.3717078857F, 0.3721872840F, 
+  0.3726668037F, 0.3731464441F, 0.3736262047F, 0.3741060850F, 
+  0.3745860843F, 0.3750662023F, 0.3755464382F, 0.3760267915F, 
+  0.3765072618F, 0.3769878484F, 0.3774685509F, 0.3779493686F, 
+  0.3784303010F, 0.3789113475F, 0.3793925076F, 0.3798737809F, 
+  0.3803551666F, 0.3808366642F, 0.3813182733F, 0.3817999932F, 
+  0.3822818234F, 0.3827637633F, 0.3832458124F, 0.3837279702F, 
+  0.3842102360F, 0.3846926093F, 0.3851750897F, 0.3856576764F, 
+  0.3861403690F, 0.3866231670F, 0.3871060696F, 0.3875890765F, 
+  0.3880721870F, 0.3885554007F, 0.3890387168F, 0.3895221349F, 
+  0.3900056544F, 0.3904892748F, 0.3909729955F, 0.3914568160F, 
+  0.3919407356F, 0.3924247539F, 0.3929088702F, 0.3933930841F, 
+  0.3938773949F, 0.3943618021F, 0.3948463052F, 0.3953309035F, 
+  0.3958155966F, 0.3963003838F, 0.3967852646F, 0.3972702385F, 
+  0.3977553048F, 0.3982404631F, 0.3987257127F, 0.3992110531F, 
+  0.3996964838F, 0.4001820041F, 0.4006676136F, 0.4011533116F, 
+  0.4016390976F, 0.4021249710F, 0.4026109313F, 0.4030969779F, 
+  0.4035831102F, 0.4040693277F, 0.4045556299F, 0.4050420160F, 
+  0.4055284857F, 0.4060150383F, 0.4065016732F, 0.4069883899F, 
+  0.4074751879F, 0.4079620665F, 0.4084490252F, 0.4089360635F, 
+  0.4094231807F, 0.4099103763F, 0.4103976498F, 0.4108850005F, 
+  0.4113724280F, 0.4118599315F, 0.4123475107F, 0.4128351648F, 
+  0.4133228934F, 0.4138106959F, 0.4142985716F, 0.4147865201F, 
+  0.4152745408F, 0.4157626330F, 0.4162507963F, 0.4167390301F, 
+  0.4172273337F, 0.4177157067F, 0.4182041484F, 0.4186926583F, 
+  0.4191812359F, 0.4196698805F, 0.4201585915F, 0.4206473685F, 
+  0.4211362108F, 0.4216251179F, 0.4221140892F, 0.4226031241F, 
+  0.4230922221F, 0.4235813826F, 0.4240706050F, 0.4245598887F, 
+  0.4250492332F, 0.4255386379F, 0.4260281022F, 0.4265176256F, 
+  0.4270072075F, 0.4274968473F, 0.4279865445F, 0.4284762984F, 
+  0.4289661086F, 0.4294559743F, 0.4299458951F, 0.4304358704F, 
+  0.4309258996F, 0.4314159822F, 0.4319061175F, 0.4323963050F, 
+  0.4328865441F, 0.4333768342F, 0.4338671749F, 0.4343575654F, 
+  0.4348480052F, 0.4353384938F, 0.4358290306F, 0.4363196149F, 
+  0.4368102463F, 0.4373009241F, 0.4377916478F, 0.4382824168F, 
+  0.4387732305F, 0.4392640884F, 0.4397549899F, 0.4402459343F, 
+  0.4407369212F, 0.4412279499F, 0.4417190198F, 0.4422101305F, 
+  0.4427012813F, 0.4431924717F, 0.4436837010F, 0.4441749686F, 
+  0.4446662742F, 0.4451576169F, 0.4456489963F, 0.4461404118F, 
+  0.4466318628F, 0.4471233487F, 0.4476148690F, 0.4481064230F, 
+  0.4485980103F, 0.4490896302F, 0.4495812821F, 0.4500729654F, 
+  0.4505646797F, 0.4510564243F, 0.4515481986F, 0.4520400021F, 
+  0.4525318341F, 0.4530236942F, 0.4535155816F, 0.4540074959F, 
+  0.4544994365F, 0.4549914028F, 0.4554833941F, 0.4559754100F, 
+  0.4564674499F, 0.4569595131F, 0.4574515991F, 0.4579437074F, 
+  0.4584358372F, 0.4589279881F, 0.4594201595F, 0.4599123508F, 
+  0.4604045615F, 0.4608967908F, 0.4613890383F, 0.4618813034F, 
+  0.4623735855F, 0.4628658841F, 0.4633581984F, 0.4638505281F, 
+  0.4643428724F, 0.4648352308F, 0.4653276028F, 0.4658199877F, 
+  0.4663123849F, 0.4668047940F, 0.4672972143F, 0.4677896451F, 
+  0.4682820861F, 0.4687745365F, 0.4692669958F, 0.4697594634F, 
+  0.4702519387F, 0.4707444211F, 0.4712369102F, 0.4717294052F, 
+  0.4722219056F, 0.4727144109F, 0.4732069204F, 0.4736994336F, 
+  0.4741919498F, 0.4746844686F, 0.4751769893F, 0.4756695113F, 
+  0.4761620341F, 0.4766545571F, 0.4771470797F, 0.4776396013F, 
+  0.4781321213F, 0.4786246392F, 0.4791171544F, 0.4796096663F, 
+  0.4801021744F, 0.4805946779F, 0.4810871765F, 0.4815796694F, 
+  0.4820721561F, 0.4825646360F, 0.4830571086F, 0.4835495732F, 
+  0.4840420293F, 0.4845344763F, 0.4850269136F, 0.4855193407F, 
+  0.4860117569F, 0.4865041617F, 0.4869965545F, 0.4874889347F, 
+  0.4879813018F, 0.4884736551F, 0.4889659941F, 0.4894583182F, 
+  0.4899506268F, 0.4904429193F, 0.4909351952F, 0.4914274538F, 
+  0.4919196947F, 0.4924119172F, 0.4929041207F, 0.4933963046F, 
+  0.4938884685F, 0.4943806116F, 0.4948727335F, 0.4953648335F, 
+  0.4958569110F, 0.4963489656F, 0.4968409965F, 0.4973330032F, 
+  0.4978249852F, 0.4983169419F, 0.4988088726F, 0.4993007768F, 
+  0.4997926539F, 0.5002845034F, 0.5007763247F, 0.5012681171F, 
+  0.5017598801F, 0.5022516132F, 0.5027433157F, 0.5032349871F, 
+  0.5037266268F, 0.5042182341F, 0.5047098086F, 0.5052013497F, 
+  0.5056928567F, 0.5061843292F, 0.5066757664F, 0.5071671679F, 
+  0.5076585330F, 0.5081498613F, 0.5086411520F, 0.5091324047F, 
+  0.5096236187F, 0.5101147934F, 0.5106059284F, 0.5110970230F, 
+  0.5115880766F, 0.5120790887F, 0.5125700587F, 0.5130609860F, 
+  0.5135518700F, 0.5140427102F, 0.5145335059F, 0.5150242566F, 
+  0.5155149618F, 0.5160056208F, 0.5164962331F, 0.5169867980F, 
+  0.5174773151F, 0.5179677837F, 0.5184582033F, 0.5189485733F, 
+  0.5194388931F, 0.5199291621F, 0.5204193798F, 0.5209095455F, 
+  0.5213996588F, 0.5218897190F, 0.5223797256F, 0.5228696779F, 
+  0.5233595755F, 0.5238494177F, 0.5243392039F, 0.5248289337F, 
+  0.5253186063F, 0.5258082213F, 0.5262977781F, 0.5267872760F, 
+  0.5272767146F, 0.5277660932F, 0.5282554112F, 0.5287446682F, 
+  0.5292338635F, 0.5297229965F, 0.5302120667F, 0.5307010736F, 
+  0.5311900164F, 0.5316788947F, 0.5321677079F, 0.5326564554F, 
+  0.5331451366F, 0.5336337511F, 0.5341222981F, 0.5346107771F, 
+  0.5350991876F, 0.5355875290F, 0.5360758007F, 0.5365640021F, 
+  0.5370521327F, 0.5375401920F, 0.5380281792F, 0.5385160939F, 
+  0.5390039355F, 0.5394917034F, 0.5399793971F, 0.5404670159F, 
+  0.5409545594F, 0.5414420269F, 0.5419294179F, 0.5424167318F, 
+  0.5429039680F, 0.5433911261F, 0.5438782053F, 0.5443652051F, 
+  0.5448521250F, 0.5453389644F, 0.5458257228F, 0.5463123995F, 
+  0.5467989940F, 0.5472855057F, 0.5477719341F, 0.5482582786F, 
+  0.5487445387F, 0.5492307137F, 0.5497168031F, 0.5502028063F, 
+  0.5506887228F, 0.5511745520F, 0.5516602934F, 0.5521459463F, 
+  0.5526315103F, 0.5531169847F, 0.5536023690F, 0.5540876626F, 
+  0.5545728649F, 0.5550579755F, 0.5555429937F, 0.5560279189F, 
+  0.5565127507F, 0.5569974884F, 0.5574821315F, 0.5579666794F, 
+  0.5584511316F, 0.5589354875F, 0.5594197465F, 0.5599039080F, 
+  0.5603879716F, 0.5608719367F, 0.5613558026F, 0.5618395689F, 
+  0.5623232350F, 0.5628068002F, 0.5632902642F, 0.5637736262F, 
+  0.5642568858F, 0.5647400423F, 0.5652230953F, 0.5657060442F, 
+  0.5661888883F, 0.5666716272F, 0.5671542603F, 0.5676367870F, 
+  0.5681192069F, 0.5686015192F, 0.5690837235F, 0.5695658192F, 
+  0.5700478058F, 0.5705296827F, 0.5710114494F, 0.5714931052F, 
+  0.5719746497F, 0.5724560822F, 0.5729374023F, 0.5734186094F, 
+  0.5738997029F, 0.5743806823F, 0.5748615470F, 0.5753422965F, 
+  0.5758229301F, 0.5763034475F, 0.5767838480F, 0.5772641310F, 
+  0.5777442960F, 0.5782243426F, 0.5787042700F, 0.5791840778F, 
+  0.5796637654F, 0.5801433322F, 0.5806227778F, 0.5811021016F, 
+  0.5815813029F, 0.5820603814F, 0.5825393363F, 0.5830181673F, 
+  0.5834968737F, 0.5839754549F, 0.5844539105F, 0.5849322399F, 
+  0.5854104425F, 0.5858885179F, 0.5863664653F, 0.5868442844F, 
+  0.5873219746F, 0.5877995353F, 0.5882769660F, 0.5887542661F, 
+  0.5892314351F, 0.5897084724F, 0.5901853776F, 0.5906621500F, 
+  0.5911387892F, 0.5916152945F, 0.5920916655F, 0.5925679016F, 
+  0.5930440022F, 0.5935199669F, 0.5939957950F, 0.5944714861F, 
+  0.5949470396F, 0.5954224550F, 0.5958977317F, 0.5963728692F, 
+  0.5968478669F, 0.5973227244F, 0.5977974411F, 0.5982720163F, 
+  0.5987464497F, 0.5992207407F, 0.5996948887F, 0.6001688932F, 
+  0.6006427537F, 0.6011164696F, 0.6015900405F, 0.6020634657F, 
+  0.6025367447F, 0.6030098770F, 0.6034828621F, 0.6039556995F, 
+  0.6044283885F, 0.6049009288F, 0.6053733196F, 0.6058455606F, 
+  0.6063176512F, 0.6067895909F, 0.6072613790F, 0.6077330152F, 
+  0.6082044989F, 0.6086758295F, 0.6091470065F, 0.6096180294F, 
+  0.6100888977F, 0.6105596108F, 0.6110301682F, 0.6115005694F, 
+  0.6119708139F, 0.6124409011F, 0.6129108305F, 0.6133806017F, 
+  0.6138502139F, 0.6143196669F, 0.6147889599F, 0.6152580926F, 
+  0.6157270643F, 0.6161958746F, 0.6166645230F, 0.6171330088F, 
+  0.6176013317F, 0.6180694910F, 0.6185374863F, 0.6190053171F, 
+  0.6194729827F, 0.6199404828F, 0.6204078167F, 0.6208749841F, 
+  0.6213419842F, 0.6218088168F, 0.6222754811F, 0.6227419768F, 
+  0.6232083032F, 0.6236744600F, 0.6241404465F, 0.6246062622F, 
+  0.6250719067F, 0.6255373795F, 0.6260026799F, 0.6264678076F, 
+  0.6269327619F, 0.6273975425F, 0.6278621487F, 0.6283265800F, 
+  0.6287908361F, 0.6292549163F, 0.6297188201F, 0.6301825471F, 
+  0.6306460966F, 0.6311094683F, 0.6315726617F, 0.6320356761F, 
+  0.6324985111F, 0.6329611662F, 0.6334236410F, 0.6338859348F, 
+  0.6343480472F, 0.6348099777F, 0.6352717257F, 0.6357332909F, 
+  0.6361946726F, 0.6366558704F, 0.6371168837F, 0.6375777122F, 
+  0.6380383552F, 0.6384988123F, 0.6389590830F, 0.6394191668F, 
+  0.6398790631F, 0.6403387716F, 0.6407982916F, 0.6412576228F, 
+  0.6417167645F, 0.6421757163F, 0.6426344778F, 0.6430930483F, 
+  0.6435514275F, 0.6440096149F, 0.6444676098F, 0.6449254119F, 
+  0.6453830207F, 0.6458404356F, 0.6462976562F, 0.6467546820F, 
+  0.6472115125F, 0.6476681472F, 0.6481245856F, 0.6485808273F, 
+  0.6490368717F, 0.6494927183F, 0.6499483667F, 0.6504038164F, 
+  0.6508590670F, 0.6513141178F, 0.6517689684F, 0.6522236185F, 
+  0.6526780673F, 0.6531323146F, 0.6535863598F, 0.6540402024F, 
+  0.6544938419F, 0.6549472779F, 0.6554005099F, 0.6558535373F, 
+  0.6563063598F, 0.6567589769F, 0.6572113880F, 0.6576635927F, 
+  0.6581155906F, 0.6585673810F, 0.6590189637F, 0.6594703380F, 
+  0.6599215035F, 0.6603724598F, 0.6608232064F, 0.6612737427F, 
+  0.6617240684F, 0.6621741829F, 0.6626240859F, 0.6630737767F, 
+  0.6635232550F, 0.6639725202F, 0.6644215720F, 0.6648704098F, 
+  0.6653190332F, 0.6657674417F, 0.6662156348F, 0.6666636121F, 
+  0.6671113731F, 0.6675589174F, 0.6680062445F, 0.6684533538F, 
+  0.6689002450F, 0.6693469177F, 0.6697933712F, 0.6702396052F, 
+  0.6706856193F, 0.6711314129F, 0.6715769855F, 0.6720223369F, 
+  0.6724674664F, 0.6729123736F, 0.6733570581F, 0.6738015194F, 
+  0.6742457570F, 0.6746897706F, 0.6751335596F, 0.6755771236F, 
+  0.6760204621F, 0.6764635747F, 0.6769064609F, 0.6773491204F, 
+  0.6777915525F, 0.6782337570F, 0.6786757332F, 0.6791174809F, 
+  0.6795589995F, 0.6800002886F, 0.6804413477F, 0.6808821765F, 
+  0.6813227743F, 0.6817631409F, 0.6822032758F, 0.6826431785F, 
+  0.6830828485F, 0.6835222855F, 0.6839614890F, 0.6844004585F, 
+  0.6848391936F, 0.6852776939F, 0.6857159589F, 0.6861539883F, 
+  0.6865917815F, 0.6870293381F, 0.6874666576F, 0.6879037398F, 
+  0.6883405840F, 0.6887771899F, 0.6892135571F, 0.6896496850F, 
+  0.6900855733F, 0.6905212216F, 0.6909566294F, 0.6913917963F, 
+  0.6918267218F, 0.6922614055F, 0.6926958471F, 0.6931300459F, 
+  0.6935640018F, 0.6939977141F, 0.6944311825F, 0.6948644066F, 
+  0.6952973859F, 0.6957301200F, 0.6961626085F, 0.6965948510F, 
+  0.6970268470F, 0.6974585961F, 0.6978900980F, 0.6983213521F, 
+  0.6987523580F, 0.6991831154F, 0.6996136238F, 0.7000438828F, 
+  0.7004738921F, 0.7009036510F, 0.7013331594F, 0.7017624166F, 
+  0.7021914224F, 0.7026201763F, 0.7030486779F, 0.7034769268F, 
+  0.7039049226F, 0.7043326648F, 0.7047601531F, 0.7051873870F, 
+  0.7056143662F, 0.7060410902F, 0.7064675586F, 0.7068937711F, 
+  0.7073197271F, 0.7077454264F, 0.7081708684F, 0.7085960529F, 
+  0.7090209793F, 0.7094456474F, 0.7098700566F, 0.7102942066F, 
+  0.7107180970F, 0.7111417274F, 0.7115650974F, 0.7119882066F, 
+  0.7124110545F, 0.7128336409F, 0.7132559653F, 0.7136780272F, 
+  0.7140998264F, 0.7145213624F, 0.7149426348F, 0.7153636433F, 
+  0.7157843874F, 0.7162048668F, 0.7166250810F, 0.7170450296F, 
+  0.7174647124F, 0.7178841289F, 0.7183032786F, 0.7187221613F, 
+  0.7191407765F, 0.7195591239F, 0.7199772030F, 0.7203950135F, 
+  0.7208125550F, 0.7212298271F, 0.7216468294F, 0.7220635616F, 
+  0.7224800233F, 0.7228962140F, 0.7233121335F, 0.7237277813F, 
+  0.7241431571F, 0.7245582604F, 0.7249730910F, 0.7253876484F, 
+  0.7258019322F, 0.7262159422F, 0.7266296778F, 0.7270431388F, 
+  0.7274563247F, 0.7278692353F, 0.7282818700F, 0.7286942287F, 
+  0.7291063108F, 0.7295181160F, 0.7299296440F, 0.7303408944F, 
+  0.7307518669F, 0.7311625609F, 0.7315729763F, 0.7319831126F, 
+  0.7323929695F, 0.7328025466F, 0.7332118435F, 0.7336208600F, 
+  0.7340295955F, 0.7344380499F, 0.7348462226F, 0.7352541134F, 
+  0.7356617220F, 0.7360690478F, 0.7364760907F, 0.7368828502F, 
+  0.7372893259F, 0.7376955176F, 0.7381014249F, 0.7385070475F, 
+  0.7389123849F, 0.7393174368F, 0.7397222029F, 0.7401266829F, 
+  0.7405308763F, 0.7409347829F, 0.7413384023F, 0.7417417341F, 
+  0.7421447780F, 0.7425475338F, 0.7429500009F, 0.7433521791F, 
+  0.7437540681F, 0.7441556674F, 0.7445569769F, 0.7449579960F, 
+  0.7453587245F, 0.7457591621F, 0.7461593084F, 0.7465591631F, 
+  0.7469587259F, 0.7473579963F, 0.7477569741F, 0.7481556590F, 
+  0.7485540506F, 0.7489521486F, 0.7493499526F, 0.7497474623F, 
+  0.7501446775F, 0.7505415977F, 0.7509382227F, 0.7513345521F, 
+  0.7517305856F, 0.7521263229F, 0.7525217636F, 0.7529169074F, 
+  0.7533117541F, 0.7537063032F, 0.7541005545F, 0.7544945076F, 
+  0.7548881623F, 0.7552815182F, 0.7556745749F, 0.7560673323F, 
+  0.7564597899F, 0.7568519474F, 0.7572438046F, 0.7576353611F, 
+  0.7580266166F, 0.7584175708F, 0.7588082235F, 0.7591985741F, 
+  0.7595886226F, 0.7599783685F, 0.7603678116F, 0.7607569515F, 
+  0.7611457879F, 0.7615343206F, 0.7619225493F, 0.7623104735F, 
+  0.7626980931F, 0.7630854078F, 0.7634724171F, 0.7638591209F, 
+  0.7642455188F, 0.7646316106F, 0.7650173959F, 0.7654028744F, 
+  0.7657880459F, 0.7661729100F, 0.7665574664F, 0.7669417150F, 
+  0.7673256553F, 0.7677092871F, 0.7680926100F, 0.7684756239F, 
+  0.7688583284F, 0.7692407232F, 0.7696228080F, 0.7700045826F, 
+  0.7703860467F, 0.7707671999F, 0.7711480420F, 0.7715285728F, 
+  0.7719087918F, 0.7722886989F, 0.7726682938F, 0.7730475762F, 
+  0.7734265458F, 0.7738052023F, 0.7741835454F, 0.7745615750F, 
+  0.7749392906F, 0.7753166921F, 0.7756937791F, 0.7760705514F, 
+  0.7764470087F, 0.7768231508F, 0.7771989773F, 0.7775744880F, 
+  0.7779496827F, 0.7783245610F, 0.7786991227F, 0.7790733676F, 
+  0.7794472953F, 0.7798209056F, 0.7801941982F, 0.7805671729F, 
+  0.7809398294F, 0.7813121675F, 0.7816841869F, 0.7820558873F, 
+  0.7824272684F, 0.7827983301F, 0.7831690720F, 0.7835394940F, 
+  0.7839095957F, 0.7842793768F, 0.7846488373F, 0.7850179767F, 
+  0.7853867948F, 0.7857552914F, 0.7861234663F, 0.7864913191F, 
+  0.7868588497F, 0.7872260578F, 0.7875929431F, 0.7879595055F, 
+  0.7883257445F, 0.7886916601F, 0.7890572520F, 0.7894225198F, 
+  0.7897874635F, 0.7901520827F, 0.7905163772F, 0.7908803468F, 
+  0.7912439912F, 0.7916073102F, 0.7919703035F, 0.7923329710F, 
+  0.7926953124F, 0.7930573274F, 0.7934190158F, 0.7937803774F, 
+  0.7941414120F, 0.7945021193F, 0.7948624991F, 0.7952225511F, 
+  0.7955822752F, 0.7959416711F, 0.7963007387F, 0.7966594775F, 
+  0.7970178875F, 0.7973759685F, 0.7977337201F, 0.7980911422F, 
+  0.7984482346F, 0.7988049970F, 0.7991614292F, 0.7995175310F, 
+  0.7998733022F, 0.8002287426F, 0.8005838519F, 0.8009386299F, 
+  0.8012930765F, 0.8016471914F, 0.8020009744F, 0.8023544253F, 
+  0.8027075438F, 0.8030603298F, 0.8034127831F, 0.8037649035F, 
+  0.8041166906F, 0.8044681445F, 0.8048192647F, 0.8051700512F, 
+  0.8055205038F, 0.8058706222F, 0.8062204062F, 0.8065698556F, 
+  0.8069189702F, 0.8072677499F, 0.8076161944F, 0.8079643036F, 
+  0.8083120772F, 0.8086595151F, 0.8090066170F, 0.8093533827F, 
+  0.8096998122F, 0.8100459051F, 0.8103916613F, 0.8107370806F, 
+  0.8110821628F, 0.8114269077F, 0.8117713151F, 0.8121153849F, 
+  0.8124591169F, 0.8128025108F, 0.8131455666F, 0.8134882839F, 
+  0.8138306627F, 0.8141727027F, 0.8145144038F, 0.8148557658F, 
+  0.8151967886F, 0.8155374718F, 0.8158778154F, 0.8162178192F, 
+  0.8165574830F, 0.8168968067F, 0.8172357900F, 0.8175744328F, 
+  0.8179127349F, 0.8182506962F, 0.8185883164F, 0.8189255955F, 
+  0.8192625332F, 0.8195991295F, 0.8199353840F, 0.8202712967F, 
+  0.8206068673F, 0.8209420958F, 0.8212769820F, 0.8216115256F, 
+  0.8219457266F, 0.8222795848F, 0.8226131000F, 0.8229462721F, 
+  0.8232791009F, 0.8236115863F, 0.8239437280F, 0.8242755260F, 
+  0.8246069801F, 0.8249380901F, 0.8252688559F, 0.8255992774F, 
+  0.8259293544F, 0.8262590867F, 0.8265884741F, 0.8269175167F, 
+  0.8272462141F, 0.8275745663F, 0.8279025732F, 0.8282302344F, 
+  0.8285575501F, 0.8288845199F, 0.8292111437F, 0.8295374215F, 
+  0.8298633530F, 0.8301889382F, 0.8305141768F, 0.8308390688F, 
+  0.8311636141F, 0.8314878124F, 0.8318116637F, 0.8321351678F, 
+  0.8324583246F, 0.8327811340F, 0.8331035957F, 0.8334257098F, 
+  0.8337474761F, 0.8340688944F, 0.8343899647F, 0.8347106867F, 
+  0.8350310605F, 0.8353510857F, 0.8356707624F, 0.8359900904F, 
+  0.8363090696F, 0.8366276999F, 0.8369459811F, 0.8372639131F, 
+  0.8375814958F, 0.8378987292F, 0.8382156130F, 0.8385321472F, 
+  0.8388483316F, 0.8391641662F, 0.8394796508F, 0.8397947853F, 
+  0.8401095697F, 0.8404240037F, 0.8407380873F, 0.8410518204F, 
+  0.8413652029F, 0.8416782347F, 0.8419909156F, 0.8423032456F, 
+  0.8426152245F, 0.8429268523F, 0.8432381289F, 0.8435490541F, 
+  0.8438596279F, 0.8441698502F, 0.8444797208F, 0.8447892396F, 
+  0.8450984067F, 0.8454072218F, 0.8457156849F, 0.8460237959F, 
+  0.8463315547F, 0.8466389612F, 0.8469460154F, 0.8472527170F, 
+  0.8475590661F, 0.8478650625F, 0.8481707063F, 0.8484759971F, 
+  0.8487809351F, 0.8490855201F, 0.8493897521F, 0.8496936308F, 
+  0.8499971564F, 0.8503003286F, 0.8506031474F, 0.8509056128F, 
+  0.8512077246F, 0.8515094828F, 0.8518108872F, 0.8521119379F, 
+  0.8524126348F, 0.8527129777F, 0.8530129666F, 0.8533126015F, 
+  0.8536118822F, 0.8539108087F, 0.8542093809F, 0.8545075988F, 
+  0.8548054623F, 0.8551029712F, 0.8554001257F, 0.8556969255F, 
+  0.8559933707F, 0.8562894611F, 0.8565851968F, 0.8568805775F, 
+  0.8571756034F, 0.8574702743F, 0.8577645902F, 0.8580585509F, 
+  0.8583521566F, 0.8586454070F, 0.8589383021F, 0.8592308420F, 
+  0.8595230265F, 0.8598148556F, 0.8601063292F, 0.8603974473F, 
+  0.8606882098F, 0.8609786167F, 0.8612686680F, 0.8615583636F, 
+  0.8618477034F, 0.8621366874F, 0.8624253156F, 0.8627135878F, 
+  0.8630015042F, 0.8632890646F, 0.8635762690F, 0.8638631173F, 
+  0.8641496096F, 0.8644357457F, 0.8647215257F, 0.8650069495F, 
+  0.8652920171F, 0.8655767283F, 0.8658610833F, 0.8661450820F, 
+  0.8664287243F, 0.8667120102F, 0.8669949397F, 0.8672775127F, 
+  0.8675597293F, 0.8678415894F, 0.8681230929F, 0.8684042398F, 
+  0.8686850302F, 0.8689654640F, 0.8692455412F, 0.8695252617F, 
+  0.8698046255F, 0.8700836327F, 0.8703622831F, 0.8706405768F, 
+  0.8709185138F, 0.8711960940F, 0.8714733174F, 0.8717501840F, 
+  0.8720266939F, 0.8723028469F, 0.8725786430F, 0.8728540824F, 
+  0.8731291648F, 0.8734038905F, 0.8736782592F, 0.8739522711F, 
+  0.8742259261F, 0.8744992242F, 0.8747721653F, 0.8750447496F, 
+  0.8753169770F, 0.8755888475F, 0.8758603611F, 0.8761315177F, 
+  0.8764023175F, 0.8766727603F, 0.8769428462F, 0.8772125752F, 
+  0.8774819474F, 0.8777509626F, 0.8780196209F, 0.8782879224F, 
+  0.8785558669F, 0.8788234546F, 0.8790906854F, 0.8793575594F, 
+  0.8796240765F, 0.8798902368F, 0.8801560403F, 0.8804214870F, 
+  0.8806865768F, 0.8809513099F, 0.8812156863F, 0.8814797059F, 
+  0.8817433687F, 0.8820066749F, 0.8822696243F, 0.8825322171F, 
+  0.8827944532F, 0.8830563327F, 0.8833178556F, 0.8835790219F, 
+  0.8838398316F, 0.8841002848F, 0.8843603815F, 0.8846201217F, 
+  0.8848795054F, 0.8851385327F, 0.8853972036F, 0.8856555182F, 
+  0.8859134764F, 0.8861710783F, 0.8864283239F, 0.8866852133F, 
+  0.8869417464F, 0.8871979234F, 0.8874537443F, 0.8877092090F, 
+  0.8879643177F, 0.8882190704F, 0.8884734671F, 0.8887275078F, 
+  0.8889811927F, 0.8892345216F, 0.8894874948F, 0.8897401122F, 
+  0.8899923738F, 0.8902442798F, 0.8904958301F, 0.8907470248F, 
+  0.8909978640F, 0.8912483477F, 0.8914984759F, 0.8917482487F, 
+  0.8919976662F, 0.8922467284F, 0.8924954353F, 0.8927437871F, 
+  0.8929917837F, 0.8932394252F, 0.8934867118F, 0.8937336433F, 
+  0.8939802199F, 0.8942264417F, 0.8944723087F, 0.8947178210F, 
+  0.8949629785F, 0.8952077815F, 0.8954522299F, 0.8956963239F, 
+  0.8959400634F, 0.8961834486F, 0.8964264795F, 0.8966691561F, 
+  0.8969114786F, 0.8971534470F, 0.8973950614F, 0.8976363219F, 
+  0.8978772284F, 0.8981177812F, 0.8983579802F, 0.8985978256F, 
+  0.8988373174F, 0.8990764556F, 0.8993152405F, 0.8995536720F, 
+  0.8997917502F, 0.9000294751F, 0.9002668470F, 0.9005038658F, 
+  0.9007405317F, 0.9009768446F, 0.9012128048F, 0.9014484123F, 
+  0.9016836671F, 0.9019185693F, 0.9021531191F, 0.9023873165F, 
+  0.9026211616F, 0.9028546546F, 0.9030877954F, 0.9033205841F, 
+  0.9035530210F, 0.9037851059F, 0.9040168392F, 0.9042482207F, 
+  0.9044792507F, 0.9047099293F, 0.9049402564F, 0.9051702323F, 
+  0.9053998569F, 0.9056291305F, 0.9058580531F, 0.9060866248F, 
+  0.9063148457F, 0.9065427159F, 0.9067702355F, 0.9069974046F, 
+  0.9072242233F, 0.9074506917F, 0.9076768100F, 0.9079025782F, 
+  0.9081279964F, 0.9083530647F, 0.9085777833F, 0.9088021523F, 
+  0.9090261717F, 0.9092498417F, 0.9094731623F, 0.9096961338F, 
+  0.9099187561F, 0.9101410295F, 0.9103629540F, 0.9105845297F, 
+  0.9108057568F, 0.9110266354F, 0.9112471656F, 0.9114673475F, 
+  0.9116871812F, 0.9119066668F, 0.9121258046F, 0.9123445945F, 
+  0.9125630367F, 0.9127811314F, 0.9129988786F, 0.9132162785F, 
+  0.9134333312F, 0.9136500368F, 0.9138663954F, 0.9140824073F, 
+  0.9142980724F, 0.9145133910F, 0.9147283632F, 0.9149429890F, 
+  0.9151572687F, 0.9153712023F, 0.9155847900F, 0.9157980319F, 
+  0.9160109282F, 0.9162234790F, 0.9164356844F, 0.9166475445F, 
+  0.9168590595F, 0.9170702296F, 0.9172810548F, 0.9174915354F, 
+  0.9177016714F, 0.9179114629F, 0.9181209102F, 0.9183300134F, 
+  0.9185387726F, 0.9187471879F, 0.9189552595F, 0.9191629876F, 
+  0.9193703723F, 0.9195774136F, 0.9197841119F, 0.9199904672F, 
+  0.9201964797F, 0.9204021495F, 0.9206074767F, 0.9208124616F, 
+  0.9210171043F, 0.9212214049F, 0.9214253636F, 0.9216289805F, 
+  0.9218322558F, 0.9220351896F, 0.9222377821F, 0.9224400335F, 
+  0.9226419439F, 0.9228435134F, 0.9230447423F, 0.9232456307F, 
+  0.9234461787F, 0.9236463865F, 0.9238462543F, 0.9240457822F, 
+  0.9242449704F, 0.9244438190F, 0.9246423282F, 0.9248404983F, 
+  0.9250383293F, 0.9252358214F, 0.9254329747F, 0.9256297896F, 
+  0.9258262660F, 0.9260224042F, 0.9262182044F, 0.9264136667F, 
+  0.9266087913F, 0.9268035783F, 0.9269980280F, 0.9271921405F, 
+  0.9273859160F, 0.9275793546F, 0.9277724566F, 0.9279652221F, 
+  0.9281576513F, 0.9283497443F, 0.9285415014F, 0.9287329227F, 
+  0.9289240084F, 0.9291147586F, 0.9293051737F, 0.9294952536F, 
+  0.9296849987F, 0.9298744091F, 0.9300634850F, 0.9302522266F, 
+  0.9304406340F, 0.9306287074F, 0.9308164471F, 0.9310038532F, 
+  0.9311909259F, 0.9313776654F, 0.9315640719F, 0.9317501455F, 
+  0.9319358865F, 0.9321212951F, 0.9323063713F, 0.9324911155F, 
+  0.9326755279F, 0.9328596085F, 0.9330433577F, 0.9332267756F, 
+  0.9334098623F, 0.9335926182F, 0.9337750434F, 0.9339571380F, 
+  0.9341389023F, 0.9343203366F, 0.9345014409F, 0.9346822155F, 
+  0.9348626606F, 0.9350427763F, 0.9352225630F, 0.9354020207F, 
+  0.9355811498F, 0.9357599503F, 0.9359384226F, 0.9361165667F, 
+  0.9362943830F, 0.9364718716F, 0.9366490327F, 0.9368258666F, 
+  0.9370023733F, 0.9371785533F, 0.9373544066F, 0.9375299335F, 
+  0.9377051341F, 0.9378800087F, 0.9380545576F, 0.9382287809F, 
+  0.9384026787F, 0.9385762515F, 0.9387494993F, 0.9389224223F, 
+  0.9390950209F, 0.9392672951F, 0.9394392453F, 0.9396108716F, 
+  0.9397821743F, 0.9399531536F, 0.9401238096F, 0.9402941427F, 
+  0.9404641530F, 0.9406338407F, 0.9408032061F, 0.9409722495F, 
+  0.9411409709F, 0.9413093707F, 0.9414774491F, 0.9416452062F, 
+  0.9418126424F, 0.9419797579F, 0.9421465528F, 0.9423130274F, 
+  0.9424791819F, 0.9426450166F, 0.9428105317F, 0.9429757274F, 
+  0.9431406039F, 0.9433051616F, 0.9434694005F, 0.9436333209F, 
+  0.9437969232F, 0.9439602074F, 0.9441231739F, 0.9442858229F, 
+  0.9444481545F, 0.9446101691F, 0.9447718669F, 0.9449332481F, 
+  0.9450943129F, 0.9452550617F, 0.9454154945F, 0.9455756118F, 
+  0.9457354136F, 0.9458949003F, 0.9460540721F, 0.9462129292F, 
+  0.9463714719F, 0.9465297003F, 0.9466876149F, 0.9468452157F, 
+  0.9470025031F, 0.9471594772F, 0.9473161384F, 0.9474724869F, 
+  0.9476285229F, 0.9477842466F, 0.9479396584F, 0.9480947585F, 
+  0.9482495470F, 0.9484040243F, 0.9485581906F, 0.9487120462F, 
+  0.9488655913F, 0.9490188262F, 0.9491717511F, 0.9493243662F, 
+  0.9494766718F, 0.9496286683F, 0.9497803557F, 0.9499317345F, 
+  0.9500828047F, 0.9502335668F, 0.9503840209F, 0.9505341673F, 
+  0.9506840062F, 0.9508335380F, 0.9509827629F, 0.9511316810F, 
+  0.9512802928F, 0.9514285984F, 0.9515765982F, 0.9517242923F, 
+  0.9518716810F, 0.9520187646F, 0.9521655434F, 0.9523120176F, 
+  0.9524581875F, 0.9526040534F, 0.9527496154F, 0.9528948739F, 
+  0.9530398292F, 0.9531844814F, 0.9533288310F, 0.9534728780F, 
+  0.9536166229F, 0.9537600659F, 0.9539032071F, 0.9540460470F, 
+  0.9541885858F, 0.9543308237F, 0.9544727611F, 0.9546143981F, 
+  0.9547557351F, 0.9548967723F, 0.9550375100F, 0.9551779485F, 
+  0.9553180881F, 0.9554579290F, 0.9555974714F, 0.9557367158F, 
+  0.9558756623F, 0.9560143112F, 0.9561526628F, 0.9562907174F, 
+  0.9564284752F, 0.9565659366F, 0.9567031017F, 0.9568399710F, 
+  0.9569765446F, 0.9571128229F, 0.9572488061F, 0.9573844944F, 
+  0.9575198883F, 0.9576549879F, 0.9577897936F, 0.9579243056F, 
+  0.9580585242F, 0.9581924497F, 0.9583260824F, 0.9584594226F, 
+  0.9585924705F, 0.9587252264F, 0.9588576906F, 0.9589898634F, 
+  0.9591217452F, 0.9592533360F, 0.9593846364F, 0.9595156465F, 
+  0.9596463666F, 0.9597767971F, 0.9599069382F, 0.9600367901F, 
+  0.9601663533F, 0.9602956279F, 0.9604246143F, 0.9605533128F, 
+  0.9606817236F, 0.9608098471F, 0.9609376835F, 0.9610652332F, 
+  0.9611924963F, 0.9613194733F, 0.9614461644F, 0.9615725699F, 
+  0.9616986901F, 0.9618245253F, 0.9619500757F, 0.9620753418F, 
+  0.9622003238F, 0.9623250219F, 0.9624494365F, 0.9625735679F, 
+  0.9626974163F, 0.9628209821F, 0.9629442656F, 0.9630672671F, 
+  0.9631899868F, 0.9633124251F, 0.9634345822F, 0.9635564585F, 
+  0.9636780543F, 0.9637993699F, 0.9639204056F, 0.9640411616F, 
+  0.9641616383F, 0.9642818359F, 0.9644017549F, 0.9645213955F, 
+  0.9646407579F, 0.9647598426F, 0.9648786497F, 0.9649971797F, 
+  0.9651154328F, 0.9652334092F, 0.9653511095F, 0.9654685337F, 
+  0.9655856823F, 0.9657025556F, 0.9658191538F, 0.9659354773F, 
+  0.9660515263F, 0.9661673013F, 0.9662828024F, 0.9663980300F, 
+  0.9665129845F, 0.9666276660F, 0.9667420750F, 0.9668562118F, 
+  0.9669700766F, 0.9670836698F, 0.9671969917F, 0.9673100425F, 
+  0.9674228227F, 0.9675353325F, 0.9676475722F, 0.9677595422F, 
+  0.9678712428F, 0.9679826742F, 0.9680938368F, 0.9682047309F, 
+  0.9683153569F, 0.9684257150F, 0.9685358056F, 0.9686456289F, 
+  0.9687551853F, 0.9688644752F, 0.9689734987F, 0.9690822564F, 
+  0.9691907483F, 0.9692989750F, 0.9694069367F, 0.9695146337F, 
+  0.9696220663F, 0.9697292349F, 0.9698361398F, 0.9699427813F, 
+  0.9700491597F, 0.9701552754F, 0.9702611286F, 0.9703667197F, 
+  0.9704720490F, 0.9705771169F, 0.9706819236F, 0.9707864695F, 
+  0.9708907549F, 0.9709947802F, 0.9710985456F, 0.9712020514F, 
+  0.9713052981F, 0.9714082859F, 0.9715110151F, 0.9716134862F, 
+  0.9717156993F, 0.9718176549F, 0.9719193532F, 0.9720207946F, 
+  0.9721219794F, 0.9722229080F, 0.9723235806F, 0.9724239976F, 
+  0.9725241593F, 0.9726240661F, 0.9727237183F, 0.9728231161F, 
+  0.9729222601F, 0.9730211503F, 0.9731197873F, 0.9732181713F, 
+  0.9733163027F, 0.9734141817F, 0.9735118088F, 0.9736091842F, 
+  0.9737063083F, 0.9738031814F, 0.9738998039F, 0.9739961760F, 
+  0.9740922981F, 0.9741881706F, 0.9742837938F, 0.9743791680F, 
+  0.9744742935F, 0.9745691707F, 0.9746637999F, 0.9747581814F, 
+  0.9748523157F, 0.9749462029F, 0.9750398435F, 0.9751332378F, 
+  0.9752263861F, 0.9753192887F, 0.9754119461F, 0.9755043585F, 
+  0.9755965262F, 0.9756884496F, 0.9757801291F, 0.9758715650F, 
+  0.9759627575F, 0.9760537071F, 0.9761444141F, 0.9762348789F, 
+  0.9763251016F, 0.9764150828F, 0.9765048228F, 0.9765943218F, 
+  0.9766835802F, 0.9767725984F, 0.9768613767F, 0.9769499154F, 
+  0.9770382149F, 0.9771262755F, 0.9772140976F, 0.9773016815F, 
+  0.9773890275F, 0.9774761360F, 0.9775630073F, 0.9776496418F, 
+  0.9777360398F, 0.9778222016F, 0.9779081277F, 0.9779938182F, 
+  0.9780792736F, 0.9781644943F, 0.9782494805F, 0.9783342326F, 
+  0.9784187509F, 0.9785030359F, 0.9785870877F, 0.9786709069F, 
+  0.9787544936F, 0.9788378484F, 0.9789209714F, 0.9790038631F, 
+  0.9790865238F, 0.9791689538F, 0.9792511535F, 0.9793331232F, 
+  0.9794148633F, 0.9794963742F, 0.9795776561F, 0.9796587094F, 
+  0.9797395345F, 0.9798201316F, 0.9799005013F, 0.9799806437F, 
+  0.9800605593F, 0.9801402483F, 0.9802197112F, 0.9802989483F, 
+  0.9803779600F, 0.9804567465F, 0.9805353082F, 0.9806136455F, 
+  0.9806917587F, 0.9807696482F, 0.9808473143F, 0.9809247574F, 
+  0.9810019778F, 0.9810789759F, 0.9811557519F, 0.9812323064F, 
+  0.9813086395F, 0.9813847517F, 0.9814606433F, 0.9815363147F, 
+  0.9816117662F, 0.9816869981F, 0.9817620108F, 0.9818368047F, 
+  0.9819113801F, 0.9819857374F, 0.9820598769F, 0.9821337989F, 
+  0.9822075038F, 0.9822809920F, 0.9823542638F, 0.9824273195F, 
+  0.9825001596F, 0.9825727843F, 0.9826451940F, 0.9827173891F, 
+  0.9827893700F, 0.9828611368F, 0.9829326901F, 0.9830040302F, 
+  0.9830751574F, 0.9831460720F, 0.9832167745F, 0.9832872652F, 
+  0.9833575444F, 0.9834276124F, 0.9834974697F, 0.9835671166F, 
+  0.9836365535F, 0.9837057806F, 0.9837747983F, 0.9838436071F, 
+  0.9839122072F, 0.9839805990F, 0.9840487829F, 0.9841167591F, 
+  0.9841845282F, 0.9842520903F, 0.9843194459F, 0.9843865953F, 
+  0.9844535389F, 0.9845202771F, 0.9845868101F, 0.9846531383F, 
+  0.9847192622F, 0.9847851820F, 0.9848508980F, 0.9849164108F, 
+  0.9849817205F, 0.9850468276F, 0.9851117324F, 0.9851764352F, 
+  0.9852409365F, 0.9853052366F, 0.9853693358F, 0.9854332344F, 
+  0.9854969330F, 0.9855604317F, 0.9856237309F, 0.9856868310F, 
+  0.9857497325F, 0.9858124355F, 0.9858749404F, 0.9859372477F, 
+  0.9859993577F, 0.9860612707F, 0.9861229871F, 0.9861845072F, 
+  0.9862458315F, 0.9863069601F, 0.9863678936F, 0.9864286322F, 
+  0.9864891764F, 0.9865495264F, 0.9866096826F, 0.9866696454F, 
+  0.9867294152F, 0.9867889922F, 0.9868483769F, 0.9869075695F, 
+  0.9869665706F, 0.9870253803F, 0.9870839991F, 0.9871424273F, 
+  0.9872006653F, 0.9872587135F, 0.9873165721F, 0.9873742415F, 
+  0.9874317222F, 0.9874890144F, 0.9875461185F, 0.9876030348F, 
+  0.9876597638F, 0.9877163057F, 0.9877726610F, 0.9878288300F, 
+  0.9878848130F, 0.9879406104F, 0.9879962225F, 0.9880516497F, 
+  0.9881068924F, 0.9881619509F, 0.9882168256F, 0.9882715168F, 
+  0.9883260249F, 0.9883803502F, 0.9884344931F, 0.9884884539F, 
+  0.9885422331F, 0.9885958309F, 0.9886492477F, 0.9887024838F, 
+  0.9887555397F, 0.9888084157F, 0.9888611120F, 0.9889136292F, 
+  0.9889659675F, 0.9890181273F, 0.9890701089F, 0.9891219128F, 
+  0.9891735392F, 0.9892249885F, 0.9892762610F, 0.9893273572F, 
+  0.9893782774F, 0.9894290219F, 0.9894795911F, 0.9895299853F, 
+  0.9895802049F, 0.9896302502F, 0.9896801217F, 0.9897298196F, 
+  0.9897793443F, 0.9898286961F, 0.9898778755F, 0.9899268828F, 
+  0.9899757183F, 0.9900243823F, 0.9900728753F, 0.9901211976F, 
+  0.9901693495F, 0.9902173314F, 0.9902651436F, 0.9903127865F, 
+  0.9903602605F, 0.9904075659F, 0.9904547031F, 0.9905016723F, 
+  0.9905484740F, 0.9905951086F, 0.9906415763F, 0.9906878775F, 
+  0.9907340126F, 0.9907799819F, 0.9908257858F, 0.9908714247F, 
+  0.9909168988F, 0.9909622086F, 0.9910073543F, 0.9910523364F, 
+  0.9910971552F, 0.9911418110F, 0.9911863042F, 0.9912306351F, 
+  0.9912748042F, 0.9913188117F, 0.9913626580F, 0.9914063435F, 
+  0.9914498684F, 0.9914932333F, 0.9915364383F, 0.9915794839F, 
+  0.9916223703F, 0.9916650981F, 0.9917076674F, 0.9917500787F, 
+  0.9917923323F, 0.9918344286F, 0.9918763679F, 0.9919181505F, 
+  0.9919597769F, 0.9920012473F, 0.9920425621F, 0.9920837217F, 
+  0.9921247263F, 0.9921655765F, 0.9922062724F, 0.9922468145F, 
+  0.9922872030F, 0.9923274385F, 0.9923675211F, 0.9924074513F, 
+  0.9924472294F, 0.9924868557F, 0.9925263306F, 0.9925656544F, 
+  0.9926048275F, 0.9926438503F, 0.9926827230F, 0.9927214461F, 
+  0.9927600199F, 0.9927984446F, 0.9928367208F, 0.9928748486F, 
+  0.9929128285F, 0.9929506608F, 0.9929883459F, 0.9930258841F, 
+  0.9930632757F, 0.9931005211F, 0.9931376207F, 0.9931745747F, 
+  0.9932113836F, 0.9932480476F, 0.9932845671F, 0.9933209425F, 
+  0.9933571742F, 0.9933932623F, 0.9934292074F, 0.9934650097F, 
+  0.9935006696F, 0.9935361874F, 0.9935715635F, 0.9936067982F, 
+  0.9936418919F, 0.9936768448F, 0.9937116574F, 0.9937463300F, 
+  0.9937808629F, 0.9938152565F, 0.9938495111F, 0.9938836271F, 
+  0.9939176047F, 0.9939514444F, 0.9939851465F, 0.9940187112F, 
+  0.9940521391F, 0.9940854303F, 0.9941185853F, 0.9941516044F, 
+  0.9941844879F, 0.9942172361F, 0.9942498495F, 0.9942823283F, 
+  0.9943146729F, 0.9943468836F, 0.9943789608F, 0.9944109047F, 
+  0.9944427158F, 0.9944743944F, 0.9945059408F, 0.9945373553F, 
+  0.9945686384F, 0.9945997902F, 0.9946308112F, 0.9946617017F, 
+  0.9946924621F, 0.9947230926F, 0.9947535937F, 0.9947839656F, 
+  0.9948142086F, 0.9948443232F, 0.9948743097F, 0.9949041683F, 
+  0.9949338995F, 0.9949635035F, 0.9949929807F, 0.9950223315F, 
+  0.9950515561F, 0.9950806549F, 0.9951096282F, 0.9951384764F, 
+  0.9951671998F, 0.9951957987F, 0.9952242735F, 0.9952526245F, 
+  0.9952808520F, 0.9953089564F, 0.9953369380F, 0.9953647971F, 
+  0.9953925340F, 0.9954201491F, 0.9954476428F, 0.9954750153F, 
+  0.9955022670F, 0.9955293981F, 0.9955564092F, 0.9955833003F, 
+  0.9956100720F, 0.9956367245F, 0.9956632582F, 0.9956896733F, 
+  0.9957159703F, 0.9957421494F, 0.9957682110F, 0.9957941553F, 
+  0.9958199828F, 0.9958456937F, 0.9958712884F, 0.9958967672F, 
+  0.9959221305F, 0.9959473784F, 0.9959725115F, 0.9959975300F, 
+  0.9960224342F, 0.9960472244F, 0.9960719011F, 0.9960964644F, 
+  0.9961209148F, 0.9961452525F, 0.9961694779F, 0.9961935913F, 
+  0.9962175930F, 0.9962414834F, 0.9962652627F, 0.9962889313F, 
+  0.9963124895F, 0.9963359377F, 0.9963592761F, 0.9963825051F, 
+  0.9964056250F, 0.9964286361F, 0.9964515387F, 0.9964743332F, 
+  0.9964970198F, 0.9965195990F, 0.9965420709F, 0.9965644360F, 
+  0.9965866946F, 0.9966088469F, 0.9966308932F, 0.9966528340F, 
+  0.9966746695F, 0.9966964001F, 0.9967180260F, 0.9967395475F, 
+  0.9967609651F, 0.9967822789F, 0.9968034894F, 0.9968245968F, 
+  0.9968456014F, 0.9968665036F, 0.9968873037F, 0.9969080019F, 
+  0.9969285987F, 0.9969490942F, 0.9969694889F, 0.9969897830F, 
+  0.9970099769F, 0.9970300708F, 0.9970500651F, 0.9970699601F, 
+  0.9970897561F, 0.9971094533F, 0.9971290522F, 0.9971485531F, 
+  0.9971679561F, 0.9971872617F, 0.9972064702F, 0.9972255818F, 
+  0.9972445968F, 0.9972635157F, 0.9972823386F, 0.9973010659F, 
+  0.9973196980F, 0.9973382350F, 0.9973566773F, 0.9973750253F, 
+  0.9973932791F, 0.9974114392F, 0.9974295059F, 0.9974474793F, 
+  0.9974653599F, 0.9974831480F, 0.9975008438F, 0.9975184476F, 
+  0.9975359598F, 0.9975533806F, 0.9975707104F, 0.9975879495F, 
+  0.9976050981F, 0.9976221566F, 0.9976391252F, 0.9976560043F, 
+  0.9976727941F, 0.9976894950F, 0.9977061073F, 0.9977226312F, 
+  0.9977390671F, 0.9977554152F, 0.9977716759F, 0.9977878495F, 
+  0.9978039361F, 0.9978199363F, 0.9978358501F, 0.9978516780F, 
+  0.9978674202F, 0.9978830771F, 0.9978986488F, 0.9979141358F, 
+  0.9979295383F, 0.9979448566F, 0.9979600909F, 0.9979752417F, 
+  0.9979903091F, 0.9980052936F, 0.9980201952F, 0.9980350145F, 
+  0.9980497515F, 0.9980644067F, 0.9980789804F, 0.9980934727F, 
+  0.9981078841F, 0.9981222147F, 0.9981364649F, 0.9981506350F, 
+  0.9981647253F, 0.9981787360F, 0.9981926674F, 0.9982065199F, 
+  0.9982202936F, 0.9982339890F, 0.9982476062F, 0.9982611456F, 
+  0.9982746074F, 0.9982879920F, 0.9983012996F, 0.9983145304F, 
+  0.9983276849F, 0.9983407632F, 0.9983537657F, 0.9983666926F, 
+  0.9983795442F, 0.9983923208F, 0.9984050226F, 0.9984176501F, 
+  0.9984302033F, 0.9984426827F, 0.9984550884F, 0.9984674208F, 
+  0.9984796802F, 0.9984918667F, 0.9985039808F, 0.9985160227F, 
+  0.9985279926F, 0.9985398909F, 0.9985517177F, 0.9985634734F, 
+  0.9985751583F, 0.9985867727F, 0.9985983167F, 0.9986097907F, 
+  0.9986211949F, 0.9986325297F, 0.9986437953F, 0.9986549919F, 
+  0.9986661199F, 0.9986771795F, 0.9986881710F, 0.9986990946F, 
+  0.9987099507F, 0.9987207394F, 0.9987314611F, 0.9987421161F, 
+  0.9987527045F, 0.9987632267F, 0.9987736829F, 0.9987840734F, 
+  0.9987943985F, 0.9988046584F, 0.9988148534F, 0.9988249838F, 
+  0.9988350498F, 0.9988450516F, 0.9988549897F, 0.9988648641F, 
+  0.9988746753F, 0.9988844233F, 0.9988941086F, 0.9989037313F, 
+  0.9989132918F, 0.9989227902F, 0.9989322269F, 0.9989416021F, 
+  0.9989509160F, 0.9989601690F, 0.9989693613F, 0.9989784931F, 
+  0.9989875647F, 0.9989965763F, 0.9990055283F, 0.9990144208F, 
+  0.9990232541F, 0.9990320286F, 0.9990407443F, 0.9990494016F, 
+  0.9990580008F, 0.9990665421F, 0.9990750257F, 0.9990834519F, 
+  0.9990918209F, 0.9991001331F, 0.9991083886F, 0.9991165877F, 
+  0.9991247307F, 0.9991328177F, 0.9991408491F, 0.9991488251F, 
+  0.9991567460F, 0.9991646119F, 0.9991724232F, 0.9991801801F, 
+  0.9991878828F, 0.9991955316F, 0.9992031267F, 0.9992106684F, 
+  0.9992181569F, 0.9992255925F, 0.9992329753F, 0.9992403057F, 
+  0.9992475839F, 0.9992548101F, 0.9992619846F, 0.9992691076F, 
+  0.9992761793F, 0.9992832001F, 0.9992901701F, 0.9992970895F, 
+  0.9993039587F, 0.9993107777F, 0.9993175470F, 0.9993242667F, 
+  0.9993309371F, 0.9993375583F, 0.9993441307F, 0.9993506545F, 
+  0.9993571298F, 0.9993635570F, 0.9993699362F, 0.9993762678F, 
+  0.9993825519F, 0.9993887887F, 0.9993949785F, 0.9994011216F, 
+  0.9994072181F, 0.9994132683F, 0.9994192725F, 0.9994252307F, 
+  0.9994311434F, 0.9994370107F, 0.9994428327F, 0.9994486099F, 
+  0.9994543423F, 0.9994600303F, 0.9994656739F, 0.9994712736F, 
+  0.9994768294F, 0.9994823417F, 0.9994878105F, 0.9994932363F, 
+  0.9994986191F, 0.9995039592F, 0.9995092568F, 0.9995145122F, 
+  0.9995197256F, 0.9995248971F, 0.9995300270F, 0.9995351156F, 
+  0.9995401630F, 0.9995451695F, 0.9995501352F, 0.9995550604F, 
+  0.9995599454F, 0.9995647903F, 0.9995695953F, 0.9995743607F, 
+  0.9995790866F, 0.9995837734F, 0.9995884211F, 0.9995930300F, 
+  0.9995976004F, 0.9996021324F, 0.9996066263F, 0.9996110822F, 
+  0.9996155004F, 0.9996198810F, 0.9996242244F, 0.9996285306F, 
+  0.9996327999F, 0.9996370326F, 0.9996412287F, 0.9996453886F, 
+  0.9996495125F, 0.9996536004F, 0.9996576527F, 0.9996616696F, 
+  0.9996656512F, 0.9996695977F, 0.9996735094F, 0.9996773865F, 
+  0.9996812291F, 0.9996850374F, 0.9996888118F, 0.9996925523F, 
+  0.9996962591F, 0.9996999325F, 0.9997035727F, 0.9997071798F, 
+  0.9997107541F, 0.9997142957F, 0.9997178049F, 0.9997212818F, 
+  0.9997247266F, 0.9997281396F, 0.9997315209F, 0.9997348708F, 
+  0.9997381893F, 0.9997414767F, 0.9997447333F, 0.9997479591F, 
+  0.9997511544F, 0.9997543194F, 0.9997574542F, 0.9997605591F, 
+  0.9997636342F, 0.9997666797F, 0.9997696958F, 0.9997726828F, 
+  0.9997756407F, 0.9997785698F, 0.9997814703F, 0.9997843423F, 
+  0.9997871860F, 0.9997900016F, 0.9997927894F, 0.9997955494F, 
+  0.9997982818F, 0.9998009869F, 0.9998036648F, 0.9998063157F, 
+  0.9998089398F, 0.9998115373F, 0.9998141082F, 0.9998166529F, 
+  0.9998191715F, 0.9998216642F, 0.9998241311F, 0.9998265724F, 
+  0.9998289884F, 0.9998313790F, 0.9998337447F, 0.9998360854F, 
+  0.9998384015F, 0.9998406930F, 0.9998429602F, 0.9998452031F, 
+  0.9998474221F, 0.9998496171F, 0.9998517885F, 0.9998539364F, 
+  0.9998560610F, 0.9998581624F, 0.9998602407F, 0.9998622962F, 
+  0.9998643291F, 0.9998663394F, 0.9998683274F, 0.9998702932F, 
+  0.9998722370F, 0.9998741589F, 0.9998760591F, 0.9998779378F, 
+  0.9998797952F, 0.9998816313F, 0.9998834464F, 0.9998852406F, 
+  0.9998870141F, 0.9998887670F, 0.9998904995F, 0.9998922117F, 
+  0.9998939039F, 0.9998955761F, 0.9998972285F, 0.9998988613F, 
+  0.9999004746F, 0.9999020686F, 0.9999036434F, 0.9999051992F, 
+  0.9999067362F, 0.9999082544F, 0.9999097541F, 0.9999112354F, 
+  0.9999126984F, 0.9999141433F, 0.9999155703F, 0.9999169794F, 
+  0.9999183709F, 0.9999197449F, 0.9999211014F, 0.9999224408F, 
+  0.9999237631F, 0.9999250684F, 0.9999263570F, 0.9999276289F, 
+  0.9999288843F, 0.9999301233F, 0.9999313461F, 0.9999325529F, 
+  0.9999337437F, 0.9999349187F, 0.9999360780F, 0.9999372218F, 
+  0.9999383503F, 0.9999394635F, 0.9999405616F, 0.9999416447F, 
+  0.9999427129F, 0.9999437665F, 0.9999448055F, 0.9999458301F, 
+  0.9999468404F, 0.9999478365F, 0.9999488185F, 0.9999497867F, 
+  0.9999507411F, 0.9999516819F, 0.9999526091F, 0.9999535230F, 
+  0.9999544236F, 0.9999553111F, 0.9999561856F, 0.9999570472F, 
+  0.9999578960F, 0.9999587323F, 0.9999595560F, 0.9999603674F, 
+  0.9999611666F, 0.9999619536F, 0.9999627286F, 0.9999634917F, 
+  0.9999642431F, 0.9999649828F, 0.9999657110F, 0.9999664278F, 
+  0.9999671334F, 0.9999678278F, 0.9999685111F, 0.9999691835F, 
+  0.9999698451F, 0.9999704960F, 0.9999711364F, 0.9999717662F, 
+  0.9999723858F, 0.9999729950F, 0.9999735942F, 0.9999741834F, 
+  0.9999747626F, 0.9999753321F, 0.9999758919F, 0.9999764421F, 
+  0.9999769828F, 0.9999775143F, 0.9999780364F, 0.9999785495F, 
+  0.9999790535F, 0.9999795485F, 0.9999800348F, 0.9999805124F, 
+  0.9999809813F, 0.9999814417F, 0.9999818938F, 0.9999823375F, 
+  0.9999827731F, 0.9999832005F, 0.9999836200F, 0.9999840316F, 
+  0.9999844353F, 0.9999848314F, 0.9999852199F, 0.9999856008F, 
+  0.9999859744F, 0.9999863407F, 0.9999866997F, 0.9999870516F, 
+  0.9999873965F, 0.9999877345F, 0.9999880656F, 0.9999883900F, 
+  0.9999887078F, 0.9999890190F, 0.9999893237F, 0.9999896220F, 
+  0.9999899140F, 0.9999901999F, 0.9999904796F, 0.9999907533F, 
+  0.9999910211F, 0.9999912830F, 0.9999915391F, 0.9999917896F, 
+  0.9999920345F, 0.9999922738F, 0.9999925077F, 0.9999927363F, 
+  0.9999929596F, 0.9999931777F, 0.9999933907F, 0.9999935987F, 
+  0.9999938018F, 0.9999940000F, 0.9999941934F, 0.9999943820F, 
+  0.9999945661F, 0.9999947456F, 0.9999949206F, 0.9999950912F, 
+  0.9999952575F, 0.9999954195F, 0.9999955773F, 0.9999957311F, 
+  0.9999958807F, 0.9999960265F, 0.9999961683F, 0.9999963063F, 
+  0.9999964405F, 0.9999965710F, 0.9999966979F, 0.9999968213F, 
+  0.9999969412F, 0.9999970576F, 0.9999971707F, 0.9999972805F, 
+  0.9999973871F, 0.9999974905F, 0.9999975909F, 0.9999976881F, 
+  0.9999977824F, 0.9999978738F, 0.9999979624F, 0.9999980481F, 
+  0.9999981311F, 0.9999982115F, 0.9999982892F, 0.9999983644F, 
+  0.9999984370F, 0.9999985072F, 0.9999985750F, 0.9999986405F, 
+  0.9999987037F, 0.9999987647F, 0.9999988235F, 0.9999988802F, 
+  0.9999989348F, 0.9999989873F, 0.9999990379F, 0.9999990866F, 
+  0.9999991334F, 0.9999991784F, 0.9999992217F, 0.9999992632F, 
+  0.9999993030F, 0.9999993411F, 0.9999993777F, 0.9999994128F, 
+  0.9999994463F, 0.9999994784F, 0.9999995091F, 0.9999995384F, 
+  0.9999995663F, 0.9999995930F, 0.9999996184F, 0.9999996426F, 
+  0.9999996657F, 0.9999996876F, 0.9999997084F, 0.9999997282F, 
+  0.9999997469F, 0.9999997647F, 0.9999997815F, 0.9999997973F, 
+  0.9999998123F, 0.9999998265F, 0.9999998398F, 0.9999998524F, 
+  0.9999998642F, 0.9999998753F, 0.9999998857F, 0.9999998954F, 
+  0.9999999045F, 0.9999999130F, 0.9999999209F, 0.9999999282F, 
+  0.9999999351F, 0.9999999414F, 0.9999999472F, 0.9999999526F, 
+  0.9999999576F, 0.9999999622F, 0.9999999664F, 0.9999999702F, 
+  0.9999999737F, 0.9999999769F, 0.9999999798F, 0.9999999824F, 
+  0.9999999847F, 0.9999999868F, 0.9999999887F, 0.9999999904F, 
+  0.9999999919F, 0.9999999932F, 0.9999999943F, 0.9999999953F, 
+  0.9999999961F, 0.9999999969F, 0.9999999975F, 0.9999999980F, 
+  0.9999999985F, 0.9999999988F, 0.9999999991F, 0.9999999993F, 
+  0.9999999995F, 0.9999999997F, 0.9999999998F, 0.9999999999F, 
+  0.9999999999F, 1.0000000000F, 1.0000000000F, 1.0000000000F, 
+  1.0000000000F, 1.0000000000F, 1.0000000000F, 1.0000000000F, 
+};
+
+static float *vwin[8] = {
+  vwin64,
+  vwin128,
+  vwin256,
+  vwin512,
+  vwin1024,
+  vwin2048,
+  vwin4096,
+  vwin8192,
+};
+
+float *_vorbis_window_get(int n){
+  return vwin[n];
+}
+
+void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
+			  int lW,int W,int nW){
+  lW=(W?lW:0);
+  nW=(W?nW:0);
+  
+  {
+    float *windowLW=vwin[winno[lW]];
+    float *windowNW=vwin[winno[nW]];
+
+    long n=blocksizes[W];
+    long ln=blocksizes[lW];
+    long rn=blocksizes[nW];
+    
+    long leftbegin=n/4-ln/4;
+    long leftend=leftbegin+ln/2;
+    
+    long rightbegin=n/2+n/4-rn/4;
+    long rightend=rightbegin+rn/2;
+    
+    int i,p;
+    
+    for(i=0;i<leftbegin;i++)
+      d[i]=0.f;
+    
+    for(p=0;i<leftend;i++,p++)
+      d[i]*=windowLW[p];
+    
+    for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
+      d[i]*=windowNW[p];
+    
+    for(;i<n;i++)
+      d[i]=0.f;
+  }
+}
+
Index: /libvorbis-1.2.0/lib/window.h
===================================================================
--- /libvorbis-1.2.0/lib/window.h	(revision 16)
+++ /libvorbis-1.2.0/lib/window.h	(revision 16)
@@ -0,0 +1,26 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: window functions
+ last mod: $Id: window.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_WINDOW_
+#define _V_WINDOW_
+
+extern float *_vorbis_window_get(int n);
+extern void _vorbis_apply_window(float *d,int *winno,long *blocksizes,
+                          int lW,int W,int nW);
+
+
+#endif
Index: /libvorbis-1.2.0/libvorbis.spec
===================================================================
--- /libvorbis-1.2.0/libvorbis.spec	(revision 16)
+++ /libvorbis-1.2.0/libvorbis.spec	(revision 16)
@@ -0,0 +1,118 @@
+Name:		libvorbis
+Version:	1.2.0
+Release:	0.xiph.1
+Summary:	The Vorbis General Audio Compression Codec.
+
+Group:		System Environment/Libraries
+License:	BSD
+URL:		http://www.xiph.org/
+Vendor:		Xiph.org Foundation <team@xiph.org>
+Source:		http://www.vorbis.com/files/1.0.1/unix/%{name}-%{version}.tar.gz
+BuildRoot:	%{_tmppath}/%{name}-%{version}-root
+
+# We're forced to use an epoch since both Red Hat and Ximian use it in their
+# rc packages
+Epoch:          2
+# Dirty trick to tell rpm that this package actually provides what the
+# last rc and beta was offering
+Provides:       %{name} = %{epoch}:1.0rc3-%{release}
+Provides:       %{name} = %{epoch}:1.0beta4-%{release}
+
+Requires:	libogg >= 1.1
+BuildRequires:	libogg-devel >= 1.1
+
+%description
+Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free,
+general-purpose compressed audio format for audio and music at fixed 
+and variable bitrates from 16 to 128 kbps/channel.
+
+%package devel
+Summary: 	Vorbis Library Development
+Group: 		Development/Libraries
+Requires:	libogg-devel >= 1.1
+Requires:	libvorbis = %{version}
+# Dirty trick to tell rpm that this package actually provides what the
+# last rc and beta was offering
+Provides:       %{name}-devel = %{epoch}:1.0rc3-%{release}
+Provides:       %{name}-devel = %{epoch}:1.0beta4-%{release}
+
+%description devel
+The libvorbis-devel package contains the header files, static libraries 
+and documentation needed to develop applications with libvorbis.
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} --enable-static
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean 
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS COPYING README
+%{_libdir}/libvorbis.so.*
+%{_libdir}/libvorbisfile.so.*
+%{_libdir}/libvorbisenc.so.*
+
+%files devel
+%doc doc/*.html
+%doc doc/*.png
+%doc doc/*.txt
+%doc doc/vorbisfile
+%doc doc/vorbisenc
+%{_datadir}/aclocal/vorbis.m4
+%dir %{_includedir}/vorbis
+%{_includedir}/vorbis/codec.h
+%{_includedir}/vorbis/vorbisfile.h
+%{_includedir}/vorbis/vorbisenc.h
+%{_libdir}/libvorbis.a
+%{_libdir}/libvorbis.la
+%{_libdir}/libvorbis.so
+%{_libdir}/libvorbisfile.a
+%{_libdir}/libvorbisfile.la
+%{_libdir}/libvorbisfile.so
+%{_libdir}/libvorbisenc.a
+%{_libdir}/libvorbisenc.la
+%{_libdir}/libvorbisenc.so
+%{_libdir}/pkgconfig/vorbis.pc
+%{_libdir}/pkgconfig/vorbisfile.pc
+%{_libdir}/pkgconfig/vorbisenc.pc
+
+%changelog
+* Thu Jun 10 2004 Thomas Vander Stichele <thomas at apestaart dot org>
+- autogenerate from configure
+- fix download location
+- remove Prefix
+- own include dir
+- move ldconfig runs to -p scripts
+- change Release tag to include xiph
+
+* Tue Oct 07 2003 Warren Dukes <shank@xiph.org>
+- update for 1.0.1 release
+
+* Sun Jul 14 2002 Thomas Vander Stichele <thomas@apestaart.org>
+- Added BuildRequires:
+- updated for 1.0 release
+
+* Sat May 25 2002 Michael Smith <msmith@icecast.org>
+- Fixed requires, copyright string.
+* Sun Dec 31 2001 Jack Moffitt <jack@xiph.org>
+- Updated for rc3 release.
+
+* Sun Oct 07 2001 Jack Moffitt <jack@xiph.org>
+- Updated for configurable prefixes
+
+* Sat Oct 21 2000 Jack Moffitt <jack@icecast.org>
+- initial spec file created
Index: /libvorbis-1.2.0/libvorbis.spec.in
===================================================================
--- /libvorbis-1.2.0/libvorbis.spec.in	(revision 16)
+++ /libvorbis-1.2.0/libvorbis.spec.in	(revision 16)
@@ -0,0 +1,118 @@
+Name:		libvorbis
+Version:	@VERSION@
+Release:	0.xiph.1
+Summary:	The Vorbis General Audio Compression Codec.
+
+Group:		System Environment/Libraries
+License:	BSD
+URL:		http://www.xiph.org/
+Vendor:		Xiph.org Foundation <team@xiph.org>
+Source:		http://www.vorbis.com/files/1.0.1/unix/%{name}-%{version}.tar.gz
+BuildRoot:	%{_tmppath}/%{name}-%{version}-root
+
+# We're forced to use an epoch since both Red Hat and Ximian use it in their
+# rc packages
+Epoch:          2
+# Dirty trick to tell rpm that this package actually provides what the
+# last rc and beta was offering
+Provides:       %{name} = %{epoch}:1.0rc3-%{release}
+Provides:       %{name} = %{epoch}:1.0beta4-%{release}
+
+Requires:	libogg >= 1.1
+BuildRequires:	libogg-devel >= 1.1
+
+%description
+Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free,
+general-purpose compressed audio format for audio and music at fixed 
+and variable bitrates from 16 to 128 kbps/channel.
+
+%package devel
+Summary: 	Vorbis Library Development
+Group: 		Development/Libraries
+Requires:	libogg-devel >= 1.1
+Requires:	libvorbis = %{version}
+# Dirty trick to tell rpm that this package actually provides what the
+# last rc and beta was offering
+Provides:       %{name}-devel = %{epoch}:1.0rc3-%{release}
+Provides:       %{name}-devel = %{epoch}:1.0beta4-%{release}
+
+%description devel
+The libvorbis-devel package contains the header files, static libraries 
+and documentation needed to develop applications with libvorbis.
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{_prefix} --enable-static
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean 
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS COPYING README
+%{_libdir}/libvorbis.so.*
+%{_libdir}/libvorbisfile.so.*
+%{_libdir}/libvorbisenc.so.*
+
+%files devel
+%doc doc/*.html
+%doc doc/*.png
+%doc doc/*.txt
+%doc doc/vorbisfile
+%doc doc/vorbisenc
+%{_datadir}/aclocal/vorbis.m4
+%dir %{_includedir}/vorbis
+%{_includedir}/vorbis/codec.h
+%{_includedir}/vorbis/vorbisfile.h
+%{_includedir}/vorbis/vorbisenc.h
+%{_libdir}/libvorbis.a
+%{_libdir}/libvorbis.la
+%{_libdir}/libvorbis.so
+%{_libdir}/libvorbisfile.a
+%{_libdir}/libvorbisfile.la
+%{_libdir}/libvorbisfile.so
+%{_libdir}/libvorbisenc.a
+%{_libdir}/libvorbisenc.la
+%{_libdir}/libvorbisenc.so
+%{_libdir}/pkgconfig/vorbis.pc
+%{_libdir}/pkgconfig/vorbisfile.pc
+%{_libdir}/pkgconfig/vorbisenc.pc
+
+%changelog
+* Thu Jun 10 2004 Thomas Vander Stichele <thomas at apestaart dot org>
+- autogenerate from configure
+- fix download location
+- remove Prefix
+- own include dir
+- move ldconfig runs to -p scripts
+- change Release tag to include xiph
+
+* Tue Oct 07 2003 Warren Dukes <shank@xiph.org>
+- update for 1.0.1 release
+
+* Sun Jul 14 2002 Thomas Vander Stichele <thomas@apestaart.org>
+- Added BuildRequires:
+- updated for 1.0 release
+
+* Sat May 25 2002 Michael Smith <msmith@icecast.org>
+- Fixed requires, copyright string.
+* Sun Dec 31 2001 Jack Moffitt <jack@xiph.org>
+- Updated for rc3 release.
+
+* Sun Oct 07 2001 Jack Moffitt <jack@xiph.org>
+- Updated for configurable prefixes
+
+* Sat Oct 21 2000 Jack Moffitt <jack@icecast.org>
+- initial spec file created
Index: /libvorbis-1.2.0/ltmain.sh
===================================================================
--- /libvorbis-1.2.0/ltmain.sh	(revision 16)
+++ /libvorbis-1.2.0/ltmain.sh	(revision 16)
@@ -0,0 +1,6871 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+basename="s,^.*/,,g"
+
+# 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:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION="1.5.22 Debian 1.5.22-4"
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# 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
+
+# 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
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# 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'
+# 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
+  SP2NL='tr \040 \012'
+  NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  SP2NL='tr \100 \n'
+  NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+# NLS nuisances.
+# 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).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# 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 "$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" || {
+        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+	exit $EXIT_FAILURE
+      }
+    fi
+
+    $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# 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 ()
+{
+  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 -e '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_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 ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      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.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  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
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run 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
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    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
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $exit_status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      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 have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    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}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $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"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --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 $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag)
+    prevopt="--tag"
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no) 
+  ;;
+shared)
+  build_libtool_libs=no
+  build_old_libs=yes
+  ;;
+static)
+  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+  ;;
+esac
+
+# 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=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # 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=
+
+    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)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-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,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # 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.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qlibobj="\"$qlibobj\"" ;;
+    esac
+    test "X$libobj" != "X$qlibobj" \
+	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
+	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # 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
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      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"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    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 $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "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."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # 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
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	exit_status=$?
+	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $exit_status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      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."
+
+	$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
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    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"
+      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"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      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."
+
+	$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
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # 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=
+
+    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=
+    notinst_path= # paths that contain not-installed libtool libraries
+    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
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	fi
+	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
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$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"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$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 (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		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.
+		  libobjs="$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
+		  non_pic_objects="$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"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  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
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	darwin_framework|darwin_framework_skip)
+	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  prev=
+	  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
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -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
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework|-arch|-isysroot)
+	case " $CC " in
+	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
+		prev=darwin_framework_skip ;;
+	  *) compiler_flags="$compiler_flags $arg"
+	     prev=darwin_framework ;;
+	esac
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	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*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    absdir="$dir"
+	    notinst_path="$notinst_path $dir"
+	  fi
+	  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*)
+	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$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*)
+	    # 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 -framework System"
+	    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
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -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* pass through architecture-specific compiler args for GCC
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -pg 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*|-pg| \
+      -t[45]*|-txscale*|@*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  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*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# 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
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  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.
+	    libobjs="$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
+	    non_pic_objects="$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"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_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.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    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\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $exit_status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    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 test "X$duplicate_deps" = "Xyes" ; 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 test "X$duplicate_compiler_generated_deps" = "Xyes" ; 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
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  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
+      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%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
+	esac
+      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)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; 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 (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  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
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    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
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  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
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # 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)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 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 used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    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
+	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# 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
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	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
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    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"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  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
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  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
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# 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
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    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
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  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"
+	  # 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*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    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 test "X$duplicate_deps" = "Xyes" ; 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 -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
+	      *" $dir "*) ;;
+	      *" $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
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if 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
+	    realname="$2"
+	    shift; 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*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    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 module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null |
+                      $EGREP ": [^:]* bundle" >/dev/null ; 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
+		    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; 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
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    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; 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*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   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 test "X$duplicate_deps" = "Xyes" ; 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)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  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 "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      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"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # 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*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      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
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# 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="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # 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)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  *)
+	    $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	    $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	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]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	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]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	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]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	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
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  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
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  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
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	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
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      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)
+	       ;;
+	    $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
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      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 "$lib_search_path " | ${SED} -e "s% $path % %g"`
+	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -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*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-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.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		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
+		  deplib_match=$2
+		  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
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    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
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC $LTCFLAGS -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; 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
+		    deplib_match=$2
+		    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
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      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} 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
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      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 \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 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
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  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" | ${SED} -e "1s,^X,," -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 is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	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
+
+
+      # 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
+	realname="$2"
+	shift; 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`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "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"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$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"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  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
+	  $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:" &&
+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # 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=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$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\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    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 ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "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"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  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\"
+	  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
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$mode" = relink; then
+	      $run eval '(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
+	  $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
+	      $show "${rm}r $gentop"
+	      $run ${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
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run 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 "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $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
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	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"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${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"
+	# $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"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      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 / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      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*)
+	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$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
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$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 arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
+	    else
+	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # 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/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  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*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+          case $host in
+          *cygwin* | *mingw* )
+            if test -f "$output_objdir/${outputname}.def" ; then
+              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+            else
+              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+             fi
+            ;;
+          * )
+            compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+            finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+            ;;
+          esac
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	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
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; 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.
+	$show "$link_command"
+	$run eval "$link_command"
+	exit_status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $exit_status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      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.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run 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"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      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.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "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}\" || 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
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; 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 our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+            output_name=`basename $output`
+            output_path=`dirname $output`
+            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
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   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* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.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 DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# 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 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS.  */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#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);
+int    check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  DEBUG("(main) argv[0]      : %s\n",argv[0]);
+  DEBUG("(main) program_name : %s\n",program_name);
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+            cat >> $cwrappersource <<EOF
+  newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+            cat >> $cwrappersource <<"EOF"
+  newargz[1] = find_executable(argv[0]);
+  if (newargz[1] == NULL)
+    lt_fatal("Couldn't find %s", argv[0]);
+  DEBUG("(main) found exe at : %s\n",newargz[1]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+
+  for (i=0; i<argc+1; i++)
+  {
+    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
+    ;
+  }
+
+EOF
+
+            case $host_os in
+              mingw*)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",(char const **)newargz);
+EOF
+              ;;
+              *)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+              ;;
+            esac
+
+            cat >> $cwrappersource <<"EOF"
+  return 127;
+}
+
+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;
+
+  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0) &&
+      (
+        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+       ((st.st_mode & S_IXUSR) == S_IXUSR))
+      )
+    return 1;
+  else
+    return 0;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise */
+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;
+
+  DEBUG("(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 *
+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);
+}
+EOF
+          # we should really use a build-platform specific compiler
+          # here, but OTOH, the wrappers (shell script and this C one)
+          # are only useful if you want to execute the "real" binary.
+          # Since the "real" binary is built for $host, then this
+          # wrapper might as well be built for $host, too.
+          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+          ;;
+        esac
+        $rm $output
+        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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'
+
+# 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 variable:
+  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 >> $output "\
+
+  # 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
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  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 >> $output "\
+
+    # 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 $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  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 >> $output "\
+    # 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 >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    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*)
+	  $echo >> $output "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    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 $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      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"
+	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"
+	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
+	# 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
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    exit_status=$?
+	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+	      exit $exit_status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$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
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_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
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	       test "$len" -le "$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=
+	    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
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "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}\" || 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
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; 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.
+      if test -z "$run"; then
+	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)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    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) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_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
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # 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.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # 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.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	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.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# 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
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "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.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run 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
+	      if test "$linkname" != "$realname"; then
+                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || {
+	      lt_exit=$?
+
+	      # Restore the uninstalled library and exit
+	      if test "$mode" = relink; then
+		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	      fi
+
+	      exit $lt_exit
+	    }
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run 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
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run 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
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  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
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo 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.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo 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.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir=`func_mktempdir`
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    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)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    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.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && 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"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "X----------------------------------------------------------------------" | $Xsed
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	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 (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # 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
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    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
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      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 (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $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.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $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)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $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 (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # 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
+      $show "$rm $rmfiles"
+      $run $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
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [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
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+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 \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [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: $modename [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
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always 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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [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
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+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: $modename [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."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# 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
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
Index: /libvorbis-1.2.0/macos/compat/strdup.c
===================================================================
--- /libvorbis-1.2.0/macos/compat/strdup.c	(revision 16)
+++ /libvorbis-1.2.0/macos/compat/strdup.c	(revision 16)
@@ -0,0 +1,21 @@
+#include <ogg/os_types.h>
+#include <sys/types.h>
+#include <string.h>
+#include <stdlib.h>
+
+char *strdup(const char *inStr)
+{
+	char *outStr = NULL;
+	
+	if (inStr == NULL) {
+		return NULL;
+	}
+	
+	outStr = _ogg_malloc(strlen(inStr) + 1);
+	
+	if (outStr != NULL) {
+		strcpy(outStr, inStr);
+	}
+	
+	return outStr;
+}
Index: /libvorbis-1.2.0/macos/compat/sys/types.h
===================================================================
--- /libvorbis-1.2.0/macos/compat/sys/types.h	(revision 16)
+++ /libvorbis-1.2.0/macos/compat/sys/types.h	(revision 16)
@@ -0,0 +1,29 @@
+#ifndef __SYS_TYPES_H__
+#define __SYS_TYPES_H__ 1
+
+#include <MacTypes.h>
+#include <alloca.h>
+#include <string.h>
+
+typedef short		int16_t;
+typedef long		int32_t;
+typedef long long	int64_t;
+
+#define vorbis_size32_t long
+
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#pragma options align=power
+
+char *strdup(const char *inStr);
+
+#pragma options align=reset
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __SYS_TYPES_H__ */
Index: /libvorbis-1.2.0/macos/libvorbis.mcp.exp
===================================================================
--- /libvorbis-1.2.0/macos/libvorbis.mcp.exp	(revision 16)
+++ /libvorbis-1.2.0/macos/libvorbis.mcp.exp	(revision 16)
@@ -0,0 +1,45 @@
+### From "vorbis/codec.h"
+
+# Vorbis PRIMITIVES: general
+
+vorbis_info_init
+vorbis_info_clear
+vorbis_info_blocksize
+vorbis_comment_init
+vorbis_comment_add
+vorbis_comment_add_tag
+vorbis_comment_query
+vorbis_comment_query_count
+vorbis_comment_clear
+
+vorbis_block_init
+vorbis_block_clear
+vorbis_dsp_clear
+vorbis_granule_time
+
+# Vorbis PRIMITIVES: analysis/DSP layer
+
+vorbis_analysis_init
+vorbis_commentheader_out
+vorbis_analysis_headerout
+vorbis_analysis_buffer
+vorbis_analysis_wrote
+vorbis_analysis_blockout
+vorbis_analysis
+vorbis_bitrate_addblock
+vorbis_bitrate_flushpacket
+
+# Vorbis PRIMITIVES: synthesis layer
+
+vorbis_synthesis_headerin
+vorbis_synthesis_init
+vorbis_synthesis_restart
+vorbis_synthesis
+vorbis_synthesis_trackonly
+vorbis_synthesis_blockin
+vorbis_synthesis_pcmout
+vorbis_synthesis_lapout
+vorbis_synthesis_read
+vorbis_packet_blocksize
+vorbis_synthesis_halfrate
+vorbis_synthesis_halfrate_p
Index: /libvorbis-1.2.0/macos/libvorbisenc.mcp.exp
===================================================================
--- /libvorbis-1.2.0/macos/libvorbisenc.mcp.exp	(revision 16)
+++ /libvorbis-1.2.0/macos/libvorbisenc.mcp.exp	(revision 16)
@@ -0,0 +1,8 @@
+### From "vorbis/vorbisenc.h"
+
+vorbis_encode_init
+vorbis_encode_setup_managed
+vorbis_encode_setup_vbr
+vorbis_encode_init_vbr
+vorbis_encode_setup_init
+vorbis_encode_ctl
Index: /libvorbis-1.2.0/macos/libvorbisfile.mcp.exp
===================================================================
--- /libvorbis-1.2.0/macos/libvorbisfile.mcp.exp	(revision 16)
+++ /libvorbis-1.2.0/macos/libvorbisfile.mcp.exp	(revision 16)
@@ -0,0 +1,45 @@
+### From "vorbis/vorbisfile.h"
+
+ov_clear
+ov_open
+ov_open_callbacks
+
+ov_test
+ov_test_callbacks
+ov_test_open
+
+ov_bitrate
+ov_bitrate_instant
+ov_streams
+ov_seekable
+ov_serialnumber
+
+ov_raw_total
+ov_pcm_total
+ov_time_total
+
+ov_raw_seek
+ov_pcm_seek
+ov_pcm_seek_page
+ov_time_seek
+ov_time_seek_page
+
+ov_raw_seek_lap
+ov_pcm_seek_lap
+ov_pcm_seek_page_lap
+ov_time_seek_lap
+ov_time_seek_page_lap
+
+ov_raw_tell
+ov_pcm_tell
+ov_time_tell
+
+ov_info
+ov_comment
+
+ov_read
+ov_read_float
+
+ov_crosslap
+ov_halfrate
+ov_halfrate_p
Index: /libvorbis-1.2.0/macosx/Info.plist
===================================================================
--- /libvorbis-1.2.0/macosx/Info.plist	(revision 16)
+++ /libvorbis-1.2.0/macosx/Info.plist	(revision 16)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>Vorbis</string>
+	<key>CFBundleGetInfoString</key>
+	<string>Vorbis framework 1.2.0, Copyright © 1994-2007 Xiph.Org Foundation</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>org.xiph.vorbis</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.2.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.2.0</string>
+	<key>NSHumanReadableCopyright</key>
+	<string>Vorbis framework 1.2.0, Copyright © 1994-2007 Xiph.Org Foundation</string>
+	<key>CSResourcesFileMapped</key>
+	<true/>
+</dict>
+</plist>
Index: /libvorbis-1.2.0/macosx/Vorbis.xcodeproj/project.pbxproj
===================================================================
--- /libvorbis-1.2.0/macosx/Vorbis.xcodeproj/project.pbxproj	(revision 16)
+++ /libvorbis-1.2.0/macosx/Vorbis.xcodeproj/project.pbxproj	(revision 16)
@@ -0,0 +1,891 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 42;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		730F23A3091827B100AB638C /* codec.h in Headers */ = {isa = PBXBuildFile; fileRef = F58520B90191D12B01A802FE /* codec.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		730F23A4091827B100AB638C /* vorbisenc.h in Headers */ = {isa = PBXBuildFile; fileRef = F58520BA0191D12B01A802FE /* vorbisenc.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		730F23A5091827B100AB638C /* vorbisfile.h in Headers */ = {isa = PBXBuildFile; fileRef = F58520BB0191D12B01A802FE /* vorbisfile.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		730F23A6091827B100AB638C /* backends.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F60B03389C830112CE8F /* backends.h */; };
+		730F23A7091827B100AB638C /* bitrate.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F60E03389C830112CE8F /* bitrate.h */; };
+		730F23A8091827B100AB638C /* res_books_stereo.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F61603389C830112CE8F /* res_books_stereo.h */; };
+		730F23A9091827B100AB638C /* floor_books.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F61903389C830112CE8F /* floor_books.h */; };
+		730F23AA091827B100AB638C /* res_books_uncoupled.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62203389C830112CE8F /* res_books_uncoupled.h */; };
+		730F23AB091827B100AB638C /* codebook.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62403389C830112CE8F /* codebook.h */; };
+		730F23AC091827B100AB638C /* codec_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62503389C830112CE8F /* codec_internal.h */; };
+		730F23AD091827B100AB638C /* envelope.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62703389C830112CE8F /* envelope.h */; };
+		730F23AE091827B100AB638C /* highlevel.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62A03389C830112CE8F /* highlevel.h */; };
+		730F23AF091827B100AB638C /* lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62D03389C830112CE8F /* lookup.h */; };
+		730F23B0091827B100AB638C /* lookup_data.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F62E03389C830112CE8F /* lookup_data.h */; };
+		730F23B1091827B100AB638C /* lpc.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F63103389C830112CE8F /* lpc.h */; };
+		730F23B2091827B100AB638C /* lsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F63303389C830112CE8F /* lsp.h */; };
+		730F23B3091827B100AB638C /* masking.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F63703389C830112CE8F /* masking.h */; };
+		730F23B4091827B100AB638C /* mdct.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F63903389C830112CE8F /* mdct.h */; };
+		730F23B5091827B100AB638C /* misc.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F63B03389C830112CE8F /* misc.h */; };
+		730F23B6091827B100AB638C /* floor_all.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F63E03389C830112CE8F /* floor_all.h */; };
+		730F23B7091827B100AB638C /* psych_11.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64103389C830112CE8F /* psych_11.h */; };
+		730F23B8091827B100AB638C /* psych_16.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64203389C830112CE8F /* psych_16.h */; };
+		730F23B9091827B100AB638C /* psych_44.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64303389C830112CE8F /* psych_44.h */; };
+		730F23BA091827B100AB638C /* psych_8.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64403389C830112CE8F /* psych_8.h */; };
+		730F23BB091827B100AB638C /* residue_16.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64503389C830112CE8F /* residue_16.h */; };
+		730F23BC091827B100AB638C /* residue_44.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64603389C830112CE8F /* residue_44.h */; };
+		730F23BD091827B100AB638C /* residue_44u.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64703389C830112CE8F /* residue_44u.h */; };
+		730F23BE091827B100AB638C /* residue_8.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64803389C830112CE8F /* residue_8.h */; };
+		730F23BF091827B100AB638C /* setup_11.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64903389C830112CE8F /* setup_11.h */; };
+		730F23C0091827B100AB638C /* setup_16.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64A03389C830112CE8F /* setup_16.h */; };
+		730F23C1091827B100AB638C /* setup_22.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64B03389C830112CE8F /* setup_22.h */; };
+		730F23C2091827B100AB638C /* setup_32.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64C03389C830112CE8F /* setup_32.h */; };
+		730F23C3091827B100AB638C /* setup_44.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64D03389C830112CE8F /* setup_44.h */; };
+		730F23C4091827B100AB638C /* setup_44u.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64E03389C830112CE8F /* setup_44u.h */; };
+		730F23C5091827B100AB638C /* setup_8.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F64F03389C830112CE8F /* setup_8.h */; };
+		730F23C6091827B100AB638C /* setup_X.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F65003389C830112CE8F /* setup_X.h */; };
+		730F23C7091827B100AB638C /* os.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F65103389C830112CE8F /* os.h */; };
+		730F23C8091827B100AB638C /* psy.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F65303389C830112CE8F /* psy.h */; };
+		730F23C9091827B100AB638C /* registry.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F65603389C830112CE8F /* registry.h */; };
+		730F23CA091827B100AB638C /* scales.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F65803389C830112CE8F /* scales.h */; };
+		730F23CB091827B100AB638C /* smallft.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F65B03389C830112CE8F /* smallft.h */; };
+		730F23CC091827B100AB638C /* window.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D8F66103389C830112CE8F /* window.h */; };
+		730F23CE091827B100AB638C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
+		730F23D3091827B100AB638C /* analysis.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F60A03389C830112CE8F /* analysis.c */; };
+		730F23D4091827B100AB638C /* bitrate.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F60D03389C830112CE8F /* bitrate.c */; };
+		730F23D5091827B100AB638C /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F60F03389C830112CE8F /* block.c */; };
+		730F23D6091827B100AB638C /* codebook.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62303389C830112CE8F /* codebook.c */; };
+		730F23D7091827B100AB638C /* envelope.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62603389C830112CE8F /* envelope.c */; };
+		730F23D8091827B100AB638C /* floor0.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62803389C830112CE8F /* floor0.c */; };
+		730F23D9091827B100AB638C /* floor1.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62903389C830112CE8F /* floor1.c */; };
+		730F23DA091827B100AB638C /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62B03389C830112CE8F /* info.c */; };
+		730F23DB091827B100AB638C /* lookup.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62C03389C830112CE8F /* lookup.c */; };
+		730F23DC091827B100AB638C /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63003389C830112CE8F /* lpc.c */; };
+		730F23DD091827B100AB638C /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63203389C830112CE8F /* lsp.c */; };
+		730F23DE091827B100AB638C /* mapping0.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63603389C830112CE8F /* mapping0.c */; };
+		730F23DF091827B100AB638C /* mdct.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63803389C830112CE8F /* mdct.c */; };
+		730F23E0091827B100AB638C /* psy.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65203389C830112CE8F /* psy.c */; };
+		730F23E1091827B100AB638C /* registry.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65503389C830112CE8F /* registry.c */; };
+		730F23E2091827B100AB638C /* res0.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65703389C830112CE8F /* res0.c */; };
+		730F23E3091827B100AB638C /* sharedbook.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65903389C830112CE8F /* sharedbook.c */; };
+		730F23E4091827B100AB638C /* smallft.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65A03389C830112CE8F /* smallft.c */; };
+		730F23E5091827B100AB638C /* synthesis.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65C03389C830112CE8F /* synthesis.c */; };
+		730F23E6091827B100AB638C /* vorbisenc.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65E03389C830112CE8F /* vorbisenc.c */; };
+		730F23E7091827B100AB638C /* vorbisfile.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65F03389C830112CE8F /* vorbisfile.c */; };
+		730F23E8091827B100AB638C /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F66003389C830112CE8F /* window.c */; };
+		730F23FB0918281100AB638C /* Ogg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 730F23FA0918281100AB638C /* Ogg.framework */; };
+		738835F40B18FF50005C7A69 /* mdct.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63803389C830112CE8F /* mdct.c */; };
+		738835F70B18FF58005C7A69 /* smallft.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65A03389C830112CE8F /* smallft.c */; };
+		738835F80B18FF61005C7A69 /* block.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F60F03389C830112CE8F /* block.c */; };
+		738835F90B18FF67005C7A69 /* envelope.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62603389C830112CE8F /* envelope.c */; };
+		738835FA0B18FF71005C7A69 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F66003389C830112CE8F /* window.c */; };
+		738835FB0B18FF7A005C7A69 /* lsp.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63203389C830112CE8F /* lsp.c */; };
+		738835FC0B18FF82005C7A69 /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63003389C830112CE8F /* lpc.c */; };
+		738835FD0B18FF93005C7A69 /* analysis.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F60A03389C830112CE8F /* analysis.c */; };
+		738835FE0B18FF9C005C7A69 /* synthesis.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65C03389C830112CE8F /* synthesis.c */; };
+		738835FF0B18FF9E005C7A69 /* psy.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65203389C830112CE8F /* psy.c */; };
+		738836000B18FFCB005C7A69 /* info.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62B03389C830112CE8F /* info.c */; };
+		738836010B18FFE5005C7A69 /* floor1.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62903389C830112CE8F /* floor1.c */; };
+		738836020B18FFE5005C7A69 /* floor0.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62803389C830112CE8F /* floor0.c */; };
+		738836030B18FFED005C7A69 /* res0.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65703389C830112CE8F /* res0.c */; };
+		738836040B18FFF0005C7A69 /* mapping0.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F63603389C830112CE8F /* mapping0.c */; };
+		738836050B18FFF8005C7A69 /* registry.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65503389C830112CE8F /* registry.c */; };
+		738836060B18FFFD005C7A69 /* codebook.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62303389C830112CE8F /* codebook.c */; };
+		738836070B190001005C7A69 /* sharedbook.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65903389C830112CE8F /* sharedbook.c */; };
+		738836080B190008005C7A69 /* lookup.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F62C03389C830112CE8F /* lookup.c */; };
+		738836090B19000B005C7A69 /* bitrate.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F60D03389C830112CE8F /* bitrate.c */; };
+		738836140B1904A5005C7A69 /* vorbisenc.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65E03389C830112CE8F /* vorbisenc.c */; };
+		738836230B190601005C7A69 /* vorbisfile.c in Sources */ = {isa = PBXBuildFile; fileRef = F5D8F65F03389C830112CE8F /* vorbisfile.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		730F23F0091827B100AB638C /* Info.plist */ = {isa = PBXFileReference; explicitFileType = text.plist; fileEncoding = 4; path = Info.plist; sourceTree = "<group>"; };
+		730F23F1091827B100AB638C /* Vorbis.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Vorbis.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		730F23FA0918281100AB638C /* Ogg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Ogg.framework; path = /Library/Frameworks/Ogg.framework; sourceTree = "<absolute>"; };
+		738835E40B18F870005C7A69 /* libvorbis.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvorbis.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		738836130B190488005C7A69 /* libvorbisenc.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvorbisenc.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		738836220B1905E5005C7A69 /* libvorbisfile.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libvorbisfile.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		F58520B90191D12B01A802FE /* codec.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codec.h; sourceTree = "<group>"; };
+		F58520BA0191D12B01A802FE /* vorbisenc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vorbisenc.h; sourceTree = "<group>"; };
+		F58520BB0191D12B01A802FE /* vorbisfile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vorbisfile.h; sourceTree = "<group>"; };
+		F5D8F60A03389C830112CE8F /* analysis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = analysis.c; sourceTree = "<group>"; };
+		F5D8F60B03389C830112CE8F /* backends.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = backends.h; sourceTree = "<group>"; };
+		F5D8F60C03389C830112CE8F /* barkmel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = barkmel.c; sourceTree = "<group>"; };
+		F5D8F60D03389C830112CE8F /* bitrate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = bitrate.c; sourceTree = "<group>"; };
+		F5D8F60E03389C830112CE8F /* bitrate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bitrate.h; sourceTree = "<group>"; };
+		F5D8F60F03389C830112CE8F /* block.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = block.c; sourceTree = "<group>"; };
+		F5D8F61603389C830112CE8F /* res_books_stereo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = res_books_stereo.h; sourceTree = "<group>"; };
+		F5D8F61903389C830112CE8F /* floor_books.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = floor_books.h; sourceTree = "<group>"; };
+		F5D8F62203389C830112CE8F /* res_books_uncoupled.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = res_books_uncoupled.h; sourceTree = "<group>"; };
+		F5D8F62303389C830112CE8F /* codebook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = codebook.c; sourceTree = "<group>"; };
+		F5D8F62403389C830112CE8F /* codebook.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codebook.h; sourceTree = "<group>"; };
+		F5D8F62503389C830112CE8F /* codec_internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = codec_internal.h; sourceTree = "<group>"; };
+		F5D8F62603389C830112CE8F /* envelope.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = envelope.c; sourceTree = "<group>"; };
+		F5D8F62703389C830112CE8F /* envelope.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = envelope.h; sourceTree = "<group>"; };
+		F5D8F62803389C830112CE8F /* floor0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floor0.c; sourceTree = "<group>"; };
+		F5D8F62903389C830112CE8F /* floor1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = floor1.c; sourceTree = "<group>"; };
+		F5D8F62A03389C830112CE8F /* highlevel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = highlevel.h; sourceTree = "<group>"; };
+		F5D8F62B03389C830112CE8F /* info.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = info.c; sourceTree = "<group>"; };
+		F5D8F62C03389C830112CE8F /* lookup.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lookup.c; sourceTree = "<group>"; };
+		F5D8F62D03389C830112CE8F /* lookup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lookup.h; sourceTree = "<group>"; };
+		F5D8F62E03389C830112CE8F /* lookup_data.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lookup_data.h; sourceTree = "<group>"; };
+		F5D8F63003389C830112CE8F /* lpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lpc.c; sourceTree = "<group>"; };
+		F5D8F63103389C830112CE8F /* lpc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lpc.h; sourceTree = "<group>"; };
+		F5D8F63203389C830112CE8F /* lsp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = lsp.c; sourceTree = "<group>"; };
+		F5D8F63303389C830112CE8F /* lsp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lsp.h; sourceTree = "<group>"; };
+		F5D8F63603389C830112CE8F /* mapping0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mapping0.c; sourceTree = "<group>"; };
+		F5D8F63703389C830112CE8F /* masking.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = masking.h; sourceTree = "<group>"; };
+		F5D8F63803389C830112CE8F /* mdct.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = mdct.c; sourceTree = "<group>"; };
+		F5D8F63903389C830112CE8F /* mdct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mdct.h; sourceTree = "<group>"; };
+		F5D8F63A03389C830112CE8F /* misc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = misc.c; sourceTree = "<group>"; };
+		F5D8F63B03389C830112CE8F /* misc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = "<group>"; };
+		F5D8F63E03389C830112CE8F /* floor_all.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = floor_all.h; sourceTree = "<group>"; };
+		F5D8F64103389C830112CE8F /* psych_11.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psych_11.h; sourceTree = "<group>"; };
+		F5D8F64203389C830112CE8F /* psych_16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psych_16.h; sourceTree = "<group>"; };
+		F5D8F64303389C830112CE8F /* psych_44.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psych_44.h; sourceTree = "<group>"; };
+		F5D8F64403389C830112CE8F /* psych_8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psych_8.h; sourceTree = "<group>"; };
+		F5D8F64503389C830112CE8F /* residue_16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = residue_16.h; sourceTree = "<group>"; };
+		F5D8F64603389C830112CE8F /* residue_44.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = residue_44.h; sourceTree = "<group>"; };
+		F5D8F64703389C830112CE8F /* residue_44u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = residue_44u.h; sourceTree = "<group>"; };
+		F5D8F64803389C830112CE8F /* residue_8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = residue_8.h; sourceTree = "<group>"; };
+		F5D8F64903389C830112CE8F /* setup_11.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_11.h; sourceTree = "<group>"; };
+		F5D8F64A03389C830112CE8F /* setup_16.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_16.h; sourceTree = "<group>"; };
+		F5D8F64B03389C830112CE8F /* setup_22.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_22.h; sourceTree = "<group>"; };
+		F5D8F64C03389C830112CE8F /* setup_32.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_32.h; sourceTree = "<group>"; };
+		F5D8F64D03389C830112CE8F /* setup_44.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_44.h; sourceTree = "<group>"; };
+		F5D8F64E03389C830112CE8F /* setup_44u.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_44u.h; sourceTree = "<group>"; };
+		F5D8F64F03389C830112CE8F /* setup_8.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_8.h; sourceTree = "<group>"; };
+		F5D8F65003389C830112CE8F /* setup_X.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = setup_X.h; sourceTree = "<group>"; };
+		F5D8F65103389C830112CE8F /* os.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = os.h; sourceTree = "<group>"; };
+		F5D8F65203389C830112CE8F /* psy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psy.c; sourceTree = "<group>"; };
+		F5D8F65303389C830112CE8F /* psy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = psy.h; sourceTree = "<group>"; };
+		F5D8F65403389C830112CE8F /* psytune.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = psytune.c; sourceTree = "<group>"; };
+		F5D8F65503389C830112CE8F /* registry.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = registry.c; sourceTree = "<group>"; };
+		F5D8F65603389C830112CE8F /* registry.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = registry.h; sourceTree = "<group>"; };
+		F5D8F65703389C830112CE8F /* res0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = res0.c; sourceTree = "<group>"; };
+		F5D8F65803389C830112CE8F /* scales.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = scales.h; sourceTree = "<group>"; };
+		F5D8F65903389C830112CE8F /* sharedbook.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sharedbook.c; sourceTree = "<group>"; };
+		F5D8F65A03389C830112CE8F /* smallft.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = smallft.c; sourceTree = "<group>"; };
+		F5D8F65B03389C830112CE8F /* smallft.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = smallft.h; sourceTree = "<group>"; };
+		F5D8F65C03389C830112CE8F /* synthesis.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = synthesis.c; sourceTree = "<group>"; };
+		F5D8F65D03389C830112CE8F /* tone.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = tone.c; sourceTree = "<group>"; };
+		F5D8F65E03389C830112CE8F /* vorbisenc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vorbisenc.c; sourceTree = "<group>"; };
+		F5D8F65F03389C830112CE8F /* vorbisfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vorbisfile.c; sourceTree = "<group>"; };
+		F5D8F66003389C830112CE8F /* window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = window.c; sourceTree = "<group>"; };
+		F5D8F66103389C830112CE8F /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		730F23E9091827B100AB638C /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				730F23FB0918281100AB638C /* Ogg.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		738835E20B18F870005C7A69 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		738836110B190488005C7A69 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		738836200B1905E5005C7A69 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		034768DFFF38A50411DB9C8B /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				730F23F1091827B100AB638C /* Vorbis.framework */,
+				738835E40B18F870005C7A69 /* libvorbis.a */,
+				738836130B190488005C7A69 /* libvorbisenc.a */,
+				738836220B1905E5005C7A69 /* libvorbisfile.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		0867D691FE84028FC02AAC07 /* vorbis */ = {
+			isa = PBXGroup;
+			children = (
+				F58520B70191D12B01A802FE /* Headers */,
+				F5D8F60803389C830112CE8F /* lib */,
+				089C1665FE841158C02AAC07 /* Resources */,
+				0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
+				034768DFFF38A50411DB9C8B /* Products */,
+			);
+			name = vorbis;
+			sourceTree = "<group>";
+		};
+		0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				730F23FA0918281100AB638C /* Ogg.framework */,
+			);
+			name = "External Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		089C1665FE841158C02AAC07 /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				730F23F0091827B100AB638C /* Info.plist */,
+				089C1666FE841158C02AAC07 /* InfoPlist.strings */,
+			);
+			name = Resources;
+			sourceTree = "<group>";
+		};
+		F58520B70191D12B01A802FE /* Headers */ = {
+			isa = PBXGroup;
+			children = (
+				F58520B90191D12B01A802FE /* codec.h */,
+				F58520BA0191D12B01A802FE /* vorbisenc.h */,
+				F58520BB0191D12B01A802FE /* vorbisfile.h */,
+			);
+			name = Headers;
+			path = ../include/vorbis;
+			sourceTree = SOURCE_ROOT;
+		};
+		F5D8F60803389C830112CE8F /* lib */ = {
+			isa = PBXGroup;
+			children = (
+				F5D8F60A03389C830112CE8F /* analysis.c */,
+				F5D8F60B03389C830112CE8F /* backends.h */,
+				F5D8F60C03389C830112CE8F /* barkmel.c */,
+				F5D8F60D03389C830112CE8F /* bitrate.c */,
+				F5D8F60E03389C830112CE8F /* bitrate.h */,
+				F5D8F60F03389C830112CE8F /* block.c */,
+				F5D8F61003389C830112CE8F /* books */,
+				F5D8F62303389C830112CE8F /* codebook.c */,
+				F5D8F62403389C830112CE8F /* codebook.h */,
+				F5D8F62503389C830112CE8F /* codec_internal.h */,
+				F5D8F62603389C830112CE8F /* envelope.c */,
+				F5D8F62703389C830112CE8F /* envelope.h */,
+				F5D8F62803389C830112CE8F /* floor0.c */,
+				F5D8F62903389C830112CE8F /* floor1.c */,
+				F5D8F62A03389C830112CE8F /* highlevel.h */,
+				F5D8F62B03389C830112CE8F /* info.c */,
+				F5D8F62C03389C830112CE8F /* lookup.c */,
+				F5D8F62D03389C830112CE8F /* lookup.h */,
+				F5D8F62E03389C830112CE8F /* lookup_data.h */,
+				F5D8F63003389C830112CE8F /* lpc.c */,
+				F5D8F63103389C830112CE8F /* lpc.h */,
+				F5D8F63203389C830112CE8F /* lsp.c */,
+				F5D8F63303389C830112CE8F /* lsp.h */,
+				F5D8F63603389C830112CE8F /* mapping0.c */,
+				F5D8F63703389C830112CE8F /* masking.h */,
+				F5D8F63803389C830112CE8F /* mdct.c */,
+				F5D8F63903389C830112CE8F /* mdct.h */,
+				F5D8F63A03389C830112CE8F /* misc.c */,
+				F5D8F63B03389C830112CE8F /* misc.h */,
+				F5D8F63C03389C830112CE8F /* modes */,
+				F5D8F65103389C830112CE8F /* os.h */,
+				F5D8F65203389C830112CE8F /* psy.c */,
+				F5D8F65303389C830112CE8F /* psy.h */,
+				F5D8F65403389C830112CE8F /* psytune.c */,
+				F5D8F65503389C830112CE8F /* registry.c */,
+				F5D8F65603389C830112CE8F /* registry.h */,
+				F5D8F65703389C830112CE8F /* res0.c */,
+				F5D8F65803389C830112CE8F /* scales.h */,
+				F5D8F65903389C830112CE8F /* sharedbook.c */,
+				F5D8F65A03389C830112CE8F /* smallft.c */,
+				F5D8F65B03389C830112CE8F /* smallft.h */,
+				F5D8F65C03389C830112CE8F /* synthesis.c */,
+				F5D8F65D03389C830112CE8F /* tone.c */,
+				F5D8F65E03389C830112CE8F /* vorbisenc.c */,
+				F5D8F65F03389C830112CE8F /* vorbisfile.c */,
+				F5D8F66003389C830112CE8F /* window.c */,
+				F5D8F66103389C830112CE8F /* window.h */,
+			);
+			name = lib;
+			path = ../lib;
+			sourceTree = "<group>";
+		};
+		F5D8F61003389C830112CE8F /* books */ = {
+			isa = PBXGroup;
+			children = (
+				F5D8F61203389C830112CE8F /* coupled */,
+				F5D8F61703389C830112CE8F /* floor */,
+				F5D8F61E03389C830112CE8F /* uncoupled */,
+			);
+			path = books;
+			sourceTree = "<group>";
+		};
+		F5D8F61203389C830112CE8F /* coupled */ = {
+			isa = PBXGroup;
+			children = (
+				F5D8F61603389C830112CE8F /* res_books_stereo.h */,
+			);
+			path = coupled;
+			sourceTree = "<group>";
+		};
+		F5D8F61703389C830112CE8F /* floor */ = {
+			isa = PBXGroup;
+			children = (
+				F5D8F61903389C830112CE8F /* floor_books.h */,
+			);
+			path = floor;
+			sourceTree = "<group>";
+		};
+		F5D8F61E03389C830112CE8F /* uncoupled */ = {
+			isa = PBXGroup;
+			children = (
+				F5D8F62203389C830112CE8F /* res_books_uncoupled.h */,
+			);
+			path = uncoupled;
+			sourceTree = "<group>";
+		};
+		F5D8F63C03389C830112CE8F /* modes */ = {
+			isa = PBXGroup;
+			children = (
+				F5D8F63E03389C830112CE8F /* floor_all.h */,
+				F5D8F64103389C830112CE8F /* psych_11.h */,
+				F5D8F64203389C830112CE8F /* psych_16.h */,
+				F5D8F64303389C830112CE8F /* psych_44.h */,
+				F5D8F64403389C830112CE8F /* psych_8.h */,
+				F5D8F64503389C830112CE8F /* residue_16.h */,
+				F5D8F64603389C830112CE8F /* residue_44.h */,
+				F5D8F64703389C830112CE8F /* residue_44u.h */,
+				F5D8F64803389C830112CE8F /* residue_8.h */,
+				F5D8F64903389C830112CE8F /* setup_11.h */,
+				F5D8F64A03389C830112CE8F /* setup_16.h */,
+				F5D8F64B03389C830112CE8F /* setup_22.h */,
+				F5D8F64C03389C830112CE8F /* setup_32.h */,
+				F5D8F64D03389C830112CE8F /* setup_44.h */,
+				F5D8F64E03389C830112CE8F /* setup_44u.h */,
+				F5D8F64F03389C830112CE8F /* setup_8.h */,
+				F5D8F65003389C830112CE8F /* setup_X.h */,
+			);
+			path = modes;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+		730F23A2091827B100AB638C /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				730F23A3091827B100AB638C /* codec.h in Headers */,
+				730F23A4091827B100AB638C /* vorbisenc.h in Headers */,
+				730F23A5091827B100AB638C /* vorbisfile.h in Headers */,
+				730F23A6091827B100AB638C /* backends.h in Headers */,
+				730F23A7091827B100AB638C /* bitrate.h in Headers */,
+				730F23A8091827B100AB638C /* res_books_stereo.h in Headers */,
+				730F23A9091827B100AB638C /* floor_books.h in Headers */,
+				730F23AA091827B100AB638C /* res_books_uncoupled.h in Headers */,
+				730F23AB091827B100AB638C /* codebook.h in Headers */,
+				730F23AC091827B100AB638C /* codec_internal.h in Headers */,
+				730F23AD091827B100AB638C /* envelope.h in Headers */,
+				730F23AE091827B100AB638C /* highlevel.h in Headers */,
+				730F23AF091827B100AB638C /* lookup.h in Headers */,
+				730F23B0091827B100AB638C /* lookup_data.h in Headers */,
+				730F23B1091827B100AB638C /* lpc.h in Headers */,
+				730F23B2091827B100AB638C /* lsp.h in Headers */,
+				730F23B3091827B100AB638C /* masking.h in Headers */,
+				730F23B4091827B100AB638C /* mdct.h in Headers */,
+				730F23B5091827B100AB638C /* misc.h in Headers */,
+				730F23B6091827B100AB638C /* floor_all.h in Headers */,
+				730F23B7091827B100AB638C /* psych_11.h in Headers */,
+				730F23B8091827B100AB638C /* psych_16.h in Headers */,
+				730F23B9091827B100AB638C /* psych_44.h in Headers */,
+				730F23BA091827B100AB638C /* psych_8.h in Headers */,
+				730F23BB091827B100AB638C /* residue_16.h in Headers */,
+				730F23BC091827B100AB638C /* residue_44.h in Headers */,
+				730F23BD091827B100AB638C /* residue_44u.h in Headers */,
+				730F23BE091827B100AB638C /* residue_8.h in Headers */,
+				730F23BF091827B100AB638C /* setup_11.h in Headers */,
+				730F23C0091827B100AB638C /* setup_16.h in Headers */,
+				730F23C1091827B100AB638C /* setup_22.h in Headers */,
+				730F23C2091827B100AB638C /* setup_32.h in Headers */,
+				730F23C3091827B100AB638C /* setup_44.h in Headers */,
+				730F23C4091827B100AB638C /* setup_44u.h in Headers */,
+				730F23C5091827B100AB638C /* setup_8.h in Headers */,
+				730F23C6091827B100AB638C /* setup_X.h in Headers */,
+				730F23C7091827B100AB638C /* os.h in Headers */,
+				730F23C8091827B100AB638C /* psy.h in Headers */,
+				730F23C9091827B100AB638C /* registry.h in Headers */,
+				730F23CA091827B100AB638C /* scales.h in Headers */,
+				730F23CB091827B100AB638C /* smallft.h in Headers */,
+				730F23CC091827B100AB638C /* window.h in Headers */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		738835E00B18F870005C7A69 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7388360F0B190488005C7A69 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7388361E0B1905E5005C7A69 /* Headers */ = {
+			isa = PBXHeadersBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+		730F23A1091827B100AB638C /* Vorbis */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 730F23EC091827B100AB638C /* Build configuration list for PBXNativeTarget "Vorbis" */;
+			buildPhases = (
+				730F23A2091827B100AB638C /* Headers */,
+				730F23CD091827B100AB638C /* Resources */,
+				730F23D2091827B100AB638C /* Sources */,
+				730F23E9091827B100AB638C /* Frameworks */,
+				730F23EB091827B100AB638C /* Rez */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Vorbis;
+			productInstallPath = /Library/Frameworks;
+			productName = vorbis;
+			productReference = 730F23F1091827B100AB638C /* Vorbis.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+		738835E30B18F870005C7A69 /* libvorbis (static) */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 738835E50B18F88E005C7A69 /* Build configuration list for PBXNativeTarget "libvorbis (static)" */;
+			buildPhases = (
+				738835E00B18F870005C7A69 /* Headers */,
+				738835E10B18F870005C7A69 /* Sources */,
+				738835E20B18F870005C7A69 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "libvorbis (static)";
+			productName = vorbis;
+			productReference = 738835E40B18F870005C7A69 /* libvorbis.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		738836120B190488005C7A69 /* libvorbisenc (static) */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 7388361A0B1904D6005C7A69 /* Build configuration list for PBXNativeTarget "libvorbisenc (static)" */;
+			buildPhases = (
+				7388360F0B190488005C7A69 /* Headers */,
+				738836100B190488005C7A69 /* Sources */,
+				738836110B190488005C7A69 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "libvorbisenc (static)";
+			productName = vorbisenc;
+			productReference = 738836130B190488005C7A69 /* libvorbisenc.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+		738836210B1905E5005C7A69 /* libvorbisfile (static) */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 738836250B19065D005C7A69 /* Build configuration list for PBXNativeTarget "libvorbisfile (static)" */;
+			buildPhases = (
+				7388361E0B1905E5005C7A69 /* Headers */,
+				7388361F0B1905E5005C7A69 /* Sources */,
+				738836200B1905E5005C7A69 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "libvorbisfile (static)";
+			productName = vorbisfile;
+			productReference = 738836220B1905E5005C7A69 /* libvorbisfile.a */;
+			productType = "com.apple.product-type.library.static";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		0867D690FE84028FC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			buildConfigurationList = 730F23F3091827B200AB638C /* Build configuration list for PBXProject "Vorbis" */;
+			hasScannedForEncodings = 0;
+			mainGroup = 0867D691FE84028FC02AAC07 /* vorbis */;
+			productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
+			projectDirPath = "";
+			targets = (
+				730F23A1091827B100AB638C /* Vorbis */,
+				738835E30B18F870005C7A69 /* libvorbis (static) */,
+				738836120B190488005C7A69 /* libvorbisenc (static) */,
+				738836210B1905E5005C7A69 /* libvorbisfile (static) */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		730F23CD091827B100AB638C /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				730F23CE091827B100AB638C /* InfoPlist.strings in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+		730F23EB091827B100AB638C /* Rez */ = {
+			isa = PBXRezBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		730F23D2091827B100AB638C /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				730F23D3091827B100AB638C /* analysis.c in Sources */,
+				730F23D4091827B100AB638C /* bitrate.c in Sources */,
+				730F23D5091827B100AB638C /* block.c in Sources */,
+				730F23D6091827B100AB638C /* codebook.c in Sources */,
+				730F23D7091827B100AB638C /* envelope.c in Sources */,
+				730F23D8091827B100AB638C /* floor0.c in Sources */,
+				730F23D9091827B100AB638C /* floor1.c in Sources */,
+				730F23DA091827B100AB638C /* info.c in Sources */,
+				730F23DB091827B100AB638C /* lookup.c in Sources */,
+				730F23DC091827B100AB638C /* lpc.c in Sources */,
+				730F23DD091827B100AB638C /* lsp.c in Sources */,
+				730F23DE091827B100AB638C /* mapping0.c in Sources */,
+				730F23DF091827B100AB638C /* mdct.c in Sources */,
+				730F23E0091827B100AB638C /* psy.c in Sources */,
+				730F23E1091827B100AB638C /* registry.c in Sources */,
+				730F23E2091827B100AB638C /* res0.c in Sources */,
+				730F23E3091827B100AB638C /* sharedbook.c in Sources */,
+				730F23E4091827B100AB638C /* smallft.c in Sources */,
+				730F23E5091827B100AB638C /* synthesis.c in Sources */,
+				730F23E6091827B100AB638C /* vorbisenc.c in Sources */,
+				730F23E7091827B100AB638C /* vorbisfile.c in Sources */,
+				730F23E8091827B100AB638C /* window.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		738835E10B18F870005C7A69 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				738835F40B18FF50005C7A69 /* mdct.c in Sources */,
+				738835F70B18FF58005C7A69 /* smallft.c in Sources */,
+				738835F80B18FF61005C7A69 /* block.c in Sources */,
+				738835F90B18FF67005C7A69 /* envelope.c in Sources */,
+				738835FA0B18FF71005C7A69 /* window.c in Sources */,
+				738835FB0B18FF7A005C7A69 /* lsp.c in Sources */,
+				738835FC0B18FF82005C7A69 /* lpc.c in Sources */,
+				738835FD0B18FF93005C7A69 /* analysis.c in Sources */,
+				738835FE0B18FF9C005C7A69 /* synthesis.c in Sources */,
+				738835FF0B18FF9E005C7A69 /* psy.c in Sources */,
+				738836000B18FFCB005C7A69 /* info.c in Sources */,
+				738836010B18FFE5005C7A69 /* floor1.c in Sources */,
+				738836020B18FFE5005C7A69 /* floor0.c in Sources */,
+				738836030B18FFED005C7A69 /* res0.c in Sources */,
+				738836040B18FFF0005C7A69 /* mapping0.c in Sources */,
+				738836050B18FFF8005C7A69 /* registry.c in Sources */,
+				738836060B18FFFD005C7A69 /* codebook.c in Sources */,
+				738836070B190001005C7A69 /* sharedbook.c in Sources */,
+				738836080B190008005C7A69 /* lookup.c in Sources */,
+				738836090B19000B005C7A69 /* bitrate.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		738836100B190488005C7A69 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				738836140B1904A5005C7A69 /* vorbisenc.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7388361F0B1905E5005C7A69 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				738836230B190601005C7A69 /* vorbisfile.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				089C1667FE841158C02AAC07 /* English */,
+			);
+			name = InfoPlist.strings;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		730F23ED091827B100AB638C /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
+				FRAMEWORK_VERSION = A;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				HEADER_SEARCH_PATHS = ../lib;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = /Library/Frameworks;
+				LIBRARY_SEARCH_PATHS = "";
+				OTHER_LDFLAGS = "";
+				PRODUCT_NAME = Vorbis;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = (
+					"-Wmost",
+					"-Wno-four-char-constants",
+					"-Wno-unknown-pragmas",
+				);
+				WRAPPER_EXTENSION = framework;
+				ZERO_LINK = YES;
+			};
+			name = Debug;
+		};
+		730F23EE091827B100AB638C /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 1;
+				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
+				FRAMEWORK_VERSION = A;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				HEADER_SEARCH_PATHS = ../lib;
+				INFOPLIST_FILE = Info.plist;
+				INSTALL_PATH = /Library/Frameworks;
+				LIBRARY_SEARCH_PATHS = "";
+				OTHER_LDFLAGS = "";
+				PRODUCT_NAME = Vorbis;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = (
+					"-Wmost",
+					"-Wno-four-char-constants",
+					"-Wno-unknown-pragmas",
+				);
+				WRAPPER_EXTENSION = framework;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		730F23F4091827B200AB638C /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+			};
+			name = Debug;
+		};
+		730F23F5091827B200AB638C /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = (
+					ppc,
+					i386,
+				);
+				GCC_OPTIMIZATION_LEVEL = 3;
+				GCC_PREPROCESSOR_DEFINITIONS = __MACOSX__;
+				OTHER_CFLAGS = (
+					"$(OTHER_CFLAGS)",
+					"-ffast-math",
+					"-falign-loops=16",
+				);
+				SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
+			};
+			name = Release;
+		};
+		738835E60B18F88E005C7A69 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../ogg/include,
+				);
+				INSTALL_PATH = /usr/local/lib;
+				PREBINDING = NO;
+				PRODUCT_NAME = vorbis;
+				ZERO_LINK = YES;
+			};
+			name = Debug;
+		};
+		738835E70B18F88E005C7A69 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../ogg/include,
+				);
+				INSTALL_PATH = /usr/local/lib;
+				PREBINDING = NO;
+				PRODUCT_NAME = vorbis;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		7388361B0B1904D6005C7A69 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../lib,
+					../../ogg/include,
+				);
+				INSTALL_PATH = /usr/local/lib;
+				PREBINDING = NO;
+				PRODUCT_NAME = vorbisenc;
+				ZERO_LINK = YES;
+			};
+			name = Debug;
+		};
+		7388361C0B1904D6005C7A69 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../lib,
+					../../ogg/include,
+				);
+				INSTALL_PATH = /usr/local/lib;
+				PREBINDING = NO;
+				PRODUCT_NAME = vorbisenc;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		738836260B19065D005C7A69 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../ogg/include,
+				);
+				INSTALL_PATH = /usr/local/lib;
+				PREBINDING = NO;
+				PRODUCT_NAME = vorbisfile;
+				ZERO_LINK = YES;
+			};
+			name = Debug;
+		};
+		738836270B19065D005C7A69 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					../../ogg/include,
+				);
+				INSTALL_PATH = /usr/local/lib;
+				PREBINDING = NO;
+				PRODUCT_NAME = vorbisfile;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		730F23EC091827B100AB638C /* Build configuration list for PBXNativeTarget "Vorbis" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				730F23ED091827B100AB638C /* Debug */,
+				730F23EE091827B100AB638C /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		730F23F3091827B200AB638C /* Build configuration list for PBXProject "Vorbis" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				730F23F4091827B200AB638C /* Debug */,
+				730F23F5091827B200AB638C /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		738835E50B18F88E005C7A69 /* Build configuration list for PBXNativeTarget "libvorbis (static)" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				738835E60B18F88E005C7A69 /* Debug */,
+				738835E70B18F88E005C7A69 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		7388361A0B1904D6005C7A69 /* Build configuration list for PBXNativeTarget "libvorbisenc (static)" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				7388361B0B1904D6005C7A69 /* Debug */,
+				7388361C0B1904D6005C7A69 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		738836250B19065D005C7A69 /* Build configuration list for PBXNativeTarget "libvorbisfile (static)" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				738836260B19065D005C7A69 /* Debug */,
+				738836270B19065D005C7A69 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
+}
Index: /libvorbis-1.2.0/missing
===================================================================
--- /libvorbis-1.2.0/missing	(revision 16)
+++ /libvorbis-1.2.0/missing	(revision 16)
@@ -0,0 +1,367 @@
+#! /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:
Index: /libvorbis-1.2.0/symbian/bld.inf
===================================================================
--- /libvorbis-1.2.0/symbian/bld.inf	(revision 16)
+++ /libvorbis-1.2.0/symbian/bld.inf	(revision 16)
@@ -0,0 +1,35 @@
+/*
+   Copyright (C) 2003 Commonwealth Scientific and Industrial Research
+   Organisation (CSIRO) Australia
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+   - 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.
+
+   - Neither the name of CSIRO Australia nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+   PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION 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.
+*/
+
+PRJ_MMPFILES
+
+vorbis.mmp
Index: /libvorbis-1.2.0/symbian/config.h
===================================================================
--- /libvorbis-1.2.0/symbian/config.h	(revision 16)
+++ /libvorbis-1.2.0/symbian/config.h	(revision 16)
@@ -0,0 +1,54 @@
+/*
+   Copyright (C) 2003 Commonwealth Scientific and Industrial Research
+   Organisation (CSIRO) Australia
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+   - 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.
+
+   - Neither the name of CSIRO Australia nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+   PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#ifdef __WINS__
+
+/* Disable some warnings */
+
+#pragma warning(disable: 4100) /* unreferenced formal parameter */
+#pragma warning(disable: 4127) /* conditional expression is constant */
+#pragma warning(disable: 4189) /* local variable is initialized but not referenced */
+#pragma warning(disable: 4244) /* conversion from '...' to '...', possible loss of data */
+#pragma warning(disable: 4305) /* truncation from '...' to '...' */
+#pragma warning(disable: 4505) /* unreferenced local function has been removed */
+#pragma warning(disable: 4514) /* unreferenced inline function has been removed */
+#pragma warning(disable: 4702) /* unreachable code */
+#pragma warning(disable: 4701) /* local variable may be be used without having been initialized */
+#pragma warning(disable: 4706) /* assignment within conditional expression */
+#pragma warning(disable: 4761) /* integral size mismatch in argument: conversion supplied */
+
+#endif
+
+#endif /* ! CONFIG_H */
Index: /libvorbis-1.2.0/symbian/vorbis.mmp
===================================================================
--- /libvorbis-1.2.0/symbian/vorbis.mmp	(revision 16)
+++ /libvorbis-1.2.0/symbian/vorbis.mmp	(revision 16)
@@ -0,0 +1,43 @@
+/*
+   Copyright (C) 2003 Commonwealth Scientific and Industrial Research
+   Organisation (CSIRO) Australia
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+   - 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.
+
+   - Neither the name of CSIRO Australia nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+   PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION 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.
+*/
+
+TARGET        vorbis.lib
+TARGETTYPE    lib
+UID           0
+MACRO         HAVE_CONFIG_H
+SOURCEPATH    ..\lib
+SOURCE        analysis.c barkmel.c bitrate.c block.c codebook.c envelope.c floor0.c floor1.c info.c
+SOURCE        lookup.c lpc.c lsp.c mapping0.c mdct.c psy.c registry.c res0.c sharedbook.c
+SOURCE        smallft.c synthesis.c vorbisfile.c window.c
+
+USERINCLUDE   . ..\include
+SYSTEMINCLUDE \epoc32\include \epoc32\include\libc ..\include ..\..\ogg\include ..\..\ogg\symbian
Index: /libvorbis-1.2.0/todo.txt
===================================================================
--- /libvorbis-1.2.0/todo.txt	(revision 16)
+++ /libvorbis-1.2.0/todo.txt	(revision 16)
@@ -0,0 +1,22 @@
+Open project list for further development:
+
+libvorbis:
+
+Meaningful error code returns
+
+still some padding at EOS
+
+Option for brute-forcing vq search on maptype 2 (helps on undertrained
+sets).
+
+encoder switch interface for binary compat through changes; ioctl()-like?
+
+API changes: 
+  break up some of the more monolithic calls (eg, allow access
+       to MDCT domain data, additional low level framing capability)
+  convenience calls for text comments
+
+other:
+
+command line suite
+'crashme'
Index: /libvorbis-1.2.0/vorbis-uninstalled.pc.in
===================================================================
--- /libvorbis-1.2.0/vorbis-uninstalled.pc.in	(revision 16)
+++ /libvorbis-1.2.0/vorbis-uninstalled.pc.in	(revision 16)
@@ -0,0 +1,14 @@
+# vorbis uninstalled pkg-config file
+
+prefix=
+exec_prefix=
+libdir=${pcfiledir}/lib
+includedir=${pcfiledir}/include
+
+Name: vorbis
+Description: vorbis is the primary Ogg Vorbis library (uninstalled)
+Version: @VERSION@
+Requires: ogg
+Conflicts:
+Libs: @VORBIS_LIBS@ ${libdir}/libvorbis.la
+Cflags: -I${includedir}
Index: /libvorbis-1.2.0/vorbis.m4
===================================================================
--- /libvorbis-1.2.0/vorbis.m4	(revision 16)
+++ /libvorbis-1.2.0/vorbis.m4	(revision 16)
@@ -0,0 +1,122 @@
+# Configure paths for libvorbis
+# Jack Moffitt <jack@icecast.org> 10-21-2000
+# Shamelessly stolen from Owen Taylor and Manish Singh
+# thomasvs added check for vorbis_bitrate_addblock which is new in rc3
+
+dnl XIPH_PATH_VORBIS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libvorbis, and define VORBIS_CFLAGS and VORBIS_LIBS
+dnl
+AC_DEFUN([XIPH_PATH_VORBIS],
+[dnl 
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(vorbis,[  --with-vorbis=PFX   Prefix where libvorbis is installed (optional)], vorbis_prefix="$withval", vorbis_prefix="")
+AC_ARG_WITH(vorbis-libraries,[  --with-vorbis-libraries=DIR   Directory where libvorbis library is installed (optional)], vorbis_libraries="$withval", vorbis_libraries="")
+AC_ARG_WITH(vorbis-includes,[  --with-vorbis-includes=DIR   Directory where libvorbis header files are installed (optional)], vorbis_includes="$withval", vorbis_includes="")
+AC_ARG_ENABLE(vorbistest, [  --disable-vorbistest       Do not try to compile and run a test Vorbis program],, enable_vorbistest=yes)
+
+  if test "x$vorbis_libraries" != "x" ; then
+    VORBIS_LIBS="-L$vorbis_libraries"
+  elif test "x$vorbis_prefix" != "x" ; then
+    VORBIS_LIBS="-L$vorbis_prefix/lib"
+  elif test "x$prefix" != "xNONE"; then
+    VORBIS_LIBS="-L$prefix/lib"
+  fi
+
+  VORBIS_LIBS="$VORBIS_LIBS -lvorbis -lm"
+  VORBISFILE_LIBS="-lvorbisfile"
+  VORBISENC_LIBS="-lvorbisenc"
+
+  if test "x$vorbis_includes" != "x" ; then
+    VORBIS_CFLAGS="-I$vorbis_includes"
+  elif test "x$vorbis_prefix" != "x" ; then
+    VORBIS_CFLAGS="-I$vorbis_prefix/include"
+  elif test "x$prefix" != "xNONE"; then
+    VORBIS_CFLAGS="-I$prefix/include"
+  fi
+
+
+  AC_MSG_CHECKING(for Vorbis)
+  no_vorbis=""
+
+
+  if test "x$enable_vorbistest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $VORBIS_CFLAGS $OGG_CFLAGS"
+    LIBS="$LIBS $VORBIS_LIBS $VORBISENC_LIBS $OGG_LIBS"
+dnl
+dnl Now check if the installed Vorbis is sufficiently new.
+dnl
+      rm -f conf.vorbistest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <vorbis/codec.h>
+#include <vorbis/vorbisenc.h>
+
+int main ()
+{
+    vorbis_block 	vb;
+    vorbis_dsp_state	vd;
+    vorbis_info		vi;
+
+    vorbis_info_init (&vi);
+    vorbis_encode_init (&vi, 2, 44100, -1, 128000, -1);
+    vorbis_analysis_init (&vd, &vi);
+    vorbis_block_init (&vd, &vb);
+    /* this function was added in 1.0rc3, so this is what we're testing for */
+    vorbis_bitrate_addblock (&vb);
+
+    system("touch conf.vorbistest");
+    return 0;
+}
+
+],, no_vorbis=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_vorbis" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])     
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.vorbistest ; then
+       :
+     else
+       echo "*** Could not run Vorbis test program, checking why..."
+       CFLAGS="$CFLAGS $VORBIS_CFLAGS"
+       LIBS="$LIBS $VORBIS_LIBS $OGG_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <vorbis/codec.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding Vorbis or finding the wrong"
+       echo "*** version of Vorbis. If it is not finding Vorbis, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means Vorbis was incorrectly installed"
+       echo "*** or that you have moved Vorbis since it was installed." ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     VORBIS_CFLAGS=""
+     VORBIS_LIBS=""
+     VORBISFILE_LIBS=""
+     VORBISENC_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(VORBIS_CFLAGS)
+  AC_SUBST(VORBIS_LIBS)
+  AC_SUBST(VORBISFILE_LIBS)
+  AC_SUBST(VORBISENC_LIBS)
+  rm -f conf.vorbistest
+])
Index: /libvorbis-1.2.0/vorbis.pc.in
===================================================================
--- /libvorbis-1.2.0/vorbis.pc.in	(revision 16)
+++ /libvorbis-1.2.0/vorbis.pc.in	(revision 16)
@@ -0,0 +1,14 @@
+# libvorbis pkg-config source file
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: vorbis
+Description: vorbis is the primary Ogg Vorbis library
+Version: @VERSION@
+Requires: ogg
+Conflicts:
+Libs: -L${libdir} -lvorbis -lm
+Cflags: -I${includedir}
Index: /libvorbis-1.2.0/vorbisenc-uninstalled.pc.in
===================================================================
--- /libvorbis-1.2.0/vorbisenc-uninstalled.pc.in	(revision 16)
+++ /libvorbis-1.2.0/vorbisenc-uninstalled.pc.in	(revision 16)
@@ -0,0 +1,14 @@
+# vorbisenc uninstalled pkg-config file
+
+prefix=
+exec_prefix=
+libdir=${pcfiledir}/lib
+includedir=${pcfiledir}/include
+
+Name: vorbisenc
+Description: vorbisenc is a library that provides a convenient API for setting up an encoding environment using libvorbis (uninstalled)
+Version: @VERSION@
+Requires: vorbis
+Conflicts:
+Libs: ${libdir}/libvorbisenc.la
+Cflags: -I${includedir}
Index: /libvorbis-1.2.0/vorbisenc.pc.in
===================================================================
--- /libvorbis-1.2.0/vorbisenc.pc.in	(revision 16)
+++ /libvorbis-1.2.0/vorbisenc.pc.in	(revision 16)
@@ -0,0 +1,14 @@
+# libvorbisenc pkg-config source file
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: vorbisenc
+Description: vorbisenc is a library that provides a convenient API for setting up an encoding environment using libvorbis
+Version: @VERSION@
+Requires: vorbis
+Conflicts:
+Libs: -L${libdir} -lvorbisenc
+Cflags: -I${includedir}
Index: /libvorbis-1.2.0/vorbisfile-uninstalled.pc.in
===================================================================
--- /libvorbis-1.2.0/vorbisfile-uninstalled.pc.in	(revision 16)
+++ /libvorbis-1.2.0/vorbisfile-uninstalled.pc.in	(revision 16)
@@ -0,0 +1,14 @@
+# vorbisfile uninstalled pkg-config file
+
+prefix=
+exec_prefix=
+libdir=${pcfiledir}/lib
+includedir=${pcfiledir}/include
+
+Name: vorbisfile
+Description: vorbisfile is a library that provides a convenient high-level API for decoding and basic manipulation of all Vorbis I audio streams (uninstalled)
+Version: @VERSION@
+Requires: vorbis
+Conflicts:
+Libs: ${libdir}/libvorbisfile.la
+Cflags: -I${includedir}
Index: /libvorbis-1.2.0/vorbisfile.pc.in
===================================================================
--- /libvorbis-1.2.0/vorbisfile.pc.in	(revision 16)
+++ /libvorbis-1.2.0/vorbisfile.pc.in	(revision 16)
@@ -0,0 +1,14 @@
+# libvorbisfile pkg-config source file
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: vorbisfile
+Description: vorbisfile is a library that provides a convenient high-level API for decoding and basic manipulation of all Vorbis I audio streams
+Version: @VERSION@
+Requires: vorbis
+Conflicts:
+Libs: -L${libdir} -lvorbisfile
+Cflags: -I${includedir}
Index: /libvorbis-1.2.0/vq/.deps/bookutil.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/bookutil.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/bookutil.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/distribution.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/distribution.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/distribution.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/huffbuild.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/huffbuild.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/huffbuild.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/latticebuild.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/latticebuild.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/latticebuild.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/latticehint.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/latticehint.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/latticehint.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/latticepare.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/latticepare.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/latticepare.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/latticetune.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/latticetune.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/latticetune.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/vqgen.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/vqgen.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/vqgen.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/.deps/vqsplit.Po
===================================================================
--- /libvorbis-1.2.0/vq/.deps/vqsplit.Po	(revision 16)
+++ /libvorbis-1.2.0/vq/.deps/vqsplit.Po	(revision 16)
@@ -0,0 +1,1 @@
+# dummy
Index: /libvorbis-1.2.0/vq/16.vqs
===================================================================
--- /libvorbis-1.2.0/vq/16.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/16.vqs	(revision 16)
@@ -0,0 +1,77 @@
+
+GO
+
+>_16c0_s noninterleaved
+haux 16c0_s/resaux_0.vqd _16c0_s_single 0,64,2 10
+	
+:_p1_0 16c0_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 16c0_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 16c0_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 16c0_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 16c0_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 16c0_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 16c0_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 16c0_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 16c0_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 16c0_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 16c0_s/res_part9_pass0.vqd, 4, nonseq, 0 +- 315
+:_p9_1 16c0_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p9_2 16c0_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+>_16c1s_s noninterleaved
+haux 16c1_s/resaux_0.vqd _16c1_s_short 0,64,2 10
+
+>_16c1_s noninterleaved
+haux 16c1_s/resaux_1.vqd _16c1_s_long 0,64,2 10
+	
+:_p1_0 16c1_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 16c1_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 16c1_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 16c1_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 16c1_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 16c1_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 16c1_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 16c1_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 16c1_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 16c1_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 16c1_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 315 630 945 1260 1575 1890
+:_p9_1 16c1_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p9_2 16c1_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+>_16c2s_s noninterleaved
+haux 16c2_s/resaux_0.vqd _16c2_s_short 0,64,2 10
+>_16c2_s noninterleaved
+haux 16c2_s/resaux_1.vqd _16c2_s_long 0,64,2 10
+        
+:_p1_0 16c2_s/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 16c2_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 16c2_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 16c2_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 16c2_s/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 16c2_s/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 16c2_s/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 16c2_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 16c2_s/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 16c2_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 16c2_s/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 16c2_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 16c2_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 931 1862 2793 3724 4655 5586 
+6517 7448 
+:_p9_1 16c2_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 343 392
+ 441
+:_p9_2 16c2_s/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13
+ 14 15 16 17 18 19 20 21 22 23 24 
+
Index: /libvorbis-1.2.0/vq/16u.vqs
===================================================================
--- /libvorbis-1.2.0/vq/16u.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/16u.vqs	(revision 16)
@@ -0,0 +1,71 @@
+
+GO
+
+>_16u0_ noninterleaved
+haux 16u0/resaux_0.vqd _16u0__single 0,64,2 8
+	
+:_p1_0 16u0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 16u0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 16u0/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 16u0/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 16u0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 16u0/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 16u0/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 16u0/res_part7_pass0.vqd, 4, nonseq, 0 +- 315
+:_p7_1 16u0/res_part7_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p7_2 16u0/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+	
+>_16u1s_ noninterleaved
+haux 16u1/resaux_0.vqd _16u1__short 0,64,2 10
+>_16u1_ noninterleaved
+haux 16u1/resaux_1.vqd _16u1__long 0,64,2 10
+	
+:_p1_0 16u1/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 16u1/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 16u1/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 16u1/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 16u1/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 16u1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p7_0 16u1/res_part7_pass0.vqd, 4, nonseq, 0 +- 11
+:_p7_1 16u1/res_part7_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p8_0 16u1/res_part8_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55
+:_p8_1 16u1/res_part8_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p9_0 16u1/res_part9_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020 1275 1530 1785
+:_p9_1 16u1/res_part9_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p9_2 16u1/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
+>_16u2s noninterleaved
+haux 16u2/resaux_0.vqd _16u2__short 0,16,2 10
+
+>_16u2 noninterleaved
+haux 16u2/resaux_1.vqd _16u2__long 0,64,2 10
+        
+:_p1_0 16u2/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 16u2/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 16u2/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 16u2/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 16u2/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 16u2/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 16u2/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 16u2/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 16u2/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 16u2/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 16u2/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 16u2/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 16u2/res_part9_pass0.vqd, 2, nonseq, 0 +- 931 1862 2793 3724 4655 5586 65
+17
+:_p9_1 16u2/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 343 392 4
+41
+:_p9_2 16u2/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
+
Index: /libvorbis-1.2.0/vq/44c-1.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c-1.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c-1.vqs	(revision 16)
@@ -0,0 +1,63 @@
+GO
+
+>_44cn1s_s noninterleaved
+haux 44c-1_s/resaux_0.vqd _44cn1_s_short 0,16,2 9
+
+>_44cn1_s noninterleaved
+haux 44c-1_s/resaux_1.vqd _44cn1_s_long 0,64,2 9
+	
+#     0   1   2   2   4   8  16  32   +      
+#         0   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8
+# 1                           .   .   .
+# 2                           .   .   .
+# 4       .   .   .   .   .           .
+ 
+:_p1_0 44c-1_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c-1_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c-1_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c-1_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c-1_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p6_0 44c-1_s/res_part6_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p6_1 44c-1_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p7_0 44c-1_s/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p7_1 44c-1_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p8_0 44c-1_s/res_part8_pass0.vqd, 4, nonseq, 0 +- 221 442
+:_p8_1 44c-1_s/res_part8_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p8_2 44c-1_s/res_part8_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
+
+>_44cn1s_sm noninterleaved
+haux 44c-1_sm/resaux_0.vqd _44cn1_sm_short 0,16,2 9
+
+>_44cn1_sm noninterleaved
+haux 44c-1_sm/resaux_1.vqd _44cn1_sm_long 0,64,2 9
+	
+#     0   1   2   2   4   8  16  32   +      
+#         0   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8
+# 1                           .   .   .
+# 2                           .   .   .
+# 4       .   .   .   .   .           .
+ 
+:_p1_0 44c-1_sm/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c-1_sm/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c-1_sm/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c-1_sm/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c-1_sm/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p6_0 44c-1_sm/res_part6_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p6_1 44c-1_sm/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p7_0 44c-1_sm/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p7_1 44c-1_sm/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p8_0 44c-1_sm/res_part8_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884
+:_p8_1 44c-1_sm/res_part8_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p8_2 44c-1_sm/res_part8_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
Index: /libvorbis-1.2.0/vq/44c0.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c0.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c0.vqs	(revision 16)
@@ -0,0 +1,65 @@
+GO
+
+>_44c0s_s noninterleaved
+haux 44c0_s/resaux_0.vqd _44c0_s_short 0,16,2 9
+
+>_44c0_s noninterleaved
+haux 44c0_s/resaux_1.vqd _44c0_s_long 0,64,2 9
+	
+#     0   1   2   2   4   8  16  32   +      
+#         0   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8
+# 1                           .   .   .
+# 2                           .   .   .
+# 4       .   .   .   .   .           .
+ 
+:_p1_0 44c0_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c0_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c0_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c0_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c0_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p6_0 44c0_s/res_part6_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p6_1 44c0_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p7_0 44c0_s/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p7_1 44c0_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p8_0 44c0_s/res_part8_pass0.vqd, 4, nonseq, 0 +- 221 442
+:_p8_1 44c0_s/res_part8_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p8_2 44c0_s/res_part8_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
+
+>_44c0s_sm noninterleaved
+haux 44c0_sm/resaux_0.vqd _44c0_sm_short 0,16,2 9
+
+>_44c0_sm noninterleaved
+haux 44c0_sm/resaux_1.vqd _44c0_sm_long 0,64,2 9
+	
+#     0   1   2   2   4   8  16  32   +      
+#         0   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8
+# 1                           .   .   .
+# 2                           .   .   .
+# 4       .   .   .   .   .           .
+ 
+:_p1_0 44c0_sm/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c0_sm/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c0_sm/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c0_sm/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c0_sm/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p6_0 44c0_sm/res_part6_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p6_1 44c0_sm/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p7_0 44c0_sm/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p7_1 44c0_sm/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p8_0 44c0_sm/res_part8_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884
+:_p8_1 44c0_sm/res_part8_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p8_2 44c0_sm/res_part8_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
Index: /libvorbis-1.2.0/vq/44c1.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c1.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c1.vqs	(revision 16)
@@ -0,0 +1,66 @@
+
+GO
+
+>_44c1s_s noninterleaved
+haux 44c1_s/resaux_0.vqd _44c1_s_short 0,16,2 9
+
+>_44c1_s noninterleaved
+haux 44c1_s/resaux_1.vqd _44c1_s_long 0,64,2 9
+	
+#     0   1   2   2   4   8  16  32   +      
+#         0   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8
+# 1                           .   .   .
+# 2                           .   .   .
+# 4       .   .   .   .   .           .
+ 
+:_p1_0 44c1_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c1_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c1_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c1_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c1_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p6_0 44c1_s/res_part6_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p6_1 44c1_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p7_0 44c1_s/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p7_1 44c1_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p8_0 44c1_s/res_part8_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326
+:_p8_1 44c1_s/res_part8_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p8_2 44c1_s/res_part8_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
+
+>_44c1s_sm noninterleaved
+haux 44c1_sm/resaux_0.vqd _44c1_sm_short 0,16,2 9
+
+>_44c1_sm noninterleaved
+haux 44c1_sm/resaux_1.vqd _44c1_sm_long 0,64,2 9
+	
+#     0   1   2   2   4   8  16  32   +      
+#         0   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8
+# 1                           .   .   .
+# 2                           .   .   .
+# 4       .   .   .   .   .           .
+ 
+:_p1_0 44c1_sm/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c1_sm/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c1_sm/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c1_sm/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c1_sm/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p6_0 44c1_sm/res_part6_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p6_1 44c1_sm/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p7_0 44c1_sm/res_part7_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p7_1 44c1_sm/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p8_0 44c1_sm/res_part8_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326
+:_p8_1 44c1_sm/res_part8_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p8_2 44c1_sm/res_part8_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
Index: /libvorbis-1.2.0/vq/44c2.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c2.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c2.vqs	(revision 16)
@@ -0,0 +1,37 @@
+GO
+
+>_44c2s_s noninterleaved
+haux 44c2_s/resaux_0.vqd _44c2_s_short 0,16,2 10
+
+>_44c2_s noninterleaved
+haux 44c2_s/resaux_1.vqd _44c2_s_long 0,64,2 10
+	
+#iter 0
+
+#     0   1   1   2   2   4   8  16  32   +      
+#         0  99   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                               .   .   .
+# 2                               .   .   .
+# 4       .   .   .   .   .   .           .
+ 
+:_p1_0 44c2_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c2_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c2_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44c2_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c2_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44c2_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 44c2_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 44c2_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 44c2_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 44c2_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 44c2_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 221 442 663 884 1105 1326
+:_p9_1 44c2_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 
+:_p9_2 44c2_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
+	
Index: /libvorbis-1.2.0/vq/44c3.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c3.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c3.vqs	(revision 16)
@@ -0,0 +1,36 @@
+
+GO
+
+>_44c3s_s noninterleaved
+haux 44c3_s/resaux_0.vqd _44c3_s_short 0,16,2 10
+
+>_44c3_s noninterleaved
+haux 44c3_s/resaux_1.vqd _44c3_s_long 0,64,2 10
+	
+#iter 0
+
+#     0   1   1   2   2   4   8  16  32   +      
+#         0  99   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                               .   .   .
+# 2                               .   .   .
+# 4       .   .   .   .   .   .           .
+ 
+:_p1_0 44c3_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c3_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c3_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44c3_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c3_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44c3_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 44c3_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 44c3_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 44c3_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 44c3_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 44c3_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020 1275 1530
+:_p9_1 44c3_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p9_2 44c3_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
Index: /libvorbis-1.2.0/vq/44c4.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c4.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c4.vqs	(revision 16)
@@ -0,0 +1,36 @@
+
+GO
+
+>_44c4s_s noninterleaved
+haux 44c4_s/resaux_0.vqd _44c4_s_short 0,16,2 10
+
+>_44c4_s noninterleaved
+haux 44c4_s/resaux_1.vqd _44c4_s_long 0,64,2 10
+	
+#iter 0
+
+#     0   1   1   2   2   4   8  16  32   +      
+#         0  99   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                               .   .   .
+# 2                               .   .   .
+# 4       .   .   .   .   .   .           .
+ 
+:_p1_0 44c4_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c4_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c4_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44c4_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c4_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44c4_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 44c4_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 44c4_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 44c4_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 44c4_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 44c4_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 315 630 945 1260 1575 1890
+:_p9_1 44c4_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p9_2 44c4_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
Index: /libvorbis-1.2.0/vq/44c5.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c5.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c5.vqs	(revision 16)
@@ -0,0 +1,37 @@
+
+GO
+
+>_44c5s_s noninterleaved
+haux 44c5_s/resaux_0.vqd _44c5_s_short 0,16,2 10
+
+>_44c5_s noninterleaved
+haux 44c5_s/resaux_1.vqd _44c5_s_long 0,64,2 10
+	
+#iter 0
+
+#     0   1   1   2   2   4   8  16  32   +      
+#         0  99   0  99   4   8  16  32   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                               .   .   .
+# 2                               .   .   .
+# 4       .   .   .   .   .   .           .
+ 
+:_p1_0 44c5_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 44c5_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c5_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44c5_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 44c5_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44c5_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 44c5_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 44c5_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 44c5_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 44c5_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 44c5_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 357 714 1071 1428 1785 2142 2499
+:_p9_1 44c5_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147 168
+:_p9_2 44c5_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
+
Index: /libvorbis-1.2.0/vq/44c6.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c6.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c6.vqs	(revision 16)
@@ -0,0 +1,37 @@
+GO
+
+>_44c6s_s noninterleaved
+haux 44c6_s/resaux_0.vqd _44c6_s_short 0,16,2 10
+
+>_44c6_s noninterleaved
+haux 44c6_s/resaux_1.vqd _44c6_s_long 0,64,2 10
+	
+
+#     0   1   2   4   8  16  32  71 157   +      
+#         1   2   3   4   8  16  71 157   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                       .   .   .   .   .
+# 2                       .   .   .   .   .
+# 4       .   .   .   .                   .
+ 
+:_p1_0 44c6_s/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 44c6_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c6_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c6_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 44c6_s/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 44c6_s/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 44c6_s/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44c6_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44c6_s/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 44c6_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 44c6_s/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 44c6_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 44c6_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 3185 3822
+:_p9_1 44c6_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294
+:_p9_2 44c6_s/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
Index: /libvorbis-1.2.0/vq/44c7.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c7.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c7.vqs	(revision 16)
@@ -0,0 +1,38 @@
+
+GO
+
+>_44c7s_s noninterleaved
+haux 44c7_s/resaux_0.vqd _44c7_s_short 0,16,2 10
+
+>_44c7_s noninterleaved
+haux 44c7_s/resaux_1.vqd _44c7_s_long 0,64,2 10
+	
+
+#     0   1   2   4   8  16  32  71 157   +      
+#         1   2   3   4   8  16  71 157   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                       .   .   .   .   .
+# 2                       .   .   .   .   .
+# 4       .   .   .   .                   .
+ 
+:_p1_0 44c7_s/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 44c7_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c7_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c7_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 44c7_s/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 44c7_s/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 44c7_s/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44c7_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44c7_s/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 44c7_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 44c7_s/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 44c7_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 44c7_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 3185 3822
+:_p9_1 44c7_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294
+:_p9_2 44c7_s/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
Index: /libvorbis-1.2.0/vq/44c8.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c8.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c8.vqs	(revision 16)
@@ -0,0 +1,39 @@
+
+GO
+
+>_44c8s_s noninterleaved
+haux 44c8_s/resaux_0.vqd _44c8_s_short 0,16,2 10
+
+>_44c8_s noninterleaved
+haux44c8_s/resaux_1.vqd  _44c8_s_long 0,64,2 10
+	
+
+#     0   1   2   4   8  16  32  71 157   +      
+#         1   2   3   4   8  16  71 157   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                       .   .   .   .   .
+# 2                       .   .   .   .   .
+# 4       .   .   .   .                   .
+ 
+:_p1_0 44c8_s/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 44c8_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c8_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c8_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 44c8_s/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 44c8_s/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 44c8_s/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44c8_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44c8_s/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 44c8_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 44c8_s/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 44c8_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 44c8_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 931 1862 2793 3724 4655 5586 6517 7448 
+:_p9_1 44c8_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 343 392 441
+:_p9_2 44c8_s/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
+
Index: /libvorbis-1.2.0/vq/44c9.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44c9.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44c9.vqs	(revision 16)
@@ -0,0 +1,37 @@
+GO
+
+>_44c9s_s noninterleaved
+haux 44c9_s/resaux_0.vqd _44c9_s_short 0,16,2 10
+
+>_44c9_s noninterleaved
+haux 44c9_s/resaux_1.vqd _44c9_s_long 0,64,2 10
+	
+
+#     0   1   2   4   8  16  32  71 157   +      
+#         1   2   3   4   8  16  71 157   +
+
+#     0   1   2   3   4   5   6   7   8   9
+# 1                       .   .   .   .   .
+# 2                       .   .   .   .   .
+# 4       .   .   .   .                   .
+ 
+:_p1_0 44c9_s/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 44c9_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44c9_s/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44c9_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 44c9_s/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 44c9_s/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 44c9_s/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44c9_s/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44c9_s/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 44c9_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 44c9_s/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 44c9_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 44c9_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 931 1862 2793 3724 4655 5586 6517 7448 8379
+:_p9_1 44c9_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 343 392 441
+:_p9_2 44c9_s/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
Index: /libvorbis-1.2.0/vq/44u0.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u0.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u0.vqs	(revision 16)
@@ -0,0 +1,33 @@
+GO
+
+>_44u0_ noninterleaved
+haux 44u0/resaux_0.vqd _44u0__short 0,16,2 8
+
+>_44u0_ noninterleaved
+haux 44u0/resaux_1.vqd _44u0__long 0,64,2 8
+	
+#iter 0
+
+
+
+#       0   1   1   2   2   4  32   +
+#          25   0  45   0   0   0   0   
+#
+#       0   1   2   3   4   5   6   7
+#   1                           .   .
+#   2                           .   .
+#   4       .   .   .   .   .       .
+
+:_p1_0 44u0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u0/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u0/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 44u0/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u0/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u0/res_part7_pass0.vqd, 4, nonseq, 0 +- 169 338
+:_p7_1 44u0/res_part7_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 
+:_p7_2 44u0/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
+
Index: /libvorbis-1.2.0/vq/44u1.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u1.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u1.vqs	(revision 16)
@@ -0,0 +1,33 @@
+GO
+
+>_44u1_ noninterleaved
+haux 44u1/resaux_0.vqd _44u1__short 0,16,2 8
+
+>_44u1_ noninterleaved
+haux 44u1/resaux_1.vqd _44u1__long 0,64,2 8
+	
+#iter 0
+
+
+
+#       0   1   1   2   2   4  32   +
+#          25   0  45   0   0   0   0   
+#
+#       0   1   2   3   4   5   6   7
+#   1                           .   .
+#   2                           .   .
+#   4       .   .   .   .   .       .
+
+:_p1_0 44u1/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u1/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u1/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u1/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u1/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 44u1/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u1/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u1/res_part7_pass0.vqd, 2, nonseq, 0 +- 169 338 507
+:_p7_1 44u1/res_part7_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 
+:_p7_2 44u1/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
+
Index: /libvorbis-1.2.0/vq/44u2.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u2.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u2.vqs	(revision 16)
@@ -0,0 +1,32 @@
+GO
+
+>_44u2_ noninterleaved
+haux 44u2/resaux_0.vqd _44u2__short 0,16,2 8
+
+>_44u2_ noninterleaved
+haux 44u2/resaux_1.vqd _44u2__long 0,64,2 8
+	
+#iter 0
+
+
+
+#       0   1   1   2   2   4  32   +
+#          25   0  45   0   0   0   0   
+#
+#       0   1   2   3   4   5   6   7
+#   1                           .   .
+#   2                           .   .
+#   4       .   .   .   .   .       .
+
+:_p1_0 44u2/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u2/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u2/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u2/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u2/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 44u2/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u2/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u2/res_part7_pass0.vqd, 2, nonseq, 0 +- 169 338 507 676
+:_p7_1 44u2/res_part7_pass1.vqd, 2, nonseq, 0 +- 13 26 39 52 65 78 
+:_p7_2 44u2/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6
Index: /libvorbis-1.2.0/vq/44u3.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u3.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u3.vqs	(revision 16)
@@ -0,0 +1,33 @@
+
+GO
+
+>_44u3_ noninterleaved
+haux 44u3/resaux_0.vqd _44u3__short 0,16,2 8
+
+>_44u3_ noninterleaved
+haux 44u3/resaux_1.vqd _44u3__long 0,64,2 8
+	
+#iter 0
+
+
+
+#       0   1   1   2   2   4  32   +
+#          25   0  45   0   0   0   0   
+#
+#       0   1   2   3   4   5   6   7
+#   1                           .   .
+#   2                           .   .
+#   4       .   .   .   .   .       .
+
+:_p1_0 44u3/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u3/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u3/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u3/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u3/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 44u3/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u3/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u3/res_part7_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020
+:_p7_1 44u3/res_part7_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p7_2 44u3/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
Index: /libvorbis-1.2.0/vq/44u4.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u4.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u4.vqs	(revision 16)
@@ -0,0 +1,33 @@
+
+GO
+
+>_44u4_ noninterleaved
+haux 44u4/resaux_0.vqd _44u4__short 0,16,2 8
+
+>_44u4_ noninterleaved
+haux 44u4/resaux_1.vqd _44u4__long 0,64,2 8
+	
+#iter 0
+
+
+
+#       0   1   1   2   2   4  32   +
+#          25   0  45   0   0   0   0   
+#
+#       0   1   2   3   4   5   6   7
+#   1                           .   .
+#   2                           .   .
+#   4       .   .   .   .   .       .
+
+:_p1_0 44u4/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u4/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u4/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u4/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u4/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 44u4/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u4/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u4/res_part7_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020 1275 1530
+:_p7_1 44u4/res_part7_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p7_2 44u4/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
Index: /libvorbis-1.2.0/vq/44u5.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u5.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u5.vqs	(revision 16)
@@ -0,0 +1,35 @@
+
+GO
+
+>_44u5_ noninterleaved
+haux 44u5/resaux_0.vqd _44u5__short 0,16,2 10
+
+>_44u5_ noninterleaved
+haux 44u5/resaux_1.vqd _44u5__long 0,64,2 10
+	
+#iter 0
+
+#       0   1   1   2   2   4   4  16  60   +
+#          30   0  50   0  80   0   0   0  
+#
+#       0   1   2   3   4   5   6   7   8   9
+#   1                               .   .   .
+#   2                               .   .   .
+#   4       .   .   .   .   .   .           . 
+
+:_p1_0 44u5/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u5/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u5/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u5/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u5/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44u5/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p7_0 44u5/res_part7_pass0.vqd, 4, nonseq, 0 +- 11
+:_p7_1 44u5/res_part7_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p8_0 44u5/res_part8_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55
+:_p8_1 44u5/res_part8_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p9_0 44u5/res_part9_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020 1275 1530
+:_p9_1 44u5/res_part9_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p9_2 44u5/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
Index: /libvorbis-1.2.0/vq/44u6.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u6.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u6.vqs	(revision 16)
@@ -0,0 +1,35 @@
+
+GO
+
+>_44u6_ noninterleaved
+haux 44u6/resaux_0.vqd _44u6__short 0,16,2 10
+
+>_44u6_ noninterleaved
+haux 44u6/resaux_1.vqd _44u6__long 0,64,2 10
+	
+#iter 0
+
+#       0   1   1   2   2   4   4  16  60   +
+#          30   0  50   0  80   0   0   0  
+#
+#       0   1   2   3   4   5   6   7   8   9
+#   1                               .   .   .
+#   2                               .   .   .
+#   4       .   .   .   .   .   .           . 
+
+:_p1_0 44u6/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u6/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u6/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u6/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u6/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44u6/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p7_0 44u6/res_part7_pass0.vqd, 4, nonseq, 0 +- 11
+:_p7_1 44u6/res_part7_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p8_0 44u6/res_part8_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55
+:_p8_1 44u6/res_part8_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p9_0 44u6/res_part9_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020 1275 1530 1785
+:_p9_1 44u6/res_part9_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p9_2 44u6/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
Index: /libvorbis-1.2.0/vq/44u7.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u7.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u7.vqs	(revision 16)
@@ -0,0 +1,34 @@
+GO
+
+>_44u7_ noninterleaved
+haux 44u7/resaux_0.vqd _44u7__short 0,16,2 10
+
+>_44u7_ noninterleaved
+haux 44u7/resaux_1.vqd _44u7__long 0,64,2 10
+	
+#iter 0
+
+#       0   1   1   2   2   4   4  16  60   +
+#          30   0  50   0  80   0   0   0  
+#
+#       0   1   2   3   4   5   6   7   8   9
+#   1                               .   .   .
+#   2                               .   .   .
+#   4       .   .   .   .   .   .           . 
+
+:_p1_0 44u7/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 44u7/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 44u7/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 44u7/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 44u7/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 44u7/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p7_0 44u7/res_part7_pass0.vqd, 4, nonseq, 0 +- 11
+:_p7_1 44u7/res_part7_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p8_0 44u7/res_part8_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55
+:_p8_1 44u7/res_part8_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p9_0 44u7/res_part9_pass0.vqd, 2, nonseq, 0 +- 637 1274 1911 2548 3185
+:_p9_1 44u7/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294
+:_p9_2 44u7/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
Index: /libvorbis-1.2.0/vq/44u8.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u8.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u8.vqs	(revision 16)
@@ -0,0 +1,35 @@
+GO
+
+>_44u8s noninterleaved
+haux 44u8/resaux_0.vqd _44u8__short 0,16,2 10
+
+>_44u8 noninterleaved
+haux 44u8/resaux_1.vqd _44u8__long 0,64,2 10
+	
+
+#     0   1   2   4   8  16  32  71 157   +      
+#     0   1   2   3   4   5   6   7   8   9
+# 1                       .   .   .   .   .
+# 2                       .   .   .   .   .
+# 4       .   .   .   .                   .
+ 
+:_p1_0 44u8/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 44u8/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44u8/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44u8/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 44u8/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 44u8/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 44u8/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u8/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u8/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 44u8/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 44u8/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 44u8/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 44u8/res_part9_pass0.vqd, 2, nonseq, 0 +- 931 1862 2793 3724
+:_p9_1 44u8/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 343 392 441
+:_p9_2 44u8/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
Index: /libvorbis-1.2.0/vq/44u9.vqs
===================================================================
--- /libvorbis-1.2.0/vq/44u9.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/44u9.vqs	(revision 16)
@@ -0,0 +1,36 @@
+
+GO
+
+>_44u9s noninterleaved
+haux 44u9/resaux_0.vqd _44u9__short 0,16,2 10
+
+>_44u9 noninterleaved
+haux 44u9/resaux_1.vqd _44u9__long 0,64,2 10
+	
+
+#     0   1   2   4   8  16  32  71 157   +      
+#     0   1   2   3   4   5   6   7   8   9
+# 1                       .   .   .   .   .
+# 2                       .   .   .   .   .
+# 4       .   .   .   .                   .
+ 
+:_p1_0 44u9/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1
+:_p2_0 44u9/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 44u9/res_part3_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p4_0 44u9/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+:_p5_0 44u9/res_part5_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p5_1 44u9/res_part5_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p6_0 44u9/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 44u9/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 44u9/res_part7_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55 66
+:_p7_1 44u9/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5
+
+:_p8_0 44u9/res_part8_pass0.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p8_1 44u9/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+:_p9_0 44u9/res_part9_pass0.vqd, 2, nonseq, 0 +- 931 1862 2793 3724 4655 5586 6517 
+:_p9_1 44u9/res_part9_pass1.vqd, 2, nonseq, 0 +- 49 98 147 196 245 294 343 392 441
+:_p9_2 44u9/res_part9_pass2.vqd, 1, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 
Index: /libvorbis-1.2.0/vq/8.vqs
===================================================================
--- /libvorbis-1.2.0/vq/8.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/8.vqs	(revision 16)
@@ -0,0 +1,43 @@
+GO
+
+>_8c0_s noninterleaved
+haux 8c0_s/resaux_0.vqd _8c0_s_single 0,64,2 10
+	
+:_p1_0 8c0_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 8c0_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 8c0_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 8c0_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 8c0_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 8c0_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 8c0_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 8c0_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 8c0_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 8c0_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 8c0_s/res_part9_pass0.vqd, 4, nonseq, 0 +- 315
+:_p9_1 8c0_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p9_2 8c0_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+>_8c1_s noninterleaved
+haux 8c1_s/resaux_0.vqd _8c1_s_single 0,64,2 10
+	
+:_p1_0 8c1_s/res_part1_pass2.vqd, 8, nonseq cull, 0 +- 1
+:_p2_0 8c1_s/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p3_0 8c1_s/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 8c1_s/res_part4_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p5_0 8c1_s/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 8c1_s/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 6 7 8
+
+
+:_p7_0 8c1_s/res_part7_pass0.vqd, 4, nonseq cull, 0 +- 11
+:_p7_1 8c1_s/res_part7_pass1.vqd, 2, nonseq cull, 0 +- 1 2 3 4 5 
+
+:_p8_0 8c1_s/res_part8_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p8_1 8c1_s/res_part8_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p9_0 8c1_s/res_part9_pass0.vqd, 2, nonseq, 0 +- 315 630 945 1260 1575 1890
+:_p9_1 8c1_s/res_part9_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p9_2 8c1_s/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
Index: /libvorbis-1.2.0/vq/8u.vqs
===================================================================
--- /libvorbis-1.2.0/vq/8u.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/8u.vqs	(revision 16)
@@ -0,0 +1,41 @@
+
+GO
+
+>_8u0_ noninterleaved
+haux 8u0/resaux_0.vqd _8u0__single 0,64,2 8
+	
+
+:_p1_0 8u0/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 8u0/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 8u0/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 8u0/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 8u0/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p6_0 8u0/res_part6_pass0.vqd, 2, nonseq cull, 0 +- 5 10 15 20 25 30
+:_p6_1 8u0/res_part6_pass1.vqd, 2, nonseq cull, 0 +- 1 2 
+
+:_p7_0 8u0/res_part7_pass0.vqd, 4, nonseq, 0 +- 315
+:_p7_1 8u0/res_part7_pass1.vqd, 2, nonseq, 0 +- 21 42 63 84 105 126 147
+:_p7_2 8u0/res_part7_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8 9 10
+
+	
+>_8u1_ noninterleaved
+haux 8u1/resaux_0.vqd _8u1__single 0,64,2 10
+	
+:_p1_0 8u1/res_part1_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p2_0 8u1/res_part2_pass2.vqd, 4, nonseq cull, 0 +- 1 
+:_p3_0 8u1/res_part3_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p4_0 8u1/res_part4_pass2.vqd, 4, nonseq cull, 0 +- 1 2
+:_p5_0 8u1/res_part5_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+:_p6_0 8u1/res_part6_pass2.vqd, 2, nonseq cull, 0 +- 1 2 3 4
+
+:_p7_0 8u1/res_part7_pass0.vqd, 4, nonseq, 0 +- 11
+:_p7_1 8u1/res_part7_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p8_0 8u1/res_part8_pass0.vqd, 2, nonseq, 0 +- 11 22 33 44 55
+:_p8_1 8u1/res_part8_pass1.vqd, 2, nonseq, 0 +- 1 2 3 4 5 
+
+:_p9_0 8u1/res_part9_pass0.vqd, 2, nonseq, 0 +- 255 510 765 1020 1275 1530 1785
+:_p9_1 8u1/res_part9_pass1.vqd, 2, nonseq, 0 +- 17 34 51 68 85 102 119
+:_p9_2 8u1/res_part9_pass2.vqd, 2, nonseq, 0 +- 1 2 3 4 5 6 7 8
+
Index: /libvorbis-1.2.0/vq/Makefile
===================================================================
--- /libvorbis-1.2.0/vq/Makefile	(revision 16)
+++ /libvorbis-1.2.0/vq/Makefile	(revision 16)
@@ -0,0 +1,532 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# vq/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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.
+
+
+
+pkgdatadir = $(datadir)/libvorbis
+pkglibdir = $(libdir)/libvorbis
+pkgincludedir = $(includedir)/libvorbis
+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 = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
+EXTRA_PROGRAMS = latticebuild$(EXEEXT) latticepare$(EXEEXT) \
+	latticehint$(EXEEXT) latticetune$(EXEEXT) huffbuild$(EXEEXT) \
+	distribution$(EXEEXT)
+subdir = vq
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am_distribution_OBJECTS = distribution.$(OBJEXT) bookutil.$(OBJEXT)
+distribution_OBJECTS = $(am_distribution_OBJECTS)
+distribution_LDADD = $(LDADD)
+distribution_DEPENDENCIES = ../lib/libvorbis.la
+am_huffbuild_OBJECTS = huffbuild.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT)
+huffbuild_OBJECTS = $(am_huffbuild_OBJECTS)
+huffbuild_LDADD = $(LDADD)
+huffbuild_DEPENDENCIES = ../lib/libvorbis.la
+am_latticebuild_OBJECTS = latticebuild.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT)
+latticebuild_OBJECTS = $(am_latticebuild_OBJECTS)
+latticebuild_LDADD = $(LDADD)
+latticebuild_DEPENDENCIES = ../lib/libvorbis.la
+am_latticehint_OBJECTS = latticehint.$(OBJEXT) bookutil.$(OBJEXT)
+latticehint_OBJECTS = $(am_latticehint_OBJECTS)
+latticehint_LDADD = $(LDADD)
+latticehint_DEPENDENCIES = ../lib/libvorbis.la
+am_latticepare_OBJECTS = latticepare.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT) vqsplit.$(OBJEXT)
+latticepare_OBJECTS = $(am_latticepare_OBJECTS)
+latticepare_LDADD = $(LDADD)
+latticepare_DEPENDENCIES = ../lib/libvorbis.la
+am_latticetune_OBJECTS = latticetune.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT)
+latticetune_OBJECTS = $(am_latticetune_OBJECTS)
+latticetune_LDADD = $(LDADD)
+latticetune_DEPENDENCIES = ../lib/libvorbis.la
+DEFAULT_INCLUDES = -I. -I$(top_builddir)
+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 = $(distribution_SOURCES) $(huffbuild_SOURCES) \
+	$(latticebuild_SOURCES) $(latticehint_SOURCES) \
+	$(latticepare_SOURCES) $(latticetune_SOURCES)
+DIST_SOURCES = $(distribution_SOURCES) $(huffbuild_SOURCES) \
+	$(latticebuild_SOURCES) $(latticehint_SOURCES) \
+	$(latticepare_SOURCES) $(latticetune_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run aclocal-1.10
+ALLOCA = 
+AMTAR = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run automake-1.10
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -O20 -ffast-math -D_REENTRANT -fsigned-char  -DUSE_MEMORY_H
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEBUG = -g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GREP = /bin/grep
+HAVE_PKG_CONFIG = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAINT = 
+MAKEINFO = ${SHELL} /home/giles/projects/ghostscript/libvorbis-1.2.0/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+OGG_CFLAGS =  
+OGG_LIBS = -logg  
+PACKAGE = libvorbis
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+PDFXMLTEX = 
+PKG_CONFIG = /usr/bin/pkg-config
+PROFILE = -pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 1.2.0
+VE_LIB_AGE = 0
+VE_LIB_CURRENT = 2
+VE_LIB_REVISION = 3
+VF_LIB_AGE = 2
+VF_LIB_CURRENT = 5
+VF_LIB_REVISION = 0
+VORBIS_LIBS = -lm
+V_LIB_AGE = 4
+V_LIB_CURRENT = 4
+V_LIB_REVISION = 0
+XSLTPROC = 
+abs_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0/vq
+abs_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0/vq
+abs_top_builddir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+abs_top_srcdir = /home/giles/projects/ghostscript/libvorbis-1.2.0
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/giles/projects/ghostscript/libvorbis-1.2.0/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+pthread_lib = -lpthread
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target = x86_64-unknown-linux-gnu
+target_alias = 
+target_cpu = x86_64
+target_os = linux-gnu
+target_vendor = unknown
+top_builddir = ..
+top_srcdir = ..
+INCLUDES = -I../lib -I$(top_srcdir)/include  
+CLEANFILES = $(EXTRA_PROGRAMS)
+AM_LDFLAGS = -static
+LDADD = ../lib/libvorbis.la
+latticebuild_SOURCES = latticebuild.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+
+latticepare_SOURCES = latticepare.c vqgen.c bookutil.c vqsplit.c\
+	vqgen.h vqsplit.h bookutil.h localcodebook.h
+
+latticehint_SOURCES = latticehint.c bookutil.c\
+	vqsplit.h bookutil.h localcodebook.h
+
+latticetune_SOURCES = latticetune.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+
+huffbuild_SOURCES = huffbuild.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+
+distribution_SOURCES = distribution.c bookutil.c\
+	bookutil.h localcodebook.h
+
+EXTRA_DIST = residue_entropy auxpartition.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 \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  vq/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  vq/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
+distribution$(EXEEXT): $(distribution_OBJECTS) $(distribution_DEPENDENCIES) 
+	@rm -f distribution$(EXEEXT)
+	$(LINK) $(distribution_OBJECTS) $(distribution_LDADD) $(LIBS)
+huffbuild$(EXEEXT): $(huffbuild_OBJECTS) $(huffbuild_DEPENDENCIES) 
+	@rm -f huffbuild$(EXEEXT)
+	$(LINK) $(huffbuild_OBJECTS) $(huffbuild_LDADD) $(LIBS)
+latticebuild$(EXEEXT): $(latticebuild_OBJECTS) $(latticebuild_DEPENDENCIES) 
+	@rm -f latticebuild$(EXEEXT)
+	$(LINK) $(latticebuild_OBJECTS) $(latticebuild_LDADD) $(LIBS)
+latticehint$(EXEEXT): $(latticehint_OBJECTS) $(latticehint_DEPENDENCIES) 
+	@rm -f latticehint$(EXEEXT)
+	$(LINK) $(latticehint_OBJECTS) $(latticehint_LDADD) $(LIBS)
+latticepare$(EXEEXT): $(latticepare_OBJECTS) $(latticepare_DEPENDENCIES) 
+	@rm -f latticepare$(EXEEXT)
+	$(LINK) $(latticepare_OBJECTS) $(latticepare_LDADD) $(LIBS)
+latticetune$(EXEEXT): $(latticetune_OBJECTS) $(latticetune_DEPENDENCIES) 
+	@rm -f latticetune$(EXEEXT)
+	$(LINK) $(latticetune_OBJECTS) $(latticetune_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/bookutil.Po
+include ./$(DEPDIR)/distribution.Po
+include ./$(DEPDIR)/huffbuild.Po
+include ./$(DEPDIR)/latticebuild.Po
+include ./$(DEPDIR)/latticehint.Po
+include ./$(DEPDIR)/latticepare.Po
+include ./$(DEPDIR)/latticetune.Po
+include ./$(DEPDIR)/vqgen.Po
+include ./$(DEPDIR)/vqsplit.Po
+
+.c.o:
+	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(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; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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
+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 -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 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
+
+
+debugvq:
+	$(MAKE) vq CFLAGS="-g -Wall -W -D_REENTRANT -D__NO_MATH_INLINES -fsigned-char"
+
+profilevq:
+	$(MAKE) vq CFLAGS="-pg -g -O20 -ffast-math -D_REENTRANT -fsigned-char"
+
+vq: 
+	$(MAKE) $(EXTRA_PROGRAMS) 
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/vq/Makefile.am
===================================================================
--- /libvorbis-1.2.0/vq/Makefile.am	(revision 16)
+++ /libvorbis-1.2.0/vq/Makefile.am	(revision 16)
@@ -0,0 +1,34 @@
+## Process this file with automake to produce Makefile.in
+
+INCLUDES = -I../lib -I$(top_srcdir)/include @OGG_CFLAGS@
+
+EXTRA_PROGRAMS = latticebuild latticepare latticehint\
+	latticetune huffbuild distribution
+CLEANFILES = $(EXTRA_PROGRAMS)
+
+AM_LDFLAGS = -static
+LDADD = ../lib/libvorbis.la
+
+latticebuild_SOURCES = latticebuild.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+latticepare_SOURCES = latticepare.c vqgen.c bookutil.c vqsplit.c\
+	vqgen.h vqsplit.h bookutil.h localcodebook.h
+latticehint_SOURCES = latticehint.c bookutil.c\
+	vqsplit.h bookutil.h localcodebook.h
+latticetune_SOURCES = latticetune.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+huffbuild_SOURCES = huffbuild.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+distribution_SOURCES = distribution.c bookutil.c\
+	bookutil.h localcodebook.h
+
+EXTRA_DIST = residue_entropy auxpartition.pl
+
+debugvq:
+	$(MAKE) vq CFLAGS="@DEBUG@"
+
+profilevq:
+	$(MAKE) vq CFLAGS="@PROFILE@"
+
+vq: 
+	$(MAKE) $(EXTRA_PROGRAMS) 
Index: /libvorbis-1.2.0/vq/Makefile.in
===================================================================
--- /libvorbis-1.2.0/vq/Makefile.in	(revision 16)
+++ /libvorbis-1.2.0/vq/Makefile.in	(revision 16)
@@ -0,0 +1,532 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006  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@
+target_triplet = @target@
+EXTRA_PROGRAMS = latticebuild$(EXEEXT) latticepare$(EXEEXT) \
+	latticehint$(EXEEXT) latticetune$(EXEEXT) huffbuild$(EXEEXT) \
+	distribution$(EXEEXT)
+subdir = vq
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am_distribution_OBJECTS = distribution.$(OBJEXT) bookutil.$(OBJEXT)
+distribution_OBJECTS = $(am_distribution_OBJECTS)
+distribution_LDADD = $(LDADD)
+distribution_DEPENDENCIES = ../lib/libvorbis.la
+am_huffbuild_OBJECTS = huffbuild.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT)
+huffbuild_OBJECTS = $(am_huffbuild_OBJECTS)
+huffbuild_LDADD = $(LDADD)
+huffbuild_DEPENDENCIES = ../lib/libvorbis.la
+am_latticebuild_OBJECTS = latticebuild.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT)
+latticebuild_OBJECTS = $(am_latticebuild_OBJECTS)
+latticebuild_LDADD = $(LDADD)
+latticebuild_DEPENDENCIES = ../lib/libvorbis.la
+am_latticehint_OBJECTS = latticehint.$(OBJEXT) bookutil.$(OBJEXT)
+latticehint_OBJECTS = $(am_latticehint_OBJECTS)
+latticehint_LDADD = $(LDADD)
+latticehint_DEPENDENCIES = ../lib/libvorbis.la
+am_latticepare_OBJECTS = latticepare.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT) vqsplit.$(OBJEXT)
+latticepare_OBJECTS = $(am_latticepare_OBJECTS)
+latticepare_LDADD = $(LDADD)
+latticepare_DEPENDENCIES = ../lib/libvorbis.la
+am_latticetune_OBJECTS = latticetune.$(OBJEXT) vqgen.$(OBJEXT) \
+	bookutil.$(OBJEXT)
+latticetune_OBJECTS = $(am_latticetune_OBJECTS)
+latticetune_LDADD = $(LDADD)
+latticetune_DEPENDENCIES = ../lib/libvorbis.la
+DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
+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 = $(distribution_SOURCES) $(huffbuild_SOURCES) \
+	$(latticebuild_SOURCES) $(latticehint_SOURCES) \
+	$(latticepare_SOURCES) $(latticetune_SOURCES)
+DIST_SOURCES = $(distribution_SOURCES) $(huffbuild_SOURCES) \
+	$(latticebuild_SOURCES) $(latticehint_SOURCES) \
+	$(latticepare_SOURCES) $(latticetune_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEBUG = @DEBUG@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+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@
+PDFXMLTEX = @PDFXMLTEX@
+PKG_CONFIG = @PKG_CONFIG@
+PROFILE = @PROFILE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+VE_LIB_AGE = @VE_LIB_AGE@
+VE_LIB_CURRENT = @VE_LIB_CURRENT@
+VE_LIB_REVISION = @VE_LIB_REVISION@
+VF_LIB_AGE = @VF_LIB_AGE@
+VF_LIB_CURRENT = @VF_LIB_CURRENT@
+VF_LIB_REVISION = @VF_LIB_REVISION@
+VORBIS_LIBS = @VORBIS_LIBS@
+V_LIB_AGE = @V_LIB_AGE@
+V_LIB_CURRENT = @V_LIB_CURRENT@
+V_LIB_REVISION = @V_LIB_REVISION@
+XSLTPROC = @XSLTPROC@
+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_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pthread_lib = @pthread_lib@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+INCLUDES = -I../lib -I$(top_srcdir)/include @OGG_CFLAGS@
+CLEANFILES = $(EXTRA_PROGRAMS)
+AM_LDFLAGS = -static
+LDADD = ../lib/libvorbis.la
+latticebuild_SOURCES = latticebuild.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+
+latticepare_SOURCES = latticepare.c vqgen.c bookutil.c vqsplit.c\
+	vqgen.h vqsplit.h bookutil.h localcodebook.h
+
+latticehint_SOURCES = latticehint.c bookutil.c\
+	vqsplit.h bookutil.h localcodebook.h
+
+latticetune_SOURCES = latticetune.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+
+huffbuild_SOURCES = huffbuild.c vqgen.c bookutil.c\
+	vqgen.h bookutil.h localcodebook.h
+
+distribution_SOURCES = distribution.c bookutil.c\
+	bookutil.h localcodebook.h
+
+EXTRA_DIST = residue_entropy auxpartition.pl
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  vq/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  vq/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+distribution$(EXEEXT): $(distribution_OBJECTS) $(distribution_DEPENDENCIES) 
+	@rm -f distribution$(EXEEXT)
+	$(LINK) $(distribution_OBJECTS) $(distribution_LDADD) $(LIBS)
+huffbuild$(EXEEXT): $(huffbuild_OBJECTS) $(huffbuild_DEPENDENCIES) 
+	@rm -f huffbuild$(EXEEXT)
+	$(LINK) $(huffbuild_OBJECTS) $(huffbuild_LDADD) $(LIBS)
+latticebuild$(EXEEXT): $(latticebuild_OBJECTS) $(latticebuild_DEPENDENCIES) 
+	@rm -f latticebuild$(EXEEXT)
+	$(LINK) $(latticebuild_OBJECTS) $(latticebuild_LDADD) $(LIBS)
+latticehint$(EXEEXT): $(latticehint_OBJECTS) $(latticehint_DEPENDENCIES) 
+	@rm -f latticehint$(EXEEXT)
+	$(LINK) $(latticehint_OBJECTS) $(latticehint_LDADD) $(LIBS)
+latticepare$(EXEEXT): $(latticepare_OBJECTS) $(latticepare_DEPENDENCIES) 
+	@rm -f latticepare$(EXEEXT)
+	$(LINK) $(latticepare_OBJECTS) $(latticepare_LDADD) $(LIBS)
+latticetune$(EXEEXT): $(latticetune_OBJECTS) $(latticetune_DEPENDENCIES) 
+	@rm -f latticetune$(EXEEXT)
+	$(LINK) $(latticetune_OBJECTS) $(latticetune_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bookutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/distribution.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/huffbuild.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latticebuild.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latticehint.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latticepare.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latticetune.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vqgen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vqsplit.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; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  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
+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 -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 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
+
+
+debugvq:
+	$(MAKE) vq CFLAGS="@DEBUG@"
+
+profilevq:
+	$(MAKE) vq CFLAGS="@PROFILE@"
+
+vq: 
+	$(MAKE) $(EXTRA_PROGRAMS) 
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: /libvorbis-1.2.0/vq/auxpartition.pl
===================================================================
--- /libvorbis-1.2.0/vq/auxpartition.pl	(revision 16)
+++ /libvorbis-1.2.0/vq/auxpartition.pl	(revision 16)
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+if($#ARGV<0){
+    &usage;
+}
+
+$|=1;
+
+$bands=0;
+
+foreach $arg (@ARGV){
+    ($entries[$bands],$file[$bands])=split(/,/,$arg);
+    $bands++;
+}
+
+# no time to deal with globs right now
+if($bands>0){
+    die unless open(ONE,"<".$file[0]);
+}
+if($bands>1){
+    die unless open(TWO,"<".$file[1]);
+}
+if($bands>2){
+    die unless open(THREE,"<".$file[2]);
+}
+
+
+while (<ONE>) {    
+    my@nums = ();
+    @nums = split(/,/);
+    my$cols=$#nums;
+    for($i=0;$i<$cols;$i++){
+	print 0+$nums[$i].", ";
+    }
+    if($bands>1){
+	$_=<TWO>;
+	@nums = ();
+	@nums = split(/,/);
+	$cols=$#nums;
+	for($i=0;$i<$cols;$i++){
+	    print $nums[$i]+$entries[0].", ";
+	}
+	if($bands>2){
+	    $_=<THREE>;
+	    @nums = ();
+	    @nums = split(/,/);
+	    $cols=$#nums;
+	    for($i=0;$i<$cols;$i++){
+		print $nums[$i]+$entries[0]+$entries[1].", ";
+	    }
+	}
+    }
+    print "\n";
+
+}
+
+if($bands>0){
+    close ONE;
+}
+if($bands>1){
+    close TWO;
+}
+if($bands>2){
+    close THREE;
+}
+    
+sub usage{
+    print "\nOggVorbis auxbook spectral partitioner\n\n";
+    print "auxpartition.pl <part_entries>,file [<part_entries>,file...]\n\n";
+    exit(1);
+}
Index: /libvorbis-1.2.0/vq/bookutil.c
===================================================================
--- /libvorbis-1.2.0/vq/bookutil.c	(revision 16)
+++ /libvorbis-1.2.0/vq/bookutil.c	(revision 16)
@@ -0,0 +1,717 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility functions for loading .vqh and .vqd files
+ last mod: $Id: bookutil.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "bookutil.h"
+
+/* A few little utils for reading files */
+/* read a line.  Use global, persistent buffering */
+static char *linebuffer=NULL;
+static int  lbufsize=0;
+char *get_line(FILE *in){
+  long sofar=0;
+  if(feof(in))return NULL;
+
+  while(1){
+    int gotline=0;
+
+    while(!gotline){
+      if(sofar+1>=lbufsize){
+        if(!lbufsize){  
+          lbufsize=1024;
+          linebuffer=_ogg_malloc(lbufsize);
+        }else{
+          lbufsize*=2;
+          linebuffer=_ogg_realloc(linebuffer,lbufsize);
+        }
+      }
+      {
+        long c=fgetc(in);
+        switch(c){
+        case EOF:
+	  if(sofar==0)return(NULL);
+	  /* fallthrough correct */
+        case '\n':
+          linebuffer[sofar]='\0';
+          gotline=1;
+          break;
+        default:
+          linebuffer[sofar++]=c;
+          linebuffer[sofar]='\0';
+          break;
+        }
+      }
+    }
+    
+    if(linebuffer[0]=='#'){
+      sofar=0;
+    }else{
+      return(linebuffer);
+    }
+  }
+}
+
+/* read the next numerical value from the given file */
+static char *value_line_buff=NULL;
+
+int get_line_value(FILE *in,float *value){
+  char *next;
+
+  if(!value_line_buff)return(-1);
+
+  *value=strtod(value_line_buff, &next);
+  if(next==value_line_buff){
+    value_line_buff=NULL;
+    return(-1);
+  }else{
+    value_line_buff=next;
+    while(*value_line_buff>44)value_line_buff++;
+    if(*value_line_buff==44)value_line_buff++;
+    return(0);
+  }
+}
+
+int get_next_value(FILE *in,float *value){
+  while(1){
+    if(get_line_value(in,value)){
+      value_line_buff=get_line(in);
+      if(!value_line_buff)return(-1);
+    }else{
+      return(0);
+    }
+  }
+}
+
+int get_next_ivalue(FILE *in,long *ivalue){
+  float value;
+  int ret=get_next_value(in,&value);
+  *ivalue=value;
+  return(ret);
+}
+
+static float sequence_base=0.f;
+static int v_sofar=0;
+void reset_next_value(void){
+  value_line_buff=NULL;
+  sequence_base=0.f;
+  v_sofar=0;
+}
+
+char *setup_line(FILE *in){
+  reset_next_value();
+  value_line_buff=get_line(in);
+  return(value_line_buff);
+}
+
+
+int get_vector(codebook *b,FILE *in,int start, int n,float *a){
+  int i;
+  const static_codebook *c=b->c;
+
+  while(1){
+
+    if(v_sofar==n || get_line_value(in,a)){
+      reset_next_value();
+      if(get_next_value(in,a))
+	break;
+      for(i=0;i<start;i++){
+	sequence_base=*a;
+	get_line_value(in,a);
+      }
+    }
+
+    for(i=1;i<c->dim;i++)
+      if(get_line_value(in,a+i))
+	break;
+    
+    if(i==c->dim){
+      float temp=a[c->dim-1];
+      for(i=0;i<c->dim;i++)a[i]-=sequence_base;
+      if(c->q_sequencep)sequence_base=temp;
+      v_sofar++;
+      return(0);
+    }
+    sequence_base=0.f;
+  }
+
+  return(-1);
+}
+
+/* read lines fromt he beginning until we find one containing the
+   specified string */
+char *find_seek_to(FILE *in,char *s){
+  rewind(in);
+  while(1){
+    char *line=get_line(in);
+    if(line){
+      if(strstr(line,s))
+	return(line);
+    }else
+      return(NULL);
+  }
+}
+
+
+/* this reads the format as written by vqbuild/latticebuild; innocent
+   (legal) tweaking of the file that would not affect its valid
+   header-ness will break this routine */
+
+codebook *codebook_load(char *filename){
+  codebook *b=_ogg_calloc(1,sizeof(codebook));
+  static_codebook *c=(static_codebook *)(b->c=_ogg_calloc(1,sizeof(static_codebook)));
+  encode_aux_nearestmatch *a=NULL;
+  encode_aux_threshmatch *t=NULL;
+  encode_aux_pigeonhole *p=NULL;
+  int quant_to_read=0;
+  FILE *in=fopen(filename,"r");
+  char *line;
+  long i;
+
+  if(in==NULL){
+    fprintf(stderr,"Couldn't open codebook %s\n",filename);
+    exit(1);
+  }
+
+  /* find the codebook struct */
+  find_seek_to(in,"static static_codebook ");
+
+  /* get the major important values */
+  line=get_line(in);
+  if(sscanf(line,"%ld, %ld,",
+	    &(c->dim),&(c->entries))!=2){
+    fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line);
+    exit(1);
+  }
+  line=get_line(in);
+  line=get_line(in);
+  if(sscanf(line,"%d, %ld, %ld, %d, %d,",
+	    &(c->maptype),&(c->q_min),&(c->q_delta),&(c->q_quant),
+	    &(c->q_sequencep))!=5){
+    fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line);
+    exit(1);
+  }
+  
+  /* find the auxiliary encode struct[s] (if any) */
+  if(find_seek_to(in,"static encode_aux_nearestmatch _vq_aux")){
+    /* how big? */
+    c->nearest_tree=a=_ogg_calloc(1,sizeof(encode_aux_nearestmatch));
+    line=get_line(in);
+    line=get_line(in);
+    line=get_line(in);
+    line=get_line(in);
+    line=get_line(in);
+    if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){
+      fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line);
+      exit(1);
+    }
+
+    /* load ptr0 */
+    find_seek_to(in,"static long _vq_ptr0");
+    reset_next_value();
+    a->ptr0=_ogg_malloc(sizeof(long)*a->aux);
+    for(i=0;i<a->aux;i++)
+      if(get_next_ivalue(in,a->ptr0+i)){
+	fprintf(stderr,"out of data while reading codebook %s\n",filename);
+	exit(1);
+      }
+    
+    /* load ptr1 */
+    find_seek_to(in,"static long _vq_ptr1");
+    reset_next_value();
+    a->ptr1=_ogg_malloc(sizeof(long)*a->aux);
+    for(i=0;i<a->aux;i++)
+      if(get_next_ivalue(in,a->ptr1+i)){
+	fprintf(stderr,"out of data while reading codebook %s\n",filename);
+	exit(1);
+    }
+    
+    
+    /* load p */
+    find_seek_to(in,"static long _vq_p_");
+    reset_next_value();
+    a->p=_ogg_malloc(sizeof(long)*a->aux);
+    for(i=0;i<a->aux;i++)
+      if(get_next_ivalue(in,a->p+i)){
+	fprintf(stderr,"out of data while reading codebook %s\n",filename);
+	exit(1);
+      }
+    
+    /* load q */
+    find_seek_to(in,"static long _vq_q_");
+    reset_next_value();
+    a->q=_ogg_malloc(sizeof(long)*a->aux);
+    for(i=0;i<a->aux;i++)
+      if(get_next_ivalue(in,a->q+i)){
+	fprintf(stderr,"out of data while reading codebook %s\n",filename);
+	exit(1);
+      }    
+  }
+  
+  if(find_seek_to(in,"static encode_aux_threshmatch _vq_aux")){
+    /* how big? */
+    c->thresh_tree=t=_ogg_calloc(1,sizeof(encode_aux_threshmatch));
+    line=get_line(in);
+    line=get_line(in);
+    line=get_line(in);
+    if(sscanf(line,"%d",&(t->quantvals))!=1){
+      fprintf(stderr,"3: syntax in %s in line:\t %s",filename,line);
+      exit(1);
+    }
+    line=get_line(in);
+    if(sscanf(line,"%d",&(t->threshvals))!=1){
+      fprintf(stderr,"4: syntax in %s in line:\t %s",filename,line);
+      exit(1);
+    }
+    /* load quantthresh */
+    find_seek_to(in,"static float _vq_quantthresh_");
+    reset_next_value();
+    t->quantthresh=_ogg_malloc(sizeof(float)*t->threshvals);
+    for(i=0;i<t->threshvals-1;i++)
+      if(get_next_value(in,t->quantthresh+i)){
+	fprintf(stderr,"out of data 1 while reading codebook %s\n",filename);
+	exit(1);
+      }    
+    /* load quantmap */
+    find_seek_to(in,"static long _vq_quantmap_");
+    reset_next_value();
+    t->quantmap=_ogg_malloc(sizeof(long)*t->threshvals);
+    for(i=0;i<t->threshvals;i++)
+      if(get_next_ivalue(in,t->quantmap+i)){
+	fprintf(stderr,"out of data 2 while reading codebook %s\n",filename);
+	exit(1);
+      }    
+  }
+    
+  if(find_seek_to(in,"static encode_aux_pigeonhole _vq_aux")){
+    int pigeons=1,i;
+    /* how big? */
+    c->pigeon_tree=p=_ogg_calloc(1,sizeof(encode_aux_pigeonhole));
+    line=get_line(in);
+    if(sscanf(line,"%f, %f, %d, %d",&(p->min),&(p->del),
+	      &(p->mapentries),&(p->quantvals))!=4){
+      fprintf(stderr,"5: syntax in %s in line:\t %s",filename,line);
+      exit(1);
+    }
+    line=get_line(in);
+    line=get_line(in);
+    if(sscanf(line,"%ld",&(p->fittotal))!=1){
+      fprintf(stderr,"6: syntax in %s in line:\t %s",filename,line);
+      exit(1);
+    }
+    /* load pigeonmap */
+    find_seek_to(in,"static long _vq_pigeonmap_");
+    reset_next_value();
+    p->pigeonmap=_ogg_malloc(sizeof(long)*p->mapentries);
+    for(i=0;i<p->mapentries;i++)
+      if(get_next_ivalue(in,p->pigeonmap+i)){
+	fprintf(stderr,"out of data (pigeonmap) while reading codebook %s\n",filename);
+	exit(1);
+      }    
+    /* load fitlist */
+    find_seek_to(in,"static long _vq_fitlist_");
+    reset_next_value();
+    p->fitlist=_ogg_malloc(sizeof(long)*p->fittotal);
+    for(i=0;i<p->fittotal;i++)
+      if(get_next_ivalue(in,p->fitlist+i)){
+	fprintf(stderr,"out of data (fitlist) while reading codebook %s\n",filename);
+	exit(1);
+      }    
+    /* load fitmap */
+    find_seek_to(in,"static long _vq_fitmap_");
+    reset_next_value();
+    for(i=0;i<c->dim;i++)pigeons*=p->quantvals;
+    p->fitmap=_ogg_malloc(sizeof(long)*pigeons);
+    for(i=0;i<pigeons;i++)
+      if(get_next_ivalue(in,p->fitmap+i)){
+	fprintf(stderr,"out of data (fitmap) while reading codebook %s\n",filename);
+	exit(1);
+      }    
+ 
+    /* load fitlength */
+    find_seek_to(in,"static long _vq_fitlength_");
+    reset_next_value();
+    p->fitlength=_ogg_malloc(sizeof(long)*pigeons);
+    for(i=0;i<pigeons;i++)
+      if(get_next_ivalue(in,p->fitlength+i)){
+	fprintf(stderr,"out of data (fitlength) while reading codebook %s\n",filename);
+	exit(1);
+      }    
+  }
+
+  switch(c->maptype){
+  case 0:
+    quant_to_read=0;
+    break;
+  case 1:
+    quant_to_read=_book_maptype1_quantvals(c);
+    break;
+  case 2:
+    quant_to_read=c->entries*c->dim;
+    break;
+  }
+    
+  /* load the quantized entries */
+  find_seek_to(in,"static long _vq_quantlist_");
+  reset_next_value();
+  c->quantlist=_ogg_malloc(sizeof(long)*quant_to_read);
+  for(i=0;i<quant_to_read;i++)
+    if(get_next_ivalue(in,c->quantlist+i)){
+      fprintf(stderr,"out of data while reading codebook %s\n",filename);
+      exit(1);
+    }
+  
+  /* load the lengthlist */
+  find_seek_to(in,"_lengthlist");
+  reset_next_value();
+  c->lengthlist=_ogg_malloc(sizeof(long)*c->entries);
+  for(i=0;i<c->entries;i++)
+    if(get_next_ivalue(in,c->lengthlist+i)){
+      fprintf(stderr,"out of data while reading codebook %s\n",filename);
+      exit(1);
+    }
+
+  /* got it all */
+  fclose(in);
+  
+  vorbis_book_init_encode(b,c);
+
+  return(b);
+}
+
+void spinnit(char *s,int n){
+  static int p=0;
+  static long lasttime=0;
+  long test;
+  struct timeval thistime;
+
+  gettimeofday(&thistime,NULL);
+  test=thistime.tv_sec*10+thistime.tv_usec/100000;
+  if(lasttime!=test){
+    lasttime=test;
+
+    fprintf(stderr,"%s%d ",s,n);
+
+    p++;if(p>3)p=0;
+    switch(p){
+    case 0:
+      fprintf(stderr,"|    \r");
+      break;
+    case 1:
+      fprintf(stderr,"/    \r");
+      break;
+    case 2:
+      fprintf(stderr,"-    \r");
+      break;
+    case 3:
+      fprintf(stderr,"\\    \r");
+      break;
+    }
+    fflush(stderr);
+  }
+}
+
+void build_tree_from_lengths(int vals, long *hist, long *lengths){
+  int i,j;
+  long *membership=_ogg_malloc(vals*sizeof(long));
+  long *histsave=alloca(vals*sizeof(long));
+  memcpy(histsave,hist,vals*sizeof(long));
+
+  for(i=0;i<vals;i++)membership[i]=i;
+
+  /* find codeword lengths */
+  /* much more elegant means exist.  Brute force n^2, minimum thought */
+  for(i=vals;i>1;i--){
+    int first=-1,second=-1;
+    long least=-1;
+	
+    spinnit("building... ",i);
+    
+    /* find the two nodes to join */
+    for(j=0;j<vals;j++)
+      if(least==-1 || hist[j]<=least){
+	least=hist[j];
+	first=membership[j];
+      }
+    least=-1;
+    for(j=0;j<vals;j++)
+      if((least==-1 || hist[j]<=least) && membership[j]!=first){
+	least=hist[j];
+	second=membership[j];
+      }
+    if(first==-1 || second==-1){
+      fprintf(stderr,"huffman fault; no free branch\n");
+      exit(1);
+    }
+    
+    /* join them */
+    least=hist[first]+hist[second];
+    for(j=0;j<vals;j++)
+      if(membership[j]==first || membership[j]==second){
+	membership[j]=first;
+	hist[j]=least;
+	lengths[j]++;
+      }
+  }
+  for(i=0;i<vals-1;i++)
+    if(membership[i]!=membership[i+1]){
+      fprintf(stderr,"huffman fault; failed to build single tree\n");
+      exit(1);
+    }
+
+  /* for sanity check purposes: how many bits would it have taken to
+     encode the training set? */
+  {
+    long bitsum=0;
+    long samples=0;
+    for(i=0;i<vals;i++){
+      bitsum+=(histsave[i]-1)*lengths[i];
+      samples+=histsave[i]-1;
+    }
+
+    if(samples){
+      fprintf(stderr,"\rTotal samples in training set: %ld      \n",samples);
+      fprintf(stderr,"\rTotal bits used to represent training set: %ld\n",
+	      bitsum);
+    }
+  }
+
+  free(membership);
+}
+
+/* wrap build_tree_from_lengths to allow zero entries in the histogram */
+void build_tree_from_lengths0(int vals, long *hist, long *lengths){
+
+  /* pack the 'sparse' hit list into a dense list, then unpack
+     the lengths after the build */
+
+  int upper=0,i;
+  long *lengthlist=_ogg_calloc(vals,sizeof(long));
+  long *newhist=alloca(vals*sizeof(long));
+
+  for(i=0;i<vals;i++)
+    if(hist[i]>0)
+      newhist[upper++]=hist[i];
+
+  if(upper != vals){
+    fprintf(stderr,"\rEliminating %d unused entries; %d entries remain\n",
+	    vals-upper,upper);
+  }
+    
+  build_tree_from_lengths(upper,newhist,lengthlist);
+      
+  upper=0;
+  for(i=0;i<vals;i++)
+    if(hist[i]>0)
+      lengths[i]=lengthlist[upper++];
+    else
+      lengths[i]=0;
+
+  free(lengthlist);
+}
+
+void write_codebook(FILE *out,char *name,const static_codebook *c){
+  encode_aux_pigeonhole *p=c->pigeon_tree;
+  encode_aux_threshmatch *t=c->thresh_tree;
+  encode_aux_nearestmatch *n=c->nearest_tree;
+  int i,j,k;
+
+  /* save the book in C header form */
+
+  /* first, the static vectors, then the book structure to tie it together. */
+  /* quantlist */
+  if(c->quantlist){
+    long vals=(c->maptype==1?_book_maptype1_quantvals(c):c->entries*c->dim);
+    fprintf(out,"static long _vq_quantlist_%s[] = {\n",name);
+    for(j=0;j<vals;j++){
+      fprintf(out,"\t%ld,\n",c->quantlist[j]);
+    }
+    fprintf(out,"};\n\n");
+  }
+
+  /* lengthlist */
+  fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name);
+  for(j=0;j<c->entries;){
+    fprintf(out,"\t");
+    for(k=0;k<16 && j<c->entries;k++,j++)
+      fprintf(out,"%2ld,",c->lengthlist[j]);
+    fprintf(out,"\n");
+  }
+  fprintf(out,"};\n\n");
+
+  if(t){
+    /* quantthresh */
+    fprintf(out,"static float _vq_quantthresh_%s[] = {\n",name);
+    for(j=0;j<t->threshvals-1;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<t->threshvals-1;k++,j++)
+	fprintf(out,"%.5g, ",t->quantthresh[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+
+    /* quantmap */
+    fprintf(out,"static long _vq_quantmap_%s[] = {\n",name);
+    for(j=0;j<t->threshvals;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<t->threshvals;k++,j++)
+	fprintf(out,"%5ld,",t->quantmap[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");  
+
+    fprintf(out,"static encode_aux_threshmatch _vq_auxt_%s = {\n",name);
+    fprintf(out,"\t_vq_quantthresh_%s,\n",name);
+    fprintf(out,"\t_vq_quantmap_%s,\n",name);
+    fprintf(out,"\t%d,\n",t->quantvals);
+    fprintf(out,"\t%d\n};\n\n",t->threshvals);
+  }
+
+  if(p){
+    int pigeons=1;
+    for(i=0;i<c->dim;i++)pigeons*=p->quantvals;
+
+    /* pigeonmap */
+    fprintf(out,"static long _vq_pigeonmap_%s[] = {\n",name);
+    for(j=0;j<p->mapentries;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<p->mapentries;k++,j++)
+	fprintf(out,"%5ld, ",p->pigeonmap[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+    /* fitlist */
+    fprintf(out,"static long _vq_fitlist_%s[] = {\n",name);
+    for(j=0;j<p->fittotal;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<p->fittotal;k++,j++)
+	fprintf(out,"%5ld, ",p->fitlist[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+    /* fitmap */
+    fprintf(out,"static long _vq_fitmap_%s[] = {\n",name);
+    for(j=0;j<pigeons;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<pigeons;k++,j++)
+	fprintf(out,"%5ld, ",p->fitmap[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+    /* fitlength */
+    fprintf(out,"static long _vq_fitlength_%s[] = {\n",name);
+    for(j=0;j<pigeons;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<pigeons;k++,j++)
+	fprintf(out,"%5ld, ",p->fitlength[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+
+    fprintf(out,"static encode_aux_pigeonhole _vq_auxp_%s = {\n",name);
+    fprintf(out,"\t%g, %g, %d, %d,\n",
+	    p->min,p->del,p->mapentries,p->quantvals);
+
+    fprintf(out,"\t_vq_pigeonmap_%s,\n",name);
+
+    fprintf(out,"\t%ld,\n",p->fittotal);
+    fprintf(out,"\t_vq_fitlist_%s,\n",name);
+    fprintf(out,"\t_vq_fitmap_%s,\n",name);
+    fprintf(out,"\t_vq_fitlength_%s\n};\n\n",name);
+  }
+
+  if(n){
+    
+    /* ptr0 */
+    fprintf(out,"static long _vq_ptr0_%s[] = {\n",name);
+    for(j=0;j<n->aux;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<n->aux;k++,j++)
+	fprintf(out,"%6ld,",n->ptr0[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+    
+    /* ptr1 */
+    fprintf(out,"static long _vq_ptr1_%s[] = {\n",name);
+    for(j=0;j<n->aux;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<n->aux;k++,j++)
+	fprintf(out,"%6ld,",n->ptr1[j]);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+    
+    /* p */
+    fprintf(out,"static long _vq_p_%s[] = {\n",name);
+    for(j=0;j<n->aux;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<n->aux;k++,j++)
+	fprintf(out,"%6ld,",n->p[j]*c->dim);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+    
+    /* q */
+    fprintf(out,"static long _vq_q_%s[] = {\n",name);
+    for(j=0;j<n->aux;){
+      fprintf(out,"\t");
+      for(k=0;k<8 && j<n->aux;k++,j++)
+	fprintf(out,"%6ld,",n->q[j]*c->dim);
+      fprintf(out,"\n");
+    }
+    fprintf(out,"};\n\n");
+  
+    fprintf(out,"static encode_aux_nearestmatch _vq_auxn_%s = {\n",name);
+    fprintf(out,"\t_vq_ptr0_%s,\n",name);
+    fprintf(out,"\t_vq_ptr1_%s,\n",name);
+    fprintf(out,"\t_vq_p_%s,\n",name);
+    fprintf(out,"\t_vq_q_%s,\n",name);
+    fprintf(out,"\t%ld, %ld\n};\n\n",n->aux,n->aux);
+  }
+
+  /* tie it all together */
+  
+  fprintf(out,"static static_codebook %s = {\n",name);
+  
+  fprintf(out,"\t%ld, %ld,\n",c->dim,c->entries);
+  fprintf(out,"\t_vq_lengthlist_%s,\n",name);
+  fprintf(out,"\t%d, %ld, %ld, %d, %d,\n",
+          c->maptype,c->q_min,c->q_delta,c->q_quant,c->q_sequencep);
+  if(c->quantlist)
+    fprintf(out,"\t_vq_quantlist_%s,\n",name);
+  else
+    fprintf(out,"\tNULL,\n");
+
+  if(n)
+    fprintf(out,"\t&_vq_auxn_%s,\n",name);
+  else
+    fprintf(out,"\tNULL,\n");
+  if(t)
+    fprintf(out,"\t&_vq_auxt_%s,\n",name);
+  else
+    fprintf(out,"\tNULL,\n");
+  if(p)
+    fprintf(out,"\t&_vq_auxp_%s,\n",name);
+  else
+    fprintf(out,"\tNULL,\n");
+
+  fprintf(out,"\t0\n};\n\n");
+}
Index: /libvorbis-1.2.0/vq/bookutil.h
===================================================================
--- /libvorbis-1.2.0/vq/bookutil.h	(revision 16)
+++ /libvorbis-1.2.0/vq/bookutil.h	(revision 16)
@@ -0,0 +1,43 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility functions for loading .vqh and .vqd files
+ last mod: $Id: bookutil.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_BOOKUTIL_H_
+#define _V_BOOKUTIL_H_
+
+#include <stdio.h>
+#include <sys/time.h>
+
+#include "localcodebook.h"
+
+extern char     *get_line(FILE *in);
+extern char     *setup_line(FILE *in);
+extern int       get_line_value(FILE *in,float *value);
+extern int       get_next_value(FILE *in,float *value);
+extern int       get_next_ivalue(FILE *in,long *ivalue);
+extern void      reset_next_value(void);
+extern int       get_vector(codebook *b,FILE *in,int start,int num,float *a);
+extern char     *find_seek_to(FILE *in,char *s);
+
+extern codebook *codebook_load(char *filename);
+extern void write_codebook(FILE *out,char *name,const static_codebook *c);
+
+extern void spinnit(char *s,int n);
+extern void build_tree_from_lengths(int vals, long *hist, long *lengths);
+extern void build_tree_from_lengths0(int vals, long *hist, long *lengths);
+
+#endif
+
Index: /libvorbis-1.2.0/vq/build.c
===================================================================
--- /libvorbis-1.2.0/vq/build.c	(revision 16)
+++ /libvorbis-1.2.0/vq/build.c	(revision 16)
@@ -0,0 +1,195 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility main for building codebooks from training sets
+ last mod: $Id: build.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "bookutil.h"
+
+#include "vqgen.h"
+#include "vqsplit.h"
+
+static char *linebuffer=NULL;
+static int  lbufsize=0;
+static char *rline(FILE *in,FILE *out){
+  long sofar=0;
+  if(feof(in))return NULL;
+
+  while(1){
+    int gotline=0;
+
+    while(!gotline){
+      if(sofar>=lbufsize){
+	if(!lbufsize){	
+	  lbufsize=1024;
+	  linebuffer=_ogg_malloc(lbufsize);
+	}else{
+	  lbufsize*=2;
+	  linebuffer=_ogg_realloc(linebuffer,lbufsize);
+	}
+      }
+      {
+	long c=fgetc(in);
+	switch(c){
+	case '\n':
+	case EOF:
+	  gotline=1;
+	  break;
+	default:
+	  linebuffer[sofar++]=c;
+	  linebuffer[sofar]='\0';
+	  break;
+	}
+      }
+    }
+    
+    if(linebuffer[0]=='#'){
+      sofar=0;
+    }else{
+      return(linebuffer);
+    }
+  }
+}
+
+/* command line:
+   buildvq file
+*/
+
+int main(int argc,char *argv[]){
+  vqgen v;
+  static_codebook c;
+  codebook b;
+  quant_meta q;
+
+  long *quantlist=NULL;
+  int entries=-1,dim=-1,aux=-1;
+  FILE *out=NULL;
+  FILE *in=NULL;
+  char *line,*name;
+  long i,j,k;
+
+  b.c=&c;
+
+  if(argv[1]==NULL){
+    fprintf(stderr,"Need a trained data set on the command line.\n");
+    exit(1);
+  }
+
+  {
+    char *ptr;
+    char *filename=strdup(argv[1]);
+
+    in=fopen(filename,"r");
+    if(!in){
+      fprintf(stderr,"Could not open input file %s\n",filename);
+      exit(1);
+    }
+    
+    ptr=strrchr(filename,'-');
+    if(ptr){
+      *ptr='\0';
+      name=strdup(filename);
+      sprintf(ptr,".vqh");
+    }else{
+      name=strdup(filename);
+      strcat(filename,".vqh");
+    }
+
+    out=fopen(filename,"w");
+    if(out==NULL){
+      fprintf(stderr,"Unable to open %s for writing\n",filename);
+      exit(1);
+    }
+  }
+
+  /* suck in the trained book */
+
+  /* read book type, but it doesn't matter */
+  line=rline(in,out);
+  
+  line=rline(in,out);
+  if(sscanf(line,"%d %d %d",&entries,&dim,&aux)!=3){
+    fprintf(stderr,"Syntax error reading book file\n");
+    exit(1);
+  }
+  
+  /* just use it to allocate mem */
+  vqgen_init(&v,dim,0,entries,0.f,NULL,NULL,0);
+  
+  /* quant */
+  line=rline(in,out);
+  if(sscanf(line,"%ld %ld %d %d",&q.min,&q.delta,
+	    &q.quant,&q.sequencep)!=4){
+    fprintf(stderr,"Syntax error reading book file\n");
+    exit(1);
+  }
+  
+  /* quantized entries */
+  /* save quant data; we don't want to requantize later as our method
+     is currently imperfect wrt repeated application */
+  i=0;
+  quantlist=_ogg_malloc(sizeof(long)*v.elements*v.entries);
+  for(j=0;j<entries;j++){
+    float a;
+    for(k=0;k<dim;k++){
+      line=rline(in,out);
+      sscanf(line,"%f",&a);
+      v.entrylist[i]=a;
+      quantlist[i++]=rint(a);
+    }
+  }    
+  
+  /* ignore bias */
+  for(j=0;j<entries;j++)line=rline(in,out);
+  free(v.bias);
+  v.bias=NULL;
+  
+  /* training points */
+  {
+    float *b=alloca(sizeof(float)*(dim+aux));
+    i=0;
+    v.entries=0; /* hack to avoid reseeding */
+    while(1){
+      for(k=0;k<dim+aux;k++){
+	line=rline(in,out);
+	if(!line)break;
+	sscanf(line,"%f",b+k);
+      }
+      if(feof(in))break;
+      vqgen_addpoint(&v,b,NULL);
+    }
+    v.entries=entries;
+  }
+  
+  fclose(in);
+  vqgen_unquantize(&v,&q);
+
+  /* build the book */
+  vqsp_book(&v,&b,quantlist);
+  c.q_min=q.min;
+  c.q_delta=q.delta;
+  c.q_quant=q.quant;
+  c.q_sequencep=q.sequencep;
+
+  /* save the book in C header form */
+  write_codebook(out,name,b.c);
+
+  fclose(out);
+  exit(0);
+}
Index: /libvorbis-1.2.0/vq/cascade.c
===================================================================
--- /libvorbis-1.2.0/vq/cascade.c	(revision 16)
+++ /libvorbis-1.2.0/vq/cascade.c	(revision 16)
@@ -0,0 +1,91 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: function call to do simple data cascading
+ last mod: $Id: cascade.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* this one outputs residue to stdout. */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <math.h>
+#include "bookutil.h"
+
+/* set up metrics */
+
+float count=0.f;
+
+
+void process_preprocess(codebook **bs,char *basename){
+}
+
+void process_postprocess(codebook **b,char *basename){
+  fprintf(stderr,"Done.                      \n");
+}
+
+float process_one(codebook *b,float *a,int dim,int step,int addmul,
+		   float base){
+  int j;
+
+  if(b->c->q_sequencep){
+    float temp;
+    for(j=0;j<dim;j++){
+      temp=a[j*step];
+      a[j*step]-=base;
+    }
+    base=temp;
+  }
+
+  vorbis_book_besterror(b,a,step,addmul);
+  
+  return base;
+}
+
+void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){
+  int i,bi=0;
+  int booknum=0;
+  
+  while(*bs){
+    float base=0.f;
+    codebook *b=*bs;
+    int dim=b->dim;
+    
+    if(inter){
+      for(i=0;i<n/dim;i++)
+	base=process_one(b,a+i,dim,n/dim,addmul[bi],base);
+    }else{
+      for(i=0;i<=n-dim;i+=dim)
+	base=process_one(b,a+i,dim,1,addmul[bi],base);
+    }
+
+    bs++;
+    booknum++;
+    bi++;
+  }
+
+  for(i=0;i<n;i++)
+    fprintf(stdout,"%f, ",a[i]);
+  fprintf(stdout,"\n");
+  
+  if((long)(count++)%100)spinnit("working.... lines: ",count);
+}
+
+void process_usage(void){
+  fprintf(stderr,
+	  "usage: vqcascade [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
+	  "                 datafile.vqd [datafile.vqd]...\n\n"
+	  "       data can be taken on stdin.  residual error data sent to\n"
+	  "       stdout.\n\n");
+
+}
Index: /libvorbis-1.2.0/vq/distribution.c
===================================================================
--- /libvorbis-1.2.0/vq/distribution.c	(revision 16)
+++ /libvorbis-1.2.0/vq/distribution.c	(revision 16)
@@ -0,0 +1,248 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility for finding the distribution in a data set
+ last mod: $Id: distribution.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "bookutil.h"
+
+/* command line:
+   distribution file.vqd
+*/
+
+int ascend(const void *a,const void *b){
+  return(**((long **)a)-**((long **)b));
+}
+
+int main(int argc,char *argv[]){
+  FILE *in;
+  long lines=0;
+  float min;
+  float max;
+  long bins=-1;
+  int flag=0;
+  long *countarray;
+  long total=0;
+  char *line;
+
+  if(argv[1]==NULL){
+    fprintf(stderr,"Usage: distribution {data.vqd [bins]| book.vqh} \n\n");
+    exit(1);
+  }
+  if(argv[2]!=NULL)
+    bins=atoi(argv[2])-1;
+
+  in=fopen(argv[1],"r");
+  if(!in){
+    fprintf(stderr,"Could not open input file %s\n",argv[1]);
+    exit(1);
+  }
+
+  if(strrchr(argv[1],'.') && strcmp(strrchr(argv[1],'.'),".vqh")==0){
+    /* load/decode a book */
+
+    codebook *b=codebook_load(argv[1]);
+    static_codebook *c=(static_codebook *)(b->c);
+    float delta;
+    int i;
+    fclose(in);
+
+    switch(c->maptype){
+    case 0:
+      printf("entropy codebook only; no mappings\n");
+      exit(0);
+      break;
+    case 1:
+      bins=_book_maptype1_quantvals(c);
+      break;
+    case 2:
+      bins=c->entries*c->dim;
+      break;
+    }
+
+    max=min=_float32_unpack(c->q_min);
+    delta=_float32_unpack(c->q_delta);
+
+    for(i=0;i<bins;i++){
+      float val=c->quantlist[i]*delta+min;
+      if(val>max)max=val;
+    }
+
+    printf("Minimum scalar value: %f\n",min);
+    printf("Maximum scalar value: %f\n",max);
+
+    switch(c->maptype){
+    case 1:
+      {
+	/* lattice codebook.  dump it. */
+	int j,k;
+	long maxcount=0;
+	long **sort=calloc(bins,sizeof(long *));
+	long base=c->lengthlist[0];
+	countarray=calloc(bins,sizeof(long));
+
+	for(i=0;i<bins;i++)sort[i]=c->quantlist+i;
+	qsort(sort,bins,sizeof(long *),ascend);
+
+	for(i=0;i<b->entries;i++)
+	  if(c->lengthlist[i]>base)base=c->lengthlist[i];
+
+	/* dump a full, correlated count */
+	for(j=0;j<b->entries;j++){
+	  if(c->lengthlist[j]){
+	    int indexdiv=1;
+	    printf("%4d: ",j);
+	    for(k=0;k<b->dim;k++){	
+	      int index= (j/indexdiv)%bins;
+	      printf("%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+
+		     _float32_unpack(c->q_min));
+	      indexdiv*=bins;
+	    }
+	    printf("\t|");
+	    for(k=0;k<base-c->lengthlist[j];k++)printf("*");
+	    printf("\n");
+	  }
+	}
+
+	/* do a rough count */
+	for(j=0;j<b->entries;j++){
+	  int indexdiv=1;
+	  for(k=0;k<b->dim;k++){
+	    if(c->lengthlist[j]){
+	      int index= (j/indexdiv)%bins;
+	      countarray[index]+=(1<<(base-c->lengthlist[j]));
+	      indexdiv*=bins;
+	    }
+	  }
+	}
+
+	/* dump the count */
+
+	{
+	  long maxcount=0,i,j;
+	  for(i=0;i<bins;i++)
+	    if(countarray[i]>maxcount)maxcount=countarray[i];
+      
+	  for(i=0;i<bins;i++){
+	    int ptr=sort[i]-c->quantlist;
+	    int stars=rint(50./maxcount*countarray[ptr]);
+	    printf("%+08f (%8ld) |",c->quantlist[ptr]*delta+min,countarray[ptr]);
+	    for(j=0;j<stars;j++)printf("*");
+	    printf("\n");
+	  }
+	}
+      }
+      break;
+    case 2:
+      {
+	/* trained, full mapping codebook. */
+	printf("Can't do probability dump of a trained [type 2] codebook (yet)\n");
+      }
+      break;
+    }
+  }else{
+    /* load/count a data file */
+
+    /* do it the simple way; two pass. */
+    line=setup_line(in);
+    while(line){      
+      float code;
+      char buf[80];
+      lines++;
+
+      sprintf(buf,"getting min/max (%.2f::%.2f). lines...",min,max);
+      if(!(lines&0xff))spinnit(buf,lines);
+      
+      while(!flag && sscanf(line,"%f",&code)==1){
+	line=strchr(line,',');
+	min=max=code;
+	flag=1;
+      }
+      
+      while(line && sscanf(line,"%f",&code)==1){
+	line=strchr(line,',');
+	if(line)line++;
+	if(code<min)min=code;
+	if(code>max)max=code;
+      }
+      
+      line=setup_line(in);
+    }
+    
+    if(bins<1){
+      if((int)(max-min)==min-max){
+	bins=max-min;
+      }else{
+	bins=25;
+      }
+    }
+    
+    printf("\r                                                     \r");
+    printf("Minimum scalar value: %f\n",min);
+    printf("Maximum scalar value: %f\n",max);
+
+    if(argv[2]){
+      
+      printf("\n counting hits into %ld bins...\n",bins+1);
+      countarray=calloc(bins+1,sizeof(long));
+      
+      rewind(in);
+      line=setup_line(in);
+      while(line){      
+	float code;
+	lines--;
+	if(!(lines&0xff))spinnit("counting distribution. lines so far...",lines);
+	
+	while(line && sscanf(line,"%f",&code)==1){
+	  line=strchr(line,',');
+	  if(line)line++;
+	  
+	  code-=min;
+	  code/=(max-min);
+	  code*=bins;
+	  countarray[(int)rint(code)]++;
+	  total++;
+	}
+	
+	line=setup_line(in);
+      }
+    
+      /* make a pretty graph */
+      {
+	long maxcount=0,i,j;
+	for(i=0;i<bins+1;i++)
+	  if(countarray[i]>maxcount)maxcount=countarray[i];
+	
+	printf("\r                                                     \r");
+	printf("Total scalars: %ld\n",total);
+	for(i=0;i<bins+1;i++){
+	  int stars=rint(50./maxcount*countarray[i]);
+	  printf("%08f (%8ld) |",(max-min)/bins*i+min,countarray[i]);
+	  for(j=0;j<stars;j++)printf("*");
+	  printf("\n");
+	}
+      }
+    }
+
+    fclose(in);
+
+  }
+  printf("\nDone.\n");
+  exit(0);
+}
Index: /libvorbis-1.2.0/vq/floor_11.vqs
===================================================================
--- /libvorbis-1.2.0/vq/floor_11.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/floor_11.vqs	(revision 16)
@@ -0,0 +1,10 @@
+GO
+>floor_11
+=8-11c0_s 8-11c1_s
+
+build line_256x4_class0 0-256
+build line_256x4_0sub0  0-4
+build line_256x4_0sub1  4-10
+build line_256x4_0sub2  10-25
+build line_256x4_0sub3  25-64
+
Index: /libvorbis-1.2.0/vq/floor_22.vqs
===================================================================
--- /libvorbis-1.2.0/vq/floor_22.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/floor_22.vqs	(revision 16)
@@ -0,0 +1,27 @@
+GO
+>floor_22
+=22c0_s 22c1_s 22c2_s
+
+build line_256x7_class0 0-64
+build line_256x7_class1 0-256
+build line_256x7_0sub1  1-9
+build line_256x7_0sub2  9-25
+build line_256x7_0sub3  25-64
+build line_256x7_1sub1  1-9
+build line_256x7_1sub2  9-25
+build line_256x7_1sub3  25-64
+
+build line_512x17_class1 0-8
+build line_512x17_class2 0-64
+build line_512x17_class3 0-64
+build line_512x17_0sub0  0-128
+build line_512x17_1sub0  0-32
+build line_512x17_1sub1  32-128
+build line_512x17_2sub1  1-18
+build line_512x17_2sub2  18-50
+build line_512x17_2sub3  50-128
+build line_512x17_3sub1  1-18
+build line_512x17_3sub2  18-50
+build line_512x17_3sub3  50-128
+
+
Index: /libvorbis-1.2.0/vq/floor_44.vqs
===================================================================
--- /libvorbis-1.2.0/vq/floor_44.vqs	(revision 16)
+++ /libvorbis-1.2.0/vq/floor_44.vqs	(revision 16)
@@ -0,0 +1,83 @@
+GO
+>floor_44
+=44c-1_s 44c0_s 44c1_s 44c2_s 44c3_s 44c4_s 44c5_s 44c6_s 44c7_s 44c8_s 44c9_s 
+
+build line_128x4_class0 0-256
+build line_128x4_0sub0  0-4
+build line_128x4_0sub1  4-10
+build line_128x4_0sub2  10-25
+build line_128x4_0sub3  25-64
+
+build line_256x4_class0 0-256
+build line_256x4_0sub0  0-4
+build line_256x4_0sub1  4-10
+build line_256x4_0sub2  10-25
+build line_256x4_0sub3  25-64
+
+build line_128x7_class0 0-64
+build line_128x7_class1 0-256
+build line_128x7_0sub1  1-9
+build line_128x7_0sub2  9-25
+build line_128x7_0sub3  25-64
+build line_128x7_1sub1  1-9
+build line_128x7_1sub2  9-25
+build line_128x7_1sub3  25-64
+
+build line_128x11_class1 0-8
+build line_128x11_class2 0-64
+build line_128x11_class3 0-64
+build line_128x11_0sub0  0-128
+build line_128x11_1sub0  0-32
+build line_128x11_1sub1  32-128
+build line_128x11_2sub1  1-18
+build line_128x11_2sub2  18-50
+build line_128x11_2sub3  50-128
+build line_128x11_3sub1  1-18
+build line_128x11_3sub2  18-50
+build line_128x11_3sub3  50-128
+
+build line_128x17_class1 0-8
+build line_128x17_class2 0-64
+build line_128x17_class3 0-64
+build line_128x17_0sub0  0-128
+build line_128x17_1sub0  0-32
+build line_128x17_1sub1  32-128
+build line_128x17_2sub1  1-18
+build line_128x17_2sub2  18-50
+build line_128x17_2sub3  50-128
+build line_128x17_3sub1  1-18
+build line_128x17_3sub2  18-50
+build line_128x17_3sub3  50-128
+
+build line_1024x27_class1 0-16
+build line_1024x27_class2 0-8
+build line_1024x27_class3 0-256
+build line_1024x27_class4 0-64
+build line_1024x27_0sub0  0-128 
+build line_1024x27_1sub0  0-32
+build line_1024x27_1sub1  32-128
+build line_1024x27_2sub0  0-32
+build line_1024x27_2sub1  32-128
+build line_1024x27_3sub1  1-18
+build line_1024x27_3sub2  18-50
+build line_1024x27_3sub3  50-128
+build line_1024x27_4sub1  1-18
+build line_1024x27_4sub2  18-50
+build line_1024x27_4sub3  50-128
+
+build line_2048x27_class1 0-16
+build line_2048x27_class2 0-8
+build line_2048x27_class3 0-256
+build line_2048x27_class4 0-64
+build line_2048x27_0sub0  0-128 
+build line_2048x27_1sub0  0-32
+build line_2048x27_1sub1  32-128
+build line_2048x27_2sub0  0-32
+build line_2048x27_2sub1  32-128
+build line_2048x27_3sub1  1-18
+build line_2048x27_3sub2  18-50
+build line_2048x27_3sub3  50-128
+build line_2048x27_4sub1  1-18
+build line_2048x27_4sub2  18-50
+build line_2048x27_4sub3  50-128
+
Index: /libvorbis-1.2.0/vq/genericdata.c
===================================================================
--- /libvorbis-1.2.0/vq/genericdata.c	(revision 16)
+++ /libvorbis-1.2.0/vq/genericdata.c	(revision 16)
@@ -0,0 +1,61 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: generic euclidian distance metric for VQ codebooks
+ last mod: $Id: genericdata.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <stdio.h>
+#include "vqgen.h"
+#include "vqext.h"
+
+char *vqext_booktype="GENERICdata";  
+int vqext_aux=0;                
+quant_meta q={0,0,0,0};          /* non sequence data; each scalar 
+				    independent */
+
+void vqext_quantize(vqgen *v,quant_meta *q){
+  vqgen_quantize(v,q);
+}
+
+float *vqext_weight(vqgen *v,float *p){
+  /*noop*/
+  return(p);
+}
+
+                            /* candidate,actual */
+float vqext_metric(vqgen *v,float *e, float *p){
+  int i;
+  float acc=0.f;
+  for(i=0;i<v->elements;i++){
+    float val=p[i]-e[i];
+    acc+=val*val;
+  }
+  return sqrt(acc/v->elements);
+}
+
+void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){
+  vqgen_addpoint(v,b+start,NULL);
+}
+
+void vqext_preprocess(vqgen *v){
+  /* noop */
+}
+
+
+
+
+
+
Index: /libvorbis-1.2.0/vq/huffbuild.c
===================================================================
--- /libvorbis-1.2.0/vq/huffbuild.c	(revision 16)
+++ /libvorbis-1.2.0/vq/huffbuild.c	(revision 16)
@@ -0,0 +1,201 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: hufftree builder
+ last mod: $Id: huffbuild.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include "bookutil.h"
+
+static int nsofar=0;
+static int getval(FILE *in,int begin,int n,int group,int max){
+  float v;
+  int i;
+  long val=0;
+
+  if(nsofar>=n || get_line_value(in,&v)){
+    reset_next_value();
+    nsofar=0;
+    if(get_next_value(in,&v))
+      return(-1);
+    for(i=1;i<=begin;i++)
+      get_line_value(in,&v);
+  }
+
+  val=(int)v;
+  nsofar++;
+
+  for(i=1;i<group;i++,nsofar++)
+    if(nsofar>=n || get_line_value(in,&v))
+      return(getval(in,begin,n,group,max));
+    else
+      val = val*max+(int)v;
+  return(val);
+}
+
+static void usage(){
+  fprintf(stderr,
+	  "usage:\n" 
+	  "huffbuild <input>.vqd <begin,n,group>|<lorange-hirange> [noguard]\n"
+	  "   where begin,n,group is first scalar, \n"
+	  "                          number of scalars of each in line,\n"
+	  "                          number of scalars in a group\n"
+	  "eg: huffbuild reslongaux.vqd 0,1024,4\n"
+	  "produces reslongaux.vqh\n\n");
+  exit(1);
+}
+
+int main(int argc, char *argv[]){
+  char *base;
+  char *infile;
+  int i,j,k,begin,n,subn,guard=1;
+  FILE *file;
+  int maxval=0;
+  int loval=0;
+
+  if(argc<3)usage();
+  if(argc==4)guard=0;
+
+  infile=strdup(argv[1]);
+  base=strdup(infile);
+  if(strrchr(base,'.'))
+    strrchr(base,'.')[0]='\0';
+
+  {
+    char *pos=strchr(argv[2],',');
+    char *dpos=strchr(argv[2],'-');
+    if(dpos){
+      loval=atoi(argv[2]);
+      maxval=atoi(dpos+1);
+      subn=1;
+      begin=0;
+    }else{
+      begin=atoi(argv[2]);
+      if(!pos)
+	usage();
+      else
+	n=atoi(pos+1);
+      pos=strchr(pos+1,',');
+      if(!pos)
+	usage();
+      else
+	subn=atoi(pos+1);
+      if(n/subn*subn != n){
+	fprintf(stderr,"n must be divisible by group\n");
+	exit(1);
+      }
+    }
+  }
+
+  /* scan the file for maximum value */
+  file=fopen(infile,"r");
+  if(!file){
+    fprintf(stderr,"Could not open file %s\n",infile);
+    if(!maxval)
+      exit(1);
+    else
+      fprintf(stderr,"  making untrained books.\n");
+
+  }
+
+  if(!maxval){
+    i=0;
+    while(1){
+      long v;
+      if(get_next_ivalue(file,&v))break;
+      if(v>maxval)maxval=v;
+      
+      if(!(i++&0xff))spinnit("loading... ",i);
+    }
+    rewind(file);
+    maxval++;
+  }
+
+  {
+    long vals=pow(maxval,subn);
+    long *hist=_ogg_calloc(vals,sizeof(long));
+    long *lengths=_ogg_calloc(vals,sizeof(long));
+    
+    for(j=loval;j<vals;j++)hist[j]=guard;
+    
+    if(file){
+      reset_next_value();
+      i/=subn;
+      while(!feof(file)){
+	long val=getval(file,begin,n,subn,maxval);
+	if(val==-1 || val>=vals)break;
+	hist[val]++;
+	if(!(i--&0xff))spinnit("loading... ",i*subn);
+      }
+      fclose(file);
+    }
+ 
+    /* we have the probabilities, build the tree */
+    fprintf(stderr,"Building tree for %ld entries\n",vals);
+    build_tree_from_lengths0(vals,hist,lengths);
+
+    /* save the book */
+    {
+      char *buffer=alloca(strlen(base)+5);
+      strcpy(buffer,base);
+      strcat(buffer,".vqh");
+      file=fopen(buffer,"w");
+      if(!file){
+	fprintf(stderr,"Could not open file %s\n",buffer);
+	exit(1);
+      }
+    }
+    
+    /* first, the static vectors, then the book structure to tie it together. */
+    /* lengthlist */
+    fprintf(file,"static long _huff_lengthlist_%s[] = {\n",base);
+    for(j=0;j<vals;){
+      fprintf(file,"\t");
+      for(k=0;k<16 && j<vals;k++,j++)
+	fprintf(file,"%2ld,",lengths[j]);
+      fprintf(file,"\n");
+    }
+    fprintf(file,"};\n\n");
+    
+    /* the toplevel book */
+    fprintf(file,"static static_codebook _huff_book_%s = {\n",base);
+    fprintf(file,"\t%d, %ld,\n",subn,vals);
+    fprintf(file,"\t_huff_lengthlist_%s,\n",base);
+    fprintf(file,"\t0, 0, 0, 0, 0,\n");
+    fprintf(file,"\tNULL,\n");
+
+    fprintf(file,"\tNULL,\n");
+    fprintf(file,"\tNULL,\n");
+    fprintf(file,"\tNULL,\n");
+    fprintf(file,"\t0\n};\n\n");
+    
+    fclose(file);
+    fprintf(stderr,"Done.                                \n\n");
+  }
+  exit(0);
+}
+
+
+
+
+
+
+
+
+
+
+
Index: /libvorbis-1.2.0/vq/latticebuild.c
===================================================================
--- /libvorbis-1.2.0/vq/latticebuild.c	(revision 16)
+++ /libvorbis-1.2.0/vq/latticebuild.c	(revision 16)
@@ -0,0 +1,177 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility main for building codebooks from lattice descriptions
+ last mod: $Id: latticebuild.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "bookutil.h"
+
+/* The purpose of this util is just to finish packaging the
+   description into a static codebook.  It used to count hits for a
+   histogram, but I've divorced that out to add some flexibility (it
+   currently generates an equal probability codebook) 
+
+   command line:
+   latticebuild description.vql
+
+   the lattice description file contains two lines:
+
+   <n> <dim> <multiplicitavep> <sequentialp>
+   <value_0> <value_1> <value_2> ... <value_n-1>
+   
+   a threshmap (or pigeonmap) struct is generated by latticehint;
+   there are fun tricks one can do with the threshmap and cascades,
+   but the utils don't know them...
+
+   entropy encoding is done by feeding an entry list collected from a
+   training set and feeding it to latticetune along with the book.
+
+   latticebuild produces a codebook on stdout */
+
+static int ilog(unsigned int v){
+  int ret=0;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+int main(int argc,char *argv[]){
+  codebook b;
+  static_codebook c;
+  double *quantlist;
+  long *hits;
+
+  int entries=-1,dim=-1,quantvals=-1,addmul=-1,sequencep=0;
+  FILE *in=NULL;
+  char *line,*name;
+  long i,j;
+
+  memset(&b,0,sizeof(b));
+  memset(&c,0,sizeof(c));
+
+  if(argv[1]==NULL){
+    fprintf(stderr,"Need a lattice description file on the command line.\n");
+    exit(1);
+  }
+
+  {
+    char *ptr;
+    char *filename=_ogg_calloc(strlen(argv[1])+4,1);
+
+    strcpy(filename,argv[1]);
+    in=fopen(filename,"r");
+    if(!in){
+      fprintf(stderr,"Could not open input file %s\n",filename);
+      exit(1);
+    }
+    
+    ptr=strrchr(filename,'.');
+    if(ptr){
+      *ptr='\0';
+      name=strdup(filename);
+    }else{
+      name=strdup(filename);
+    }
+
+  }
+  
+  /* read the description */
+  line=get_line(in);
+  if(sscanf(line,"%d %d %d %d",&quantvals,&dim,&addmul,&sequencep)!=4){
+    if(sscanf(line,"%d %d %d",&quantvals,&dim,&addmul)!=3){
+      fprintf(stderr,"Syntax error reading description file (line 1)\n");
+      exit(1);
+    }
+  }
+  entries=pow(quantvals,dim);
+  c.dim=dim;
+  c.entries=entries;
+  c.lengthlist=_ogg_malloc(entries*sizeof(long));
+  c.maptype=1;
+  c.q_sequencep=sequencep;
+  c.quantlist=_ogg_calloc(quantvals,sizeof(long));
+
+  quantlist=_ogg_malloc(sizeof(double)*c.dim*c.entries);
+  hits=_ogg_malloc(c.entries*sizeof(long));
+  for(j=0;j<entries;j++)hits[j]=1;
+  for(j=0;j<entries;j++)c.lengthlist[j]=1;
+
+  reset_next_value();
+  line=setup_line(in);
+  for(j=0;j<quantvals;j++){ 
+    char *temp;
+    if(!line || sscanf(line,"%lf",quantlist+j)!=1){
+      fprintf(stderr,"Ran out of data on line 2 of description file\n");
+      exit(1);
+    }
+    temp=strchr(line,',');
+    if(!temp)temp=strchr(line,' ');
+    if(temp)temp++;
+    line=temp;
+  }
+
+  /* gen a real quant list from the more easily human-grokked input */
+  {
+    double min=quantlist[0];
+    double mindel=-1;
+    int fac=1;
+    for(j=1;j<quantvals;j++)if(quantlist[j]<min)min=quantlist[j];
+    for(j=0;j<quantvals;j++)
+      for(i=j+1;i<quantvals;i++)
+	if(mindel==-1 || fabs(quantlist[j]-quantlist[i])<mindel)
+	  mindel=fabs(quantlist[j]-quantlist[i]);
+
+    j=0;
+    while(j<quantvals){
+      for(j=0;j<quantvals;j++){
+	double test=fac*(quantlist[j]-min)/mindel;
+	if( fabs(rint(test)-test)>.00001f) break;
+      }
+      if(fac>100)break;
+      if(j<quantvals)fac++;
+    }
+
+    mindel/=fac;
+    fprintf(stderr,"min=%g mindel=%g\n",min,mindel);
+
+    c.q_min=_float32_pack(min);
+    c.q_delta=_float32_pack(mindel);
+    c.q_quant=0;
+
+    min=_float32_unpack(c.q_min);
+    mindel=_float32_unpack(c.q_delta);
+    for(j=0;j<quantvals;j++){
+      c.quantlist[j]=rint((quantlist[j]-min)/mindel);
+      if(ilog(c.quantlist[j])>c.q_quant)c.q_quant=ilog(c.quantlist[j]);
+    }
+  }
+
+  /* build the [default] codeword lengths */
+  memset(c.lengthlist,0,sizeof(long)*entries);
+  for(i=0;i<entries;i++)hits[i]=1;
+  build_tree_from_lengths(entries,hits,c.lengthlist);
+
+  /* save the book in C header form */
+  write_codebook(stdout,name,&c);
+  fprintf(stderr,"\r                                                     "
+	  "\nDone.\n");
+  exit(0);
+}
Index: /libvorbis-1.2.0/vq/latticehint.c
===================================================================
--- /libvorbis-1.2.0/vq/latticehint.c	(revision 16)
+++ /libvorbis-1.2.0/vq/latticehint.c	(revision 16)
@@ -0,0 +1,430 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility main for building thresh/pigeonhole encode hints
+ last mod: $Id: latticehint.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "../lib/scales.h"
+#include "bookutil.h"
+#include "vqgen.h"
+#include "vqsplit.h"
+
+/* The purpose of this util is to build encode hints for lattice
+   codebooks so that brute forcing each codebook entry isn't needed.
+   Threshhold hints are for books in which each scalar in the vector
+   is independant (eg, residue) and pigeonhole lookups provide a
+   minimum error fit for words where the scalars are interdependant
+   (each affecting the fit of the next in sequence) as in an LSP
+   sequential book (or can be used along with a sparse threshhold map,
+   like a splitting tree that need not be trained) 
+
+   If the input book is non-sequential, a threshhold hint is built.
+   If the input book is sequential, a pigeonholing hist is built.
+   If the book is sparse, a pigeonholing hint is built, possibly in addition
+     to the threshhold hint 
+
+   command line:
+   latticehint book.vqh [threshlist]
+
+   latticehint produces book.vqh on stdout */
+
+static int longsort(const void *a, const void *b){
+  return(**((long **)a)-**((long **)b));
+}
+
+static int addtosearch(int entry,long **tempstack,long *tempcount,int add){
+  long *ptr=tempstack[entry];
+  long i=tempcount[entry];
+
+  if(ptr){
+    while(i--)
+      if(*ptr++==add)return(0);
+    tempstack[entry]=_ogg_realloc(tempstack[entry],
+			     (tempcount[entry]+1)*sizeof(long));
+  }else{
+    tempstack[entry]=_ogg_malloc(sizeof(long));
+  }
+
+  tempstack[entry][tempcount[entry]++]=add;
+  return(1);
+}
+
+static void setvals(int dim,encode_aux_pigeonhole *p,
+		    long *temptrack,float *tempmin,float *tempmax,
+		    int seqp){
+  int i;
+  float last=0.f;
+  for(i=0;i<dim;i++){
+    tempmin[i]=(temptrack[i])*p->del+p->min+last;
+    tempmax[i]=tempmin[i]+p->del;
+    if(seqp)last=tempmin[i];
+  }
+}
+
+/* note that things are currently set up such that input fits that
+   quantize outside the pigeonmap are dropped and brute-forced.  So we
+   can ignore the <0 and >=n boundary cases in min/max error */
+
+static float minerror(int dim,float *a,encode_aux_pigeonhole *p,
+		       long *temptrack,float *tempmin,float *tempmax){
+  int i;
+  float err=0.f;
+  for(i=0;i<dim;i++){
+    float eval=0.f;
+    if(a[i]<tempmin[i]){
+      eval=tempmin[i]-a[i];
+    }else if(a[i]>tempmax[i]){
+      eval=a[i]-tempmax[i];
+    }
+    err+=eval*eval;
+  }
+  return(err);
+}
+
+static float maxerror(int dim,float *a,encode_aux_pigeonhole *p,
+		       long *temptrack,float *tempmin,float *tempmax){
+  int i;
+  float err=0.f,eval;
+  for(i=0;i<dim;i++){
+    if(a[i]<tempmin[i]){
+      eval=tempmax[i]-a[i];
+    }else if(a[i]>tempmax[i]){
+      eval=a[i]-tempmin[i];
+    }else{
+      float t1=a[i]-tempmin[i];
+      eval=tempmax[i]-a[i];
+      if(t1>eval)eval=t1;
+    }
+    err+=eval*eval;
+  }
+  return(err);
+}
+
+int main(int argc,char *argv[]){
+  codebook *b;
+  static_codebook *c;
+  int entries=-1,dim=-1;
+  float min,del;
+  char *name;
+  long i,j;
+  float *suggestions;
+  int suggcount=0;
+
+  if(argv[1]==NULL){
+    fprintf(stderr,"Need a lattice book on the command line.\n");
+    exit(1);
+  }
+
+  {
+    char *ptr;
+    char *filename=strdup(argv[1]);
+
+    b=codebook_load(filename);
+    c=(static_codebook *)(b->c);
+    
+    ptr=strrchr(filename,'.');
+    if(ptr){
+      *ptr='\0';
+      name=strdup(filename);
+    }else{
+      name=strdup(filename);
+    }
+  }
+
+  if(c->maptype!=1){
+    fprintf(stderr,"Provided book is not a latticebook.\n");
+    exit(1);
+  }
+
+  entries=b->entries;
+  dim=b->dim;
+  min=_float32_unpack(c->q_min);
+  del=_float32_unpack(c->q_delta);
+
+  /* Do we want to gen a threshold hint? */
+  if(c->q_sequencep==0){
+    /* yes. Discard any preexisting threshhold hint */
+    long quantvals=_book_maptype1_quantvals(c);
+    long **quantsort=alloca(quantvals*sizeof(long *));
+    encode_aux_threshmatch *t=_ogg_calloc(1,sizeof(encode_aux_threshmatch));
+    c->thresh_tree=t;
+
+    fprintf(stderr,"Adding threshold hint to %s...\n",name);
+
+    /* partial/complete suggestions */
+    if(argv[2]){
+      char *ptr=strdup(argv[2]);
+      suggestions=alloca(sizeof(float)*quantvals);
+			 
+      for(suggcount=0;ptr && suggcount<quantvals;suggcount++){
+	char *ptr2=strchr(ptr,',');
+	if(ptr2)*ptr2++='\0';
+	suggestions[suggcount]=atof(ptr);
+	ptr=ptr2;
+      }
+    }
+
+    /* simplest possible threshold hint only */
+    t->quantthresh=_ogg_calloc(quantvals-1,sizeof(float));
+    t->quantmap=_ogg_calloc(quantvals,sizeof(int));
+    t->threshvals=quantvals;
+    t->quantvals=quantvals;
+
+    /* the quantvals may not be in order; sort em first */
+    for(i=0;i<quantvals;i++)quantsort[i]=c->quantlist+i;
+    qsort(quantsort,quantvals,sizeof(long *),longsort);
+
+    /* ok, gen the map and thresholds */
+    for(i=0;i<quantvals;i++)t->quantmap[i]=quantsort[i]-c->quantlist;
+    for(i=0;i<quantvals-1;i++){
+      float v1=*(quantsort[i])*del+min;
+      float v2=*(quantsort[i+1])*del+min;
+      
+      for(j=0;j<suggcount;j++)
+	if(v1<suggestions[j] && suggestions[j]<v2){
+	  t->quantthresh[i]=suggestions[j];
+	  break;
+	}
+      
+      if(j==suggcount){
+	t->quantthresh[i]=(v1+v2)*.5;
+      }
+    }
+  }
+
+  /* Do we want to gen a pigeonhole hint? */
+#if 0
+  for(i=0;i<entries;i++)if(c->lengthlist[i]==0)break;
+  if(c->q_sequencep || i<entries){
+    long **tempstack;
+    long *tempcount;
+    long *temptrack;
+    float *tempmin;
+    float *tempmax;
+    long totalstack=0;
+    long pigeons;
+    long subpigeons;
+    long quantvals=_book_maptype1_quantvals(c);
+    int changep=1,factor;
+
+    encode_aux_pigeonhole *p=_ogg_calloc(1,sizeof(encode_aux_pigeonhole));
+    c->pigeon_tree=p;
+
+    fprintf(stderr,"Adding pigeonhole hint to %s...\n",name);
+    
+    /* the idea is that we quantize uniformly, even in a nonuniform
+       lattice, so that quantization of one scalar has a predictable
+       result on the next sequential scalar in a greedy matching
+       algorithm.  We generate a lookup based on the quantization of
+       the vector (pigeonmap groups quantized entries together) and
+       list the entries that could possible be the best fit for any
+       given member of that pigeonhole.  The encode process then has a
+       much smaller list to brute force */
+
+    /* find our pigeonhole-specific quantization values, fill in the
+       quant value->pigeonhole map */
+    factor=3;
+    p->del=del;
+    p->min=min;
+    p->quantvals=quantvals;
+    {
+      int max=0;
+      for(i=0;i<quantvals;i++)if(max<c->quantlist[i])max=c->quantlist[i];
+      p->mapentries=max;
+    }
+    p->pigeonmap=_ogg_malloc(p->mapentries*sizeof(long));
+    p->quantvals=(quantvals+factor-1)/factor;
+
+    /* pigeonhole roughly on the boundaries of the quantvals; the
+       exact pigeonhole grouping is an optimization issue, not a
+       correctness issue */
+    for(i=0;i<p->mapentries;i++){
+      float thisval=del*i+min; /* middle of the quant zone */
+      int quant=0;
+      float err=fabs(c->quantlist[0]*del+min-thisval);
+      for(j=1;j<quantvals;j++){
+	float thiserr=fabs(c->quantlist[j]*del+min-thisval);
+	if(thiserr<err){
+	  quant=j/factor;
+	  err=thiserr;
+	}
+      }
+      p->pigeonmap[i]=quant;
+    }
+    
+    /* pigeonmap complete.  Now do the grungy business of finding the
+    entries that could possibly be the best fit for a value appearing
+    in the pigeonhole. The trick that allows the below to work is the
+    uniform quantization; even though the scalars may be 'sequential'
+    (each a delta from the last), the uniform quantization means that
+    the error variance is *not* dependant.  Given a pigeonhole and an
+    entry, we can find the minimum and maximum possible errors
+    (relative to the entry) for any point that could appear in the
+    pigeonhole */
+    
+    /* must iterate over both pigeonholes and entries */
+    /* temporarily (in order to avoid thinking hard), we grow each
+       pigeonhole seperately, the build a stack of 'em later */
+    pigeons=1;
+    subpigeons=1;
+    for(i=0;i<dim;i++)subpigeons*=p->mapentries;
+    for(i=0;i<dim;i++)pigeons*=p->quantvals;
+    temptrack=_ogg_calloc(dim,sizeof(long));
+    tempmin=_ogg_calloc(dim,sizeof(float));
+    tempmax=_ogg_calloc(dim,sizeof(float));
+    tempstack=_ogg_calloc(pigeons,sizeof(long *));
+    tempcount=_ogg_calloc(pigeons,sizeof(long));
+
+    while(1){
+      float errorpost=-1;
+      char buffer[80];
+
+      /* map our current pigeonhole to a 'big pigeonhole' so we know
+         what list we're after */
+      int entry=0;
+      for(i=dim-1;i>=0;i--)entry=entry*p->quantvals+p->pigeonmap[temptrack[i]];
+      setvals(dim,p,temptrack,tempmin,tempmax,c->q_sequencep);
+      sprintf(buffer,"Building pigeonhole search list [%ld]...",totalstack);
+
+
+      /* Search all entries to find the one with the minimum possible
+         maximum error.  Record that error */
+      for(i=0;i<entries;i++){
+	if(c->lengthlist[i]>0){
+	  float this=maxerror(dim,b->valuelist+i*dim,p,
+			       temptrack,tempmin,tempmax);
+	  if(errorpost==-1 || this<errorpost)errorpost=this;
+	  spinnit(buffer,subpigeons);
+	}
+      }
+
+      /* Our search list will contain all entries with a minimum
+         possible error <= our errorpost */
+      for(i=0;i<entries;i++)
+	if(c->lengthlist[i]>0){
+	  spinnit(buffer,subpigeons);
+	  if(minerror(dim,b->valuelist+i*dim,p,
+		      temptrack,tempmin,tempmax)<errorpost)
+	    totalstack+=addtosearch(entry,tempstack,tempcount,i);
+	}
+
+      for(i=0;i<dim;i++){
+	temptrack[i]++;
+	if(temptrack[i]<p->mapentries)break;
+	temptrack[i]=0;
+      }
+      if(i==dim)break;
+      subpigeons--;
+    }
+
+    fprintf(stderr,"\r                                                     "
+	    "\rTotal search list size (all entries): %ld\n",totalstack);
+
+    /* pare the index of lists for improbable quantizations (where
+       improbable is determined by c->lengthlist; we assume that
+       pigeonholing is in sync with the codeword cells, which it is */
+    /*for(i=0;i<entries;i++){
+      float probability= 1.f/(1<<c->lengthlist[i]);
+      if(c->lengthlist[i]==0 || probability*entries<cutoff){
+	totalstack-=tempcount[i];
+	tempcount[i]=0;
+      }
+      }*/
+
+    /* pare the list of shortlists; merge contained and similar lists
+       together */
+    p->fitmap=_ogg_malloc(pigeons*sizeof(long));
+    for(i=0;i<pigeons;i++)p->fitmap[i]=-1;
+    while(changep){
+      char buffer[80];
+      changep=0;
+
+      for(i=0;i<pigeons;i++){
+	if(p->fitmap[i]<0 && tempcount[i]){
+	  for(j=i+1;j<pigeons;j++){
+	    if(p->fitmap[j]<0 && tempcount[j]){
+	      /* is one list a superset, or are they sufficiently similar? */
+	      int amiss=0,bmiss=0,ii,jj;
+	      for(ii=0;ii<tempcount[i];ii++){
+		for(jj=0;jj<tempcount[j];jj++)
+		  if(tempstack[i][ii]==tempstack[j][jj])break;
+		if(jj==tempcount[j])amiss++;
+	      }
+	      for(jj=0;jj<tempcount[j];jj++){
+		for(ii=0;ii<tempcount[i];ii++)
+		  if(tempstack[i][ii]==tempstack[j][jj])break;
+		if(ii==tempcount[i])bmiss++;
+	      }
+	      if(amiss==0 ||
+		 bmiss==0 ||
+		 (amiss*2<tempcount[i] && bmiss*2<tempcount[j] &&
+		 tempcount[i]+bmiss<entries/30)){
+
+		/*superset/similar  Add all of one to the other. */
+		for(jj=0;jj<tempcount[j];jj++)
+		  totalstack+=addtosearch(i,tempstack,tempcount,
+					  tempstack[j][jj]);
+		totalstack-=tempcount[j];
+		p->fitmap[j]=i;
+		changep=1;
+	      }
+	    }
+	  }
+	  sprintf(buffer,"Consolidating [%ld total, %s]... ",totalstack,
+		  changep?"reit":"nochange");
+	  spinnit(buffer,pigeons-i);
+	}
+      }
+    }
+
+    /* repack the temp stack in final form */
+    fprintf(stderr,"\r                                                       "
+	    "\rFinal total list size: %ld\n",totalstack);
+    
+
+    p->fittotal=totalstack;
+    p->fitlist=_ogg_malloc((totalstack+1)*sizeof(long));
+    p->fitlength=_ogg_malloc(pigeons*sizeof(long));
+    {
+      long usage=0;
+      for(i=0;i<pigeons;i++){
+	if(p->fitmap[i]==-1){
+	  if(tempcount[i])
+	    memcpy(p->fitlist+usage,tempstack[i],tempcount[i]*sizeof(long));
+	  p->fitmap[i]=usage;
+	  p->fitlength[i]=tempcount[i];
+	  usage+=tempcount[i];
+	  if(usage>totalstack){
+	    fprintf(stderr,"Internal error; usage>totalstack\n");
+	    exit(1);
+	  }
+	}else{
+	  p->fitlength[i]=p->fitlength[p->fitmap[i]];
+	  p->fitmap[i]=p->fitmap[p->fitmap[i]];
+	}
+      }
+    }
+  }
+#endif
+
+  write_codebook(stdout,name,c); 
+  fprintf(stderr,"\r                                                     "
+	  "\nDone.\n");
+  exit(0);
+}
Index: /libvorbis-1.2.0/vq/latticepare.c
===================================================================
--- /libvorbis-1.2.0/vq/latticepare.c	(revision 16)
+++ /libvorbis-1.2.0/vq/latticepare.c	(revision 16)
@@ -0,0 +1,595 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility for paring low hit count cells from lattice codebook
+ last mod: $Id: latticepare.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "../lib/scales.h"
+#include "bookutil.h"
+#include "vqgen.h"
+#include "vqsplit.h"
+#include "../lib/os.h"
+
+/* Lattice codebooks have two strengths: important fetaures that are
+   poorly modelled by global error minimization training (eg, strong
+   peaks) are not neglected 2) compact quantized representation.
+
+   A fully populated lattice codebook, however, swings point 1 too far
+   in the opposite direction; rare features need not be modelled quite
+   so religiously and as such, we waste bits unless we eliminate the
+   least common cells.  The codebook rep supports unused cells, so we
+   need to tag such cells and build an auxiliary (non-thresh) search
+   mechanism to find the proper match quickly */
+
+/* two basic steps; first is pare the cell for which dispersal creates
+   the least additional error.  This will naturally choose
+   low-population cells and cells that have not taken on points from
+   neighboring paring (but does not result in the lattice collapsing
+   inward and leaving low population ares totally unmodelled).  After
+   paring has removed the desired number of cells, we need to build an
+   auxiliary search for each culled point */
+
+/* Although lattice books (due to threshhold-based matching) do not
+   actually use error to make cell selections (in fact, it need not
+   bear any relation), the 'secondbest' entry finder here is in fact
+   error/distance based, so latticepare is only useful on such books */
+
+/* command line:
+   latticepare latticebook.vqh input_data.vqd <target_cells>
+
+   produces a new output book on stdout 
+*/
+
+static float _dist(int el,float *a, float *b){
+  int i;
+  float acc=0.f;
+  for(i=0;i<el;i++){
+    float val=(a[i]-b[i]);
+    acc+=val*val;
+  }
+  return(acc);
+}
+
+static float *pointlist;
+static long points=0;
+
+void add_vector(codebook *b,float *vec,long n){
+  int dim=b->dim,i,j;
+  int step=n/dim;
+  for(i=0;i<step;i++){
+    for(j=i;j<n;j+=step){
+      pointlist[points++]=vec[j];
+    }
+  }
+}
+
+static int bestm(codebook *b,float *vec){
+  encode_aux_threshmatch *tt=b->c->thresh_tree;
+  int dim=b->dim;
+  int i,k,o;
+  int best=0;
+  
+  /* what would be the closest match if the codebook was fully
+     populated? */
+  
+  for(k=0,o=dim-1;k<dim;k++,o--){
+    int i;
+    for(i=0;i<tt->threshvals-1;i++)
+      if(vec[o]<tt->quantthresh[i])break;
+    best=(best*tt->quantvals)+tt->quantmap[i];
+  }
+  return(best);
+}
+
+static int closest(codebook *b,float *vec,int current){
+  encode_aux_threshmatch *tt=b->c->thresh_tree;
+  int dim=b->dim;
+  int i,k,o;
+
+  float bestmetric=0;
+  int bestentry=-1;
+  int best=bestm(b,vec);
+
+  if(current<0 && b->c->lengthlist[best]>0)return best;
+
+  for(i=0;i<b->entries;i++){
+    if(b->c->lengthlist[i]>0 && i!=best && i!=current){
+      float thismetric=_dist(dim, vec, b->valuelist+i*dim);
+      if(bestentry==-1 || thismetric<bestmetric){
+	bestentry=i;
+	bestmetric=thismetric;
+      }
+    }
+  }
+
+  return(bestentry);
+}
+
+static float _heuristic(codebook *b,float *ppt,int secondbest){
+  float *secondcell=b->valuelist+secondbest*b->dim;
+  int best=bestm(b,ppt);
+  float *firstcell=b->valuelist+best*b->dim;
+  float error=_dist(b->dim,firstcell,secondcell);
+  float *zero=alloca(b->dim*sizeof(float));
+  float fromzero;
+  
+  memset(zero,0,b->dim*sizeof(float));
+  fromzero=sqrt(_dist(b->dim,firstcell,zero));
+
+  return(error/fromzero);
+}
+
+static int longsort(const void *a, const void *b){
+  return **(long **)b-**(long **)a;
+}
+
+void usage(void){
+  fprintf(stderr,"Ogg/Vorbis lattice codebook paring utility\n\n"
+	  "usage: latticepare book.vqh data.vqd <target_cells> <protected_cells> base\n"
+	  "where <target_cells> is the desired number of final cells (or -1\n"
+	  "                     for no change)\n"
+	  "      <protected_cells> is the number of highest-hit count cells\n"
+	  "                     to protect from dispersal\n"
+	  "      base is the base name (not including .vqh) of the new\n"
+	  "                     book\n\n");
+  exit(1);
+}
+
+int main(int argc,char *argv[]){
+  char *basename;
+  codebook *b=NULL;
+  int entries=0;
+  int dim=0;
+  long i,j,target=-1,protect=-1;
+  FILE *out=NULL;
+
+  int argnum=0;
+
+  argv++;
+  if(*argv==NULL){
+    usage();
+    exit(1);
+  }
+
+  while(*argv){
+    if(*argv[0]=='-'){
+
+      argv++;
+	
+    }else{
+      switch (argnum++){
+      case 0:case 1:
+	{
+	  /* yes, this is evil.  However, it's very convenient to parse file
+	     extentions */
+	  
+	  /* input file.  What kind? */
+	  char *dot;
+	  char *ext=NULL;
+	  char *name=strdup(*argv++);
+	  dot=strrchr(name,'.');
+	  if(dot)
+	    ext=dot+1;
+	  else{
+	    ext="";
+	    
+	  }
+	  
+	  
+	  /* codebook */
+	  if(!strcmp(ext,"vqh")){
+	    
+	    basename=strrchr(name,'/');
+	    if(basename)
+	      basename=strdup(basename)+1;
+	    else
+	      basename=strdup(name);
+	    dot=strrchr(basename,'.');
+	    if(dot)*dot='\0';
+	    
+	    b=codebook_load(name);
+	    dim=b->dim;
+	    entries=b->entries;
+	  }
+	  
+	  /* data file; we do actually need to suck it into memory */
+	  /* we're dealing with just one book, so we can de-interleave */ 
+	  if(!strcmp(ext,"vqd") && !points){
+	    int cols;
+	    long lines=0;
+	    char *line;
+	    float *vec;
+	    FILE *in=fopen(name,"r");
+	    if(!in){
+	      fprintf(stderr,"Could not open input file %s\n",name);
+	      exit(1);
+	    }
+	    
+	    reset_next_value();
+	    line=setup_line(in);
+	    /* count cols before we start reading */
+	    {
+	      char *temp=line;
+	      while(*temp==' ')temp++;
+	      for(cols=0;*temp;cols++){
+		while(*temp>32)temp++;
+		while(*temp==' ')temp++;
+	      }
+	    }
+	    vec=alloca(cols*sizeof(float));
+	    /* count, then load, to avoid fragmenting the hell out of
+	       memory */
+	    while(line){
+	      lines++;
+	      for(j=0;j<cols;j++)
+		if(get_line_value(in,vec+j)){
+		  fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+		  exit(1);
+		}
+	      if((lines&0xff)==0)spinnit("counting samples...",lines*cols);
+	      line=setup_line(in);
+	    }
+	    pointlist=_ogg_malloc((cols*lines+entries*dim)*sizeof(float));
+	    
+	    rewind(in);
+	    line=setup_line(in);
+	    while(line){
+	      lines--;
+	      for(j=0;j<cols;j++)
+		if(get_line_value(in,vec+j)){
+		  fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+		  exit(1);
+		}
+	      /* deinterleave, add to heap */
+	      add_vector(b,vec,cols);
+	      if((lines&0xff)==0)spinnit("loading samples...",lines*cols);
+	      
+	      line=setup_line(in);
+	    }
+	    fclose(in);
+	  }
+	}
+	break;
+      case 2:
+	target=atol(*argv++);
+	if(target==0)target=entries;
+	break;
+      case 3:
+	protect=atol(*argv++);
+	break;
+      case 4:
+	{
+	  char *buff=alloca(strlen(*argv)+5);
+	  sprintf(buff,"%s.vqh",*argv);
+	  basename=*argv++;
+
+	  out=fopen(buff,"w");
+	  if(!out){
+	    fprintf(stderr,"unable ot open %s for output",buff);
+	    exit(1);
+	  }
+	}
+	break;
+      default:
+	usage();
+      }
+    }
+  }
+  if(!entries || !points || !out)usage();
+  if(target==-1)usage();
+
+  /* add guard points */
+  for(i=0;i<entries;i++)
+    for(j=0;j<dim;j++)
+      pointlist[points++]=b->valuelist[i*dim+j];
+  
+  points/=dim;
+
+  /* set up auxiliary vectors for error tracking */
+  {
+    encode_aux_nearestmatch *nt=NULL;
+    long pointssofar=0;
+    long *pointindex;
+    long indexedpoints=0;
+    long *entryindex;
+    long *reventry;
+    long *membership=_ogg_malloc(points*sizeof(long));
+    long *firsthead=_ogg_malloc(entries*sizeof(long));
+    long *secondary=_ogg_malloc(points*sizeof(long));
+    long *secondhead=_ogg_malloc(entries*sizeof(long));
+
+    long *cellcount=_ogg_calloc(entries,sizeof(long));
+    long *cellcount2=_ogg_calloc(entries,sizeof(long));
+    float *cellerror=_ogg_calloc(entries,sizeof(float));
+    float *cellerrormax=_ogg_calloc(entries,sizeof(float));
+    long cellsleft=entries;
+    for(i=0;i<points;i++)membership[i]=-1;
+    for(i=0;i<entries;i++)firsthead[i]=-1;
+    for(i=0;i<points;i++)secondary[i]=-1;
+    for(i=0;i<entries;i++)secondhead[i]=-1;
+
+    for(i=0;i<points;i++){
+      /* assign vectors to the nearest cell.  Also keep track of second
+	 nearest for error statistics */
+      float *ppt=pointlist+i*dim;
+      int    firstentry=closest(b,ppt,-1);
+      int    secondentry=closest(b,ppt,firstentry);
+      float firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt);
+      float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
+      
+      if(!(i&0xff))spinnit("initializing... ",points-i);
+    
+      membership[i]=firsthead[firstentry];
+      firsthead[firstentry]=i;
+      secondary[i]=secondhead[secondentry];
+      secondhead[secondentry]=i;
+
+      if(i<points-entries){
+	cellerror[firstentry]+=secondmetric-firstmetric;
+	cellerrormax[firstentry]=max(cellerrormax[firstentry],
+				     _heuristic(b,ppt,secondentry));
+	cellcount[firstentry]++;
+	cellcount2[secondentry]++;
+      }
+    }
+
+    /* which cells are most heavily populated?  Protect as many from
+       dispersal as the user has requested */
+    {
+      long **countindex=_ogg_calloc(entries,sizeof(long *));
+      for(i=0;i<entries;i++)countindex[i]=cellcount+i;
+      qsort(countindex,entries,sizeof(long *),longsort);
+      for(i=0;i<protect;i++){
+	int ptr=countindex[i]-cellcount;
+	cellerrormax[ptr]=9e50f;
+      }
+    }
+
+    {
+      fprintf(stderr,"\r");
+      for(i=0;i<entries;i++){
+	/* decompose index */
+	int entry=i;
+	for(j=0;j<dim;j++){
+	  fprintf(stderr,"%d:",entry%b->c->thresh_tree->quantvals);
+	  entry/=b->c->thresh_tree->quantvals;
+	}
+	
+	fprintf(stderr,":%ld/%ld, ",cellcount[i],cellcount2[i]);
+      }
+      fprintf(stderr,"\n");
+    }
+
+    /* do the automatic cull request */
+    while(cellsleft>target){
+      int bestcell=-1;
+      float besterror=0;
+      float besterror2=0;
+      long head=-1;
+      char spinbuf[80];
+      sprintf(spinbuf,"cells left to eliminate: %ld : ",cellsleft-target);
+
+      /* find the cell with lowest removal impact */
+      for(i=0;i<entries;i++){
+	if(b->c->lengthlist[i]>0){
+	  if(bestcell==-1 || cellerrormax[i]<=besterror2){
+	    if(bestcell==-1 || cellerrormax[i]<besterror2 || 
+	       besterror>cellerror[i]){
+	      besterror=cellerror[i];
+	      besterror2=cellerrormax[i];
+	      bestcell=i;
+	    }
+	  }
+	}
+      }
+
+      fprintf(stderr,"\reliminating cell %d                              \n"
+	      "     dispersal error of %g max/%g total (%ld hits)\n",
+	      bestcell,besterror2,besterror,cellcount[bestcell]);
+
+      /* disperse it.  move each point out, adding it (properly) to
+         the second best */
+      b->c->lengthlist[bestcell]=0;
+      head=firsthead[bestcell];
+      firsthead[bestcell]=-1;
+      while(head!=-1){
+	/* head is a point number */
+	float *ppt=pointlist+head*dim;
+	int firstentry=closest(b,ppt,-1);
+	int secondentry=closest(b,ppt,firstentry);
+	float firstmetric=_dist(dim,b->valuelist+dim*firstentry,ppt);
+	float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
+	long next=membership[head];
+
+	if(head<points-entries){
+	  cellcount[firstentry]++;
+	  cellcount[bestcell]--;
+	  cellerror[firstentry]+=secondmetric-firstmetric;
+	  cellerrormax[firstentry]=max(cellerrormax[firstentry],
+				       _heuristic(b,ppt,secondentry));
+	}
+
+	membership[head]=firsthead[firstentry];
+	firsthead[firstentry]=head;
+	head=next;
+	if(cellcount[bestcell]%128==0)
+	  spinnit(spinbuf,cellcount[bestcell]+cellcount2[bestcell]);
+
+      }
+
+      /* now see that all points that had the dispersed cell as second
+         choice have second choice reassigned */
+      head=secondhead[bestcell];
+      secondhead[bestcell]=-1;
+      while(head!=-1){
+	float *ppt=pointlist+head*dim;
+	/* who are we assigned to now? */
+	int firstentry=closest(b,ppt,-1);
+	/* what is the new second closest match? */
+	int secondentry=closest(b,ppt,firstentry);
+	/* old second closest is the cell being disbanded */
+	float oldsecondmetric=_dist(dim,b->valuelist+dim*bestcell,ppt);
+	/* new second closest error */
+	float secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt);
+	long next=secondary[head];
+
+	if(head<points-entries){
+	  cellcount2[secondentry]++;
+	  cellcount2[bestcell]--;
+	  cellerror[firstentry]+=secondmetric-oldsecondmetric;
+	  cellerrormax[firstentry]=max(cellerrormax[firstentry],
+				       _heuristic(b,ppt,secondentry));
+	}
+	
+	secondary[head]=secondhead[secondentry];
+	secondhead[secondentry]=head;
+	head=next;
+
+	if(cellcount2[bestcell]%128==0)
+	  spinnit(spinbuf,cellcount2[bestcell]);
+      }
+
+      cellsleft--;
+    }
+
+    /* paring is over.  Build decision trees using points that now fall
+       through the thresh matcher. */
+    /* we don't free membership; we flatten it in order to use in lp_split */
+
+    for(i=0;i<entries;i++){
+      long head=firsthead[i];
+      spinnit("rearranging membership cache... ",entries-i);
+      while(head!=-1){
+	long next=membership[head];
+	membership[head]=i;
+	head=next;
+      }
+    }
+
+    free(secondhead);
+    free(firsthead);
+    free(cellerror);
+    free(cellerrormax);
+    free(secondary);
+
+    pointindex=_ogg_malloc(points*sizeof(long));
+    /* make a point index of fall-through points */
+    for(i=0;i<points;i++){
+      int best=_best(b,pointlist+i*dim,1);
+      if(best==-1)
+	pointindex[indexedpoints++]=i;
+      spinnit("finding orphaned points... ",points-i);
+    }
+
+    /* make an entry index */
+    entryindex=_ogg_malloc(entries*sizeof(long));
+    target=0;
+    for(i=0;i<entries;i++){
+      if(b->c->lengthlist[i]>0)
+	entryindex[target++]=i;
+    }
+
+    /* make working space for a reverse entry index */
+    reventry=_ogg_malloc(entries*sizeof(long));
+
+    /* do the split */
+    nt=b->c->nearest_tree=
+      _ogg_calloc(1,sizeof(encode_aux_nearestmatch));
+
+    nt->alloc=4096;
+    nt->ptr0=_ogg_malloc(sizeof(long)*nt->alloc);
+    nt->ptr1=_ogg_malloc(sizeof(long)*nt->alloc);
+    nt->p=_ogg_malloc(sizeof(long)*nt->alloc);
+    nt->q=_ogg_malloc(sizeof(long)*nt->alloc);
+    nt->aux=0;
+
+    fprintf(stderr,"Leaves added: %d              \n",
+            lp_split(pointlist,points,
+                     b,entryindex,target,
+                     pointindex,indexedpoints,
+                     membership,reventry,
+                     0,&pointssofar));
+    free(membership);
+    free(reventry);
+    free(pointindex);
+
+    /* hack alert.  I should just change the damned splitter and
+       codebook writer */
+    for(i=0;i<nt->aux;i++)nt->p[i]*=dim;
+    for(i=0;i<nt->aux;i++)nt->q[i]*=dim;
+    
+    /* recount hits.  Build new lengthlist. reuse entryindex storage */
+    for(i=0;i<entries;i++)entryindex[i]=1;
+    for(i=0;i<points-entries;i++){
+      int best=_best(b,pointlist+i*dim,1);
+      float *a=pointlist+i*dim;
+      if(!(i&0xff))spinnit("counting hits...",i);
+      if(best==-1){
+	fprintf(stderr,"\nINTERNAL ERROR; a point count not be matched to a\n"
+		"codebook entry.  The new decision tree is broken.\n");
+	exit(1);
+      }
+      entryindex[best]++;
+    }
+    for(i=0;i<nt->aux;i++)nt->p[i]/=dim;
+    for(i=0;i<nt->aux;i++)nt->q[i]/=dim;
+    
+    /* the lengthlist builder doesn't actually deal with 0 hit entries.
+       So, we pack the 'sparse' hit list into a dense list, then unpack
+       the lengths after the build */
+    {
+      int upper=0;
+      long *lengthlist=_ogg_calloc(entries,sizeof(long));
+      for(i=0;i<entries;i++){
+	if(b->c->lengthlist[i]>0)
+	  entryindex[upper++]=entryindex[i];
+	else{
+	  if(entryindex[i]>1){
+	    fprintf(stderr,"\nINTERNAL ERROR; _best matched to unused entry\n");
+	    exit(1);
+	  }
+	}
+      }
+      
+      /* sanity check */
+      if(upper != target){
+	fprintf(stderr,"\nINTERNAL ERROR; packed the wrong number of entries\n");
+	exit(1);
+      }
+    
+      build_tree_from_lengths(upper,entryindex,lengthlist);
+      
+      upper=0;
+      for(i=0;i<entries;i++){
+	if(b->c->lengthlist[i]>0)
+	  b->c->lengthlist[i]=lengthlist[upper++];
+      }
+
+    }
+  }
+  /* we're done.  write it out. */
+  write_codebook(out,basename,b->c);
+
+  fprintf(stderr,"\r                                        \nDone.\n");
+  return(0);
+}
+
+
+
+
Index: /libvorbis-1.2.0/vq/latticetune.c
===================================================================
--- /libvorbis-1.2.0/vq/latticetune.c	(revision 16)
+++ /libvorbis-1.2.0/vq/latticetune.c	(revision 16)
@@ -0,0 +1,164 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility main for setting entropy encoding parameters
+           for lattice codebooks
+ last mod: $Id: latticetune.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include "bookutil.h"
+
+static int strrcmp_i(char *s,char *cmp){
+  return(strncmp(s+strlen(s)-strlen(cmp),cmp,strlen(cmp)));
+}
+
+/* This util takes a training-collected file listing codewords used in
+   LSP fitting, then generates new codeword lengths for maximally
+   efficient integer-bits entropy encoding.
+
+   command line:
+   latticetune book.vqh input.vqd [unused_entriesp]
+
+   latticetune produces book.vqh on stdout */
+
+int main(int argc,char *argv[]){
+  codebook *b;
+  static_codebook *c;
+  long *lengths;
+  long *hits;
+
+  int entries=-1,dim=-1,guard=1;
+  FILE *in=NULL;
+  char *line,*name;
+  long j;
+
+  if(argv[1]==NULL){
+    fprintf(stderr,"Need a lattice codebook on the command line.\n");
+    exit(1);
+  }
+  if(argv[2]==NULL){
+    fprintf(stderr,"Need a codeword data file on the command line.\n");
+    exit(1);
+  }
+  if(argv[3]!=NULL)guard=0;
+
+  {
+    char *ptr;
+    char *filename=strdup(argv[1]);
+
+    b=codebook_load(filename);
+    c=(static_codebook *)(b->c);
+    
+    ptr=strrchr(filename,'.');
+    if(ptr){
+      *ptr='\0';
+      name=strdup(filename);
+    }else{
+      name=strdup(filename);
+    }
+  }
+
+  if(c->maptype!=1){
+    fprintf(stderr,"Provided book is not a latticebook.\n");
+    exit(1);
+  }
+
+  entries=b->entries;
+  dim=b->dim;
+
+  hits=_ogg_malloc(entries*sizeof(long));
+  lengths=_ogg_calloc(entries,sizeof(long));
+  for(j=0;j<entries;j++)hits[j]=guard;
+
+  in=fopen(argv[2],"r");
+  if(!in){
+    fprintf(stderr,"Could not open input file %s\n",argv[2]);
+    exit(1);
+  }
+
+  if(!strrcmp_i(argv[0],"latticetune")){
+    long lines=0;
+    line=setup_line(in);
+    while(line){      
+      long code;
+      lines++;
+      if(!(lines&0xfff))spinnit("codewords so far...",lines);
+      
+      if(sscanf(line,"%ld",&code)==1)
+	hits[code]++;
+
+      line=setup_line(in);
+    }
+  }
+
+  /* now we simply count already collated by-entry data */
+  if(!strrcmp_i(argv[0],"res0tune") || !strrcmp_i(argv[0],"res1tune")){
+
+    line=setup_line(in);
+    while(line){
+
+      /* code:hits\n */
+      /* likely to have multiple listing for each code entry; must
+         accumulate */
+
+      char *pos=strchr(line,':');
+      if(pos){
+	long code=atol(line);
+	long val=atol(pos+1); 
+	hits[code]+=val;
+      }
+
+      line=setup_line(in);
+    }
+  }
+
+  fclose(in);
+
+  /* build the codeword lengths */
+  build_tree_from_lengths0(entries,hits,lengths);
+
+  c->lengthlist=lengths;
+  write_codebook(stdout,name,c); 
+
+  {
+    long bins=_book_maptype1_quantvals(c);
+    long i,k,base=c->lengthlist[0];
+    for(i=0;i<entries;i++)
+      if(c->lengthlist[i]>base)base=c->lengthlist[i];
+    
+    for(j=0;j<entries;j++){
+      if(c->lengthlist[j]){
+	int indexdiv=1;
+	fprintf(stderr,"%4ld: ",j);
+	for(k=0;k<c->dim;k++){      
+	  int index= (j/indexdiv)%bins;
+	  fprintf(stderr,"%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+
+		 _float32_unpack(c->q_min));
+	  indexdiv*=bins;
+	}
+	fprintf(stderr,"\t|");
+	for(k=0;k<base-c->lengthlist[j];k++)fprintf(stderr,"*");
+	fprintf(stderr,"\n");
+      }
+    }
+  }
+  
+  fprintf(stderr,"\r                                                     "
+	  "\nDone.\n");
+  exit(0);
+}
Index: /libvorbis-1.2.0/vq/localcodebook.h
===================================================================
--- /libvorbis-1.2.0/vq/localcodebook.h	(revision 16)
+++ /libvorbis-1.2.0/vq/localcodebook.h	(revision 16)
@@ -0,0 +1,160 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: basic shared codebook operations
+ last mod: $Id: localcodebook.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_CODEBOOK_H_
+#define _V_CODEBOOK_H_
+
+#include <ogg/ogg.h>
+
+/* This structure encapsulates huffman and VQ style encoding books; it
+   doesn't do anything specific to either.
+
+   valuelist/quantlist are nonNULL (and q_* significant) only if
+   there's entry->value mapping to be done.
+
+   If encode-side mapping must be done (and thus the entry needs to be
+   hunted), the auxiliary encode pointer will point to a decision
+   tree.  This is true of both VQ and huffman, but is mostly useful
+   with VQ.
+
+*/
+
+typedef struct static_codebook{
+  long   dim;            /* codebook dimensions (elements per vector) */
+  long   entries;        /* codebook entries */
+  long  *lengthlist;     /* codeword lengths in bits */
+
+  /* mapping ***************************************************************/
+  int    maptype;        /* 0=none
+			    1=implicitly populated values from map column 
+			    2=listed arbitrary values */
+
+  /* The below does a linear, single monotonic sequence mapping. */
+  long     q_min;       /* packed 32 bit float; quant value 0 maps to minval */
+  long     q_delta;     /* packed 32 bit float; val 1 - val 0 == delta */
+  int      q_quant;     /* bits: 0 < quant <= 16 */
+  int      q_sequencep; /* bitflag */
+
+  long     *quantlist;  /* map == 1: (int)(entries^(1/dim)) element column map
+			   map == 2: list of dim*entries quantized entry vals
+			*/
+
+  /* encode helpers ********************************************************/
+  struct encode_aux_nearestmatch *nearest_tree;
+  struct encode_aux_threshmatch  *thresh_tree;
+  struct encode_aux_pigeonhole  *pigeon_tree;
+
+  int allocedp;
+} static_codebook;
+
+/* this structures an arbitrary trained book to quickly find the
+   nearest cell match */
+typedef struct encode_aux_nearestmatch{
+  /* pre-calculated partitioning tree */
+  long   *ptr0;
+  long   *ptr1;
+
+  long   *p;         /* decision points (each is an entry) */
+  long   *q;         /* decision points (each is an entry) */
+  long   aux;        /* number of tree entries */
+  long   alloc;       
+} encode_aux_nearestmatch;
+
+/* assumes a maptype of 1; encode side only, so that's OK */
+typedef struct encode_aux_threshmatch{
+  float *quantthresh;
+  long   *quantmap;
+  int     quantvals; 
+  int     threshvals; 
+} encode_aux_threshmatch;
+
+typedef struct encode_aux_pigeonhole{
+  float min;
+  float del;
+
+  int  mapentries;
+  int  quantvals;
+  long *pigeonmap;
+
+  long fittotal;
+  long *fitlist;
+  long *fitmap;
+  long *fitlength;
+} encode_aux_pigeonhole;
+
+typedef struct codebook{
+  long dim;           /* codebook dimensions (elements per vector) */
+  long entries;       /* codebook entries */
+  long used_entries;  /* populated codebook entries */
+  static_codebook *c;
+
+  /* for encode, the below are entry-ordered, fully populated */
+  /* for decode, the below are ordered by bitreversed codeword and only
+     used entries are populated */
+  float        *valuelist;  /* list of dim*entries actual entry values */  
+  ogg_uint32_t *codelist;   /* list of bitstream codewords for each entry */
+
+  int          *dec_index;  /* only used if sparseness collapsed */
+  char         *dec_codelengths;
+  ogg_uint32_t *dec_firsttable;
+  int           dec_firsttablen;
+  int           dec_maxlength;
+
+} codebook;
+
+extern void vorbis_staticbook_clear(static_codebook *b);
+extern void vorbis_staticbook_destroy(static_codebook *b);
+extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source);
+extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
+extern void vorbis_book_clear(codebook *b);
+
+extern float *_book_unquantize(const static_codebook *b,int n,int *map);
+extern float *_book_logdist(const static_codebook *b,float *vals);
+extern float _float32_unpack(long val);
+extern long   _float32_pack(float val);
+extern int  _best(codebook *book, float *a, int step);
+extern int _ilog(unsigned int v);
+extern long _book_maptype1_quantvals(const static_codebook *b);
+
+extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul);
+extern long vorbis_book_codeword(codebook *book,int entry);
+extern long vorbis_book_codelen(codebook *book,int entry);
+
+
+
+extern int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *b);
+extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
+
+extern int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b);
+extern int vorbis_book_errorv(codebook *book, float *a);
+extern int vorbis_book_encodev(codebook *book, int best,float *a, 
+			       oggpack_buffer *b);
+
+extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
+extern long vorbis_book_decodevs_add(codebook *book, float *a, 
+				     oggpack_buffer *b,int n);
+extern long vorbis_book_decodev_set(codebook *book, float *a, 
+				    oggpack_buffer *b,int n);
+extern long vorbis_book_decodev_add(codebook *book, float *a, 
+				    oggpack_buffer *b,int n);
+extern long vorbis_book_decodevv_add(codebook *book, float **a,
+				     long off,int ch, 
+				    oggpack_buffer *b,int n);
+
+
+
+#endif
Index: /libvorbis-1.2.0/vq/lspdata.c
===================================================================
--- /libvorbis-1.2.0/vq/lspdata.c	(revision 16)
+++ /libvorbis-1.2.0/vq/lspdata.c	(revision 16)
@@ -0,0 +1,157 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: metrics and quantization code for LSP VQ codebooks
+ last mod: $Id: lspdata.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <stdio.h>
+#include "vqgen.h"
+#include "vqext.h"
+#include "codebook.h"
+
+char *vqext_booktype="LSPdata";  
+quant_meta q={0,0,0,1};          /* set sequence data */
+int vqext_aux=1;
+
+float global_maxdel=M_PI;
+float global_mindel=M_PI;
+#if 0
+void vqext_quantize(vqgen *v,quant_meta *q){
+  float delta,mindel;
+  float maxquant=((1<<q->quant)-1);
+  int j,k;
+
+  /* first find the basic delta amount from the maximum span to be
+     encoded.  Loosen the delta slightly to allow for additional error
+     during sequence quantization */
+
+  delta=(global_maxdel-global_mindel)/((1<<q->quant)-1.5f);
+  
+  q->min=_float32_pack(global_mindel);
+  q->delta=_float32_pack(delta);
+
+  mindel=_float32_unpack(q->min);
+  delta=_float32_unpack(q->delta);
+
+  for(j=0;j<v->entries;j++){
+    float last=0;
+    for(k=0;k<v->elements;k++){
+      float val=_now(v,j)[k];
+      float now=rint((val-last-mindel)/delta);
+      
+      _now(v,j)[k]=now;
+      if(now<0){
+	/* be paranoid; this should be impossible */
+	fprintf(stderr,"fault; quantized value<0\n");
+	exit(1);
+      }
+
+      if(now>maxquant){
+	/* be paranoid; this should be impossible */
+	fprintf(stderr,"fault; quantized value>max\n");
+	exit(1);
+      }
+      last=(now*delta)+mindel+last;
+    }
+  }
+
+}
+#else
+void vqext_quantize(vqgen *v,quant_meta *q){
+  vqgen_quantize(v,q);
+}
+#endif
+
+float *weight=NULL;
+#if 0
+/* LSP training metric.  We weight error proportional to distance
+   *between* LSP vector values.  The idea of this metric is not to set
+   final cells, but get the midpoint spacing into a form conducive to
+   what we want, which is weighting toward preserving narrower
+   features. */
+
+#define FUDGE (global_maxdel-weight[i])
+
+float *vqext_weight(vqgen *v,float *p){
+  int i;
+  int el=v->elements;
+  float lastp=0.f;
+  for(i=0;i<el;i++){
+    float predist=(p[i]-lastp);
+    float postdist=(p[i+1]-p[i]);
+    weight[i]=(predist<postdist?predist:postdist);
+    lastp=p[i];
+  }
+  return p;
+}
+#else
+#define FUDGE 1.f
+float *vqext_weight(vqgen *v,float *p){
+  return p;
+}
+#endif
+
+                            /* candidate,actual */
+float vqext_metric(vqgen *v,float *e, float *p){
+  int i;
+  int el=v->elements;
+  float acc=0.f;
+  for(i=0;i<el;i++){
+    float val=(p[i]-e[i])*FUDGE;
+    acc+=val*val;
+  }
+  return sqrt(acc/v->elements);
+}
+
+/* Data files are line-vectors, now just deltas.  The codebook entries
+   want to be monotonically increasing, so we adjust */
+
+/* assume vqext_aux==1 */
+void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){
+  float *a=alloca(sizeof(float)*(dim+1)); /* +aux */
+  float base=0;
+  int i;
+
+  for(i=0;i<dim;i++)
+    base=a[i]=b[i+start]+base;
+
+  if(start+dim+1>cols) /* +aux */
+    a[i]=M_PI;
+  else
+    a[i]=b[i+start]+base;
+  
+  vqgen_addpoint(v,a,a+dim);
+}
+
+/* we just need to calc the global_maxdel from the training set */
+void vqext_preprocess(vqgen *v){
+  long j,k;
+
+  global_maxdel=0.f;
+  global_mindel=M_PI;
+  for(j=0;j<v->points;j++){
+    float last=0.;
+    for(k=0;k<v->elements+v->aux;k++){
+      float p=_point(v,j)[k];
+      if(p-last>global_maxdel)global_maxdel=p-last;
+      if(p-last<global_mindel)global_mindel=p-last;
+      last=p;
+    }
+  }
+
+  weight=_ogg_malloc(sizeof(float)*v->elements);
+}
+
Index: /libvorbis-1.2.0/vq/make_floor_books.pl
===================================================================
--- /libvorbis-1.2.0/vq/make_floor_books.pl	(revision 16)
+++ /libvorbis-1.2.0/vq/make_floor_books.pl	(revision 16)
@@ -0,0 +1,108 @@
+#!/usr/bin/perl
+
+# quick, very dirty little script so that we can put all the
+# information for building a floor book set in one spec file.
+
+#eg:
+
+# >floor_44
+# =44c0_s 44c1_s 44c2_s
+# build line_128x4_class0 0-256
+# build line_128x4_0sub0  0-4
+
+die "Could not open $ARGV[0]: $!" unless open (F,$ARGV[0]);
+
+$goflag=0;
+while($line=<F>){
+
+    print "#### $line";
+    if($line=~m/^GO/){
+	$goflag=1;
+	next;
+    }
+
+    if($goflag==0){
+	if($line=~m/\S+/ && !($line=~m/^\#/) ){
+	    my $command=$line;
+	    print ">>> $command";
+	    die "Couldn't shell command.\n\tcommand:$command\n" 
+		if syst($command);
+	}
+	next;
+    }
+
+    # >floor_44
+    # this sets the output bookset file name
+    if($line=~m/^>(\S+)\s+(\S*)/){
+	# set the output name
+	$globalname=$1;
+	
+	$command="rm -f $globalname.vqh";
+	die "Couldn't remove file.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	next;
+    }
+
+    #=path1 path2 path3 
+    #set the search path for input files; each build line will look
+    #for input files in all of the directories in the search path and
+    #append them for huffbuild input
+    if($line=~m/^=(.*)/){
+	# set the output name
+	@paths=split(' ',$1);
+	next;
+    }
+
+    # build book.vqd 0-3 [noguard]
+    if($line=~m/^build (.*)/){
+	# build a huffman book (no mapping) 
+	my($datafile,$range,$guard)=split(' ',$1);
+ 
+	$command="rm -f $datafile.tmp";
+	print "\n\n>>> $command\n";
+	die "Couldn't remove temp file.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	# first find all the inputs we want; they'll need to be collected into a single input file
+	foreach $dir (@paths){
+	    if (-e "$dir/$datafile.vqd"){
+		$command="cat $dir/$datafile.vqd >> $datafile.tmp";
+		print ">>> $command\n";
+		die "Couldn't append training data.\n\tcommand:$command\n" 
+		    if syst($command);
+	    }
+	}
+	
+	my $command="huffbuild $datafile.tmp $range $guard";
+	print ">>> $command\n";
+	die "Couldn't build huffbook.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	$command="cat $datafile.vqh >> $globalname.vqh";
+	print ">>> $command\n";
+	die "Couldn't append to output book.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	$command="rm $datafile.vqh";
+	print ">>> $command\n";
+	die "Couldn't remove temporary output file.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	$command="rm -f $datafile.tmp";
+	print ">>> $command\n";
+	die "Couldn't remove temporary output file.\n\tcommand:$command\n" 
+	    if syst($command);
+	next;
+    }
+
+}
+
+$command="rm -f temp$$.vqd";
+print ">>> $command\n";
+die "Couldn't remove temp files.\n\tcommand:$command\n" 
+    if syst($command);
+
+sub syst{
+    system(@_)/256;
+}
Index: /libvorbis-1.2.0/vq/make_residue_books.pl
===================================================================
--- /libvorbis-1.2.0/vq/make_residue_books.pl	(revision 16)
+++ /libvorbis-1.2.0/vq/make_residue_books.pl	(revision 16)
@@ -0,0 +1,187 @@
+#!/usr/bin/perl
+
+# quick, very dirty little script so that we can put all the
+# information for building a residue book set (except the original
+# partitioning) in one spec file.
+
+#eg:
+
+# >res0_128_128 interleaved
+# haux 44c0_s/resaux_0.vqd res0_96_128aux 0,4,2 9
+# :1 res0_128_128_1.vqd, 4, nonseq cull, 0 +- 1
+# :2 res0_128_128_2.vqd, 4, nonseq, 0 +- 1(.7) 2
+# :3 res0_128_128_3.vqd, 4, nonseq, 0 +- 1(.7) 3 5
+# :4 res0_128_128_4.vqd, 2, nonseq, 0 +- 1(.7) 3 5 8 11
+# :5 res0_128_128_5.vqd, 1, nonseq, 0 +- 1 3 5 8 11 14 17 20 24 28 31 35 39 
+
+
+die "Could not open $ARGV[0]: $!" unless open (F,$ARGV[0]);
+
+$goflag=0;
+while($line=<F>){
+
+    print "#### $line";
+    if($line=~m/^GO/){
+	$goflag=1;
+	next;
+    }
+
+    if($goflag==0){
+	if($line=~m/\S+/ && !($line=~m/^\#/) ){
+	    my $command=$line;
+	    print ">>> $command";
+	    die "Couldn't shell command.\n\tcommand:$command\n" 
+		if syst($command);
+	}
+	next;
+    }
+
+    # >res0_128_128
+    if($line=~m/^>(\S+)\s+(\S*)/){
+	# set the output name
+	$globalname=$1;
+	$interleave=$2;
+	next;
+    }
+
+    # haux 44c0_s/resaux_0.vqd res0_96_128aux 0,4,2 9
+    if($line=~m/^h(.*)/){
+	# build a huffman book (no mapping) 
+	my($name,$datafile,$bookname,$interval,$range)=split(' ',$1);
+ 
+	# check the desired subdir to see if the data file exists
+	if(-e $datafile){
+	    my $command="cp $datafile $bookname.tmp";
+	    print ">>> $command\n";
+	    die "Couldn't access partition data file.\n\tcommand:$command\n" 
+		if syst($command);
+
+	    my $command="huffbuild $bookname.tmp $interval";
+	    print ">>> $command\n";
+	    die "Couldn't build huffbook.\n\tcommand:$command\n" 
+		if syst($command);
+
+	    my $command="rm $bookname.tmp";
+	    print ">>> $command\n";
+	    die "Couldn't remove temporary file.\n\tcommand:$command\n" 
+		if syst($command);
+	}else{
+	    my $command="huffbuild $bookname.tmp 0-$range";
+	    print ">>> $command\n";
+	    die "Couldn't build huffbook.\n\tcommand:$command\n" 
+		if syst($command);
+
+	}
+	next;
+    }
+
+    # :1 res0_128_128_1.vqd, 4, nonseq, 0 +- 1
+    if($line=~m/^:(.*)/){
+	my($namedata,$dim,$seqp,$vals)=split(',',$1);
+	my($name,$datafile)=split(' ',$namedata);
+	# build value list
+	my$plusminus="+";
+	my$list;
+	my$thlist;
+	my$count=0;
+	foreach my$val (split(' ',$vals)){
+	    if($val=~/\-?\+?\d+/){
+		my$th;
+
+		# got an explicit threshhint?
+		if($val=~/([0-9\.]+)\(([^\)]+)/){
+		    $val=$1;
+		    $th=$2;
+		}
+
+		if($plusminus=~/-/){
+		    $list.="-$val ";
+		    if(defined($th)){
+			$thlist.="," if(defined($thlist));
+			$thlist.="-$th";
+		    }
+		    $count++;
+		}
+		if($plusminus=~/\+/){
+		    $list.="$val ";
+		    if(defined($th)){
+			$thlist.="," if(defined($thlist));
+			$thlist.="$th";
+		    }
+		    $count++;
+		}
+	    }else{
+		$plusminus=$val;
+	    }
+	}
+	die "Couldn't open temp file temp$$.vql: $!" unless
+	    open(G,">temp$$.vql");
+	print G "$count $dim 0 ";
+	if($seqp=~/non/){
+	    print G "0\n$list\n";
+	}else{	
+	    print G "1\n$list\n";
+	}
+	close(G);
+
+	my $command="latticebuild temp$$.vql > $globalname$name.vqh";
+	print ">>> $command\n";
+	die "Couldn't build latticebook.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh";
+	print ">>> $command\n";
+	die "Couldn't pre-hint latticebook.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	if(-e $datafile){
+	
+	    if($interleave=~/non/){
+		$restune="res1tune";
+	    }else{
+		$restune="res0tune";
+	    }
+	    
+	    if($seqp=~/cull/){
+		my $command="$restune temp$$.vqh $datafile 1 > $globalname$name.vqh";
+		print ">>> $command\n";
+		die "Couldn't tune latticebook.\n\tcommand:$command\n" 
+		    if syst($command);
+	    }else{
+		my $command="$restune temp$$.vqh $datafile > $globalname$name.vqh";
+		print ">>> $command\n";
+		die "Couldn't tune latticebook.\n\tcommand:$command\n" 
+		    if syst($command);
+	    }
+
+	    my $command="latticehint $globalname$name.vqh $thlist > temp$$.vqh";
+	    print ">>> $command\n";
+	    die "Couldn't post-hint latticebook.\n\tcommand:$command\n" 
+		if syst($command);
+
+	}else{
+	    print "No matching training file; leaving this codebook untrained.\n";
+	}
+
+	my $command="mv temp$$.vqh $globalname$name.vqh";
+	print ">>> $command\n";
+	die "Couldn't rename latticebook.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	my $command="rm temp$$.vql";
+	print ">>> $command\n";
+	die "Couldn't remove temp files.\n\tcommand:$command\n" 
+	    if syst($command);
+
+	next;
+    }
+}
+
+$command="rm -f temp$$.vqd";
+print ">>> $command\n";
+die "Couldn't remove temp files.\n\tcommand:$command\n" 
+    if syst($command);
+
+sub syst{
+    system(@_)/256;
+}
Index: /libvorbis-1.2.0/vq/metrics.c
===================================================================
--- /libvorbis-1.2.0/vq/metrics.c	(revision 16)
+++ /libvorbis-1.2.0/vq/metrics.c	(revision 16)
@@ -0,0 +1,295 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: function calls to collect codebook metrics
+ last mod: $Id: metrics.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <math.h>
+#include "bookutil.h"
+
+/* collect the following metrics:
+
+   mean and mean squared amplitude
+   mean and mean squared error 
+   mean and mean squared error (per sample) by entry
+   worst case fit by entry
+   entry cell size
+   hits by entry
+   total bits
+   total samples
+   (average bits per sample)*/
+   
+
+/* set up metrics */
+
+float meanamplitude_acc=0.f;
+float meanamplitudesq_acc=0.f;
+float meanerror_acc=0.f;
+float meanerrorsq_acc=0.f;
+
+float **histogram=NULL;
+float **histogram_error=NULL;
+float **histogram_errorsq=NULL;
+float **histogram_hi=NULL;
+float **histogram_lo=NULL;
+float bits=0.f;
+float count=0.f;
+
+static float *_now(codebook *c, int i){
+  return c->valuelist+i*c->c->dim;
+}
+
+int books=0;
+
+void process_preprocess(codebook **bs,char *basename){
+  int i;
+  while(bs[books])books++;
+  
+  if(books){
+    histogram=_ogg_calloc(books,sizeof(float *));
+    histogram_error=_ogg_calloc(books,sizeof(float *));
+    histogram_errorsq=_ogg_calloc(books,sizeof(float *));
+    histogram_hi=_ogg_calloc(books,sizeof(float *));
+    histogram_lo=_ogg_calloc(books,sizeof(float *));
+  }else{
+    fprintf(stderr,"Specify at least one codebook\n");
+    exit(1);
+  }
+
+  for(i=0;i<books;i++){
+    codebook *b=bs[i];
+    histogram[i]=_ogg_calloc(b->entries,sizeof(float));
+    histogram_error[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
+    histogram_errorsq[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
+    histogram_hi[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
+    histogram_lo[i]=_ogg_calloc(b->entries*b->dim,sizeof(float));
+  }
+}
+
+static float _dist(int el,float *a, float *b){
+  int i;
+  float acc=0.f;
+  for(i=0;i<el;i++){
+    float val=(a[i]-b[i]);
+    acc+=val*val;
+  }
+  return acc;
+}
+
+void cell_spacing(codebook *c){
+  int j,k;
+  float min=-1.f,max=-1.f,mean=0.f,meansq=0.f;
+  long total=0;
+
+  /* minimum, maximum, mean, ms cell spacing */
+  for(j=0;j<c->c->entries;j++){
+    if(c->c->lengthlist[j]>0){
+      float localmin=-1.;
+      for(k=0;k<c->c->entries;k++){
+	if(c->c->lengthlist[k]>0){
+	  float this=_dist(c->c->dim,_now(c,j),_now(c,k));
+	  if(j!=k &&
+	     (localmin==-1 || this<localmin))
+	    localmin=this;
+	}
+      }
+      
+      if(min==-1 || localmin<min)min=localmin;
+      if(max==-1 || localmin>max)max=localmin;
+      mean+=sqrt(localmin);
+      meansq+=localmin;
+      total++;
+    }
+  }
+  
+  fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min));
+  fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max));
+  fprintf(stderr,"\tmean closest side spacing: %g\n",mean/total);
+  fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/total));
+}
+
+void process_postprocess(codebook **bs,char *basename){
+  int i,k,book;
+  char *buffer=alloca(strlen(basename)+80);
+
+  fprintf(stderr,"Done.  Processed %ld data points:\n\n",
+	  (long)count);
+
+  fprintf(stderr,"Global statistics:******************\n\n");
+
+  fprintf(stderr,"\ttotal samples: %ld\n",(long)count);
+  fprintf(stderr,"\ttotal bits required to code: %ld\n",(long)bits);
+  fprintf(stderr,"\taverage bits per sample: %g\n\n",bits/count);
+
+  fprintf(stderr,"\tmean sample amplitude: %g\n",
+	  meanamplitude_acc/count);
+  fprintf(stderr,"\tmean squared sample amplitude: %g\n\n",
+	  sqrt(meanamplitudesq_acc/count));
+
+  fprintf(stderr,"\tmean code error: %g\n",
+	  meanerror_acc/count);
+  fprintf(stderr,"\tmean squared code error: %g\n\n",
+	  sqrt(meanerrorsq_acc/count));
+
+  for(book=0;book<books;book++){
+    FILE *out;
+    codebook *b=bs[book];
+    int n=b->c->entries;
+    int dim=b->c->dim;
+
+    fprintf(stderr,"Book %d statistics:------------------\n",book);
+
+    cell_spacing(b);
+
+    sprintf(buffer,"%s-%d-mse.m",basename,book);
+    out=fopen(buffer,"w");
+    if(!out){
+      fprintf(stderr,"Could not open file %s for writing\n",buffer);
+      exit(1);
+    }
+    
+    for(i=0;i<n;i++){
+      for(k=0;k<dim;k++){
+	fprintf(out,"%d, %g, %g\n",
+		i*dim+k,(b->valuelist+i*dim)[k],
+		sqrt((histogram_errorsq[book]+i*dim)[k]/histogram[book][i]));
+      }
+    }
+    fclose(out);
+      
+    sprintf(buffer,"%s-%d-me.m",basename,book);
+    out=fopen(buffer,"w");
+    if(!out){
+      fprintf(stderr,"Could not open file %s for writing\n",buffer);
+      exit(1);
+    }
+    
+    for(i=0;i<n;i++){
+      for(k=0;k<dim;k++){
+	fprintf(out,"%d, %g, %g\n",
+		i*dim+k,(b->valuelist+i*dim)[k],
+		(histogram_error[book]+i*dim)[k]/histogram[book][i]);
+      }
+    }
+    fclose(out);
+
+    sprintf(buffer,"%s-%d-worst.m",basename,book);
+    out=fopen(buffer,"w");
+    if(!out){
+      fprintf(stderr,"Could not open file %s for writing\n",buffer);
+      exit(1);
+    }
+    
+    for(i=0;i<n;i++){
+      for(k=0;k<dim;k++){
+	fprintf(out,"%d, %g, %g, %g\n",
+		i*dim+k,(b->valuelist+i*dim)[k],
+		(b->valuelist+i*dim)[k]+(histogram_lo[book]+i*dim)[k],
+		(b->valuelist+i*dim)[k]+(histogram_hi[book]+i*dim)[k]);
+      }
+    }
+    fclose(out);
+  }
+}
+
+float process_one(codebook *b,int book,float *a,int dim,int step,int addmul,
+		   float base){
+  int j,entry;
+  float amplitude=0.f;
+
+  if(book==0){
+    float last=base;
+    for(j=0;j<dim;j++){
+      amplitude=a[j*step]-(b->c->q_sequencep?last:0);
+      meanamplitude_acc+=fabs(amplitude);
+      meanamplitudesq_acc+=amplitude*amplitude;
+      count++;
+      last=a[j*step];
+    }
+  }
+
+  if(b->c->q_sequencep){
+    float temp;
+    for(j=0;j<dim;j++){
+      temp=a[j*step];
+      a[j*step]-=base;
+    }
+    base=temp;
+  }
+
+  entry=vorbis_book_besterror(b,a,step,addmul);
+
+  if(entry==-1){
+    fprintf(stderr,"Internal error: _best returned -1.\n");
+    exit(1);
+  }
+  
+  histogram[book][entry]++;  
+  bits+=vorbis_book_codelen(b,entry);
+	  
+  for(j=0;j<dim;j++){
+    float error=a[j*step];
+
+    if(book==books-1){
+      meanerror_acc+=fabs(error);
+      meanerrorsq_acc+=error*error;
+    }
+    histogram_errorsq[book][entry*dim+j]+=error*error;
+    histogram_error[book][entry*dim+j]+=fabs(error);
+    if(histogram[book][entry]==0 || histogram_hi[book][entry*dim+j]<error)
+      histogram_hi[book][entry*dim+j]=error;
+    if(histogram[book][entry]==0 || histogram_lo[book][entry*dim+j]>error)
+      histogram_lo[book][entry*dim+j]=error;
+  }
+  return base;
+}
+
+
+void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){
+  int bi;
+  int i;
+
+  for(bi=0;bi<books;bi++){
+    codebook *b=bs[bi];
+    int dim=b->dim;
+    float base=0.f;
+
+    if(inter){
+      for(i=0;i<n/dim;i++)
+	base=process_one(b,bi,a+i,dim,n/dim,addmul[bi],base);
+    }else{
+      for(i=0;i<=n-dim;i+=dim)
+	base=process_one(b,bi,a+i,dim,1,addmul[bi],base);
+    }
+  }
+  
+  if((long)(count)%100)spinnit("working.... samples: ",count);
+}
+
+void process_usage(void){
+  fprintf(stderr,
+	  "usage: vqmetrics [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
+	  "                 datafile.vqd [datafile.vqd]...\n\n"
+	  "       data can be taken on stdin.  -i indicates interleaved coding.\n"
+	  "       Output goes to output files:\n"
+	  "       basename-me.m:       gnuplot: mean error by entry value\n"
+	  "       basename-mse.m:      gnuplot: mean square error by entry value\n"
+	  "       basename-worst.m:    gnuplot: worst error by entry value\n"
+	  "       basename-distance.m: gnuplot file showing distance probability\n"
+	  "\n");
+
+}
Index: /libvorbis-1.2.0/vq/residue_entropy
===================================================================
--- /libvorbis-1.2.0/vq/residue_entropy	(revision 16)
+++ /libvorbis-1.2.0/vq/residue_entropy	(revision 16)
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+@quant=(
+	 0,  1,  1,  2,  2,  3,  3,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,
+ 	 6,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9,  9,
+	 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11,
+	11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+	12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
+);
+
+
+use POSIX;
+my($groupn)=@ARGV;
+my%hash;
+my$count=0;
+my$lines=0;
+
+if(!defined($groupn)){
+    print "Usage: residue_entropy <groupsize> \n";
+    exit(1);
+}
+$|=1;
+
+while (<STDIN>) {
+    chop;
+    my@nums = ();
+    @nums = split(/,/);
+    $lines++;
+
+    my$step=$#nums/$groupn;
+    for(my$i=0;$i<$step;$i++){
+	my$key="";
+	for(my$j=$i;$j<$#nums;$j+=$step){
+	    if($nums[$j]<0){
+		$num=-$quant[int(-$nums[$j]*2)];
+	    }else{
+		$num=$quant[int($nums[$j]*2)];
+	    }
+	    $key.=":$num";
+	}
+	
+	if(!defined($hash{$key})){
+	    $count++;
+	    $hash{$key}=1;
+	}
+    }
+	 
+    if(($lines % 1000)==0){
+	print "\rworking... $lines lines, found $count values so far";
+    }
+}
+
+foreach $key (keys %hash){
+    print "\t$key\n";
+}
+
+print "\r$count values total                                       \n";
+print "Done.\n\n";
Index: /libvorbis-1.2.0/vq/residuedata.c
===================================================================
--- /libvorbis-1.2.0/vq/residuedata.c	(revision 16)
+++ /libvorbis-1.2.0/vq/residuedata.c	(revision 16)
@@ -0,0 +1,160 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: metrics and quantization code for residue VQ codebooks
+ last mod: $Id: residuedata.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+#include "vqgen.h"
+#include "bookutil.h"
+#include "../lib/scales.h"
+#include "vqext.h"
+
+float scalequant=3.f;
+char *vqext_booktype="RESdata";  
+quant_meta q={0,0,0,0};          /* set sequence data */
+int vqext_aux=0;
+
+static float *quant_save=NULL;
+
+float *vqext_weight(vqgen *v,float *p){
+  return p;
+}
+
+/* quantize aligned on unit boundaries.  Because our grid is likely
+   very coarse, play 'shuffle the blocks'; don't allow multiple
+   entries to fill the same spot as is nearly certain to happen. */
+
+void vqext_quantize(vqgen *v,quant_meta *q){
+  int j,k;
+  long dim=v->elements;
+  long n=v->entries;
+  float max=-1;
+  float *test=alloca(sizeof(float)*dim);
+  int moved=0;
+
+  
+  /* allow movement only to unoccupied coordinates on the coarse grid */
+  for(j=0;j<n;j++){
+    for(k=0;k<dim;k++){
+      float val=_now(v,j)[k];
+      float norm=rint(fabs(val)/scalequant);
+      if(norm>max)max=norm;
+      test[k]=norm;
+    }
+
+    /* allow move only if unoccupied */
+    if(quant_save){
+      for(k=0;k<n;k++)
+	if(j!=k && memcmp(test,quant_save+dim*k,dim*sizeof(float))==0)
+	  break;
+      if(k==n){
+	if(memcmp(test,quant_save+dim*j,dim*sizeof(float)))	
+	  moved++;
+	memcpy(quant_save+dim*j,test,sizeof(float)*dim);
+      }
+    }else{
+      memcpy(_now(v,j),test,sizeof(float)*dim);
+    }
+  }
+
+  /* unlike the other trainers, we fill in our quantization
+     information (as we know granularity beforehand and don't need to
+     maximize it) */
+
+  q->min=_float32_pack(0.f);
+  q->delta=_float32_pack(scalequant);
+  q->quant=_ilog(max);
+
+  if(quant_save){
+    memcpy(_now(v,0),quant_save,sizeof(float)*dim*n);
+    fprintf(stderr,"cells shifted this iteration: %d\n",moved);
+  }
+}
+
+                            /* candidate,actual */
+float vqext_metric(vqgen *v,float *e, float *p){
+  int i;
+  float acc=0.f;
+  for(i=0;i<v->elements;i++){
+    float val=p[i]-e[i];
+    acc+=val*val;
+  }
+  return sqrt(acc);
+}
+
+/* We don't interleave here; we assume that the interleave is provided
+   for us by residuesplit in vorbis/huff/ */
+void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num){
+  vqgen_addpoint(v,b+start,NULL);
+}
+
+/* need to reseed because of the coarse quantization we tend to use on
+   residuals (which causes lots & lots of dupes) */
+void vqext_preprocess(vqgen *v){
+  long i,j,k,l;
+  float *test=alloca(sizeof(float)*v->elements);
+  scalequant=q.quant;
+
+  vqext_quantize(v,&q);
+  vqgen_unquantize(v,&q);
+
+  /* if there are any dupes, reseed */
+  for(k=0;k<v->entries;k++){
+    for(l=0;l<k;l++){
+      if(memcmp(_now(v,k),_now(v,l),sizeof(float)*v->elements)==0)
+	break;
+    }
+    if(l<k)break;
+  }
+
+  if(k<v->entries){
+    fprintf(stderr,"reseeding with quantization....\n");
+
+    /* seed the inputs to input points, but points on unit boundaries,
+     ignoring quantbits for now, making sure each seed is unique */
+    
+    for(i=0,j=0;i<v->points && j<v->entries;i++){
+      for(k=0;k<v->elements;k++){
+	float val=_point(v,i)[k];
+	test[k]=rint(val/scalequant)*scalequant;
+      }
+      
+      for(l=0;l<j;l++){
+	for(k=0;k<v->elements;k++)
+	  if(test[k]!=_now(v,l)[k])
+	    break;
+	if(k==v->elements)break;
+      }
+      if(l==j){
+	memcpy(_now(v,j),test,v->elements*sizeof(float));
+	j++;
+      }
+    }
+    
+    if(j<v->elements){
+      fprintf(stderr,"Not enough unique entries after prequantization\n");
+      exit(1);
+    }
+  }  
+  vqext_quantize(v,&q);
+  quant_save=_ogg_malloc(sizeof(float)*v->elements*v->entries);
+  memcpy(quant_save,_now(v,0),sizeof(float)*v->elements*v->entries);
+  vqgen_unquantize(v,&q);
+
+}
+
Index: /libvorbis-1.2.0/vq/residuesplit.c
===================================================================
--- /libvorbis-1.2.0/vq/residuesplit.c	(revision 16)
+++ /libvorbis-1.2.0/vq/residuesplit.c	(revision 16)
@@ -0,0 +1,282 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: residue backend 0 partitioner/classifier
+ last mod: $Id: residuesplit.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include "bookutil.h"
+
+/* does not guard against invalid settings; eg, a subn of 16 and a
+   subgroup request of 32.  Max subn of 128 */
+static float _testhack(float *vec,int n){
+  int i,j=0;
+  float max=0.f;
+  float temp[128];
+  float entropy=0.;
+
+  /* setup */
+  for(i=0;i<n;i++)temp[i]=fabs(vec[i]);
+
+  /* handle case subgrp==1 outside */
+  for(i=0;i<n;i++)
+    if(temp[i]>max)max=temp[i];
+
+  for(i=0;i<n;i++)temp[i]=rint(temp[i]);
+
+  for(i=0;i<n;i++)
+    entropy+=temp[i];
+  return entropy;
+
+  /*while(1){
+    entropy[j]=max;
+    n>>=1;
+    j++;
+
+    if(n<=0)break;
+    for(i=0;i<n;i++){
+      temp[i]+=temp[i+n];
+    }
+    max=0.f;
+    for(i=0;i<n;i++)
+      if(temp[i]>max)max=temp[i];
+      }*/
+}
+
+static FILE *of;
+static FILE **or;
+
+/* we evaluate the the entropy measure for each interleaved subgroup */
+/* This is currently a bit specific to/hardwired for mapping 0; things
+   will need to change in the future when we get real multichannel
+   mappings */
+int quantaux(float *res,int n,float *ebound,float *mbound,int *subgrp,int parts, int subn, 
+	     int *class){
+  long i,j,part=0;
+  int aux;
+
+  for(i=0;i<=n-subn;i+=subn,part++){
+    float max=0.f;
+    float lentropy=0.f;
+
+    lentropy=_testhack(res+i,subn);
+
+    for(j=0;j<subn;j++)
+      if(fabs(res[i+j])>max)max=fabs(res[i+j]);
+
+    for(j=0;j<parts-1;j++)
+      if(lentropy<=ebound[j] &&
+	 max<=mbound[j] &&
+	 part<subgrp[j])
+	break;
+    class[part]=aux=j;
+    
+    fprintf(of,"%d, ",aux);
+  }    
+  fprintf(of,"\n");
+
+  return(0);
+}
+
+int quantwrite(float *res,int n,int subn, int *class,int offset){
+  long i,j,part=0;
+  int aux;
+
+  for(i=0;i<=n-subn;i+=subn,part++){
+    aux=class[part];
+    
+    for(j=0;j<subn;j++)
+      fprintf(or[aux+offset],"%g, ",res[j+i]);
+    
+    fprintf(or[aux+offset],"\n");
+  }
+
+  return(0);
+}
+
+static int getline(FILE *in,float *vec,int begin,int n){
+  int i,next=0;
+
+  reset_next_value();
+  if(get_next_value(in,vec))return(0);
+  if(begin){
+    for(i=1;i<begin;i++)
+      get_line_value(in,vec);
+    next=0;
+  }else{
+    next=1;
+  }
+
+  for(i=next;i<n;i++)
+    if(get_line_value(in,vec+i)){
+      fprintf(stderr,"ran out of columns in input data\n");
+      exit(1);
+    }
+  
+  return(1);
+}
+
+static void usage(){
+  fprintf(stderr,
+	  "usage:\n" 
+	  "residuesplit <res> [<res>] <begin,n,group> <baseout> <ent,peak,sub> [<ent,peak,sub>]...\n"
+	  "   where begin,n,group is first scalar, \n"
+	  "                          number of scalars of each in line,\n"
+	  "                          number of scalars in a group\n"
+	  "         ent is the maximum entropy value allowed for membership in a group\n"
+	  "         peak is the maximum amplitude value allowed for membership in a group\n"
+	  "         subn is the maximum subpartiton number allowed in the group\n\n");
+  exit(1);
+}
+
+int main(int argc, char *argv[]){
+  char *buffer;
+  char *base;
+  int i,j,parts,begin,n,subn,*subgrp,*class;
+  FILE **res;
+  int resfiles=0;
+  float *ebound,*mbound,*vec;
+  long c=0;
+  if(argc<5)usage();
+
+  /* count the res file names, open the files */
+  while(!strcmp(argv[resfiles+1]+strlen(argv[resfiles+1])-4,".vqd"))
+    resfiles++;
+  if(resfiles<1)usage();
+
+  res=alloca(sizeof(*res)*resfiles);
+  for(i=0;i<resfiles;i++){
+    res[i]=fopen(argv[i+1],"r");
+    if(!(res+i)){
+      fprintf(stderr,"Could not open file %s\n",argv[1+i]);
+      exit(1);
+    }
+  }
+
+  base=strdup(argv[2+resfiles]);
+  buffer=alloca(strlen(base)+20);
+  {
+    char *pos=strchr(argv[1+resfiles],',');
+    begin=atoi(argv[1+resfiles]);
+    if(!pos)
+      usage();
+    else
+      n=atoi(pos+1);
+    pos=strchr(pos+1,',');
+    if(!pos)
+      usage();
+    else
+      subn=atoi(pos+1);
+    if(n/subn*subn != n){
+      fprintf(stderr,"n must be divisible by group\n");
+      exit(1);
+    }
+  }
+
+  /* how many parts?... */
+  parts=argc-resfiles-2;
+  
+  ebound=_ogg_malloc(sizeof(float)*parts);
+  mbound=_ogg_malloc(sizeof(float)*parts);
+  subgrp=_ogg_malloc(sizeof(int)*parts);
+  
+  for(i=0;i<parts-1;i++){
+    char *pos=strchr(argv[3+i+resfiles],',');
+    subgrp[i]=0;
+    if(*argv[3+i+resfiles]==',')
+      ebound[i]=1e50f;
+    else
+      ebound[i]=atof(argv[3+i+resfiles]);
+
+    if(!pos){
+      mbound[i]=1e50f;
+    }else{
+      if(*(pos+1)==',')
+	mbound[i]=1e50f;
+      else
+	mbound[i]=atof(pos+1);
+      pos=strchr(pos+1,',');
+      
+       if(pos)
+	 subgrp[i]=atoi(pos+1);
+       
+    }
+    if(subgrp[i]<=0)subgrp[i]=99999;
+  }
+
+  ebound[i]=1e50f;
+  mbound[i]=1e50f;
+  subgrp[i]=9999999;
+
+  or=alloca(parts*resfiles*sizeof(FILE*));
+  sprintf(buffer,"%saux.vqd",base);
+  of=fopen(buffer,"w");
+  if(!of){
+    fprintf(stderr,"Could not open file %s for writing\n",buffer);
+    exit(1);
+  }
+
+  for(j=0;j<resfiles;j++){
+    for(i=0;i<parts;i++){
+      sprintf(buffer,"%s_%d%c.vqd",base,i,j+65);
+      or[i+j*parts]=fopen(buffer,"w");
+      if(!or[i+j*parts]){
+	fprintf(stderr,"Could not open file %s for writing\n",buffer);
+	exit(1);
+      }
+    }
+  }
+  
+  vec=_ogg_malloc(sizeof(float)*n);
+  class=_ogg_malloc(sizeof(float)*n);
+  /* get the input line by line and process it */
+  while(1){
+    if(getline(res[0],vec,begin,n)){
+      quantaux(vec,n,ebound,mbound,subgrp,parts,subn,class);
+      quantwrite(vec,n,subn,class,0);
+
+      for(i=1;i<resfiles;i++){
+	if(getline(res[i],vec,begin,n)){
+	  quantwrite(vec,n,subn,class,parts*i);
+	}else{
+	  fprintf(stderr,"Getline loss of sync (%d).\n\n",i);
+	  exit(1);
+	}
+      }
+    }else{
+      if(feof(res[0]))break;
+      fprintf(stderr,"Getline loss of sync (0).\n\n");
+      exit(1);
+    }
+    
+    c++;
+    if(!(c&0xf)){
+      spinnit("kB so far...",(int)(ftell(res[0])/1024));
+    }
+  }
+  for(i=0;i<resfiles;i++)
+    fclose(res[i]);
+  fclose(of);
+  for(i=0;i<parts*resfiles;i++)
+    fclose(or[i]);
+  fprintf(stderr,"\rDone                         \n");
+  return(0);
+}
+
+
+
+
Index: /libvorbis-1.2.0/vq/run.c
===================================================================
--- /libvorbis-1.2.0/vq/run.c	(revision 16)
+++ /libvorbis-1.2.0/vq/run.c	(revision 16)
@@ -0,0 +1,216 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility main for loading and operating on codebooks
+ last mod: $Id: run.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "bookutil.h"
+
+/* command line:
+   utilname [-i] +|* input_book.vqh [+|* input_book.vqh] 
+            input_data.vqd [input_data.vqd]
+
+   produces output data on stdout
+   (may also take input data from stdin)
+
+ */
+
+extern void process_preprocess(codebook **b,char *basename);
+extern void process_postprocess(codebook **b,char *basename);
+extern void process_vector(codebook **b,int *addmul, int inter,float *a,int n);
+extern void process_usage(void);
+
+int main(int argc,char *argv[]){
+  char *basename;
+  codebook **b=_ogg_calloc(1,sizeof(codebook *));
+  int *addmul=_ogg_calloc(1,sizeof(int));
+  int books=0;
+  int input=0;
+  int interleave=0;
+  int j;
+  int start=0;
+  int num=-1;
+  argv++;
+
+  if(*argv==NULL){
+    process_usage();
+    exit(1);
+  }
+
+  /* yes, this is evil.  However, it's very convenient to parse file
+     extentions */
+
+  while(*argv){
+    if(*argv[0]=='-'){
+      /* option */
+      if(argv[0][1]=='s'){
+	/* subvector */
+	if(sscanf(argv[1],"%d,%d",&start,&num)!=2){
+	  num= -1;
+	  if(sscanf(argv[1],"%d",&start)!=1){
+	    fprintf(stderr,"Syntax error using -s\n");
+	    exit(1);
+	  }
+	}
+	argv+=2;
+      }
+      if(argv[0][1]=='i'){
+	/* interleave */
+	interleave=1;
+	argv+=1;
+      }
+    }else{
+      /* input file.  What kind? */
+      char *dot;
+      char *ext=NULL;
+      char *name=strdup(*argv++);
+      dot=strrchr(name,'.');
+      if(dot)
+	ext=dot+1;
+      else
+	ext="";
+
+      /* codebook */
+      if(!strcmp(ext,"vqh")){
+	int multp=0;
+	if(input){
+	  fprintf(stderr,"specify all input data (.vqd) files following\n"
+		  "codebook header (.vqh) files\n");
+	  exit(1);
+	}
+	/* is it additive or multiplicative? */
+	if(name[0]=='*'){
+	  multp=1;
+	  name++;
+	}
+	if(name[0]=='+')name++;
+
+	basename=strrchr(name,'/');
+	if(basename)
+	  basename=strdup(basename)+1;
+	else
+	  basename=strdup(name);
+	dot=strrchr(basename,'.');
+	if(dot)*dot='\0';
+
+	b=_ogg_realloc(b,sizeof(codebook *)*(books+2));
+	b[books]=codebook_load(name);
+	addmul=_ogg_realloc(addmul,sizeof(int)*(books+1));
+	addmul[books++]=multp;
+	b[books]=NULL;
+      }
+
+      /* data file */
+      if(!strcmp(ext,"vqd")){
+	int cols;
+	long lines=0;
+	char *line;
+	float *vec;
+	FILE *in=fopen(name,"r");
+	if(!in){
+	  fprintf(stderr,"Could not open input file %s\n",name);
+	  exit(1);
+	}
+
+	if(!input){
+	  process_preprocess(b,basename);
+	  input++;
+	}
+
+	reset_next_value();
+	line=setup_line(in);
+	/* count cols before we start reading */
+	{
+	  char *temp=line;
+	  while(*temp==' ')temp++;
+	  for(cols=0;*temp;cols++){
+	    while(*temp>32)temp++;
+	    while(*temp==' ')temp++;
+	  }
+	}
+	vec=alloca(cols*sizeof(float));
+	while(line){
+	  lines++;
+	  for(j=0;j<cols;j++)
+	    if(get_line_value(in,vec+j)){
+	      fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+	      exit(1);
+	    }
+	  /* ignores -s for now */
+	  process_vector(b,addmul,interleave,vec,cols);
+
+	  line=setup_line(in);
+	}
+	fclose(in);
+      }
+    }
+  }
+
+  /* take any data from stdin */
+  {
+    struct stat st;
+    if(fstat(STDIN_FILENO,&st)==-1){
+      fprintf(stderr,"Could not stat STDIN\n");
+      exit(1);
+    }
+    if((S_IFIFO|S_IFREG|S_IFSOCK)&st.st_mode){
+      int cols;
+      char *line;
+      long lines=0;
+      float *vec;
+      if(!input){
+	process_preprocess(b,basename);
+	input++;
+      }
+      
+      line=setup_line(stdin);
+      /* count cols before we start reading */
+      {
+	char *temp=line;
+	while(*temp==' ')temp++;
+	for(cols=0;*temp;cols++){
+	  while(*temp>32)temp++;
+	  while(*temp==' ')temp++;
+	}
+      }
+      vec=alloca(cols*sizeof(float));
+      while(line){
+	lines++;
+	for(j=0;j<cols;j++)
+	  if(get_line_value(stdin,vec+j)){
+	    fprintf(stderr,"Too few columns on line %ld in data file\n",lines);
+	    exit(1);
+	  }
+	/* ignores -s for now */
+	process_vector(b,addmul,interleave,vec,cols);
+	
+	line=setup_line(stdin);
+      }
+    }
+  }
+
+  process_postprocess(b,basename);
+
+  return 0;
+}
Index: /libvorbis-1.2.0/vq/train.c
===================================================================
--- /libvorbis-1.2.0/vq/train.c	(revision 16)
+++ /libvorbis-1.2.0/vq/train.c	(revision 16)
@@ -0,0 +1,364 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: utility main for training codebooks
+ last mod: $Id: train.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+#include <signal.h>
+#include "vqgen.h"
+#include "vqext.h"
+#include "bookutil.h"
+
+static char *rline(FILE *in,FILE *out,int pass){
+  while(1){
+    char *line=get_line(in);
+    if(line && line[0]=='#'){
+      if(pass)fprintf(out,"%s\n",line);
+    }else{
+      return(line);
+    }
+  }
+}
+
+/* command line:
+   trainvq  vqfile [options] trainfile [trainfile]
+
+   options: -params     entries,dim,quant
+            -subvector  start[,num]
+	    -error      desired_error
+	    -iterations iterations
+*/
+
+static void usage(void){
+  fprintf(stderr, "\nOggVorbis %s VQ codebook trainer\n\n"
+	  "<foo>vqtrain vqfile [options] [datasetfile] [datasetfile]\n"
+	  "options: -p[arams]     <entries,dim,quant>\n"
+	  "         -s[ubvector]  <start[,num]>\n"
+	  "         -e[rror]      <desired_error>\n"
+	  "         -i[terations] <maxiterations>\n"
+	  "         -d[istance]   quantization mesh spacing for density limitation\n"
+	  "         -b <dummy>    eliminate cell size biasing; use normal LBG\n\n"
+	  "         -c <dummy>    Use centroid (not median) midpoints\n"
+
+	  "examples:\n"
+	  "   train a new codebook to 1%% tolerance on datafile 'foo':\n"
+	  "      xxxvqtrain book -p 256,6,8 -e .01 foo\n"
+	  "      (produces a trained set in book-0.vqi)\n\n"
+	  "   continue training 'book-0.vqi' (produces book-1.vqi):\n"
+	  "      xxxvqtrain book-0.vqi\n\n"
+	  "   add subvector from element 1 to <dimension> from files\n"
+	  "      data*.m to the training in progress, prodicing book-1.vqi:\n"
+	  "      xxxvqtrain book-0.vqi -s 1,1 data*.m\n\n",vqext_booktype);
+}
+
+int exiting=0;
+void setexit(int dummy){
+  fprintf(stderr,"\nexiting... please wait to finish this iteration\n");
+  exiting=1;
+}
+
+int main(int argc,char *argv[]){
+  vqgen v;
+
+  int entries=-1,dim=-1;
+  int start=0,num=-1;
+  float desired=.05f,mindist=0.f;
+  int iter=1000;
+  int biasp=1;
+  int centroid=0;
+
+  FILE *out=NULL;
+  char *line;
+  long i,j,k;
+  int init=0;
+  q.quant=-1;
+
+  argv++;
+  if(!*argv){
+    usage();
+    exit(0);
+  }
+
+  /* get the book name, a preexisting book to continue training */
+  {
+    FILE *in=NULL;
+    char *filename=alloca(strlen(*argv)+30),*ptr;
+
+    strcpy(filename,*argv);
+    in=fopen(filename,"r");
+    ptr=strrchr(filename,'-');
+    if(ptr){
+      int num;
+      ptr++;
+      num=atoi(ptr);
+      sprintf(ptr,"%d.vqi",num+1);
+    }else
+      strcat(filename,"-0.vqi");
+    
+    out=fopen(filename,"w");
+    if(out==NULL){
+      fprintf(stderr,"Unable to open %s for writing\n",filename);
+      exit(1);
+    }
+    
+    if(in){
+      /* we wish to suck in a preexisting book and continue to train it */
+      float a;
+      
+      line=rline(in,out,1);
+      if(strcmp(line,vqext_booktype)){
+	fprintf(stderr,"wrong book type; %s!=%s\n",line,vqext_booktype);
+	exit(1);
+      } 
+      
+      line=rline(in,out,1);
+      if(sscanf(line,"%d %d %d",&entries,&dim,&vqext_aux)!=3){
+	fprintf(stderr,"Syntax error reading book file\n");
+	exit(1);
+      }
+      
+      vqgen_init(&v,dim,vqext_aux,entries,mindist,
+		 vqext_metric,vqext_weight,centroid);
+      init=1;
+      
+      /* quant setup */
+      line=rline(in,out,1);
+      if(sscanf(line,"%ld %ld %d %d",&q.min,&q.delta,
+		&q.quant,&q.sequencep)!=4){
+	fprintf(stderr,"Syntax error reading book file\n");
+	exit(1);
+      }
+      
+      /* quantized entries */
+      i=0;
+      for(j=0;j<entries;j++){
+	for(k=0;k<dim;k++){
+	  line=rline(in,out,0);
+	  sscanf(line,"%f",&a);
+	  v.entrylist[i++]=a;
+	}
+      }      
+      vqgen_unquantize(&v,&q);
+
+      /* bias */
+      i=0;
+      for(j=0;j<entries;j++){
+	line=rline(in,out,0);
+	sscanf(line,"%f",&a);
+	v.bias[i++]=a;
+      }
+      
+      v.seeded=1;
+      {
+	float *b=alloca((dim+vqext_aux)*sizeof(float));
+	i=0;
+	while(1){
+	  for(k=0;k<dim+vqext_aux;k++){
+	    line=rline(in,out,0);
+	    if(!line)break;
+	    sscanf(line,"%f",b+k);
+	  }
+	  if(feof(in))break;
+	  vqgen_addpoint(&v,b,b+dim);
+	}
+      }
+      
+      fclose(in);
+    }
+  }
+  
+  /* get the rest... */
+  argv=argv++;
+  while(*argv){
+    if(argv[0][0]=='-'){
+      /* it's an option */
+      if(!argv[1]){
+	fprintf(stderr,"Option %s missing argument.\n",argv[0]);
+	exit(1);
+      }
+      switch(argv[0][1]){
+      case 'p':
+	if(sscanf(argv[1],"%d,%d,%d",&entries,&dim,&q.quant)!=3)
+	  goto syner;
+	break;
+      case 's':
+	if(sscanf(argv[1],"%d,%d",&start,&num)!=2){
+	  num= -1;
+	  if(sscanf(argv[1],"%d",&start)!=1)
+	    goto syner;
+	}
+	break;
+      case 'e':
+	if(sscanf(argv[1],"%f",&desired)!=1)
+	  goto syner;
+	break;
+      case 'd':
+	if(sscanf(argv[1],"%f",&mindist)!=1)
+	  goto syner;
+	if(init)v.mindist=mindist;
+	break;
+      case 'i':
+	if(sscanf(argv[1],"%d",&iter)!=1)
+	  goto syner;
+	break;
+      case 'b':
+	biasp=0;
+	break;
+      case 'c':
+	centroid=1;
+	break;
+      default:
+	fprintf(stderr,"Unknown option %s\n",argv[0]);
+	exit(1);
+      }
+      argv+=2;
+    }else{
+      /* it's an input file */
+      char *file=strdup(*argv++);
+      FILE *in;
+      int cols=-1;
+
+      if(!init){
+	if(dim==-1 || entries==-1 || q.quant==-1){
+	  fprintf(stderr,"-p required when training a new set\n");
+	  exit(1);
+	}
+	vqgen_init(&v,dim,vqext_aux,entries,mindist,
+		   vqext_metric,vqext_weight,centroid);
+	init=1;
+      }
+
+      in=fopen(file,"r");
+      if(in==NULL){
+	fprintf(stderr,"Could not open input file %s\n",file);
+	exit(1);
+      }
+      fprintf(out,"# training file entry: %s\n",file);
+
+      while((line=rline(in,out,0))){
+	if(cols==-1){
+	  char *temp=line;
+	  while(*temp==' ')temp++;
+	  for(cols=0;*temp;cols++){
+	    while(*temp>32)temp++;
+	    while(*temp==' ')temp++;
+	  }
+
+	  fprintf(stderr,"%d colums per line in file %s\n",cols,file);
+
+	}
+	{
+	  int i;
+	  float b[cols];
+	  if(start+num*dim>cols){
+	    fprintf(stderr,"ran out of columns reading %s\n",file);
+	    exit(1);
+	  }
+	  while(*line==' ')line++;
+	  for(i=0;i<cols;i++){
+
+	    /* static length buffer bug workaround */
+	    char *temp=line;
+	    char old;
+	    while(*temp>32)temp++;
+
+	    old=temp[0];
+	    temp[0]='\0';
+	    b[i]=atof(line);
+	    temp[0]=old;
+	    
+	    while(*line>32)line++;
+	    while(*line==' ')line++;
+	  }
+	  if(num<=0)num=(cols-start)/dim;
+	  for(i=0;i<num;i++)
+	    vqext_addpoint_adj(&v,b,start+i*dim,dim,cols,num);
+
+	}
+      }
+      fclose(in);
+    }
+  }
+
+  if(!init){
+    fprintf(stderr,"No input files!\n");
+    exit(1);
+  }
+
+  vqext_preprocess(&v);
+
+  /* train the book */
+  signal(SIGTERM,setexit);
+  signal(SIGINT,setexit);
+
+  for(i=0;i<iter && !exiting;i++){
+    float result;
+    if(i!=0){
+      vqgen_unquantize(&v,&q);
+      vqgen_cellmetric(&v);
+    }
+    result=vqgen_iterate(&v,biasp);
+    vqext_quantize(&v,&q);
+    if(result<desired)break;
+  }
+
+  /* save the book */
+
+  fprintf(out,"# OggVorbis VQ codebook trainer, intermediate file\n");
+  fprintf(out,"%s\n",vqext_booktype);
+  fprintf(out,"%d %d %d\n",entries,dim,vqext_aux);
+  fprintf(out,"%ld %ld %d %d\n",
+	  q.min,q.delta,q.quant,q.sequencep);
+
+  /* quantized entries */
+  fprintf(out,"# quantized entries---\n");
+  i=0;
+  for(j=0;j<entries;j++)
+    for(k=0;k<dim;k++)
+      fprintf(out,"%d\n",(int)(rint(v.entrylist[i++])));
+  
+  fprintf(out,"# biases---\n");
+  i=0;
+  for(j=0;j<entries;j++)
+    fprintf(out,"%f\n",v.bias[i++]);
+
+  /* we may have done the density limiting mesh trick; refetch the
+     training points from the temp file */
+
+  rewind(v.asciipoints);
+  fprintf(out,"# points---\n");
+  {
+    /* sloppy, no error handling */
+    long bytes;
+    char buff[4096];
+    while((bytes=fread(buff,1,4096,v.asciipoints)))
+      while(bytes)bytes-=fwrite(buff,1,bytes,out);
+  }
+
+  fclose(out);
+  fclose(v.asciipoints);
+
+  vqgen_unquantize(&v,&q);
+  vqgen_cellmetric(&v);
+  exit(0);
+
+  syner:
+    fprintf(stderr,"Syntax error in argument '%s'\n",*argv);
+    exit(1);
+}
Index: /libvorbis-1.2.0/vq/vqext.h
===================================================================
--- /libvorbis-1.2.0/vq/vqext.h	(revision 16)
+++ /libvorbis-1.2.0/vq/vqext.h	(revision 16)
@@ -0,0 +1,34 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: prototypes for extermal metrics specific to data type
+ last mod: $Id: vqext.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _V_VQEXT_
+#define _V_VQEXT_
+
+#include "vqgen.h"
+
+extern char *vqext_booktype;
+extern quant_meta q;
+extern int vqext_aux;
+
+extern float vqext_metric(vqgen *v,float *e, float *p);
+extern float *vqext_weight(vqgen *v,float *p);
+extern void vqext_addpoint_adj(vqgen *v,float *b,int start,int dim,int cols,int num);
+extern void vqext_preprocess(vqgen *v);
+extern void vqext_quantize(vqgen *v,quant_meta *);
+
+
+#endif
Index: /libvorbis-1.2.0/vq/vqgen.c
===================================================================
--- /libvorbis-1.2.0/vq/vqgen.c	(revision 16)
+++ /libvorbis-1.2.0/vq/vqgen.c	(revision 16)
@@ -0,0 +1,567 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: train a VQ codebook 
+ last mod: $Id: vqgen.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* This code is *not* part of libvorbis.  It is used to generate
+   trained codebooks offline and then spit the results into a
+   pregenerated codebook that is compiled into libvorbis.  It is an
+   expensive (but good) algorithm.  Run it on big iron. */
+
+/* There are so many optimizations to explore in *both* stages that
+   considering the undertaking is almost withering.  For now, we brute
+   force it all */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+#include "vqgen.h"
+#include "bookutil.h"
+
+/* Codebook generation happens in two steps: 
+
+   1) Train the codebook with data collected from the encoder: We use
+   one of a few error metrics (which represent the distance between a
+   given data point and a candidate point in the training set) to
+   divide the training set up into cells representing roughly equal
+   probability of occurring. 
+
+   2) Generate the codebook and auxiliary data from the trained data set
+*/
+
+/* Codebook training ****************************************************
+ *
+ * The basic idea here is that a VQ codebook is like an m-dimensional
+ * foam with n bubbles.  The bubbles compete for space/volume and are
+ * 'pressurized' [biased] according to some metric.  The basic alg
+ * iterates through allowing the bubbles to compete for space until
+ * they converge (if the damping is dome properly) on a steady-state
+ * solution. Individual input points, collected from libvorbis, are
+ * used to train the algorithm monte-carlo style.  */
+
+/* internal helpers *****************************************************/
+#define vN(data,i) (data+v->elements*i)
+
+/* default metric; squared 'distance' from desired value. */
+float _dist(vqgen *v,float *a, float *b){
+  int i;
+  int el=v->elements;
+  float acc=0.f;
+  for(i=0;i<el;i++){
+    float val=(a[i]-b[i]);
+    acc+=val*val;
+  }
+  return sqrt(acc);
+}
+
+float *_weight_null(vqgen *v,float *a){
+  return a;
+}
+
+/* *must* be beefed up. */
+void _vqgen_seed(vqgen *v){
+  long i;
+  for(i=0;i<v->entries;i++)
+    memcpy(_now(v,i),_point(v,i),sizeof(float)*v->elements);
+  v->seeded=1;
+}
+
+int directdsort(const void *a, const void *b){
+  float av=*((float *)a);
+  float bv=*((float *)b);
+  return (av<bv)-(av>bv);
+}
+
+void vqgen_cellmetric(vqgen *v){
+  int j,k;
+  float min=-1.f,max=-1.f,mean=0.f,acc=0.f;
+  long dup=0,unused=0;
+ #ifdef NOISY
+  int i;
+   char buff[80];
+   float spacings[v->entries];
+   int count=0;
+   FILE *cells;
+   sprintf(buff,"cellspace%d.m",v->it);
+   cells=fopen(buff,"w");
+#endif
+
+  /* minimum, maximum, cell spacing */
+  for(j=0;j<v->entries;j++){
+    float localmin=-1.;
+
+    for(k=0;k<v->entries;k++){
+      if(j!=k){
+	float this=_dist(v,_now(v,j),_now(v,k));
+	if(this>0){
+	  if(v->assigned[k] && (localmin==-1 || this<localmin))
+	    localmin=this;
+	}else{	
+	  if(k<j){
+	    dup++;
+	    break;
+	  }
+	}
+      }
+    }
+    if(k<v->entries)continue;
+
+    if(v->assigned[j]==0){
+      unused++;
+      continue;
+    }
+    
+    localmin=v->max[j]+localmin/2; /* this gives us rough diameter */
+    if(min==-1 || localmin<min)min=localmin;
+    if(max==-1 || localmin>max)max=localmin;
+    mean+=localmin;
+    acc++;
+#ifdef NOISY
+    spacings[count++]=localmin;
+#endif
+  }
+
+  fprintf(stderr,"cell diameter: %.03g::%.03g::%.03g (%ld unused/%ld dup)\n",
+	  min,mean/acc,max,unused,dup);
+
+#ifdef NOISY
+  qsort(spacings,count,sizeof(float),directdsort);
+  for(i=0;i<count;i++)
+    fprintf(cells,"%g\n",spacings[i]);
+  fclose(cells);
+#endif	    
+
+}
+
+/* External calls *******************************************************/
+
+/* We have two forms of quantization; in the first, each vector
+   element in the codebook entry is orthogonal.  Residues would use this
+   quantization for example.
+
+   In the second, we have a sequence of monotonically increasing
+   values that we wish to quantize as deltas (to save space).  We
+   still need to quantize so that absolute values are accurate. For
+   example, LSP quantizes all absolute values, but the book encodes
+   distance between values because each successive value is larger
+   than the preceeding value.  Thus the desired quantibits apply to
+   the encoded (delta) values, not abs positions. This requires minor
+   additional encode-side trickery. */
+
+void vqgen_quantize(vqgen *v,quant_meta *q){
+
+  float maxdel;
+  float mindel;
+
+  float delta;
+  float maxquant=((1<<q->quant)-1);
+
+  int j,k;
+
+  mindel=maxdel=_now(v,0)[0];
+  
+  for(j=0;j<v->entries;j++){
+    float last=0.f;
+    for(k=0;k<v->elements;k++){
+      if(mindel>_now(v,j)[k]-last)mindel=_now(v,j)[k]-last;
+      if(maxdel<_now(v,j)[k]-last)maxdel=_now(v,j)[k]-last;
+      if(q->sequencep)last=_now(v,j)[k];
+    }
+  }
+
+
+  /* first find the basic delta amount from the maximum span to be
+     encoded.  Loosen the delta slightly to allow for additional error
+     during sequence quantization */
+
+  delta=(maxdel-mindel)/((1<<q->quant)-1.5f);
+
+  q->min=_float32_pack(mindel);
+  q->delta=_float32_pack(delta);
+
+  mindel=_float32_unpack(q->min);
+  delta=_float32_unpack(q->delta);
+
+  for(j=0;j<v->entries;j++){
+    float last=0;
+    for(k=0;k<v->elements;k++){
+      float val=_now(v,j)[k];
+      float now=rint((val-last-mindel)/delta);
+      
+      _now(v,j)[k]=now;
+      if(now<0){
+	/* be paranoid; this should be impossible */
+	fprintf(stderr,"fault; quantized value<0\n");
+	exit(1);
+      }
+
+      if(now>maxquant){
+	/* be paranoid; this should be impossible */
+	fprintf(stderr,"fault; quantized value>max\n");
+	exit(1);
+      }
+      if(q->sequencep)last=(now*delta)+mindel+last;
+    }
+  }
+}
+
+/* much easier :-).  Unlike in the codebook, we don't un-log log
+   scales; we just make sure they're properly offset. */
+void vqgen_unquantize(vqgen *v,quant_meta *q){
+  long j,k;
+  float mindel=_float32_unpack(q->min);
+  float delta=_float32_unpack(q->delta);
+
+  for(j=0;j<v->entries;j++){
+    float last=0.f;
+    for(k=0;k<v->elements;k++){
+      float now=_now(v,j)[k];
+      now=fabs(now)*delta+last+mindel;
+      if(q->sequencep)last=now;
+      _now(v,j)[k]=now;
+    }
+  }
+}
+
+void vqgen_init(vqgen *v,int elements,int aux,int entries,float mindist,
+		float  (*metric)(vqgen *,float *, float *),
+		float *(*weight)(vqgen *,float *),int centroid){
+  memset(v,0,sizeof(vqgen));
+
+  v->centroid=centroid;
+  v->elements=elements;
+  v->aux=aux;
+  v->mindist=mindist;
+  v->allocated=32768;
+  v->pointlist=_ogg_malloc(v->allocated*(v->elements+v->aux)*sizeof(float));
+
+  v->entries=entries;
+  v->entrylist=_ogg_malloc(v->entries*v->elements*sizeof(float));
+  v->assigned=_ogg_malloc(v->entries*sizeof(long));
+  v->bias=_ogg_calloc(v->entries,sizeof(float));
+  v->max=_ogg_calloc(v->entries,sizeof(float));
+  if(metric)
+    v->metric_func=metric;
+  else
+    v->metric_func=_dist;
+  if(weight)
+    v->weight_func=weight;
+  else
+    v->weight_func=_weight_null;
+
+  v->asciipoints=tmpfile();
+
+}
+
+void vqgen_addpoint(vqgen *v, float *p,float *a){
+  int k;
+  for(k=0;k<v->elements;k++)
+    fprintf(v->asciipoints,"%.12g\n",p[k]);
+  for(k=0;k<v->aux;k++)
+    fprintf(v->asciipoints,"%.12g\n",a[k]);
+
+  if(v->points>=v->allocated){
+    v->allocated*=2;
+    v->pointlist=_ogg_realloc(v->pointlist,v->allocated*(v->elements+v->aux)*
+			 sizeof(float));
+  }
+
+  memcpy(_point(v,v->points),p,sizeof(float)*v->elements);
+  if(v->aux)memcpy(_point(v,v->points)+v->elements,a,sizeof(float)*v->aux);
+ 
+  /* quantize to the density mesh if it's selected */
+  if(v->mindist>0.f){
+    /* quantize to the mesh */
+    for(k=0;k<v->elements+v->aux;k++)
+      _point(v,v->points)[k]=
+	rint(_point(v,v->points)[k]/v->mindist)*v->mindist;
+  }
+  v->points++;
+  if(!(v->points&0xff))spinnit("loading... ",v->points);
+}
+
+/* yes, not threadsafe.  These utils aren't */
+static int sortit=0;
+static int sortsize=0;
+static int meshcomp(const void *a,const void *b){
+  if(((sortit++)&0xfff)==0)spinnit("sorting mesh...",sortit);
+  return(memcmp(a,b,sortsize));
+}
+
+void vqgen_sortmesh(vqgen *v){
+  sortit=0;
+  if(v->mindist>0.f){
+    long i,march=1;
+
+    /* sort to make uniqueness detection trivial */
+    sortsize=(v->elements+v->aux)*sizeof(float);
+    qsort(v->pointlist,v->points,sortsize,meshcomp);
+
+    /* now march through and eliminate dupes */
+    for(i=1;i<v->points;i++){
+      if(memcmp(_point(v,i),_point(v,i-1),sortsize)){
+	/* a new, unique entry.  march it down */
+	if(i>march)memcpy(_point(v,march),_point(v,i),sortsize);
+	march++;
+      }
+      spinnit("eliminating density... ",v->points-i);
+    }
+
+    /* we're done */
+    fprintf(stderr,"\r%ld training points remining out of %ld"
+	    " after density mesh (%ld%%)\n",march,v->points,march*100/v->points);
+    v->points=march;
+
+  }
+  v->sorted=1;
+}
+
+float vqgen_iterate(vqgen *v,int biasp){
+  long   i,j,k;
+
+  float fdesired;
+  long  desired;
+  long  desired2;
+
+  float asserror=0.f;
+  float meterror=0.f;
+  float *new;
+  float *new2;
+  long   *nearcount;
+  float *nearbias;
+ #ifdef NOISY
+   char buff[80];
+   FILE *assig;
+   FILE *bias;
+   FILE *cells;
+   sprintf(buff,"cells%d.m",v->it);
+   cells=fopen(buff,"w");
+   sprintf(buff,"assig%d.m",v->it);
+   assig=fopen(buff,"w");
+   sprintf(buff,"bias%d.m",v->it);
+   bias=fopen(buff,"w");
+ #endif
+ 
+
+  if(v->entries<2){
+    fprintf(stderr,"generation requires at least two entries\n");
+    exit(1);
+  }
+
+  if(!v->sorted)vqgen_sortmesh(v);
+  if(!v->seeded)_vqgen_seed(v);
+
+  fdesired=(float)v->points/v->entries;
+  desired=fdesired;
+  desired2=desired*2;
+  new=_ogg_malloc(sizeof(float)*v->entries*v->elements);
+  new2=_ogg_malloc(sizeof(float)*v->entries*v->elements);
+  nearcount=_ogg_malloc(v->entries*sizeof(long));
+  nearbias=_ogg_malloc(v->entries*desired2*sizeof(float));
+
+  /* fill in nearest points for entry biasing */
+  /*memset(v->bias,0,sizeof(float)*v->entries);*/
+  memset(nearcount,0,sizeof(long)*v->entries);
+  memset(v->assigned,0,sizeof(long)*v->entries);
+  if(biasp){
+    for(i=0;i<v->points;i++){
+      float *ppt=v->weight_func(v,_point(v,i));
+      float firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0];
+      float secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1];
+      long   firstentry=0;
+      long   secondentry=1;
+      
+      if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i);
+      
+      if(firstmetric>secondmetric){
+	float temp=firstmetric;
+	firstmetric=secondmetric;
+	secondmetric=temp;
+	firstentry=1;
+	secondentry=0;
+      }
+      
+      for(j=2;j<v->entries;j++){
+	float thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j];
+	if(thismetric<secondmetric){
+	  if(thismetric<firstmetric){
+	    secondmetric=firstmetric;
+	    secondentry=firstentry;
+	    firstmetric=thismetric;
+	    firstentry=j;
+	  }else{
+	    secondmetric=thismetric;
+	    secondentry=j;
+	  }
+	}
+      }
+      
+      j=firstentry;
+      for(j=0;j<v->entries;j++){
+	
+	float thismetric,localmetric;
+	float *nearbiasptr=nearbias+desired2*j;
+	long k=nearcount[j];
+	
+	localmetric=v->metric_func(v,_now(v,j),ppt);
+	/* 'thismetric' is to be the bias value necessary in the current
+	   arrangement for entry j to capture point i */
+	if(firstentry==j){
+	  /* use the secondary entry as the threshhold */
+	  thismetric=secondmetric-localmetric;
+	}else{
+	  /* use the primary entry as the threshhold */
+	  thismetric=firstmetric-localmetric;
+	}
+	
+	/* support the idea of 'minimum distance'... if we want the
+	   cells in a codebook to be roughly some minimum size (as with
+	   the low resolution residue books) */
+	
+	/* a cute two-stage delayed sorting hack */
+	if(k<desired){
+	  nearbiasptr[k]=thismetric;
+	  k++;
+	  if(k==desired){
+	    spinnit("biasing... ",v->points+v->points+v->entries-i);
+	    qsort(nearbiasptr,desired,sizeof(float),directdsort);
+	  }
+	  
+	}else if(thismetric>nearbiasptr[desired-1]){
+	  nearbiasptr[k]=thismetric;
+	  k++;
+	  if(k==desired2){
+	    spinnit("biasing... ",v->points+v->points+v->entries-i);
+	    qsort(nearbiasptr,desired2,sizeof(float),directdsort);
+	    k=desired;
+	  }
+	}
+	nearcount[j]=k;
+      }
+    }
+    
+    /* inflate/deflate */
+    
+    for(i=0;i<v->entries;i++){
+      float *nearbiasptr=nearbias+desired2*i;
+      
+      spinnit("biasing... ",v->points+v->entries-i);
+      
+      /* due to the delayed sorting, we likely need to finish it off....*/
+      if(nearcount[i]>desired)
+	qsort(nearbiasptr,nearcount[i],sizeof(float),directdsort);
+
+      v->bias[i]=nearbiasptr[desired-1];
+
+    }
+  }else{ 
+    memset(v->bias,0,v->entries*sizeof(float));
+  }
+
+  /* Now assign with new bias and find new midpoints */
+  for(i=0;i<v->points;i++){
+    float *ppt=v->weight_func(v,_point(v,i));
+    float firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0];
+    long   firstentry=0;
+
+    if(!(i&0xff))spinnit("centering... ",v->points-i);
+
+    for(j=0;j<v->entries;j++){
+      float thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j];
+      if(thismetric<firstmetric){
+	firstmetric=thismetric;
+	firstentry=j;
+      }
+    }
+
+    j=firstentry;
+      
+#ifdef NOISY
+    fprintf(cells,"%g %g\n%g %g\n\n",
+          _now(v,j)[0],_now(v,j)[1],
+          ppt[0],ppt[1]);
+#endif
+
+    firstmetric-=v->bias[j];
+    meterror+=firstmetric;
+
+    if(v->centroid==0){
+      /* set up midpoints for next iter */
+      if(v->assigned[j]++){
+	for(k=0;k<v->elements;k++)
+	  vN(new,j)[k]+=ppt[k];
+	if(firstmetric>v->max[j])v->max[j]=firstmetric;
+      }else{
+	for(k=0;k<v->elements;k++)
+	  vN(new,j)[k]=ppt[k];
+	v->max[j]=firstmetric;
+      }
+    }else{
+      /* centroid */
+      if(v->assigned[j]++){
+	for(k=0;k<v->elements;k++){
+	  if(vN(new,j)[k]>ppt[k])vN(new,j)[k]=ppt[k];
+	  if(vN(new2,j)[k]<ppt[k])vN(new2,j)[k]=ppt[k];
+	}
+	if(firstmetric>v->max[firstentry])v->max[j]=firstmetric;
+      }else{
+	for(k=0;k<v->elements;k++){
+	  vN(new,j)[k]=ppt[k];
+	  vN(new2,j)[k]=ppt[k];
+	}
+	v->max[firstentry]=firstmetric;
+      }
+    }
+  }
+
+  /* assign midpoints */
+
+  for(j=0;j<v->entries;j++){
+#ifdef NOISY
+    fprintf(assig,"%ld\n",v->assigned[j]);
+    fprintf(bias,"%g\n",v->bias[j]);
+#endif
+    asserror+=fabs(v->assigned[j]-fdesired);
+    if(v->assigned[j]){
+      if(v->centroid==0){
+	for(k=0;k<v->elements;k++)
+	  _now(v,j)[k]=vN(new,j)[k]/v->assigned[j];
+      }else{
+	for(k=0;k<v->elements;k++)
+	  _now(v,j)[k]=(vN(new,j)[k]+vN(new2,j)[k])/2.f;
+      }
+    }
+  }
+
+  asserror/=(v->entries*fdesired);
+
+  fprintf(stderr,"Pass #%d... ",v->it);
+  fprintf(stderr,": dist %g(%g) metric error=%g \n",
+	  asserror,fdesired,meterror/v->points);
+  v->it++;
+  
+  free(new);
+  free(nearcount);
+  free(nearbias);
+#ifdef NOISY
+  fclose(assig);
+  fclose(bias);
+  fclose(cells);
+#endif
+  return(asserror);
+}
+
Index: /libvorbis-1.2.0/vq/vqgen.h
===================================================================
--- /libvorbis-1.2.0/vq/vqgen.h	(revision 16)
+++ /libvorbis-1.2.0/vq/vqgen.h	(revision 16)
@@ -0,0 +1,85 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: build a VQ codebook 
+ last mod: $Id: vqgen.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _VQGEN_H_
+#define _VQGEN_H_
+
+typedef struct vqgen{
+  int seeded;
+  int sorted;
+
+  int it;
+  int elements;
+
+  int aux;
+  float mindist;
+  int centroid;
+
+  /* point cache */
+  float *pointlist; 
+  long   points;
+  long   allocated;
+
+  /* entries */
+  float *entrylist;
+  long   *assigned;
+  float *bias;
+  long   entries;
+  float *max;
+  
+  float  (*metric_func) (struct vqgen *v,float *entry,float *point);
+  float *(*weight_func) (struct vqgen *v,float *point);
+
+  FILE *asciipoints;
+} vqgen;
+
+typedef struct {
+  long   min;       /* packed 24 bit float */       
+  long   delta;     /* packed 24 bit float */       
+  int    quant;     /* 0 < quant <= 16 */
+  int    sequencep; /* bitflag */
+} quant_meta;
+
+static inline float *_point(vqgen *v,long ptr){
+  return v->pointlist+((v->elements+v->aux)*ptr);
+}
+
+static inline float *_aux(vqgen *v,long ptr){
+  return _point(v,ptr)+v->aux;
+}
+
+static inline float *_now(vqgen *v,long ptr){
+  return v->entrylist+(v->elements*ptr);
+}
+
+extern void vqgen_init(vqgen *v,
+		       int elements,int aux,int entries,float mindist,
+		       float  (*metric)(vqgen *,float *, float *),
+		       float *(*weight)(vqgen *,float *),int centroid);
+extern void vqgen_addpoint(vqgen *v, float *p,float *aux);
+
+extern float vqgen_iterate(vqgen *v,int biasp);
+extern void vqgen_unquantize(vqgen *v,quant_meta *q);
+extern void vqgen_quantize(vqgen *v,quant_meta *q);
+extern void vqgen_cellmetric(vqgen *v);
+
+#endif
+
+
+
+
+
Index: /libvorbis-1.2.0/vq/vqsplit.c
===================================================================
--- /libvorbis-1.2.0/vq/vqsplit.c	(revision 16)
+++ /libvorbis-1.2.0/vq/vqsplit.c	(revision 16)
@@ -0,0 +1,612 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: build a VQ codebook and the encoding decision 'tree'
+ last mod: $Id: vqsplit.c 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+/* This code is *not* part of libvorbis.  It is used to generate
+   trained codebooks offline and then spit the results into a
+   pregenerated codebook that is compiled into libvorbis.  It is an
+   expensive (but good) algorithm.  Run it on big iron. */
+
+/* There are so many optimizations to explore in *both* stages that
+   considering the undertaking is almost withering.  For now, we brute
+   force it all */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <sys/time.h>
+
+#include "vqgen.h"
+#include "vqsplit.h"
+#include "bookutil.h"
+
+/* Codebook generation happens in two steps: 
+
+   1) Train the codebook with data collected from the encoder: We use
+   one of a few error metrics (which represent the distance between a
+   given data point and a candidate point in the training set) to
+   divide the training set up into cells representing roughly equal
+   probability of occurring. 
+
+   2) Generate the codebook and auxiliary data from the trained data set
+*/
+
+/* Building a codebook from trained set **********************************
+
+   The codebook in raw form is technically finished once it's trained.
+   However, we want to finalize the representative codebook values for
+   each entry and generate auxiliary information to optimize encoding.
+   We generate the auxiliary coding tree using collected data,
+   probably the same data as in the original training */
+
+/* At each recursion, the data set is split in half.  Cells with data
+   points on side A go into set A, same with set B.  The sets may
+   overlap.  If the cell overlaps the deviding line only very slightly
+   (provided parameter), we may choose to ignore the overlap in order
+   to pare the tree down */
+
+long *isortvals;
+int iascsort(const void *a,const void *b){
+  long av=isortvals[*((long *)a)];
+  long bv=isortvals[*((long *)b)];
+  return(av-bv);
+}
+
+static float _Ndist(int el,float *a, float *b){
+  int i;
+  float acc=0.f;
+  for(i=0;i<el;i++){
+    float val=(a[i]-b[i]);
+    acc+=val*val;
+  }
+  return sqrt(acc);
+}
+
+#define _Npoint(i) (pointlist+dim*(i))
+#define _Nnow(i) (entrylist+dim*(i))
+
+
+/* goes through the split, but just counts it and returns a metric*/
+int vqsp_count(float *entrylist,float *pointlist,int dim,
+	       long *membership,long *reventry,
+	       long *entryindex,long entries, 
+	       long *pointindex,long points,int splitp,
+	       long *entryA,long *entryB,
+	       long besti,long bestj,
+	       long *entriesA,long *entriesB,long *entriesC){
+  long i,j;
+  long A=0,B=0,C=0;
+  long pointsA=0;
+  long pointsB=0;
+  long *temppointsA=NULL;
+  long *temppointsB=NULL;
+  
+  if(splitp){
+    temppointsA=_ogg_malloc(points*sizeof(long));
+    temppointsB=_ogg_malloc(points*sizeof(long));
+  }
+
+  memset(entryA,0,sizeof(long)*entries);
+  memset(entryB,0,sizeof(long)*entries);
+
+  /* Do the points belonging to this cell occur on sideA, sideB or
+     both? */
+
+  for(i=0;i<points;i++){
+    float *ppt=_Npoint(pointindex[i]);
+    long   firstentry=membership[pointindex[i]];
+
+    if(firstentry==besti){
+      entryA[reventry[firstentry]]=1;
+      if(splitp)temppointsA[pointsA++]=pointindex[i];
+      continue;
+    }
+    if(firstentry==bestj){
+      entryB[reventry[firstentry]]=1;
+      if(splitp)temppointsB[pointsB++]=pointindex[i];
+      continue;
+    }
+    {
+      float distA=_Ndist(dim,ppt,_Nnow(besti));
+      float distB=_Ndist(dim,ppt,_Nnow(bestj));
+      if(distA<distB){
+	entryA[reventry[firstentry]]=1;
+	if(splitp)temppointsA[pointsA++]=pointindex[i];
+      }else{
+	entryB[reventry[firstentry]]=1;
+	if(splitp)temppointsB[pointsB++]=pointindex[i];
+      }
+    }
+  }
+
+  /* The entry splitting isn't total, so that storage has to be
+     allocated for recursion.  Reuse the entryA/entryB vectors */
+  /* keep the entries in ascending order (relative to the original
+     list); we rely on that stability when ordering p/q choice */
+  for(j=0;j<entries;j++){
+    if(entryA[j] && entryB[j])C++;
+    if(entryA[j])entryA[A++]=entryindex[j];
+    if(entryB[j])entryB[B++]=entryindex[j];
+  }
+  *entriesA=A;
+  *entriesB=B;
+  *entriesC=C;
+  if(splitp){
+    memcpy(pointindex,temppointsA,sizeof(long)*pointsA);
+    memcpy(pointindex+pointsA,temppointsB,sizeof(long)*pointsB);
+    free(temppointsA);
+    free(temppointsB);
+  }
+  return(pointsA);
+}
+
+int lp_split(float *pointlist,long totalpoints,
+	     codebook *b,
+	     long *entryindex,long entries, 
+	     long *pointindex,long points,
+	     long *membership,long *reventry,
+	     long depth, long *pointsofar){
+
+  encode_aux_nearestmatch *t=b->c->nearest_tree;
+
+  /* The encoder, regardless of book, will be using a straight
+     euclidian distance-to-point metric to determine closest point.
+     Thus we split the cells using the same (we've already trained the
+     codebook set spacing and distribution using special metrics and
+     even a midpoint division won't disturb the basic properties) */
+
+  int dim=b->dim;
+  float *entrylist=b->valuelist;
+  long ret;
+  long *entryA=_ogg_calloc(entries,sizeof(long));
+  long *entryB=_ogg_calloc(entries,sizeof(long));
+  long entriesA=0;
+  long entriesB=0;
+  long entriesC=0;
+  long pointsA=0;
+  long i,j,k;
+
+  long   besti=-1;
+  long   bestj=-1;
+  
+  char spinbuf[80];
+  sprintf(spinbuf,"splitting [%ld left]... ",totalpoints-*pointsofar);
+
+  /* one reverse index needed */
+  for(i=0;i<b->entries;i++)reventry[i]=-1;
+  for(i=0;i<entries;i++)reventry[entryindex[i]]=i;
+
+  /* We need to find the dividing hyperplane. find the median of each
+     axis as the centerpoint and the normal facing farthest point */
+
+  /* more than one way to do this part.  For small sets, we can brute
+     force it. */
+
+  if(entries<8 || (float)points*entries*entries<16.f*1024*1024){
+    /* try every pair possibility */
+    float best=0;
+    float this;
+    for(i=0;i<entries-1;i++){
+      for(j=i+1;j<entries;j++){
+	spinnit(spinbuf,entries-i);
+	vqsp_count(b->valuelist,pointlist,dim,
+		   membership,reventry,
+		   entryindex,entries, 
+		   pointindex,points,0,
+		   entryA,entryB,
+		   entryindex[i],entryindex[j],
+		   &entriesA,&entriesB,&entriesC);
+	this=(entriesA-entriesC)*(entriesB-entriesC);
+
+	/* when choosing best, we also want some form of stability to
+           make sure more branches are pared later; secondary
+           weighting isn;t needed as the entry lists are in ascending
+           order, and we always try p/q in the same sequence */
+	
+	if( (besti==-1) ||
+	    (this>best) ){
+	  
+	  best=this;
+	  besti=entryindex[i];
+	  bestj=entryindex[j];
+
+	}
+      }
+    }
+  }else{
+    float *p=alloca(dim*sizeof(float));
+    float *q=alloca(dim*sizeof(float));
+    float best=0.f;
+    
+    /* try COG/normal and furthest pairs */
+    /* meanpoint */
+    /* eventually, we want to select the closest entry and figure n/c
+       from p/q (because storing n/c is too large */
+    for(k=0;k<dim;k++){
+      spinnit(spinbuf,entries);
+      
+      p[k]=0.f;
+      for(j=0;j<entries;j++)
+	p[k]+=b->valuelist[entryindex[j]*dim+k];
+      p[k]/=entries;
+
+    }
+
+    /* we go through the entries one by one, looking for the entry on
+       the other side closest to the point of reflection through the
+       center */
+
+    for(i=0;i<entries;i++){
+      float *ppi=_Nnow(entryindex[i]);
+      float ref_best=0.f;
+      float ref_j=-1;
+      float this;
+      spinnit(spinbuf,entries-i);
+      
+      for(k=0;k<dim;k++)
+	q[k]=2*p[k]-ppi[k];
+
+      for(j=0;j<entries;j++){
+	if(j!=i){
+	  float this=_Ndist(dim,q,_Nnow(entryindex[j]));
+	  if(ref_j==-1 || this<=ref_best){ /* <=, not <; very important */
+	    ref_best=this;
+	    ref_j=entryindex[j];
+	  }
+	}
+      }
+
+      vqsp_count(b->valuelist,pointlist,dim,
+		 membership,reventry,
+		 entryindex,entries, 
+		 pointindex,points,0,
+		 entryA,entryB,
+		 entryindex[i],ref_j,
+		 &entriesA,&entriesB,&entriesC);
+      this=(entriesA-entriesC)*(entriesB-entriesC);
+
+	/* when choosing best, we also want some form of stability to
+           make sure more branches are pared later; secondary
+           weighting isn;t needed as the entry lists are in ascending
+           order, and we always try p/q in the same sequence */
+	
+      if( (besti==-1) ||
+	  (this>best) ){
+	
+	best=this;
+	besti=entryindex[i];
+	bestj=ref_j;
+
+      }
+    }
+    if(besti>bestj){
+      long temp=besti;
+      besti=bestj;
+      bestj=temp;
+    }
+
+  }
+  
+  /* find cells enclosing points */
+  /* count A/B points */
+
+  pointsA=vqsp_count(b->valuelist,pointlist,dim,
+		     membership,reventry,
+		     entryindex,entries, 
+		     pointindex,points,1,
+		     entryA,entryB,
+		     besti,bestj,
+		     &entriesA,&entriesB,&entriesC);
+
+  /*  fprintf(stderr,"split: total=%ld depth=%ld set A=%ld:%ld:%ld=B\n",
+      entries,depth,entriesA-entriesC,entriesC,entriesB-entriesC);*/
+  {
+    long thisaux=t->aux++;
+    if(t->aux>=t->alloc){
+      t->alloc*=2;
+      t->ptr0=_ogg_realloc(t->ptr0,sizeof(long)*t->alloc);
+      t->ptr1=_ogg_realloc(t->ptr1,sizeof(long)*t->alloc);
+      t->p=_ogg_realloc(t->p,sizeof(long)*t->alloc);
+      t->q=_ogg_realloc(t->q,sizeof(long)*t->alloc);
+    }
+    
+    t->p[thisaux]=besti;
+    t->q[thisaux]=bestj;
+    
+    if(entriesA==1){
+      ret=1;
+      t->ptr0[thisaux]=entryA[0];
+      *pointsofar+=pointsA;
+    }else{
+      t->ptr0[thisaux]= -t->aux;
+      ret=lp_split(pointlist,totalpoints,b,entryA,entriesA,pointindex,pointsA,
+		   membership,reventry,depth+1,pointsofar); 
+    }
+    if(entriesB==1){
+      ret++;
+      t->ptr1[thisaux]=entryB[0];
+      *pointsofar+=points-pointsA;
+    }else{
+      t->ptr1[thisaux]= -t->aux;
+      ret+=lp_split(pointlist,totalpoints,b,entryB,entriesB,pointindex+pointsA,
+		    points-pointsA,membership,reventry,
+		    depth+1,pointsofar); 
+    }
+  }
+  free(entryA);
+  free(entryB);
+  return(ret);
+}
+
+static int _node_eq(encode_aux_nearestmatch *v, long a, long b){
+  long    Aptr0=v->ptr0[a];
+  long    Aptr1=v->ptr1[a];
+  long    Bptr0=v->ptr0[b];
+  long    Bptr1=v->ptr1[b];
+
+  /* the possibility of choosing the same p and q, but switched, can;t
+     happen because we always look for the best p/q in the same search
+     order and the search is stable */
+
+  if(Aptr0==Bptr0 && Aptr1==Bptr1)
+    return(1);
+
+  return(0);
+}
+
+void vqsp_book(vqgen *v, codebook *b, long *quantlist){
+  long i,j;
+  static_codebook *c=(static_codebook *)b->c;
+  encode_aux_nearestmatch *t;
+
+  memset(b,0,sizeof(codebook));
+  memset(c,0,sizeof(static_codebook));
+  b->c=c;
+  t=c->nearest_tree=_ogg_calloc(1,sizeof(encode_aux_nearestmatch));
+  c->maptype=2;
+
+  /* make sure there are no duplicate entries and that every 
+     entry has points */
+
+  for(i=0;i<v->entries;){
+    /* duplicate? if so, eliminate */
+    for(j=0;j<i;j++){
+      if(_Ndist(v->elements,_now(v,i),_now(v,j))==0.f){
+	fprintf(stderr,"found a duplicate entry!  removing...\n");
+	v->entries--;
+	memcpy(_now(v,i),_now(v,v->entries),sizeof(float)*v->elements);
+	memcpy(quantlist+i*v->elements,quantlist+v->entries*v->elements,
+	       sizeof(long)*v->elements);
+	break;
+      }
+    }
+    if(j==i)i++;
+  }
+
+  {
+    v->assigned=_ogg_calloc(v->entries,sizeof(long));
+    for(i=0;i<v->points;i++){
+      float *ppt=_point(v,i);
+      float firstmetric=_Ndist(v->elements,_now(v,0),ppt);
+      long   firstentry=0;
+
+      if(!(i&0xff))spinnit("checking... ",v->points-i);
+
+      for(j=0;j<v->entries;j++){
+	float thismetric=_Ndist(v->elements,_now(v,j),ppt);
+	if(thismetric<firstmetric){
+	  firstmetric=thismetric;
+	  firstentry=j;
+	}
+      }
+      
+      v->assigned[firstentry]++;
+    }
+
+    for(j=0;j<v->entries;){
+      if(v->assigned[j]==0){
+	fprintf(stderr,"found an unused entry!  removing...\n");
+	v->entries--;
+	memcpy(_now(v,j),_now(v,v->entries),sizeof(float)*v->elements);
+	v->assigned[j]=v->assigned[v->elements];
+	memcpy(quantlist+j*v->elements,quantlist+v->entries*v->elements,
+	       sizeof(long)*v->elements);
+	continue;
+      }
+      j++;
+    }
+  }
+
+  fprintf(stderr,"Building a book with %ld unique entries...\n",v->entries);
+
+  {
+    long *entryindex=_ogg_malloc(v->entries*sizeof(long *));
+    long *pointindex=_ogg_malloc(v->points*sizeof(long));
+    long *membership=_ogg_malloc(v->points*sizeof(long));
+    long *reventry=_ogg_malloc(v->entries*sizeof(long));
+    long pointssofar=0;
+      
+    for(i=0;i<v->entries;i++)entryindex[i]=i;
+    for(i=0;i<v->points;i++)pointindex[i]=i;
+
+    t->alloc=4096;
+    t->ptr0=_ogg_malloc(sizeof(long)*t->alloc);
+    t->ptr1=_ogg_malloc(sizeof(long)*t->alloc);
+    t->p=_ogg_malloc(sizeof(long)*t->alloc);
+    t->q=_ogg_malloc(sizeof(long)*t->alloc);
+    t->aux=0;
+    c->dim=v->elements;
+    c->entries=v->entries;
+    c->lengthlist=_ogg_calloc(c->entries,sizeof(long));
+    b->valuelist=v->entrylist; /* temporary; replaced later */
+    b->dim=c->dim;
+    b->entries=c->entries;
+
+    for(i=0;i<v->points;i++)membership[i]=-1;
+    for(i=0;i<v->points;i++){
+      float *ppt=_point(v,i);
+      long   firstentry=0;
+      float firstmetric=_Ndist(v->elements,_now(v,0),ppt);
+    
+      if(!(i&0xff))spinnit("assigning... ",v->points-i);
+
+      for(j=1;j<v->entries;j++){
+	if(v->assigned[j]!=-1){
+	  float thismetric=_Ndist(v->elements,_now(v,j),ppt);
+	  if(thismetric<=firstmetric){
+	    firstmetric=thismetric;
+	    firstentry=j;
+	  }
+	}
+      }
+      
+      membership[i]=firstentry;
+    }
+
+    fprintf(stderr,"Leaves added: %d              \n",
+	    lp_split(v->pointlist,v->points,
+		     b,entryindex,v->entries,
+		     pointindex,v->points,
+		     membership,reventry,
+		     0,&pointssofar));
+      
+    free(pointindex);
+    free(membership);
+    free(reventry);
+    
+    fprintf(stderr,"Paring/rerouting redundant branches... ");
+    
+    /* The tree is likely big and redundant.  Pare and reroute branches */
+    {
+      int changedflag=1;
+      
+      while(changedflag){
+	changedflag=0;
+	
+	/* span the tree node by node; list unique decision nodes and
+	   short circuit redundant branches */
+	
+	for(i=0;i<t->aux;){
+	  int k;
+	  
+	  /* check list of unique decisions */
+	  for(j=0;j<i;j++)
+	    if(_node_eq(t,i,j))break;
+	  
+	  if(j<i){
+	    /* a redundant entry; find all higher nodes referencing it and
+	       short circuit them to the previously noted unique entry */
+	    changedflag=1;
+	    for(k=0;k<t->aux;k++){
+	      if(t->ptr0[k]==-i)t->ptr0[k]=-j;
+	      if(t->ptr1[k]==-i)t->ptr1[k]=-j;
+	    }
+	    
+	    /* Now, we need to fill in the hole from this redundant
+	       entry in the listing.  Insert the last entry in the list.
+	       Fix the forward pointers to that last entry */
+	    t->aux--;
+	    t->ptr0[i]=t->ptr0[t->aux];
+	    t->ptr1[i]=t->ptr1[t->aux];
+	    t->p[i]=t->p[t->aux];
+	    t->q[i]=t->q[t->aux];
+	    for(k=0;k<t->aux;k++){
+	      if(t->ptr0[k]==-t->aux)t->ptr0[k]=-i;
+	      if(t->ptr1[k]==-t->aux)t->ptr1[k]=-i;
+	    }
+	    /* hole plugged */
+	    
+	  }else
+	    i++;
+	}
+	
+	fprintf(stderr,"\rParing/rerouting redundant branches... "
+		"%ld remaining   ",t->aux);
+      }
+      fprintf(stderr,"\n");
+    }
+  }
+  
+  /* run all training points through the decision tree to get a final
+     probability count */
+  {
+    long *probability=_ogg_malloc(c->entries*sizeof(long));
+    for(i=0;i<c->entries;i++)probability[i]=1; /* trivial guard */
+    b->dim=c->dim;
+
+    /* sigh.  A necessary hack */
+    for(i=0;i<t->aux;i++)t->p[i]*=c->dim;
+    for(i=0;i<t->aux;i++)t->q[i]*=c->dim;
+    
+    for(i=0;i<v->points;i++){
+      /* we use the linear matcher regardless becuase the trainer
+         doesn't convert log to linear */
+      int ret=_best(b,v->pointlist+i*v->elements,1);
+      probability[ret]++;
+      if(!(i&0xff))spinnit("counting hits... ",v->points-i);
+    }
+    for(i=0;i<t->aux;i++)t->p[i]/=c->dim;
+    for(i=0;i<t->aux;i++)t->q[i]/=c->dim;
+
+    build_tree_from_lengths(c->entries,probability,c->lengthlist);
+    
+    free(probability);
+  }
+
+  /* Sort the entries by codeword length, short to long (eases
+     assignment and packing to do it now) */
+  {
+    long *wordlen=c->lengthlist;
+    long *index=_ogg_malloc(c->entries*sizeof(long));
+    long *revindex=_ogg_malloc(c->entries*sizeof(long));
+    int k;
+    for(i=0;i<c->entries;i++)index[i]=i;
+    isortvals=c->lengthlist;
+    qsort(index,c->entries,sizeof(long),iascsort);
+
+    /* rearrange storage; ptr0/1 first as it needs a reverse index */
+    /* n and c stay unchanged */
+    for(i=0;i<c->entries;i++)revindex[index[i]]=i;
+    for(i=0;i<t->aux;i++){
+      if(!(i&0x3f))spinnit("sorting... ",t->aux-i);
+
+      if(t->ptr0[i]>=0)t->ptr0[i]=revindex[t->ptr0[i]];
+      if(t->ptr1[i]>=0)t->ptr1[i]=revindex[t->ptr1[i]];
+      t->p[i]=revindex[t->p[i]];
+      t->q[i]=revindex[t->q[i]];
+    }
+    free(revindex);
+
+    /* map lengthlist and vallist with index */
+    c->lengthlist=_ogg_calloc(c->entries,sizeof(long));
+    b->valuelist=_ogg_malloc(sizeof(float)*c->entries*c->dim);
+    c->quantlist=_ogg_malloc(sizeof(long)*c->entries*c->dim);
+    for(i=0;i<c->entries;i++){
+      long e=index[i];
+      for(k=0;k<c->dim;k++){
+	b->valuelist[i*c->dim+k]=v->entrylist[e*c->dim+k];
+	c->quantlist[i*c->dim+k]=quantlist[e*c->dim+k];
+      }
+      c->lengthlist[i]=wordlen[e];
+    }
+
+    free(wordlen);
+  }
+
+  fprintf(stderr,"Done.                            \n\n");
+}
+
Index: /libvorbis-1.2.0/vq/vqsplit.h
===================================================================
--- /libvorbis-1.2.0/vq/vqsplit.h	(revision 16)
+++ /libvorbis-1.2.0/vq/vqsplit.h	(revision 16)
@@ -0,0 +1,37 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: build a VQ codebook decision tree 
+ last mod: $Id: vqsplit.h 13293 2007-07-24 00:09:47Z xiphmont $
+
+ ********************************************************************/
+
+#ifndef _VQSPL_H_
+#define _VQSPL_H_
+
+#include "codebook.h"
+
+extern void vqsp_book(vqgen *v,codebook *b,long *quantlist);
+extern int vqenc_entry(codebook *b,float *val);
+extern int lp_split(float *pointlist,long totalpoints,
+		    codebook *b,
+		    long *entryindex,long entries, 
+		    long *pointindex,long points,
+		    long *membership,long *reventry,
+		    long depth, long *pointsofar);
+
+#endif
+
+
+
+
+
Index: /libvorbis-1.2.0/win32/VS2003/libvorbis/libvorbis.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2003/libvorbis/libvorbis.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2003/libvorbis/libvorbis.vcproj	(revision 16)
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="libvorbis"
+	ProjectGUID="{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="2"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/libvorbis.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"
+				DisableSpecificWarnings="4244;4100;4267;4189;4305;4127;4706"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"
+				DisableSpecificWarnings="4244;4100;4267;4189;4305;4127;4706"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE2|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="3"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				EnableEnhancedInstructionSet="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"
+				DisableSpecificWarnings="4244;4100;4267;4189;4305;4127;4706"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\lib\analysis.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\bitrate.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\block.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\codebook.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\envelope.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\floor0.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\floor1.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\info.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lookup.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lpc.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lsp.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\mapping0.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\mdct.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\psy.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\registry.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\res0.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\sharedbook.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\smallft.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\synthesis.c">
+			</File>
+			<File
+				RelativePath="..\..\vorbis.def">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\vorbisenc.c">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\window.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\..\lib\backends.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\bitrate.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\codebook.h">
+			</File>
+			<File
+				RelativePath="..\..\..\include\vorbis\codec.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\codec_internal.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\envelope.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\floor_all.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\books\floor\floor_books.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\highlevel.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lookup.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lookup_data.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lpc.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lsp.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\masking.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\mdct.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\misc.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\os.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\psy.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_11.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_16.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_44.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_8.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\registry.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\books\coupled\res_books_stereo.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\books\uncoupled\res_books_uncoupled.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_16.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_44.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_44u.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_8.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\scales.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_11.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_16.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_22.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_32.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_44.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_44u.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_8.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_X.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\smallft.h">
+			</File>
+			<File
+				RelativePath="..\..\..\include\vorbis\vorbisenc.h">
+			</File>
+			<File
+				RelativePath="..\..\..\include\vorbis\vorbisfile.h">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\window.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2003/libvorbisfile/libvorbisfile.def
===================================================================
--- /libvorbis-1.2.0/win32/VS2003/libvorbisfile/libvorbisfile.def	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2003/libvorbisfile/libvorbisfile.def	(revision 16)
@@ -0,0 +1,47 @@
+LIBRARY	libvorbisfile
+EXPORTS
+ov_clear
+ov_open
+ov_open_callbacks
+;
+ov_test
+ov_test_callbacks
+ov_test_open
+;
+ov_bitrate
+ov_bitrate_instant
+;
+ov_streams
+ov_seekable
+ov_serialnumber
+;
+ov_raw_total
+ov_pcm_total
+ov_time_total
+;
+ov_raw_seek
+ov_pcm_seek
+ov_pcm_seek_page
+ov_time_seek
+ov_time_seek_page
+;
+ov_raw_seek_lap
+ov_pcm_seek_lap
+ov_pcm_seek_page_lap
+ov_time_seek_lap
+ov_time_seek_page_lap
+;
+ov_raw_tell
+ov_pcm_tell
+ov_time_tell
+;
+ov_info
+ov_comment
+;
+ov_read_float
+ov_read
+ov_crosslap
+;
+ov_halfrate
+ov_halfrate_p
+;
Index: /libvorbis-1.2.0/win32/VS2003/libvorbisfile/libvorbisfile.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2003/libvorbisfile/libvorbisfile.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2003/libvorbisfile/libvorbisfile.vcproj	(revision 16)
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="libvorbisfile"
+	ProjectGUID="{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBVORBISFILE_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbisfile.dll"
+				LinkIncremental="2"
+				ModuleDefinitionFile="libvorbisfile.def"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/libvorbisfile.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/libvorbisfile.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBISFILE_EXPORTS"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbisfile.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="libvorbisfile.def"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/libvorbisfile.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath=".\libvorbisfile.def">
+			</File>
+			<File
+				RelativePath="..\..\..\lib\vorbisfile.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\..\include\vorbis\vorbisfile.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+		<File
+			RelativePath=".\ReadMe.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2003/vorbisdec/vorbisdec.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2003/vorbisdec/vorbisdec.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2003/vorbisdec/vorbisdec.vcproj	(revision 16)
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="vorbisdec"
+	ProjectGUID="{5833EEA1-1068-431F-A6E5-316E7DC5D90A}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/vorbisdec.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE2|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="3"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				EnableEnhancedInstructionSet="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\decoder_example.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2003/vorbisenc/vorbisenc.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2003/vorbisenc/vorbisenc.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2003/vorbisenc/vorbisenc.vcproj	(revision 16)
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="vorbisenc"
+	ProjectGUID="{E48B6A8B-F7FE-4DA8-8248-E64DBAC4F56C}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				ExceptionHandling="FALSE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/vorbisenc.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE2|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OptimizeForProcessor="3"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="TRUE"
+				ExceptionHandling="FALSE"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="FALSE"
+				EnableEnhancedInstructionSet="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"
+				CompileAs="1"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\examples\encoder_example.c">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2005/libvorbis/libvorbis.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2005/libvorbis/libvorbis.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2005/libvorbis/libvorbis.vcproj	(revision 16)
@@ -0,0 +1,653 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="libvorbis"
+	ProjectGUID="{3A214E06-B95E-4D61-A291-1F8DF2EC10FD}"
+	RootNamespace="libvorbis"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="2"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/libvorbis.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+				DisableSpecificWarnings="4244;4100;4267;4189;4305;4127;4706"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+				DisableSpecificWarnings="4244;4100;4267;4189;4305;4127;4706"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE2|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBIS_EXPORTS"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				EnableEnhancedInstructionSet="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+				DisableSpecificWarnings="4244;4100;4267;4189;4305;4127;4706"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbis.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="..\..\vorbis.def"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OutDir)/libvorbis.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\..\lib\analysis.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\bitrate.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\block.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\codebook.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\envelope.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\floor0.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\floor1.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\info.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lookup.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lpc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lsp.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\mapping0.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\mdct.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\psy.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\registry.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\res0.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\sharedbook.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\smallft.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\synthesis.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\vorbis.def"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\vorbisenc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\window.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\..\lib\backends.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\bitrate.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\codebook.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\include\vorbis\codec.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\codec_internal.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\envelope.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\floor_all.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\books\floor\floor_books.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\highlevel.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lookup.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lookup_data.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lpc.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\lsp.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\masking.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\mdct.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\misc.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\os.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\psy.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_11.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_16.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_44.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\psych_8.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\registry.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\books\coupled\res_books_stereo.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\books\uncoupled\res_books_uncoupled.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_16.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_44.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_44u.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\residue_8.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\scales.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_11.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_16.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_22.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_32.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_44.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_44u.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_8.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\modes\setup_X.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\smallft.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\include\vorbis\vorbisenc.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\include\vorbis\vorbisfile.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\window.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2005/libvorbisfile/libvorbisfile.def
===================================================================
--- /libvorbis-1.2.0/win32/VS2005/libvorbisfile/libvorbisfile.def	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2005/libvorbisfile/libvorbisfile.def	(revision 16)
@@ -0,0 +1,47 @@
+LIBRARY	libvorbisfile
+EXPORTS
+ov_clear
+ov_open
+ov_open_callbacks
+;
+ov_test
+ov_test_callbacks
+ov_test_open
+;
+ov_bitrate
+ov_bitrate_instant
+;
+ov_streams
+ov_seekable
+ov_serialnumber
+;
+ov_raw_total
+ov_pcm_total
+ov_time_total
+;
+ov_raw_seek
+ov_pcm_seek
+ov_pcm_seek_page
+ov_time_seek
+ov_time_seek_page
+;
+ov_raw_seek_lap
+ov_pcm_seek_lap
+ov_pcm_seek_page_lap
+ov_time_seek_lap
+ov_time_seek_page_lap
+;
+ov_raw_tell
+ov_pcm_tell
+ov_time_tell
+;
+ov_info
+ov_comment
+;
+ov_read_float
+ov_read
+ov_crosslap
+;
+ov_halfrate
+ov_halfrate_p
+;
Index: /libvorbis-1.2.0/win32/VS2005/libvorbisfile/libvorbisfile.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2005/libvorbisfile/libvorbisfile.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2005/libvorbisfile/libvorbisfile.vcproj	(revision 16)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="libvorbisfile"
+	ProjectGUID="{CEBDE98B-A6AA-46E6-BC79-FAAF823DB9EC}"
+	RootNamespace="libvorbisfile"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBVORBISFILE_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbisfile.dll"
+				LinkIncremental="2"
+				ModuleDefinitionFile="libvorbisfile.def"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/libvorbisfile.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/libvorbisfile.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBVORBISFILE_EXPORTS"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/libvorbisfile.dll"
+				LinkIncremental="1"
+				ModuleDefinitionFile="libvorbisfile.def"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/libvorbisfile.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\libvorbisfile.def"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lib\vorbisfile.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\..\include\vorbis\vorbisfile.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<File
+			RelativePath=".\ReadMe.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2005/vorbisdec/vorbisdec.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2005/vorbisdec/vorbisdec.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2005/vorbisdec/vorbisdec.vcproj	(revision 16)
@@ -0,0 +1,389 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="vorbisdec"
+	ProjectGUID="{5833EEA1-1068-431F-A6E5-316E7DC5D90A}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/vorbisdec.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE2|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				EnableEnhancedInstructionSet="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisdec.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\..\examples\decoder_example.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/VS2005/vorbisenc/vorbisenc.vcproj
===================================================================
--- /libvorbis-1.2.0/win32/VS2005/vorbisenc/vorbisenc.vcproj	(revision 16)
+++ /libvorbis-1.2.0/win32/VS2005/vorbisenc/vorbisenc.vcproj	(revision 16)
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="vorbisenc"
+	ProjectGUID="{E48B6A8B-F7FE-4DA8-8248-E64DBAC4F56C}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				ExceptionHandling="0"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/vorbisenc.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release_SSE2|Win32"
+			OutputDirectory="$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="3"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				StringPooling="true"
+				ExceptionHandling="0"
+				RuntimeLibrary="0"
+				BufferSecurityCheck="false"
+				EnableEnhancedInstructionSet="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+				CompileAs="1"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/vorbisenc.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\..\examples\encoder_example.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /libvorbis-1.2.0/win32/build_vorbis_dynamic.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbis_dynamic.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbis_dynamic.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbis (Dynamic) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+           
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release
+echo Compiling...
+msdev vorbis_dynamic.dsp /useenv /make "vorbis_dynamic - Win32 Release" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbis_dynamic_debug.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbis_dynamic_debug.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbis_dynamic_debug.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbis (Dynamic) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+           
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug
+echo Compiling...
+msdev vorbis_dynamic.dsp /useenv /make "vorbis_dynamic - Win32 Debug" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbis_static.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbis_static.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbis_static.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbis (Static) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release
+echo Compiling...
+msdev vorbis_static.dsp /useenv /make "vorbis_static - Win32 Release" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbis_static_debug.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbis_static_debug.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbis_static_debug.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbis (Static) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug
+echo Compiling...
+msdev vorbis_static.dsp /useenv /make "vorbis_static - Win32 Debug" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisenc_dynamic.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisenc_dynamic.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisenc_dynamic.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisenc (Dynamic) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+           
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
+echo Compiling...
+msdev vorbisenc_dynamic.dsp /useenv /make "vorbisenc_dynamic - Win32 Release" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisenc_dynamic_debug.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisenc_dynamic_debug.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisenc_dynamic_debug.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisenc (Dynamic) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+           
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
+echo Compiling...
+msdev vorbisenc_dynamic.dsp /useenv /make "vorbisenc_dynamic - Win32 Debug" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisenc_static.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisenc_static.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisenc_static.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisenc (Static) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
+echo Compiling...
+msdev vorbisenc_static.dsp /useenv /make "vorbisenc_static - Win32 Release" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisenc_static_debug.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisenc_static_debug.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisenc_static_debug.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisenc (Static) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
+echo Compiling...
+msdev vorbisenc_static.dsp /useenv /make "vorbisenc_static - Win32 Debug" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisfile_dynamic.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisfile_dynamic.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisfile_dynamic.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisfile (Dynamic) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+           
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
+echo Compiling...
+msdev vorbisfile_dynamic.dsp /useenv /make "vorbisfile_dynamic - Win32 Release" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisfile_dynamic_debug.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisfile_dynamic_debug.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisfile_dynamic_debug.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisfile (Dynamic) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+           
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Dynamic_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
+echo Compiling...
+msdev vorbisfile_dynamic.dsp /useenv /make "vorbisfile_dynamic - Win32 Debug" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisfile_static.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisfile_static.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisfile_static.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisfile (Static) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Release;%SRCROOT%\vorbis\win32\Dynamic_Release
+echo Compiling...
+msdev vorbisfile_static.dsp /useenv /make "vorbisfile_static - Win32 Release" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/build_vorbisfile_static_debug.bat
===================================================================
--- /libvorbis-1.2.0/win32/build_vorbisfile_static_debug.bat	(revision 16)
+++ /libvorbis-1.2.0/win32/build_vorbisfile_static_debug.bat	(revision 16)
@@ -0,0 +1,19 @@
+@echo off
+echo ---+++--- Building Vorbisfile (Static) ---+++---
+
+if .%SRCROOT%==. set SRCROOT=i:\xiph
+
+set OLDPATH=%PATH%
+set OLDINCLUDE=%INCLUDE%
+set OLDLIB=%LIB%
+
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"
+echo Setting include/lib paths for Vorbis
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\vorbis\include
+set LIB=%LIB%;%SRCROOT%\ogg\win32\Static_Debug;%SRCROOT%\vorbis\win32\Dynamic_Debug
+echo Compiling...
+msdev vorbisfile_static.dsp /useenv /make "vorbisfile_static - Win32 Debug" /rebuild
+
+set PATH=%OLDPATH%
+set INCLUDE=%OLDINCLUDE%
+set LIB=%OLDLIB%
Index: /libvorbis-1.2.0/win32/vorbis.def
===================================================================
--- /libvorbis-1.2.0/win32/vorbis.def	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbis.def	(revision 16)
@@ -0,0 +1,57 @@
+;
+; $Id: vorbis.def 13284 2007-07-20 03:47:48Z tterribe $
+; 
+LIBRARY
+EXPORTS
+_floor_P
+_mapping_P
+_residue_P
+;
+vorbis_info_init
+vorbis_info_clear
+vorbis_info_blocksize
+;
+vorbis_comment_init
+vorbis_comment_add
+vorbis_comment_add_tag
+vorbis_comment_query
+vorbis_comment_query_count
+vorbis_comment_clear
+;
+vorbis_block_init
+vorbis_block_clear
+vorbis_dsp_clear
+vorbis_granule_time
+;
+vorbis_analysis_init
+vorbis_commentheader_out
+vorbis_analysis_headerout
+vorbis_analysis_buffer
+vorbis_analysis_wrote
+vorbis_analysis_blockout
+vorbis_analysis
+vorbis_bitrate_addblock
+vorbis_bitrate_flushpacket
+;
+vorbis_synthesis_headerin
+vorbis_synthesis_init
+vorbis_synthesis_restart
+vorbis_synthesis
+vorbis_synthesis_trackonly
+vorbis_synthesis_blockin
+vorbis_synthesis_pcmout
+vorbis_synthesis_lapout
+vorbis_synthesis_read
+vorbis_packet_blocksize
+vorbis_synthesis_halfrate
+vorbis_synthesis_halfrate_p
+vorbis_synthesis_idheader
+;
+vorbis_window
+_analysis_output_always
+vorbis_encode_init
+vorbis_encode_setup_managed
+vorbis_encode_setup_vbr
+vorbis_encode_init_vbr
+vorbis_encode_setup_init
+vorbis_encode_ctl
Index: /libvorbis-1.2.0/win32/vorbis.dsw
===================================================================
--- /libvorbis-1.2.0/win32/vorbis.dsw	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbis.dsw	(revision 16)
@@ -0,0 +1,101 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "vorbis_dynamic"=.\vorbis_dynamic.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "vorbis_static"=.\vorbis_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "vorbisenc_dynamic"=.\vorbisenc_dynamic.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name vorbis_dynamic
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "vorbisenc_static"=.\vorbisenc_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name vorbis_static
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "vorbisfile_dynamic"=.\vorbisfile_dynamic.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name vorbis_dynamic
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "vorbisfile_static"=.\vorbisfile_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name vorbis_static
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
Index: /libvorbis-1.2.0/win32/vorbis_dynamic.dsp
===================================================================
--- /libvorbis-1.2.0/win32/vorbis_dynamic.dsp	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbis_dynamic.dsp	(revision 16)
@@ -0,0 +1,281 @@
+# Microsoft Developer Studio Project File - Name="vorbis_dynamic" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=vorbis_dynamic - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbis_dynamic.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbis_dynamic.mak" CFG="vorbis_dynamic - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "vorbis_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "vorbis_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "vorbis_dynamic - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Vorbis_Dynamic_Release"
+# PROP Intermediate_Dir "Vorbis_Dynamic_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_IEEE_FLOAT32" /D "_USE_NON_INTEL_COMPILER" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib /nologo /dll /machine:I386 /out:"Vorbis_Dynamic_Release/vorbis.dll" /libpath:"..\..\ogg\win32\Dynamic_Release"
+
+!ELSEIF  "$(CFG)" == "vorbis_dynamic - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "vorbis_dynamic___Win32_Debug"
+# PROP BASE Intermediate_Dir "vorbis_dynamic___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Vorbis_Dynamic_Debug"
+# PROP Intermediate_Dir "Vorbis_Dynamic_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBIS_DYNAMIC_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /GZ /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib /nologo /dll /debug /machine:I386 /out:"Vorbis_Dynamic_Debug/vorbis_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug"
+# SUBTRACT LINK32 /verbose /pdb:none
+
+!ENDIF 
+
+# Begin Target
+
+# Name "vorbis_dynamic - Win32 Release"
+# Name "vorbis_dynamic - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\analysis.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\bitrate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\block.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\codebook.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\envelope.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\floor0.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\floor1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\info.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lookup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lpc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lsp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\mapping0.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\mdct.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\psy.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\registry.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\res0.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\sharedbook.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\smallft.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\synthesis.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\vorbisenc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\window.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\lib\backends.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\bitbuffer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\bitrate.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\codebook.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\include\vorbis\codec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\codec_internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\envelope.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\highlevel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lookup.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lookup_data.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lpc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lsp.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\masking.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\mdct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\os.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\psy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\scales.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\smallft.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\window.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Group "Other Files"
+
+# PROP Default_Filter ".def"
+# Begin Source File
+
+SOURCE=.\vorbis.def
+# End Source File
+# End Group
+# End Target
+# End Project
Index: /libvorbis-1.2.0/win32/vorbis_static.dsp
===================================================================
--- /libvorbis-1.2.0/win32/vorbis_static.dsp	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbis_static.dsp	(revision 16)
@@ -0,0 +1,257 @@
+# Microsoft Developer Studio Project File - Name="vorbis_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=vorbis_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbis_static.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbis_static.mak" CFG="vorbis_static - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "vorbis_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "vorbis_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "vorbis_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Vorbis_Static_Release"
+# PROP Intermediate_Dir "Vorbis_Static_Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /O3 /QaxK /Qsox- /Qip /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF  "$(CFG)" == "vorbis_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Vorbis_Static_Debug"
+# PROP Intermediate_Dir "Vorbis_Static_Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Vorbis_Static_Debug\vorbis_static_d.lib"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "vorbis_static - Win32 Release"
+# Name "vorbis_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\analysis.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\bitrate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\block.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\codebook.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\envelope.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\floor0.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\floor1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\info.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lookup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lpc.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lsp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\mapping0.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\mdct.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\psy.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\registry.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\res0.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\sharedbook.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\smallft.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\synthesis.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\window.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\include\vorbis\backends.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\bitbuffer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\bitrate.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\include\vorbis\codebook.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\include\vorbis\codec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\codec_internal.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\envelope.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\highlevel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lookup.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lookup_data.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lpc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\lsp.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\masking.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\mdct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\misc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\os.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\psy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\scales.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\smallft.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\lib\window.h
+# End Source File
+# End Group
+# End Target
+# End Project
Index: /libvorbis-1.2.0/win32/vorbisenc.def
===================================================================
--- /libvorbis-1.2.0/win32/vorbisenc.def	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbisenc.def	(revision 16)
@@ -0,0 +1,13 @@
+;
+; $Id: vorbisenc.def 7187 2004-07-20 07:24:27Z xiphmont $
+;
+LIBRARY
+
+EXPORTS
+vorbis_encode_init
+vorbis_encode_setup_managed
+vorbis_encode_setup_vbr
+vorbis_encode_init_vbr
+vorbis_encode_setup_init
+vorbis_encode_ctl
+
Index: /libvorbis-1.2.0/win32/vorbisenc_dynamic.dsp
===================================================================
--- /libvorbis-1.2.0/win32/vorbisenc_dynamic.dsp	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbisenc_dynamic.dsp	(revision 16)
@@ -0,0 +1,121 @@
+# Microsoft Developer Studio Project File - Name="vorbisenc_dynamic" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=vorbisenc_dynamic - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisenc_dynamic.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisenc_dynamic.mak" CFG="vorbisenc_dynamic - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "vorbisenc_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "vorbisenc_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "vorbisenc_dynamic - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "VorbisEnc_Dynamic_Release"
+# PROP Intermediate_Dir "VorbisEnc_Dynamic_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "_WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISDLL_IMPORT" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib vorbis.lib /nologo /dll /machine:I386 /out:"VorbisEnc_Dynamic_Release/vorbisenc.dll" /libpath:"..\..\ogg\win32\Dynamic_Release" /libpath:".\Vorbis_Dynamic_Release"
+
+!ELSEIF  "$(CFG)" == "vorbisenc_dynamic - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "vorbisenc_dynamic___Win32_Debug"
+# PROP BASE Intermediate_Dir "vorbisenc_dynamic___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "VorbisEnc_Dynamic_Debug"
+# PROP Intermediate_Dir "VorbisEnc_Dynamic_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISENC_DYNAMIC_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /I "..\win32\src" /I "..\..\vorbis\lib" /D "WIN32" /D "_WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISDLL_IMPORT" /FD /GZ /c
+# SUBTRACT CPP /Fr /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib vorbis_d.lib /nologo /dll /debug /machine:I386 /out:"VorbisEnc_Dynamic_Debug/vorbisenc_d.dll" /pdbtype:sept /libpath:"../../vorbis/win32/Vorbis_Dynamic_Debug"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF 
+
+# Begin Target
+
+# Name "vorbisenc_dynamic - Win32 Release"
+# Name "vorbisenc_dynamic - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\vorbisenc.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\include\vorbis\vorbisenc.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Group "Other Files"
+
+# PROP Default_Filter ".def"
+# Begin Source File
+
+SOURCE=.\vorbisenc.def
+# End Source File
+# End Group
+# End Target
+# End Project
Index: /libvorbis-1.2.0/win32/vorbisenc_static.dsp
===================================================================
--- /libvorbis-1.2.0/win32/vorbisenc_static.dsp	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbisenc_static.dsp	(revision 16)
@@ -0,0 +1,100 @@
+# Microsoft Developer Studio Project File - Name="vorbisenc_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=vorbisenc_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisenc_static.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisenc_static.mak" CFG="vorbisenc_static - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "vorbisenc_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "vorbisenc_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "vorbisenc_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "VorbisEnc_Static_Release"
+# PROP Intermediate_Dir "VorbisEnc_Static_Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /O3 /QaxK /Qsox- /Qip /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF  "$(CFG)" == "vorbisenc_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "VorbisEnc_Static_Debug"
+# PROP Intermediate_Dir "VorbisEnc_Static_Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"VorbisEnc_Static_Debug\vorbisenc_static_d.lib"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "vorbisenc_static - Win32 Release"
+# Name "vorbisenc_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\vorbisenc.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\include\vorbis\vorbisenc.h
+# End Source File
+# End Group
+# End Target
+# End Project
Index: /libvorbis-1.2.0/win32/vorbisfile.def
===================================================================
--- /libvorbis-1.2.0/win32/vorbisfile.def	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbisfile.def	(revision 16)
@@ -0,0 +1,41 @@
+;
+; vorbisfile.def
+;
+; last modified: $Id: vorbisfile.def 7187 2004-07-20 07:24:27Z xiphmont $
+;
+LIBRARY
+EXPORTS
+ov_clear
+ov_open
+ov_open_callbacks
+ov_bitrate
+ov_bitrate_instant
+ov_streams
+ov_seekable
+ov_serialnumber
+ov_raw_total
+ov_pcm_total
+ov_time_total
+ov_raw_seek
+ov_pcm_seek
+ov_pcm_seek_page
+ov_time_seek
+ov_time_seek_page
+ov_raw_seek_lap
+ov_pcm_seek_lap
+ov_pcm_seek_page_lap
+ov_time_seek_lap
+ov_time_seek_page_lap
+ov_raw_tell
+ov_pcm_tell
+ov_time_tell
+ov_info
+ov_comment
+ov_read
+ov_read_float
+ov_test
+ov_test_callbacks
+ov_test_open
+ov_crosslap
+ov_halfrate
+ov_halfrate_p
Index: /libvorbis-1.2.0/win32/vorbisfile_dynamic.dsp
===================================================================
--- /libvorbis-1.2.0/win32/vorbisfile_dynamic.dsp	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbisfile_dynamic.dsp	(revision 16)
@@ -0,0 +1,119 @@
+# Microsoft Developer Studio Project File - Name="vorbisfile_dynamic" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=vorbisfile_dynamic - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisfile_dynamic.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisfile_dynamic.mak" CFG="vorbisfile_dynamic - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "vorbisfile_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "vorbisfile_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "vorbisfile_dynamic - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "VorbisFile_Dynamic_Release"
+# PROP Intermediate_Dir "VorbisFile_Dynamic_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_WIN32" /D "VORBIS_IEEE_FLOAT32" /D "_USE_NON_INTEL_COMPILER" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg.lib vorbis.lib /nologo /dll /machine:I386 /out:"VorbisFile_Dynamic_Release/vorbisfile.dll" /libpath:"..\..\ogg\win32\Dynamic_Release" /libpath:".\Vorbis_Dynamic_Release"
+
+!ELSEIF  "$(CFG)" == "vorbisfile_dynamic - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "vorbisfile_dynamic___Win32_Debug"
+# PROP BASE Intermediate_Dir "vorbisfile_dynamic___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "VorbisFile_Dynamic_Debug"
+# PROP Intermediate_Dir "VorbisFile_Dynamic_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VORBISFILE_DYNAMIC_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_WIN32" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ogg_d.lib vorbis_d.lib /nologo /dll /debug /machine:I386 /out:"VorbisFile_Dynamic_Debug/vorbisfile_d.dll" /pdbtype:sept /libpath:"..\..\ogg\win32\Dynamic_Debug" /libpath:".\Vorbis_Dynamic_Debug"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "vorbisfile_dynamic - Win32 Release"
+# Name "vorbisfile_dynamic - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\vorbisfile.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\include\vorbis\vorbisfile.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Group "Other Files"
+
+# PROP Default_Filter ".def"
+# Begin Source File
+
+SOURCE=.\vorbisfile.def
+# End Source File
+# End Group
+# End Target
+# End Project
Index: /libvorbis-1.2.0/win32/vorbisfile_static.dsp
===================================================================
--- /libvorbis-1.2.0/win32/vorbisfile_static.dsp	(revision 16)
+++ /libvorbis-1.2.0/win32/vorbisfile_static.dsp	(revision 16)
@@ -0,0 +1,100 @@
+# Microsoft Developer Studio Project File - Name="vorbisfile_static" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=vorbisfile_static - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisfile_static.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "vorbisfile_static.mak" CFG="vorbisfile_static - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "vorbisfile_static - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "vorbisfile_static - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=xicl6.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "vorbisfile_static - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "VorbisFile_Static_Release"
+# PROP Intermediate_Dir "VorbisFile_Static_Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /GB /MT /W3 /GX /O2 /Ob1 /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "_WIN32" /YX /FD /O3 /QaxK /Qsox- /Qip /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF  "$(CFG)" == "vorbisfile_static - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "VorbisFile_Static_Debug"
+# PROP Intermediate_Dir "VorbisFile_Static_Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\ogg\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"VorbisFile_Static_Debug\vorbisfile_static_d.lib"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "vorbisfile_static - Win32 Release"
+# Name "vorbisfile_static - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\lib\vorbisfile.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\include\vorbis\vorbisfile.h
+# End Source File
+# End Group
+# End Target
+# End Project
