[xiph-cvs] cvs commit: Tremor CHANGELOG Makefile.am Makefile.in README asm_arm.h autogen.sh backends.h bitwise.c block.c codebook.c codebook.h codec_internal.h config_types.h floor0.c floor1.c framing.c info.c ivorbiscodec.h ivorbisfile.h ivorbisfile_example.c lsp_lookup.h mapping0.c mdct.c mdct.h mdct_lookup.h misc.h ogg.h os.h os_types.h registry.c registry.h res012.c sharedbook.c synthesis.c vorbisfile.c window.c window.h
Monty
xiphmont at xiph.org
Mon Sep 2 15:13:58 PDT 2002
xiphmont 02/09/02 18:13:57
Added: . CHANGELOG Makefile.am Makefile.in README asm_arm.h
autogen.sh backends.h bitwise.c block.c codebook.c
codebook.h codec_internal.h config_types.h floor0.c
floor1.c framing.c info.c ivorbiscodec.h
ivorbisfile.h ivorbisfile_example.c lsp_lookup.h
mapping0.c mdct.c mdct.h mdct_lookup.h misc.h ogg.h
os.h os_types.h registry.c registry.h res012.c
sharedbook.c synthesis.c vorbisfile.c window.c
window.h
Log:
Put root level of Tremor in CVS
Revision Changes Path
1.1 Tremor/CHANGELOG
Index: CHANGELOG
===================================================================
*** 20020517: 1.0.2 ***
Playback bugfix to floor1; mode mistakenly used for sizing instead
of blockflag
*** 20020515: 1.0.1 ***
Added complete API documentation to source tarball. No code
changes.
*** 20020412: 1.0.1 ***
Fixed a clipping bug that affected ARM processors; negative
overflows were being properly clipped, but then clobbered to
positive by the positive overflow chec (asm_arm.h:CLIP_TO_15)
*** 20020403: 1.0.0 ***
Initial version
<p>1.1 Tremor/Makefile.am
Index: Makefile.am
===================================================================
AUTOMAKE_OPTIONS = foreign
INCLUDES = -I./
lib_LTLIBRARIES = libvorbisidec.la
libvorbisidec_la_SOURCES = mdct.c block.c window.c \
synthesis.c info.c \
floor1.c floor0.c vorbisfile.c \
res012.c mapping0.c registry.c codebook.c \
sharedbook.c framing.c bitwise.c \
codebook.h misc.h mdct_lookup.h\
os.h mdct.h ivorbisfile.h lsp_lookup.h\
registry.h window.h lookup_data.h\
codec_internal.h backends.h ogg.h \
asm_arm.h ivorbiscodec.h
libvorbisidec_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
EXTRA_PROGRAMS = ivorbisfile_example
CLEANFILES = $(EXTRA_PROGRAMS) $(lib_LTLIBRARIES)
ivorbisfile_example_SOURCES = ivorbisfile_example.c
ivorbisfile_example_LDFLAGS = -static
ivorbisfile_example_LDADD = libvorbisidec.la
debug:
$(MAKE) all CFLAGS="@DEBUG@" LDFLAGS="-lefence"
profile:
$(MAKE) all CFLAGS="@PROFILE@"
<p><p>1.1 Tremor/Makefile.in
Index: Makefile.in
===================================================================
# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 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.
<p>SHELL = @SHELL@
rcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
AS = @AS@
CC = @CC@
CPP = @CPP@
DEBUG = @DEBUG@
DLLTOOL = @DLLTOOL@
ECHO = @ECHO@
EXEEXT = @EXEEXT@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PROFILE = @PROFILE@
RANLIB = @RANLIB@
STRIP = @STRIP@
VERSION = @VERSION@
V_LIB_AGE = @V_LIB_AGE@
V_LIB_CURRENT = @V_LIB_CURRENT@
V_LIB_REVISION = @V_LIB_REVISION@
AUTOMAKE_OPTIONS = foreign
INCLUDES = -I./
lib_LTLIBRARIES = libvorbisidec.la
libvorbisidec_la_SOURCES = mdct.c block.c window.c synthesis.c info.c floor1.c floor0.c vorbisfile.c res012.c mapping0.c registry.c codebook.c sharedbook.c framing.c bitwise.c codebook.h misc.h mdct_lookup.h os.h mdct.h ivorbisfile.h lsp_lookup.h registry.h window.h lookup_data.h codec_internal.h backends.h ogg.h asm_arm.h ivorbiscodec.h
libvorbisidec_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
EXTRA_PROGRAMS = ivorbisfile_example
CLEANFILES = $(EXTRA_PROGRAMS) $(lib_LTLIBRARIES)
ivorbisfile_example_SOURCES = ivorbisfile_example.c
ivorbisfile_example_LDFLAGS = -static
ivorbisfile_example_LDADD = libvorbisidec.la
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_CLEAN_FILES =
LTLIBRARIES = $(lib_LTLIBRARIES)
<p>DEFS = @DEFS@ -I. -I$(srcdir)
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
libvorbisidec_la_LIBADD =
libvorbisidec_la_OBJECTS = mdct.lo block.lo window.lo synthesis.lo \
info.lo floor1.lo floor0.lo vorbisfile.lo res012.lo mapping0.lo \
registry.lo codebook.lo sharedbook.lo framing.lo bitwise.lo
ivorbisfile_example_OBJECTS = ivorbisfile_example.$(OBJEXT)
ivorbisfile_example_DEPENDENCIES = libvorbisidec.la
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = README Makefile.am Makefile.in aclocal.m4 config.guess \
config.sub configure configure.in install-sh ltmain.sh missing \
mkinstalldirs
<p>DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
DEP_FILES = .deps/bitwise.P .deps/block.P .deps/codebook.P \
.deps/floor0.P .deps/floor1.P .deps/framing.P .deps/info.P \
.deps/ivorbisfile_example.P .deps/mapping0.P .deps/mdct.P \
.deps/registry.P .deps/res012.P .deps/sharedbook.P .deps/synthesis.P \
.deps/vorbisfile.P .deps/window.P
SOURCES = $(libvorbisidec_la_SOURCES) $(ivorbisfile_example_SOURCES)
OBJECTS = $(libvorbisidec_la_OBJECTS) $(ivorbisfile_example_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .lo .o .obj .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): configure.in
cd $(srcdir) && $(ACLOCAL)
config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
mostlyclean-libLTLIBRARIES:
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
distclean-libLTLIBRARIES:
maintainer-clean-libLTLIBRARIES:
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(libdir)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
list='$(lib_LTLIBRARIES)'; for p in $$list; do \
$(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
done
# FIXME: We should only use cygpath when building on Windows,
# and only if it is available.
.c.obj:
$(COMPILE) -c `cygpath -w $<`
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
-rm -f *.$(OBJEXT)
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
.s.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
.S.lo:
$(LIBTOOL) --mode=compile $(COMPILE) -c $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
maintainer-clean-libtool:
libvorbisidec.la: $(libvorbisidec_la_OBJECTS) $(libvorbisidec_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libvorbisidec_la_LDFLAGS) $(libvorbisidec_la_OBJECTS) $(libvorbisidec_la_LIBADD) $(LIBS)
ivorbisfile_example$(EXEEXT): $(ivorbisfile_example_OBJECTS) $(ivorbisfile_example_DEPENDENCIES)
@rm -f ivorbisfile_example$(EXEEXT)
$(LINK) $(ivorbisfile_example_LDFLAGS) $(ivorbisfile_example_OBJECTS) $(ivorbisfile_example_LDADD) $(LIBS)
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(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
-rm -rf $(distdir)
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) dist
-rm -rf $(distdir)
@banner="$(distdir).tar.gz is ready for distribution"; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo "$$dashes"; \
echo "$$banner"; \
echo "$$dashes"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(distdir) && pwd`; \
distdir=`cd $(distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-include $(DEP_FILES)
mostlyclean-depend:
clean-depend:
distclean-depend:
-rm -rf .deps
maintainer-clean-depend:
%.o: %.c
@echo '$(COMPILE) -c $<'; \
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
@-cp .deps/$(*F).pp .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*F).P; \
rm .deps/$(*F).pp
%.lo: %.c
@echo '$(LTCOMPILE) -c $<'; \
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
< .deps/$(*F).pp > .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*F).P; \
rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am: install-libLTLIBRARIES
install-exec: install-exec-am
install-data-am:
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-libLTLIBRARIES
uninstall: uninstall-am
all-am: Makefile $(LTLIBRARIES)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(libdir)
<p>mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \
mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
clean-depend clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-libLTLIBRARIES distclean-compile \
distclean-libtool distclean-tags distclean-depend \
distclean-generic clean-am
-rm -f libtool
distclean: distclean-am
-rm -f config.status
maintainer-clean-am: maintainer-clean-libLTLIBRARIES \
maintainer-clean-compile maintainer-clean-libtool \
maintainer-clean-tags maintainer-clean-depend \
maintainer-clean-generic distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
-rm -f config.status
.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
distclean-compile clean-compile maintainer-clean-compile \
mostlyclean-libtool distclean-libtool clean-libtool \
maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
distclean-depend clean-depend maintainer-clean-depend info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all installdirs \
mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
<p>debug:
$(MAKE) all CFLAGS="@DEBUG@" LDFLAGS="-lefence"
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:
<p><p>1.1 Tremor/README
Index: README
===================================================================
This README covers the Ogg Vorbis 'Tremor' integer playback codec
source as of date 2002 04 03, version 1.0.0.
****
IMPORTANT: Unlike most commonly available Xiph.Org source code, this
package is Commercial software! It is neither BSD licensed nor a
variant of the GPL. As such, Xiph.Org reserves redistribution
rights, subject to agreed upon licensing terms.
******
The C source in this package will build on any ANSI C compiler and
function completely and properly on any platform. The included build
system assumes GNU build system and make tools (m4, automake,
autoconf, libtool and gmake). GCC is not required, although GCC is
the most tested compiler. To build using GNU tools, type in the
source directory:
./autogen.sh
make
Currently, the source implements playback in pure C on all platforms
except ARM, where a [currently] small amount of assembly (see
asm_arm.h) is used to implement 64 bit math operations and fast LSP
computation. If building on ARM without the benefit of GNU build
system tools, be sure that '_ARM_ASSEM_' is #defined by the build
system if this assembly is desired, else the resulting library will
use whatever 64 bit math builtins the compiler implements.
No math library is required by this source. No floating point
operations are used at any point in either setup or decode. This
decoder library will properly decode any past, current or future
Vorbis I file or stream.
********
The build system produces a static and [when supported by the OS]
dynamic library named 'libvorbisidec'. This library exposes an API
nearly identical to the BSD reference library's 'libvorbisfile',
including all the features familiar to users of vorbisfile. This API
is similar enough that the proper header file to include is named
'ivorbisfile.h' [included in the source build directory]. Lower level
libvorbis-style headers and structures are in 'ivorbiscodec.h'
[included in the source build directory]. A simple example program,
ivorbisfile_example.c, can be built with 'make ivorbisfile_example'.
[More documentation to come]
Monty
xiph.org
<p><p>1.1 Tremor/asm_arm.h
Index: asm_arm.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: arm7 and later wide math functions
********************************************************************/
#ifdef _ARM_ASSEM_
#ifndef _V_WIDE_MATH
#define _V_WIDE_MATH
tatic inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) {
int lo,hi;
asm volatile("smull %0,%1,%2,%3;\n"
: "=&r"(lo),"=&r"(hi)
: "%r"(x),"r"(y));
return(hi);
}
tatic inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) {
return MULT32(x,y)<<1;
}
tatic inline ogg_int32_t MULT30(ogg_int32_t x, ogg_int32_t y) {
return MULT32(x,y)<<2;
}
tatic inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) {
int lo,hi;
asm volatile("smull %0,%1,%2,%3;\n"
"mov %0,%0, lsr #15;\n"
"orr %1,%0,%1, lsl #17;\n"
: "=&r"(lo),"=&r"(hi)
: "%r"(x),"r"(y));
return(hi);
}
tatic inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) {
asm volatile("subs r0,%0,#32768;\n"
"movpl %0,#0x7f00;\n"
"orrpl %0,%0,#0xff;\n"
"adds r0,%0,#32768;\n"
"movmi %0,#0x8000;\n"
: "+r"(x)
:
: "r0","cc");
return(x);
}
#endif
#ifndef _V_LSP_MATH_ASM
#define _V_LSP_MATH_ASM
tatic inline void lsp_loop_asm(ogg_uint32_t *qip,ogg_uint32_t *pip,
ogg_int32_t *qexpp,
ogg_int32_t *ilsp,ogg_int32_t wi,
ogg_int32_t m){
ogg_uint32_t qi=*qip,pi=*pip;
ogg_int32_t qexp=*qexpp;
asm("mov r0,%3;"
"mov r1,%5,asr#1;"
"add r0,r0,r1,lsl#3;"
"1:"
"ldmdb r0!,{r1,r3};"
"subs r1,r1,%4;" //ilsp[j]-wi
"rsbmi r1,r1,#0;" //labs(ilsp[j]-wi)
"umull %0,r2,r1,%0;" //qi*=labs(ilsp[j]-wi)
"subs r1,r3,%4;" //ilsp[j+1]-wi
"rsbmi r1,r1,#0;" //labs(ilsp[j+1]-wi)
"umull %1,r3,r1,%1;" //pi*=labs(ilsp[j+1]-wi)
"cmn r2,r3;" // shift down 16?
"beq 0f;"
"add %2,%2,#16;"
"mov %0,%0,lsr #16;"
"orr %0,%0,r2,lsl #16;"
"mov %1,%1,lsr #16;"
"orr %1,%1,r3,lsl #16;"
"0:"
"cmp r0,%3;\n"
"bhi 1b;\n"
// odd filter assymetry
"ands r0,%5,#1;\n"
"beq 2f;\n"
"add r0,%3,%5,lsl#2;\n"
"ldr r1,[r0,#-4];\n"
"mov r0,#0x4000;\n"
"subs r1,r1,%4;\n" //ilsp[j]-wi
"rsbmi r1,r1,#0;\n" //labs(ilsp[j]-wi)
"umull %0,r2,r1,%0;\n" //qi*=labs(ilsp[j]-wi)
"umull %1,r3,r0,%1;\n" //pi*=labs(ilsp[j+1]-wi)
"cmn r2,r3;\n" // shift down 16?
"beq 2f;\n"
"add %2,%2,#16;\n"
"mov %0,%0,lsr #16;\n"
"orr %0,%0,r2,lsl #16;\n"
"mov %1,%1,lsr #16;\n"
"orr %1,%1,r3,lsl #16;\n"
//qi=(pi>>shift)*labs(ilsp[j]-wi);
//pi=(qi>>shift)*labs(ilsp[j+1]-wi);
//qexp+=shift;
//}
/* normalize to max 16 sig figs */
"2:"
"mov r2,#0;"
"orr r1,%0,%1;"
"tst r1,#0xff000000;"
"addne r2,r2,#8;"
"movne r1,r1,lsr #8;"
"tst r1,#0x00f00000;"
"addne r2,r2,#4;"
"movne r1,r1,lsr #4;"
"tst r1,#0x000c0000;"
"addne r2,r2,#2;"
"movne r1,r1,lsr #2;"
"tst r1,#0x00020000;"
"addne r2,r2,#1;"
"movne r1,r1,lsr #1;"
"tst r1,#0x00010000;"
"addne r2,r2,#1;"
"mov %0,%0,lsr r2;"
"mov %1,%1,lsr r2;"
"add %2,%2,r2;"
: "+r"(qi),"+r"(pi),"+r"(qexp)
: "r"(ilsp),"r"(wi),"r"(m)
: "r0","r1","r2","r3","cc");
*qip=qi;
*pip=pi;
*qexpp=qexp;
}
tatic inline void lsp_norm_asm(ogg_uint32_t *qip,ogg_int32_t *qexpp){
ogg_uint32_t qi=*qip;
ogg_int32_t qexp=*qexpp;
asm("tst %0,#0x0000ff00;"
"moveq %0,%0,lsl #8;"
"subeq %1,%1,#8;"
"tst %0,#0x0000f000;"
"moveq %0,%0,lsl #4;"
"subeq %1,%1,#4;"
"tst %0,#0x0000c000;"
"moveq %0,%0,lsl #2;"
"subeq %1,%1,#2;"
"tst %0,#0x00008000;"
"moveq %0,%0,lsl #1;"
"subeq %1,%1,#1;"
: "+r"(qi),"+r"(qexp)
:
: "cc");
*qip=qi;
*qexpp=qexp;
}
#endif
#endif
<p><p>1.1 Tremor/autogen.sh
Index: autogen.sh
===================================================================
#!/bin/sh
# Run this to set up the build system: configure, makefiles, etc.
# (based on the version in enlightenment's cvs)
package="vorbisidec"
rcdir=`dirname $0`
test -z "$srcdir" && srcdir=.
cd "$srcdir"
DIE=0
(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
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake 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
}
(libtool --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
#echo " autoheader"
#autoheader
echo " libtoolize --automake"
libtoolize --automake
echo " automake --add-missing $AUTOMAKE_FLAGS"
automake --add-missing $AUTOMAKE_FLAGS
echo " autoconf"
autoconf
$srcdir/configure "$@" && echo
<p><p>1.1 Tremor/backends.h
Index: backends.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: backend and mapping structures
********************************************************************/
/* 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.... */
/* Transform backend generic *************************************/
/* only mdct right now. Flesh it out more if we ever transcend mdct
in the transform domain */
/* Floor backend generic *****************************************/
typedef struct{
vorbis_info_floor *(*unpack)(vorbis_info *,oggpack_buffer *);
vorbis_look_floor *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
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,ogg_int32_t *);
} vorbis_func_floor;
typedef struct{
int order;
long rate;
long barkmap;
int ampbits;
int ampdB;
int numbooks; /* <= 16 */
int books[16];
} 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] */
<p> int mult; /* 1 2 3 or 4 */
int postlist[VIF_POSIT+2]; /* first two implicit */
} vorbis_info_floor1;
/* Residue backend generic *****************************************/
typedef struct{
vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
vorbis_look_residue *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
vorbis_info_residue *);
void (*free_info) (vorbis_info_residue *);
void (*free_look) (vorbis_look_residue *);
int (*inverse) (struct vorbis_block *,vorbis_look_residue *,
ogg_int32_t **,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 */
} vorbis_info_residue0;
/* Mapping backend generic *****************************************/
typedef struct{
vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
vorbis_look_mapping *(*look) (vorbis_dsp_state *,vorbis_info_mode *,
vorbis_info_mapping *);
void (*free_info) (vorbis_info_mapping *);
void (*free_look) (vorbis_look_mapping *);
int (*inverse) (struct vorbis_block *vb,vorbis_look_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 psy[2]; /* by blocktype; impulse/padding for short,
transition/normal for long */
int coupling_steps;
int coupling_mag[256];
int coupling_ang[256];
} vorbis_info_mapping0;
#endif
<p><p><p><p><p><p><p>1.1 Tremor/bitwise.c
Index: bitwise.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: packing variable sized words into an octet stream
********************************************************************/
/* We're 'LSb' endian; if we write a word but read individual bits,
then we'll read the lsb first */
#include <string.h>
#include <stdlib.h>
#include "ogg.h"
#define BUFFER_INCREMENT 256
tatic unsigned long mask[]=
{0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f,
0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff,
0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff,
0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff,
0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff,
0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff,
0x3fffffff,0x7fffffff,0xffffffff };
void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){
memset(b,0,sizeof(*b));
b->buffer=b->ptr=buf;
b->storage=bytes;
}
/* Read in bits without advancing the bitptr; bits <= 32 */
long oggpack_look(oggpack_buffer *b,int bits){
unsigned long ret;
unsigned long m=mask[bits];
bits+=b->endbit;
if(b->endbyte+4>=b->storage){
/* not the main path */
if(b->endbyte*8+bits>b->storage*8)return(-1);
}
ret=b->ptr[0]>>b->endbit;
if(bits>8){
ret|=b->ptr[1]<<(8-b->endbit);
if(bits>16){
ret|=b->ptr[2]<<(16-b->endbit);
if(bits>24){
ret|=b->ptr[3]<<(24-b->endbit);
if(bits>32 && b->endbit)
ret|=b->ptr[4]<<(32-b->endbit);
}
}
}
return(m&ret);
}
long oggpack_look1(oggpack_buffer *b){
if(b->endbyte>=b->storage)return(-1);
return((b->ptr[0]>>b->endbit)&1);
}
void oggpack_adv(oggpack_buffer *b,int bits){
bits+=b->endbit;
b->ptr+=bits/8;
b->endbyte+=bits/8;
b->endbit=bits&7;
}
void oggpack_adv1(oggpack_buffer *b){
if(++(b->endbit)>7){
b->endbit=0;
b->ptr++;
b->endbyte++;
}
}
/* bits <= 32 */
long oggpack_read(oggpack_buffer *b,int bits){
unsigned long ret;
unsigned long m=mask[bits];
bits+=b->endbit;
if(b->endbyte+4>=b->storage){
/* not the main path */
ret=-1UL;
if(b->endbyte*8+bits>b->storage*8)goto overflow;
}
ret=b->ptr[0]>>b->endbit;
if(bits>8){
ret|=b->ptr[1]<<(8-b->endbit);
if(bits>16){
ret|=b->ptr[2]<<(16-b->endbit);
if(bits>24){
ret|=b->ptr[3]<<(24-b->endbit);
if(bits>32 && b->endbit){
ret|=b->ptr[4]<<(32-b->endbit);
}
}
}
}
ret&=m;
overflow:
b->ptr+=bits/8;
b->endbyte+=bits/8;
b->endbit=bits&7;
return(ret);
}
long oggpack_read1(oggpack_buffer *b){
unsigned long ret;
if(b->endbyte>=b->storage){
/* not the main path */
ret=-1UL;
goto overflow;
}
ret=(b->ptr[0]>>b->endbit)&1;
overflow:
b->endbit++;
if(b->endbit>7){
b->endbit=0;
b->ptr++;
b->endbyte++;
}
return(ret);
}
#undef BUFFER_INCREMENT
<p><p>1.1 Tremor/block.c
Index: block.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: PCM data vector blocking, windowing and dis/reassembly
********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "codec_internal.h"
#include "window.h"
#include "registry.h"
#include "misc.h"
tatic int ilog(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
<p> |< 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){
memset(vb,0,sizeof(*vb));
vb->vd=v;
vb->localalloc=0;
vb->localstore=NULL;
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=(struct alloc_chain *)_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){
_vorbis_block_ripcord(vb);
if(vb->localstore)_ogg_free(vb->localstore);
memset(vb,0,sizeof(*vb));
return(0);
}
int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
int i;
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
backend_lookup_state *b=NULL;
memset(v,0,sizeof(*v));
b=(backend_lookup_state *)(v->backend_state=_ogg_calloc(1,sizeof(*b)));
v->vi=vi;
b->modebits=ilog(ci->modes);
/* Vorbis I uses only window type 0 */
b->window[0]=_vorbis_window(0,ci->blocksizes[0]/2);
b->window[1]=_vorbis_window(0,ci->blocksizes[1]/2);
/* finish the codebooks */
if(!ci->fullbooks){
ci->fullbooks=(codebook *)_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;
}
}
v->pcm_storage=ci->blocksizes[1];
v->pcm=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcm));
v->pcmret=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcmret));
for(i=0;i<vi->channels;i++)
v->pcm[i]=(ogg_int32_t *)_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 mapping/backend lookups */
b->mode=(vorbis_look_mapping **)_ogg_calloc(ci->modes,sizeof(*b->mode));
for(i=0;i<ci->modes;i++){
int mapnum=ci->mode_param[i]->mapping;
int maptype=ci->map_type[mapnum];
b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i],
ci->map_param[mapnum]);
}
v->pcm_returned=-1;
v->granulepos=-1;
v->sequence=-1;
return(0);
}
void vorbis_dsp_clear(vorbis_dsp_state *v){
int i;
if(v){
vorbis_info *vi=v->vi;
codec_setup_info *ci=(codec_setup_info *)(vi?vi->codec_setup:NULL);
backend_lookup_state *b=(backend_lookup_state *)v->backend_state;
if(v->pcm){
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);
}
/* free mode lookups; these are actually vorbis_look_mapping structs */
if(ci){
for(i=0;i<ci->modes;i++){
int mapnum=ci->mode_param[i]->mapping;
int maptype=ci->map_type[mapnum];
if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]);
}
}
if(b){
if(b->mode)_ogg_free(b->mode);
_ogg_free(b);
}
memset(v,0,sizeof(*v));
}
}
/* 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=(codec_setup_info *)vi->codec_setup;
int i,j;
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 != vb->sequence)v->granulepos=-1; /* out of sequence;
lose count */
v->sequence=vb->sequence;
{
int n=ci->blocksizes[v->W]/2;
int n0=ci->blocksizes[0]/2;
int n1=ci->blocksizes[1]/2;
int thisCenter;
int prevCenter;
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 */
/* overlap/add PCM */
for(j=0;j<vi->channels;j++){
/* the overlap/add section */
if(v->lW){
if(v->W){
/* large/large */
ogg_int32_t *pcm=v->pcm[j]+prevCenter;
ogg_int32_t *p=vb->pcm[j];
for(i=0;i<n1;i++)
pcm[i]+=p[i];
}else{
/* large/small */
ogg_int32_t *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
ogg_int32_t *p=vb->pcm[j];
for(i=0;i<n0;i++)
pcm[i]+=p[i];
}
}else{
if(v->W){
/* small/large */
ogg_int32_t *pcm=v->pcm[j]+prevCenter;
ogg_int32_t *p=vb->pcm[j]+n1/2-n0/2;
for(i=0;i<n0;i++)
pcm[i]+=p[i];
for(;i<n1/2+n0/2;i++)
pcm[i]=p[i];
}else{
/* small/small */
ogg_int32_t *pcm=v->pcm[j]+prevCenter;
ogg_int32_t *p=vb->pcm[j];
for(i=0;i<n0;i++)
pcm[i]+=p[i];
}
}
/* the copy section */
{
ogg_int32_t *pcm=v->pcm[j]+thisCenter;
ogg_int32_t *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;
}
/* 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(v->granulepos==-1)
if(vb->granulepos==-1){
v->granulepos=0;
}else{
v->granulepos=vb->granulepos;
}
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(vb->eofflag){
/* partial last frame. Strip the extra samples off */
v->pcm_current-=extra;
}else if(vb->sequence == 1){
/* ^^^ argh, this can be 1 from seeking! */
<p> /* partial first frame. Discard extra leading samples */
v->pcm_returned+=extra;
if(v->pcm_returned>v->pcm_current)
v->pcm_returned=v->pcm_current;
}
}/* 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,ogg_int32_t ***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 bytes){
if(bytes && v->pcm_returned+bytes>v->pcm_current)return(OV_EINVAL);
v->pcm_returned+=bytes;
return(0);
}
<p><p><p>1.1 Tremor/codebook.c
Index: codebook.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: basic codebook pack/unpack/code/decode operations
********************************************************************/
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "codebook.h"
#include "misc.h"
#include "os.h"
/* 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));
/* 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=(long *)_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=(long *)_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=(long *)_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);
}
/* 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. */
tatic 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);
}
tatic inline 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){
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(packed_entry);
}
/* returns 0 on OK or -1 on eof *************************************/
long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){
int step=n/book->dim;
long *entry = (long *)alloca(sizeof(*entry)*step);
ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step);
int i,j,o;
int shift=point-book->binarypoint;
if(shift>=0){
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]>>shift;
}else{
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]<<-shift;
}
return(0);
}
long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){
int i,j,entry;
ogg_int32_t *t;
int shift=point-book->binarypoint;
if(shift>=0){
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++]>>shift;
}
}else{
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++]<<-shift;
}
}
return(0);
}
long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){
int i,j,entry;
ogg_int32_t *t;
int shift=point-book->binarypoint;
if(shift>=0){
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++]>>shift;
}
}
}else{
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++]<<-shift;
}
}
}
return(0);
}
long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,\
long offset,int ch,
oggpack_buffer *b,int n,int point){
long i,j,entry;
int chptr=0;
int shift=point-book->binarypoint;
if(shift>=0){
for(i=offset;i<offset+n;){
entry = decode_packed_entry_number(book,b);
if(entry==-1)return(-1);
{
const ogg_int32_t *t = book->valuelist+entry*book->dim;
for (j=0;j<book->dim;j++){
a[chptr++][i]+=t[j]>>shift;
if(chptr==ch){
chptr=0;
i++;
}
}
}
}
}else{
for(i=offset;i<offset+n;){
entry = decode_packed_entry_number(book,b);
if(entry==-1)return(-1);
{
const ogg_int32_t *t = book->valuelist+entry*book->dim;
for (j=0;j<book->dim;j++){
a[chptr++][i]+=t[j]<<-shift;
if(chptr==ch){
chptr=0;
i++;
}
}
}
}
}
return(0);
}
<p><p>1.1 Tremor/codebook.h
Index: codebook.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: basic shared codebook operations
********************************************************************/
#ifndef _V_CODEBOOK_H_
#define _V_CODEBOOK_H_
#include "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
*/
} static_codebook;
typedef struct codebook{
long dim; /* codebook dimensions (elements per vector) */
long entries; /* codebook entries */
long used_entries; /* populated codebook entries */
/* the below are ordered by bitreversed codeword and only used
entries are populated */
int binarypoint;
ogg_int32_t *valuelist; /* list of dim*entries actual entry values */
ogg_uint32_t *codelist; /* list of bitstream codewords for each entry */
int *dec_index;
char *dec_codelengths;
ogg_uint32_t *dec_firsttable;
int dec_firsttablen;
int dec_maxlength;
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 */
} codebook;
extern void vorbis_staticbook_clear(static_codebook *b);
extern void vorbis_staticbook_destroy(static_codebook *b);
extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
extern void vorbis_book_clear(codebook *b);
extern long _book_maptype1_quantvals(const static_codebook *b);
extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
extern long vorbis_book_decodevs_add(codebook *book, ogg_int32_t *a,
oggpack_buffer *b,int n,int point);
extern long vorbis_book_decodev_set(codebook *book, ogg_int32_t *a,
oggpack_buffer *b,int n,int point);
extern long vorbis_book_decodev_add(codebook *book, ogg_int32_t *a,
oggpack_buffer *b,int n,int point);
extern long vorbis_book_decodevv_add(codebook *book, ogg_int32_t **a,
long off,int ch,
oggpack_buffer *b,int n,int point);
extern int _ilog(unsigned int v);
<p>#endif
<p><p>1.1 Tremor/codec_internal.h
Index: codec_internal.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: libvorbis codec headers
********************************************************************/
#ifndef _V_CODECI_H_
#define _V_CODECI_H_
#include "codebook.h"
typedef void vorbis_look_mapping;
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;
typedef struct backend_lookup_state {
/* local lookup storage */
ogg_int32_t *window[2];
/* backend lookups are tied to the mode, not the backend or naked mapping */
int modebits;
vorbis_look_mapping **mode;
} backend_lookup_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).
*********************************************************************/
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 times;
int floors;
int residues;
int books;
vorbis_info_mode *mode_param[64];
int map_type[64];
vorbis_info_mapping *map_param[64];
int time_type[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;
int passlimit[32]; /* iteration limit per couple/quant pass */
int coupling_passes;
} codec_setup_info;
#endif
<p><p>1.1 Tremor/config_types.h
Index: config_types.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: #ifdef jail to whip a few platforms into the UNIX ideal.
********************************************************************/
#ifndef _OS_CVTYPES_H
#define _OS_CVTYPES_H
typedef long long ogg_int64_t;
typedef int ogg_int32_t;
typedef unsigned int ogg_uint32_t;
typedef short ogg_int16_t;
#endif
<p><p>1.1 Tremor/floor0.c
Index: floor0.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: floor backend 0 implementation
********************************************************************/
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "codec_internal.h"
#include "registry.h"
#include "codebook.h"
#include "misc.h"
#include "os.h"
#define LSP_FRACBITS 14
typedef struct {
long n;
int ln;
int m;
int *linearmap;
vorbis_info_floor0 *vi;
ogg_int32_t *lsp_look;
} vorbis_look_floor0;
/*************** LSP decode ********************/
#include "lsp_lookup.h"
/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
16.16 format
returns in m.8 format */
tatic long ADJUST_SQRT2[2]={8192,5792};
static inline ogg_int32_t vorbis_invsqlook_i(long a,long e){
long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1);
long d=a&INVSQ_LOOKUP_I_MASK; /* 0.10 */
long val=INVSQ_LOOKUP_I[i]- /* 1.16 */
((INVSQ_LOOKUP_IDel[i]*d)>>INVSQ_LOOKUP_I_SHIFT); /* result 1.16 */
val*=ADJUST_SQRT2[e&1];
e=(e>>1)+21;
return(val>>e);
}
/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
/* a is in n.12 format */
static inline ogg_int32_t vorbis_fromdBlook_i(long a){
int i=(-a)>>(12-FROMdB2_SHIFT);
if(i<0) return 0x7fffffff;
if(i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))return 0;
return 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 */
static inline ogg_int32_t 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);
}
/* interpolated lookup based cos function */
/* a is in 0.16 format, where 0==0, 2^^16==PI, return .LSP_FRACBITS */
static inline ogg_int32_t vorbis_coslook2_i(long a){
a=a&0x1ffff;
if(a>0x10000)a=0x20000-a;
{
int i=a>>COS_LOOKUP_I_SHIFT;
int d=a&COS_LOOKUP_I_MASK;
a=((COS_LOOKUP_I[i]<<COS_LOOKUP_I_SHIFT)-
d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
(COS_LOOKUP_I_SHIFT-LSP_FRACBITS+14);
}
return(a);
}
tatic int barklook[28]={
0,100,200,301, 405,516,635,766,
912,1077,1263,1476, 1720,2003,2333,2721,
3184,3742,4428,5285, 6376,7791,9662,12181,
15624,20397,27087,36554
};
/* used in init only; interpolate the long way */
static inline ogg_int32_t toBARK(int n){
int i;
for(i=0;i<27;i++)
if(n>=barklook[i] && n<barklook[i+1])break;
if(i==27){
return 27<<15;
}else{
int gap=barklook[i+1]-barklook[i];
int del=n-barklook[i];
return((i<<15)+((del<<15)/gap));
}
}
tatic 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,
};
tatic 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,
};
tatic int MLOOP_3[8]={0,1,2,2,3,3,3,3};
void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
ogg_int32_t *lsp,int m,
ogg_int32_t amp,
ogg_int32_t ampoffset,
ogg_int32_t *icos){
/* 0 <= m < 256 */
/* set up for using all int later */
int i;
int ampoffseti=ampoffset*4096;
int ampi=amp;
ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp));
ogg_int32_t invsq=0x517cc2;
/* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/
for(i=0;i<m;i++){
ogg_int32_t val=MULT32(lsp[i],invsq);
/* safeguard against a malicious stream */
if(val<0 || (val>>COS_LOOKUP_I_SHIFT)>=COS_LOOKUP_I_SZ){
memset(curve,0,sizeof(*curve)*n);
return;
}
ilsp[i]=vorbis_coslook_i(val);
}
i=0;
while(i<n){
int j,k=map[i];
ogg_uint32_t pi=46341; /* 2**-.5 in 0.16 */
ogg_uint32_t qi=46341;
ogg_int32_t qexp=0,shift;
ogg_int32_t wi=icos[k];
#ifdef _V_LSP_MATH_ASM
lsp_loop_asm(&qi,&pi,&qexp,ilsp,wi,m);
pi=((pi*pi)>>16);
qi=((qi*qi)>>16);
if(m&1){
qexp= qexp*2-28*((m+1)>>1)+m;
pi*=(1<<14)-((wi*wi)>>14);
qi+=pi>>14;
}else{
qexp= qexp*2-13*m;
pi*=(1<<14)-wi;
qi*=(1<<14)+wi;
qi=(qi+pi)>>14;
}
if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
qi>>=1; qexp++;
}else
lsp_norm_asm(&qi,&qexp);
#else
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--;
}
#endif
amp=vorbis_fromdBlook_i(ampi* /* n.4 */
vorbis_invsqlook_i(qi,qexp)-
/* m.8, m+n<=8 */
ampoffseti); /* 8.12[0] */
curve[i]= MULT31_SHIFT15(curve[i],amp);
while(map[++i]==k) curve[i]= MULT31_SHIFT15(curve[i],amp);
}
}
/*************** vorbis decode glue ************/
tatic 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);
}
}
tatic void floor0_free_look(vorbis_look_floor *i){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
if(look){
if(look->linearmap)_ogg_free(look->linearmap);
if(look->lsp_look)_ogg_free(look->lsp_look);
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
tatic vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
int j;
vorbis_info_floor0 *info=(vorbis_info_floor0 *)_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 */
tatic vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
vorbis_info_floor *i){
int j;
ogg_int32_t scale;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
vorbis_look_floor0 *look=(vorbis_look_floor0 *)_ogg_calloc(1,sizeof(*look));
look->m=info->order;
look->n=ci->blocksizes[mi->blockflag]/2;
look->ln=info->barkmap;
look->vi=info;
/* 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=(int *)_ogg_malloc((look->n+1)*sizeof(*look->linearmap));
for(j=0;j<look->n;j++){
int val=(look->ln*
((toBARK(info->rate/2*j/look->n)<<11)/toBARK(info->rate/2)))>>11;
if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
look->linearmap[j]=val;
}
look->linearmap[j]=-1;
look->lsp_look=(ogg_int32_t *)_ogg_malloc(look->ln*sizeof(*look->lsp_look));
for(j=0;j<look->ln;j++)
look->lsp_look[j]=vorbis_coslook2_i(0x10000*j/look->ln);
return look;
}
tatic 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;
int amp=((ampraw*info->ampdB)<<4)/maxval;
int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks));
if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
codec_setup_info *ci=(codec_setup_info *)vb->vd->vi->codec_setup;
codebook *b=ci->fullbooks+info->books[booknum];
ogg_int32_t last=0;
ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1));
for(j=0;j<look->m;j+=b->dim)
if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim,-24)==-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);
}
tatic int floor0_inverse2(vorbis_block *vb,vorbis_look_floor *i,
void *memo,ogg_int32_t *out){
vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
vorbis_info_floor0 *info=look->vi;
if(memo){
ogg_int32_t *lsp=(ogg_int32_t *)memo;
ogg_int32_t amp=lsp[look->m];
/* take the coefficients back to a spectral envelope curve */
vorbis_lsp_to_curve(out,look->linearmap,look->n,look->ln,
lsp,look->m,amp,info->ampdB,look->lsp_look);
return(1);
}
memset(out,0,sizeof(*out)*look->n);
return(0);
}
/* export hooks */
vorbis_func_floor floor0_exportbundle={
&floor0_unpack,&floor0_look,&floor0_free_info,
&floor0_free_look,&floor0_inverse1,&floor0_inverse2
};
<p><p><p><p>1.1 Tremor/floor1.c
Index: floor1.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: floor backend 1 implementation
********************************************************************/
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "codec_internal.h"
#include "registry.h"
#include "codebook.h"
#include "misc.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;
} vorbis_look_floor1;
/***********************************************/
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);
}
}
tatic void floor1_free_look(vorbis_look_floor *i){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)i;
if(look){
memset(look,0,sizeof(*look));
_ogg_free(look);
}
}
tatic int ilog(unsigned int v){
int ret=0;
while(v){
ret++;
v>>=1;
}
return(ret);
}
tatic vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
int j,k,count=0,maxclass=-1,rangebits;
vorbis_info_floor1 *info=(vorbis_info_floor1 *)_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);
}
tatic int icomp(const void *a,const void *b){
return(**(int **)a-**(int **)b);
}
tatic vorbis_look_floor *floor1_look(vorbis_dsp_state *vd,vorbis_info_mode *mi,
vorbis_info_floor *in){
int *sortpointer[VIF_POSIT+2];
vorbis_info_floor1 *info=(vorbis_info_floor1 *)in;
vorbis_look_floor1 *look=(vorbis_look_floor1 *)_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);
}
tatic 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);
}
}
tatic ogg_int32_t FLOOR_fromdB_LOOKUP[256]={
0x000000e5, 0x000000f4, 0x00000103, 0x00000114,
0x00000126, 0x00000139, 0x0000014e, 0x00000163,
0x0000017a, 0x00000193, 0x000001ad, 0x000001c9,
0x000001e7, 0x00000206, 0x00000228, 0x0000024c,
0x00000272, 0x0000029b, 0x000002c6, 0x000002f4,
0x00000326, 0x0000035a, 0x00000392, 0x000003cd,
0x0000040c, 0x00000450, 0x00000497, 0x000004e4,
0x00000535, 0x0000058c, 0x000005e8, 0x0000064a,
0x000006b3, 0x00000722, 0x00000799, 0x00000818,
0x0000089e, 0x0000092e, 0x000009c6, 0x00000a69,
0x00000b16, 0x00000bcf, 0x00000c93, 0x00000d64,
0x00000e43, 0x00000f30, 0x0000102d, 0x0000113a,
0x00001258, 0x0000138a, 0x000014cf, 0x00001629,
0x0000179a, 0x00001922, 0x00001ac4, 0x00001c82,
0x00001e5c, 0x00002055, 0x0000226f, 0x000024ac,
0x0000270e, 0x00002997, 0x00002c4b, 0x00002f2c,
0x0000323d, 0x00003581, 0x000038fb, 0x00003caf,
0x000040a0, 0x000044d3, 0x0000494c, 0x00004e10,
0x00005323, 0x0000588a, 0x00005e4b, 0x0000646b,
0x00006af2, 0x000071e5, 0x0000794c, 0x0000812e,
0x00008993, 0x00009283, 0x00009c09, 0x0000a62d,
0x0000b0f9, 0x0000bc79, 0x0000c8b9, 0x0000d5c4,
0x0000e3a9, 0x0000f274, 0x00010235, 0x000112fd,
0x000124dc, 0x000137e4, 0x00014c29, 0x000161bf,
0x000178bc, 0x00019137, 0x0001ab4a, 0x0001c70e,
0x0001e4a1, 0x0002041f, 0x000225aa, 0x00024962,
0x00026f6d, 0x000297f0, 0x0002c316, 0x0002f109,
0x000321f9, 0x00035616, 0x00038d97, 0x0003c8b4,
0x000407a7, 0x00044ab2, 0x00049218, 0x0004de23,
0x00052f1e, 0x0005855c, 0x0005e135, 0x00064306,
0x0006ab33, 0x00071a24, 0x0007904b, 0x00080e20,
0x00089422, 0x000922da, 0x0009bad8, 0x000a5cb6,
0x000b091a, 0x000bc0b1, 0x000c8436, 0x000d5471,
0x000e3233, 0x000f1e5f, 0x001019e4, 0x001125c1,
0x00124306, 0x001372d5, 0x0014b663, 0x00160ef7,
0x00177df0, 0x001904c1, 0x001aa4f9, 0x001c603d,
0x001e384f, 0x00202f0f, 0x0022467a, 0x002480b1,
0x0026dff7, 0x002966b3, 0x002c1776, 0x002ef4fc,
0x0032022d, 0x00354222, 0x0038b828, 0x003c67c2,
0x004054ae, 0x004482e8, 0x0048f6af, 0x004db488,
0x0052c142, 0x005821ff, 0x005ddc33, 0x0063f5b0,
0x006a74a7, 0x00715faf, 0x0078bdce, 0x0080967f,
0x0088f1ba, 0x0091d7f9, 0x009b5247, 0x00a56a41,
0x00b02a27, 0x00bb9ce2, 0x00c7ce12, 0x00d4ca17,
0x00e29e20, 0x00f15835, 0x0101074b, 0x0111bb4e,
0x01238531, 0x01367704, 0x014aa402, 0x016020a7,
0x017702c3, 0x018f6190, 0x01a955cb, 0x01c4f9cf,
0x01e269a8, 0x0201c33b, 0x0223265a, 0x0246b4ea,
0x026c9302, 0x0294e716, 0x02bfda13, 0x02ed9793,
0x031e4e09, 0x03522ee4, 0x03896ed0, 0x03c445e2,
0x0402efd6, 0x0445ac4b, 0x048cbefc, 0x04d87013,
0x05290c67, 0x057ee5ca, 0x05da5364, 0x063bb204,
0x06a36485, 0x0711d42b, 0x0787710e, 0x0804b299,
0x088a17ef, 0x0918287e, 0x09af747c, 0x0a50957e,
0x0afc2f19, 0x0bb2ef7f, 0x0c759034, 0x0d44d6ca,
0x0e2195bc, 0x0f0cad0d, 0x10070b62, 0x1111aeea,
0x122da66c, 0x135c120f, 0x149e24d9, 0x15f525b1,
0x176270e3, 0x18e7794b, 0x1a85c9ae, 0x1c3f06d1,
0x1e14f07d, 0x200963d7, 0x221e5ccd, 0x2455f870,
0x26b2770b, 0x29363e2b, 0x2be3db5c, 0x2ebe06b6,
0x31c7a55b, 0x3503ccd4, 0x3875c5aa, 0x3c210f44,
0x4009632b, 0x4432b8cf, 0x48a149bc, 0x4d59959e,
0x52606733, 0x57bad899, 0x5d6e593a, 0x6380b298,
0x69f80e9a, 0x70dafda8, 0x78307d76, 0x7fffffff,
};
tatic void render_line(int x0,int x1,int y0,int y1,ogg_int32_t *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]= MULT31_SHIFT15(d[x],FLOOR_fromdB_LOOKUP[y]);
while(++x<x1){
err=err+ady;
if(err>=adx){
err-=adx;
y+=sy;
}else{
y+=base;
}
d[x]= MULT31_SHIFT15(d[x],FLOOR_fromdB_LOOKUP[y]);
}
}
tatic 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=(codec_setup_info *)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=(int *)_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 */
/* partition by partition */
for(i=0,j=2;i<info->partitions;i++){
int classv=info->partitionclass[i];
int cdim=info->class_dim[classv];
int csubbits=info->class_subs[classv];
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[classv],&vb->opb);
if(cval==-1)goto eop;
}
for(k=0;k<cdim;k++){
int book=info->class_subbook[classv][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);
}
tatic int floor1_inverse2(vorbis_block *vb,vorbis_look_floor *in,void *memo,
ogg_int32_t *out){
vorbis_look_floor1 *look=(vorbis_look_floor1 *)in;
vorbis_info_floor1 *info=look->vi;
codec_setup_info *ci=(codec_setup_info *)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(lx,hx,ly,hy,out);
lx=hx;
ly=hy;
}
}
for(j=hx;j<n;j++)out[j]*=ly; /* be certain */
return(1);
}
memset(out,0,sizeof(*out)*n);
return(0);
}
/* export hooks */
vorbis_func_floor floor1_exportbundle={
&floor1_unpack,&floor1_look,&floor1_free_info,
&floor1_free_look,&floor1_inverse1,&floor1_inverse2
};
<p><p><p>1.1 Tremor/framing.c
Index: framing.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: code raw [Vorbis] packets into framed OggSquish stream and
decode Ogg streams back into raw packets
note: The CRC code is directly derived from public domain code by
Ross Williams (ross at guest.adelaide.edu.au). See docs/framing.html
for details.
********************************************************************/
#include <stdlib.h>
#include <string.h>
#include "ogg.h"
/* A complete description of Ogg framing exists in docs/framing.html */
int ogg_page_version(ogg_page *og){
return((int)(og->header[4]));
}
int ogg_page_continued(ogg_page *og){
return((int)(og->header[5]&0x01));
}
int ogg_page_bos(ogg_page *og){
return((int)(og->header[5]&0x02));
}
int ogg_page_eos(ogg_page *og){
return((int)(og->header[5]&0x04));
}
ogg_int64_t ogg_page_granulepos(ogg_page *og){
unsigned char *page=og->header;
ogg_int64_t granulepos=page[13]&(0xff);
granulepos= (granulepos<<8)|(page[12]&0xff);
granulepos= (granulepos<<8)|(page[11]&0xff);
granulepos= (granulepos<<8)|(page[10]&0xff);
granulepos= (granulepos<<8)|(page[9]&0xff);
granulepos= (granulepos<<8)|(page[8]&0xff);
granulepos= (granulepos<<8)|(page[7]&0xff);
granulepos= (granulepos<<8)|(page[6]&0xff);
return(granulepos);
}
int ogg_page_serialno(ogg_page *og){
return(og->header[14] |
(og->header[15]<<8) |
(og->header[16]<<16) |
(og->header[17]<<24));
}
long ogg_page_pageno(ogg_page *og){
return(og->header[18] |
(og->header[19]<<8) |
(og->header[20]<<16) |
(og->header[21]<<24));
}
<p><p>/* returns the number of packets that are completed on this page (if
the leading packet is begun on a previous page, but ends on this
page, it's counted */
/* NOTE:
If a page consists of a packet begun on a previous page, and a new
packet begun (but not completed) on this page, the return will be:
ogg_page_packets(page) ==1,
ogg_page_continued(page) !=0
If a page happens to be a single packet that was begun on a
previous page, and spans to the next page (in the case of a three or
more page packet), the return will be:
ogg_page_packets(page) ==0,
ogg_page_continued(page) !=0
*/
int ogg_page_packets(ogg_page *og){
int i,n=og->header[26],count=0;
for(i=0;i<n;i++)
if(og->header[27+i]<255)count++;
return(count);
}
tatic ogg_uint32_t crc_lookup[256]={
0x00000000,0x04c11db7,0x09823b6e,0x0d4326d9,
0x130476dc,0x17c56b6b,0x1a864db2,0x1e475005,
0x2608edb8,0x22c9f00f,0x2f8ad6d6,0x2b4bcb61,
0x350c9b64,0x31cd86d3,0x3c8ea00a,0x384fbdbd,
0x4c11db70,0x48d0c6c7,0x4593e01e,0x4152fda9,
0x5f15adac,0x5bd4b01b,0x569796c2,0x52568b75,
0x6a1936c8,0x6ed82b7f,0x639b0da6,0x675a1011,
0x791d4014,0x7ddc5da3,0x709f7b7a,0x745e66cd,
0x9823b6e0,0x9ce2ab57,0x91a18d8e,0x95609039,
0x8b27c03c,0x8fe6dd8b,0x82a5fb52,0x8664e6e5,
0xbe2b5b58,0xbaea46ef,0xb7a96036,0xb3687d81,
0xad2f2d84,0xa9ee3033,0xa4ad16ea,0xa06c0b5d,
0xd4326d90,0xd0f37027,0xddb056fe,0xd9714b49,
0xc7361b4c,0xc3f706fb,0xceb42022,0xca753d95,
0xf23a8028,0xf6fb9d9f,0xfbb8bb46,0xff79a6f1,
0xe13ef6f4,0xe5ffeb43,0xe8bccd9a,0xec7dd02d,
0x34867077,0x30476dc0,0x3d044b19,0x39c556ae,
0x278206ab,0x23431b1c,0x2e003dc5,0x2ac12072,
0x128e9dcf,0x164f8078,0x1b0ca6a1,0x1fcdbb16,
0x018aeb13,0x054bf6a4,0x0808d07d,0x0cc9cdca,
0x7897ab07,0x7c56b6b0,0x71159069,0x75d48dde,
0x6b93dddb,0x6f52c06c,0x6211e6b5,0x66d0fb02,
0x5e9f46bf,0x5a5e5b08,0x571d7dd1,0x53dc6066,
0x4d9b3063,0x495a2dd4,0x44190b0d,0x40d816ba,
0xaca5c697,0xa864db20,0xa527fdf9,0xa1e6e04e,
0xbfa1b04b,0xbb60adfc,0xb6238b25,0xb2e29692,
0x8aad2b2f,0x8e6c3698,0x832f1041,0x87ee0df6,
0x99a95df3,0x9d684044,0x902b669d,0x94ea7b2a,
0xe0b41de7,0xe4750050,0xe9362689,0xedf73b3e,
0xf3b06b3b,0xf771768c,0xfa325055,0xfef34de2,
0xc6bcf05f,0xc27dede8,0xcf3ecb31,0xcbffd686,
0xd5b88683,0xd1799b34,0xdc3abded,0xd8fba05a,
0x690ce0ee,0x6dcdfd59,0x608edb80,0x644fc637,
0x7a089632,0x7ec98b85,0x738aad5c,0x774bb0eb,
0x4f040d56,0x4bc510e1,0x46863638,0x42472b8f,
0x5c007b8a,0x58c1663d,0x558240e4,0x51435d53,
0x251d3b9e,0x21dc2629,0x2c9f00f0,0x285e1d47,
0x36194d42,0x32d850f5,0x3f9b762c,0x3b5a6b9b,
0x0315d626,0x07d4cb91,0x0a97ed48,0x0e56f0ff,
0x1011a0fa,0x14d0bd4d,0x19939b94,0x1d528623,
0xf12f560e,0xf5ee4bb9,0xf8ad6d60,0xfc6c70d7,
0xe22b20d2,0xe6ea3d65,0xeba91bbc,0xef68060b,
0xd727bbb6,0xd3e6a601,0xdea580d8,0xda649d6f,
0xc423cd6a,0xc0e2d0dd,0xcda1f604,0xc960ebb3,
0xbd3e8d7e,0xb9ff90c9,0xb4bcb610,0xb07daba7,
0xae3afba2,0xaafbe615,0xa7b8c0cc,0xa379dd7b,
0x9b3660c6,0x9ff77d71,0x92b45ba8,0x9675461f,
0x8832161a,0x8cf30bad,0x81b02d74,0x857130c3,
0x5d8a9099,0x594b8d2e,0x5408abf7,0x50c9b640,
0x4e8ee645,0x4a4ffbf2,0x470cdd2b,0x43cdc09c,
0x7b827d21,0x7f436096,0x7200464f,0x76c15bf8,
0x68860bfd,0x6c47164a,0x61043093,0x65c52d24,
0x119b4be9,0x155a565e,0x18197087,0x1cd86d30,
0x029f3d35,0x065e2082,0x0b1d065b,0x0fdc1bec,
0x3793a651,0x3352bbe6,0x3e119d3f,0x3ad08088,
0x2497d08d,0x2056cd3a,0x2d15ebe3,0x29d4f654,
0xc5a92679,0xc1683bce,0xcc2b1d17,0xc8ea00a0,
0xd6ad50a5,0xd26c4d12,0xdf2f6bcb,0xdbee767c,
0xe3a1cbc1,0xe760d676,0xea23f0af,0xeee2ed18,
0xf0a5bd1d,0xf464a0aa,0xf9278673,0xfde69bc4,
0x89b8fd09,0x8d79e0be,0x803ac667,0x84fbdbd0,
0x9abc8bd5,0x9e7d9662,0x933eb0bb,0x97ffad0c,
0xafb010b1,0xab710d06,0xa6322bdf,0xa2f33668,
0xbcb4666d,0xb8757bda,0xb5365d03,0xb1f740b4};
/* init the encode/decode logical stream state */
int ogg_stream_init(ogg_stream_state *os,int serialno){
if(os){
memset(os,0,sizeof(*os));
os->body_storage=16*1024;
os->body_data=(unsigned char *)_ogg_malloc(os->body_storage*sizeof(*os->body_data));
os->lacing_storage=1024;
os->lacing_vals=(int *)_ogg_malloc(os->lacing_storage*sizeof(*os->lacing_vals));
os->granule_vals=(ogg_int64_t *)_ogg_malloc(os->lacing_storage*sizeof(*os->granule_vals));
os->serialno=serialno;
return(0);
}
return(-1);
}
/* _clear does not free os, only the non-flat storage within */
int ogg_stream_clear(ogg_stream_state *os){
if(os){
if(os->body_data)_ogg_free(os->body_data);
if(os->lacing_vals)_ogg_free(os->lacing_vals);
if(os->granule_vals)_ogg_free(os->granule_vals);
memset(os,0,sizeof(*os));
}
return(0);
}
int ogg_stream_destroy(ogg_stream_state *os){
if(os){
ogg_stream_clear(os);
_ogg_free(os);
}
return(0);
}
/* Helpers for ogg_stream_encode; this keeps the structure and
what's happening fairly clear */
tatic void _os_body_expand(ogg_stream_state *os,int needed){
if(os->body_storage<=os->body_fill+needed){
os->body_storage+=(needed+1024);
os->body_data=(unsigned char *)_ogg_realloc(os->body_data,os->body_storage*sizeof(*os->body_data));
}
}
tatic void _os_lacing_expand(ogg_stream_state *os,int needed){
if(os->lacing_storage<=os->lacing_fill+needed){
os->lacing_storage+=(needed+32);
os->lacing_vals=(int *)_ogg_realloc(os->lacing_vals,os->lacing_storage*sizeof(*os->lacing_vals));
os->granule_vals=(ogg_int64_t *)_ogg_realloc(os->granule_vals,os->lacing_storage*sizeof(*os->granule_vals));
}
}
/* checksum the page */
/* Direct table CRC; note that this will be faster in the future if we
perform the checksum silmultaneously with other copies */
void ogg_page_checksum_set(ogg_page *og){
if(og){
ogg_uint32_t crc_reg=0;
int i;
/* safety; needed for API behavior, but not framing code */
og->header[22]=0;
og->header[23]=0;
og->header[24]=0;
og->header[25]=0;
for(i=0;i<og->header_len;i++)
crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->header[i]];
for(i=0;i<og->body_len;i++)
crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->body[i]];
og->header[22]=crc_reg&0xff;
og->header[23]=(crc_reg>>8)&0xff;
og->header[24]=(crc_reg>>16)&0xff;
og->header[25]=(crc_reg>>24)&0xff;
}
}
/* DECODING PRIMITIVES: packet streaming layer **********************/
/* This has two layers to place more of the multi-serialno and paging
control in the application's hands. First, we expose a data buffer
using ogg_sync_buffer(). The app either copies into the
buffer, or passes it directly to read(), etc. We then call
ogg_sync_wrote() to tell how many bytes we just added.
Pages are returned (pointers into the buffer in ogg_sync_state)
by ogg_sync_pageout(). The page is then submitted to
ogg_stream_pagein() along with the appropriate
ogg_stream_state* (ie, matching serialno). We then get raw
packets out calling ogg_stream_packetout() with a
ogg_stream_state. See the 'frame-prog.txt' docs for details and
example code. */
/* initialize the struct to a known state */
int ogg_sync_init(ogg_sync_state *oy){
if(oy){
memset(oy,0,sizeof(*oy));
}
return(0);
}
/* clear non-flat storage within */
int ogg_sync_clear(ogg_sync_state *oy){
if(oy){
if(oy->data)_ogg_free(oy->data);
ogg_sync_init(oy);
}
return(0);
}
int ogg_sync_destroy(ogg_sync_state *oy){
if(oy){
ogg_sync_clear(oy);
_ogg_free(oy);
}
return(0);
}
char *ogg_sync_buffer(ogg_sync_state *oy, long size){
/* first, clear out any space that has been previously returned */
if(oy->returned>8192){
oy->fill-=oy->returned;
if(oy->fill>0)
memmove(oy->data,oy->data+oy->returned,oy->fill);
oy->returned=0;
}
if(size>oy->storage-oy->fill){
/* We need to extend the internal buffer */
long newsize=size+oy->fill+4096; /* an extra page to be nice */
if(oy->data)
oy->data=(unsigned char *)_ogg_realloc(oy->data,newsize);
else
oy->data=(unsigned char *)_ogg_malloc(newsize);
oy->storage=newsize;
}
/* expose a segment at least as large as requested at the fill mark */
return((char *)oy->data+oy->fill);
}
int ogg_sync_wrote(ogg_sync_state *oy, long bytes){
if(oy->fill+bytes>oy->storage)return(-1);
oy->fill+=bytes;
return(0);
}
/* sync the stream. This is meant to be useful for finding page
boundaries.
return values for this:
-n) skipped n bytes
0) page not ready; more data (no bytes skipped)
n) page synced at current location; page length n bytes
*/
long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){
unsigned char *page=oy->data+oy->returned;
unsigned char *next;
long bytes=oy->fill-oy->returned;
if(oy->headerbytes==0){
int headerbytes,i;
if(bytes<27)return(0); /* not enough for a header */
/* verify capture pattern */
if(memcmp(page,"OggS",4))goto sync_fail;
headerbytes=page[26]+27;
if(bytes<headerbytes)return(0); /* not enough for header + seg table */
/* count up body length in the segment table */
for(i=0;i<page[26];i++)
oy->bodybytes+=page[27+i];
oy->headerbytes=headerbytes;
}
if(oy->bodybytes+oy->headerbytes>bytes)return(0);
/* The whole test page is buffered. Verify the checksum */
{
/* Grab the checksum bytes, set the header field to zero */
char chksum[4];
ogg_page log;
memcpy(chksum,page+22,4);
memset(page+22,0,4);
/* set up a temp page struct and recompute the checksum */
log.header=page;
log.header_len=oy->headerbytes;
log.body=page+oy->headerbytes;
log.body_len=oy->bodybytes;
ogg_page_checksum_set(&log);
/* Compare */
if(memcmp(chksum,page+22,4)){
/* D'oh. Mismatch! Corrupt page (or miscapture and not a page
at all) */
/* replace the computed checksum with the one actually read in */
memcpy(page+22,chksum,4);
/* Bad checksum. Lose sync */
goto sync_fail;
}
}
/* yes, have a whole page all ready to go */
{
unsigned char *page=oy->data+oy->returned;
long bytes;
if(og){
og->header=page;
og->header_len=oy->headerbytes;
og->body=page+oy->headerbytes;
og->body_len=oy->bodybytes;
}
oy->unsynced=0;
oy->returned+=(bytes=oy->headerbytes+oy->bodybytes);
oy->headerbytes=0;
oy->bodybytes=0;
return(bytes);
}
sync_fail:
oy->headerbytes=0;
oy->bodybytes=0;
/* search for possible capture */
next=(unsigned char *)memchr(page+1,'O',bytes-1);
if(!next)
next=oy->data+oy->fill;
oy->returned=next-oy->data;
return(-(next-page));
}
/* sync the stream and get a page. Keep trying until we find a page.
Supress 'sync errors' after reporting the first.
return values:
-1) recapture (hole in data)
0) need more data
1) page returned
Returns pointers into buffered data; invalidated by next call to
_stream, _clear, _init, or _buffer */
int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og){
/* all we need to do is verify a page at the head of the stream
buffer. If it doesn't verify, we look for the next potential
frame */
while(1){
long ret=ogg_sync_pageseek(oy,og);
if(ret>0){
/* have a page */
return(1);
}
if(ret==0){
/* need more data */
return(0);
}
/* head did not start a synced page... skipped some bytes */
if(!oy->unsynced){
oy->unsynced=1;
return(-1);
}
/* loop. keep looking */
}
}
/* add the incoming page to the stream state; we decompose the page
into packet segments here as well. */
int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){
unsigned char *header=og->header;
unsigned char *body=og->body;
long bodysize=og->body_len;
int segptr=0;
int version=ogg_page_version(og);
int continued=ogg_page_continued(og);
int bos=ogg_page_bos(og);
int eos=ogg_page_eos(og);
ogg_int64_t granulepos=ogg_page_granulepos(og);
int serialno=ogg_page_serialno(og);
long pageno=ogg_page_pageno(og);
int segments=header[26];
/* clean up 'returned data' */
{
long lr=os->lacing_returned;
long br=os->body_returned;
/* body data */
if(br>8192){
os->body_fill-=br;
if(os->body_fill)
memmove(os->body_data,os->body_data+br,os->body_fill);
os->body_returned=0;
}
if(lr>8192){
/* segment table */
if(os->lacing_fill-lr){
memmove(os->lacing_vals,os->lacing_vals+lr,
(os->lacing_fill-lr)*sizeof(*os->lacing_vals));
memmove(os->granule_vals,os->granule_vals+lr,
(os->lacing_fill-lr)*sizeof(*os->granule_vals));
}
os->lacing_fill-=lr;
os->lacing_packet-=lr;
os->lacing_returned=0;
}
}
/* check the serial number */
if(serialno!=os->serialno)return(-1);
if(version>0)return(-1);
_os_lacing_expand(os,segments+1);
/* are we in sequence? */
if(pageno!=os->pageno){
int i;
/* unroll previous partial packet (if any) */
for(i=os->lacing_packet;i<os->lacing_fill;i++)
os->body_fill-=os->lacing_vals[i]&0xff;
os->lacing_fill=os->lacing_packet;
/* make a note of dropped data in segment table */
if(os->pageno!=-1){
os->lacing_vals[os->lacing_fill++]=0x400;
os->lacing_packet++;
}
/* are we a 'continued packet' page? If so, we'll need to skip
some segments */
if(continued){
bos=0;
for(;segptr<segments;segptr++){
int val=header[27+segptr];
body+=val;
bodysize-=val;
if(val<255){
segptr++;
break;
}
}
}
}
if(bodysize){
_os_body_expand(os,bodysize);
memcpy(os->body_data+os->body_fill,body,bodysize);
os->body_fill+=bodysize;
}
{
int saved=-1;
while(segptr<segments){
int val=header[27+segptr];
os->lacing_vals[os->lacing_fill]=val;
os->granule_vals[os->lacing_fill]=-1;
if(bos){
os->lacing_vals[os->lacing_fill]|=0x100;
bos=0;
}
if(val<255)saved=os->lacing_fill;
os->lacing_fill++;
segptr++;
if(val<255)os->lacing_packet=os->lacing_fill;
}
/* set the granulepos on the last granuleval of the last full packet */
if(saved!=-1){
os->granule_vals[saved]=granulepos;
}
}
if(eos){
os->e_o_s=1;
if(os->lacing_fill>0)
os->lacing_vals[os->lacing_fill-1]|=0x200;
}
os->pageno=pageno+1;
return(0);
}
/* clear things to an initial state. Good to call, eg, before seeking */
int ogg_sync_reset(ogg_sync_state *oy){
oy->fill=0;
oy->returned=0;
oy->unsynced=0;
oy->headerbytes=0;
oy->bodybytes=0;
return(0);
}
int ogg_stream_reset(ogg_stream_state *os){
os->body_fill=0;
os->body_returned=0;
os->lacing_fill=0;
os->lacing_packet=0;
os->lacing_returned=0;
os->header_fill=0;
os->e_o_s=0;
os->b_o_s=0;
os->pageno=-1;
os->packetno=0;
os->granulepos=0;
return(0);
}
tatic int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){
/* The last part of decode. We have the stream broken into packet
segments. Now we need to group them into packets (or return the
out of sync markers) */
int ptr=os->lacing_returned;
if(os->lacing_packet<=ptr)return(0);
if(os->lacing_vals[ptr]&0x400){
/* we need to tell the codec there's a gap; it might need to
handle previous packet dependencies. */
os->lacing_returned++;
os->packetno++;
return(-1);
}
if(!op && !adv)return(1); /* just using peek as an inexpensive way
to ask if there's a whole packet
waiting */
/* Gather the whole packet. We'll have no holes or a partial packet */
{
int size=os->lacing_vals[ptr]&0xff;
int bytes=size;
int eos=os->lacing_vals[ptr]&0x200; /* last packet of the stream? */
int bos=os->lacing_vals[ptr]&0x100; /* first packet of the stream? */
while(size==255){
int val=os->lacing_vals[++ptr];
size=val&0xff;
if(val&0x200)eos=0x200;
bytes+=size;
}
if(op){
op->e_o_s=eos;
op->b_o_s=bos;
op->packet=os->body_data+os->body_returned;
op->packetno=os->packetno;
op->granulepos=os->granule_vals[ptr];
op->bytes=bytes;
}
if(adv){
os->body_returned+=bytes;
os->lacing_returned=ptr+1;
os->packetno++;
}
}
return(1);
}
int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op){
return _packetout(os,op,1);
}
int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op){
return _packetout(os,op,0);
}
void ogg_packet_clear(ogg_packet *op) {
_ogg_free(op->packet);
memset(op, 0, sizeof(*op));
}
<p><p><p>1.1 Tremor/info.c
Index: info.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: maintain the info structure, info <-> header packets
********************************************************************/
/* general handling of the header and the vorbis_info structure (and
substructures) */
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "codec_internal.h"
#include "codebook.h"
#include "registry.h"
#include "window.h"
#include "misc.h"
#include "os.h"
/* helpers */
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));
}
/* 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 = (char *)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 = (char *)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 guarantted 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 = (codec_setup_info *)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=(codec_setup_info *)_ogg_calloc(1,sizeof(codec_setup_info));
}
void vorbis_info_clear(vorbis_info *vi){
codec_setup_info *ci=(codec_setup_info *)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 */
_mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
for(i=0;i<ci->floors;i++) /* unpack does the range checking */
_floor_P[ci->floor_type[i]]->free_info(ci->floor_param[i]);
for(i=0;i<ci->residues;i++) /* unpack does the range checking */
_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);
_ogg_free(ci);
}
memset(vi,0,sizeof(*vi));
}
/* Header packing/unpacking ********************************************/
tatic int _vorbis_unpack_info(vorbis_info *vi,oggpack_buffer *opb){
codec_setup_info *ci=(codec_setup_info *)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);
}
tatic 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=(char *)_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=(char **)_ogg_calloc(vc->comments+1,sizeof(*vc->user_comments));
vc->comment_lengths=(int *)_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]=(char *)_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=(codec_setup_info *)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]=(static_codebook *)_ogg_calloc(1,sizeof(*ci->book_param[i]));
if(vorbis_staticbook_unpack(opb,ci->book_param[i]))goto err_out;
}
/* time backend settings */
ci->times=oggpack_read(opb,6)+1;
/*ci->time_type=_ogg_malloc(ci->times*sizeof(*ci->time_type));*/
/*ci->time_param=_ogg_calloc(ci->times,sizeof(void *));*/
for(i=0;i<ci->times;i++){
ci->time_type[i]=oggpack_read(opb,16);
if(ci->time_type[i]<0 || ci->time_type[i]>=VI_TIMEB)goto err_out;
/* ci->time_param[i]=_time_P[ci->time_type[i]]->unpack(vi,opb);
Vorbis I has no time backend */
/*if(!ci->time_param[i])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]=(vorbis_info_mode *)_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);
}
/* 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);
}
<p><p><p>1.1 Tremor/ivorbiscodec.h
Index: ivorbiscodec.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: libvorbis codec headers
********************************************************************/
#ifndef _vorbis_codec_h_
#define _vorbis_codec_h_
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
#include "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;
ogg_int32_t **pcm;
ogg_int32_t **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;
void *backend_state;
} vorbis_dsp_state;
typedef struct vorbis_block{
/* necessary stream state for linking to the framing abstraction */
ogg_int32_t **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;
} 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. *************************************************/
truct 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;
<p>/* 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);
/* Vorbis PRIMITIVES: synthesis layer *******************************/
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(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,ogg_int32_t ***pcm);
extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
/* 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
<p><p><p>1.1 Tremor/ivorbisfile.h
Index: ivorbisfile.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: stdio-based convenience library for opening/seeking/decoding
********************************************************************/
#ifndef _OV_FILE_H_
#define _OV_FILE_H_
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
#include <stdio.h>
#include "ivorbiscodec.h"
#define CHUNKSIZE 8192
/* 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;
#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;
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 */
ov_callbacks callbacks;
} OggVorbis_File;
extern int ov_clear(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 ogg_int64_t ov_time_total(OggVorbis_File *vf,int i);
extern int ov_raw_seek(OggVorbis_File *vf,long 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,ogg_int64_t pos);
extern int ov_time_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
extern ogg_int64_t 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(OggVorbis_File *vf,char *buffer,int length,
int *bitstream);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
<p><p><p><p>1.1 Tremor/ivorbisfile_example.c
Index: ivorbisfile_example.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: simple example decoder using vorbisidec
********************************************************************/
/* 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 <vorbis/ivorbiscodec.h>
#include <vorbis/ivorbisfile.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(stdin, &vf, NULL, 0) < 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),¤t_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);
}
<p><p>1.1 Tremor/lsp_lookup.h
Index: lsp_lookup.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: lookup data
********************************************************************/
#ifndef _V_LOOKUP_DATA_H_
#define _V_LOOKUP_DATA_H_
#include "os_types.h"
#define FROMdB_LOOKUP_SZ 35
#define FROMdB2_LOOKUP_SZ 32
#define FROMdB_SHIFT 5
#define FROMdB2_SHIFT 3
#define FROMdB2_MASK 31
tatic ogg_int32_t FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
0x003fffff, 0x0028619b, 0x00197a96, 0x0010137a,
0x000a24b0, 0x00066666, 0x000409c3, 0x00028c42,
0x00019b8c, 0x000103ab, 0x0000a3d7, 0x00006760,
0x0000413a, 0x00002928, 0x000019f8, 0x00001062,
0x00000a56, 0x00000686, 0x0000041e, 0x00000299,
0x000001a3, 0x00000109, 0x000000a7, 0x00000069,
0x00000042, 0x0000002a, 0x0000001a, 0x00000011,
0x0000000b, 0x00000007, 0x00000004, 0x00000003,
0x00000002, 0x00000001, 0x00000001};
tatic ogg_int32_t FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
0x000001fc, 0x000001f5, 0x000001ee, 0x000001e7,
0x000001e0, 0x000001d9, 0x000001d2, 0x000001cc,
0x000001c5, 0x000001bf, 0x000001b8, 0x000001b2,
0x000001ac, 0x000001a6, 0x000001a0, 0x0000019a,
0x00000194, 0x0000018e, 0x00000188, 0x00000183,
0x0000017d, 0x00000178, 0x00000172, 0x0000016d,
0x00000168, 0x00000163, 0x0000015e, 0x00000159,
0x00000154, 0x0000014f, 0x0000014a, 0x00000145,
};
#define INVSQ_LOOKUP_I_SHIFT 10
#define INVSQ_LOOKUP_I_MASK 1023
static long INVSQ_LOOKUP_I[64+1]={
92682, 91966, 91267, 90583,
89915, 89261, 88621, 87995,
87381, 86781, 86192, 85616,
85051, 84497, 83953, 83420,
82897, 82384, 81880, 81385,
80899, 80422, 79953, 79492,
79039, 78594, 78156, 77726,
77302, 76885, 76475, 76072,
75674, 75283, 74898, 74519,
74146, 73778, 73415, 73058,
72706, 72359, 72016, 71679,
71347, 71019, 70695, 70376,
70061, 69750, 69444, 69141,
68842, 68548, 68256, 67969,
67685, 67405, 67128, 66855,
66585, 66318, 66054, 65794,
65536,
};
tatic long INVSQ_LOOKUP_IDel[64]={
716, 699, 684, 668,
654, 640, 626, 614,
600, 589, 576, 565,
554, 544, 533, 523,
513, 504, 495, 486,
477, 469, 461, 453,
445, 438, 430, 424,
417, 410, 403, 398,
391, 385, 379, 373,
368, 363, 357, 352,
347, 343, 337, 332,
328, 324, 319, 315,
311, 306, 303, 299,
294, 292, 287, 284,
280, 277, 273, 270,
267, 264, 260, 258,
};
#define COS_LOOKUP_I_SHIFT 9
#define COS_LOOKUP_I_MASK 511
#define COS_LOOKUP_I_SZ 128
static ogg_int32_t COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
16384, 16379, 16364, 16340,
16305, 16261, 16207, 16143,
16069, 15986, 15893, 15791,
15679, 15557, 15426, 15286,
15137, 14978, 14811, 14635,
14449, 14256, 14053, 13842,
13623, 13395, 13160, 12916,
12665, 12406, 12140, 11866,
11585, 11297, 11003, 10702,
10394, 10080, 9760, 9434,
9102, 8765, 8423, 8076,
7723, 7366, 7005, 6639,
6270, 5897, 5520, 5139,
4756, 4370, 3981, 3590,
3196, 2801, 2404, 2006,
1606, 1205, 804, 402,
0, -401, -803, -1204,
-1605, -2005, -2403, -2800,
-3195, -3589, -3980, -4369,
-4755, -5138, -5519, -5896,
-6269, -6638, -7004, -7365,
-7722, -8075, -8422, -8764,
-9101, -9433, -9759, -10079,
-10393, -10701, -11002, -11296,
-11584, -11865, -12139, -12405,
-12664, -12915, -13159, -13394,
-13622, -13841, -14052, -14255,
-14448, -14634, -14810, -14977,
-15136, -15285, -15425, -15556,
-15678, -15790, -15892, -15985,
-16068, -16142, -16206, -16260,
-16304, -16339, -16363, -16378,
-16383,
};
#endif
<p><p><p><p><p><p><p>1.1 Tremor/mapping0.c
Index: mapping0.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: channel mapping 0 implementation
********************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "mdct.h"
#include "codec_internal.h"
#include "codebook.h"
#include "window.h"
#include "registry.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 */
typedef struct {
vorbis_info_mode *mode;
vorbis_info_mapping0 *map;
vorbis_look_floor **floor_look;
vorbis_look_residue **residue_look;
vorbis_func_floor **floor_func;
vorbis_func_residue **residue_func;
int ch;
long lastframe; /* if a different mode is called, we need to
invalidate decay */
} vorbis_look_mapping0;
tatic 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);
}
}
tatic void mapping0_free_look(vorbis_look_mapping *look){
int i;
vorbis_look_mapping0 *l=(vorbis_look_mapping0 *)look;
if(l){
for(i=0;i<l->map->submaps;i++){
l->floor_func[i]->free_look(l->floor_look[i]);
l->residue_func[i]->free_look(l->residue_look[i]);
}
_ogg_free(l->floor_func);
_ogg_free(l->residue_func);
_ogg_free(l->floor_look);
_ogg_free(l->residue_look);
memset(l,0,sizeof(*l));
_ogg_free(l);
}
}
tatic vorbis_look_mapping *mapping0_look(vorbis_dsp_state *vd,vorbis_info_mode *vm,
vorbis_info_mapping *m){
int i;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)_ogg_calloc(1,sizeof(*look));
vorbis_info_mapping0 *info=look->map=(vorbis_info_mapping0 *)m;
look->mode=vm;
look->floor_look=(vorbis_look_floor **)_ogg_calloc(info->submaps,sizeof(*look->floor_look));
look->residue_look=(vorbis_look_residue **)_ogg_calloc(info->submaps,sizeof(*look->residue_look));
look->floor_func=(vorbis_func_floor **)_ogg_calloc(info->submaps,sizeof(*look->floor_func));
look->residue_func=(vorbis_func_residue **)_ogg_calloc(info->submaps,sizeof(*look->residue_func));
for(i=0;i<info->submaps;i++){
int floornum=info->floorsubmap[i];
int resnum=info->residuesubmap[i];
look->floor_func[i]=_floor_P[ci->floor_type[floornum]];
look->floor_look[i]=look->floor_func[i]->
look(vd,vm,ci->floor_param[floornum]);
look->residue_func[i]=_residue_P[ci->residue_type[resnum]];
look->residue_look[i]=look->residue_func[i]->
look(vd,vm,ci->residue_param[resnum]);
}
look->ch=vi->channels;
return(look);
}
tatic int ilog(unsigned int v){
int ret=0;
if(v)--v;
while(v){
ret++;
v>>=1;
}
return(ret);
}
/* also responsible for range checking */
static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb){
int i;
vorbis_info_mapping0 *info=(vorbis_info_mapping0 *)_ogg_calloc(1,sizeof(*info));
codec_setup_info *ci=(codec_setup_info *)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++){
int temp=oggpack_read(opb,8);
if(temp>=ci->times)goto err_out;
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);
}
tatic int seq=0;
static int mapping0_inverse(vorbis_block *vb,vorbis_look_mapping *l){
vorbis_dsp_state *vd=vb->vd;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
backend_lookup_state *b=(backend_lookup_state *)vd->backend_state;
vorbis_look_mapping0 *look=(vorbis_look_mapping0 *)l;
vorbis_info_mapping0 *info=look->map;
int i,j;
long n=vb->pcmend=ci->blocksizes[vb->W];
ogg_int32_t **pcmbundle=(ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels);
int *zerobundle=(int *)alloca(sizeof(*zerobundle)*vi->channels);
int *nonzero =(int *)alloca(sizeof(*nonzero)*vi->channels);
void **floormemo=(void **)alloca(sizeof(*floormemo)*vi->channels);
/* time domain information decode (note that applying the
information would have to happen later; we'll probably add a
function entry to the harness for that later */
/* NOT IMPLEMENTED */
/* 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]=look->floor_func[submap]->
inverse1(vb,look->floor_look[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];
}
}
look->residue_func[i]->inverse(vb,look->residue_look[i],
pcmbundle,zerobundle,ch_in_bundle);
}
//for(j=0;j<vi->channels;j++)
//_analysis_output("coupled",seq+j,vb->pcm[j],-8,n/2,0,0);
<p> /* channel coupling */
for(i=info->coupling_steps-1;i>=0;i--){
ogg_int32_t *pcmM=vb->pcm[info->coupling_mag[i]];
ogg_int32_t *pcmA=vb->pcm[info->coupling_ang[i]];
for(j=0;j<n/2;j++){
ogg_int32_t mag=pcmM[j];
ogg_int32_t 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(j=0;j<vi->channels;j++)
//_analysis_output("residue",seq+j,vb->pcm[j],-8,n/2,0,0);
/* compute and apply spectral envelope */
for(i=0;i<vi->channels;i++){
ogg_int32_t *pcm=vb->pcm[i];
int submap=info->chmuxlist[i];
look->floor_func[submap]->
inverse2(vb,look->floor_look[submap],floormemo[i],pcm);
}
//for(j=0;j<vi->channels;j++)
//_analysis_output("mdct",seq+j,vb->pcm[j],-24,n/2,0,1);
/* transform the PCM data; takes PCM vector, vb; modifies PCM vector */
/* only MDCT right now.... */
for(i=0;i<vi->channels;i++){
ogg_int32_t *pcm=vb->pcm[i];
mdct_backward(n,pcm,pcm);
}
//for(j=0;j<vi->channels;j++)
//_analysis_output("imdct",seq+j,vb->pcm[j],-24,n,0,0);
/* window the data */
for(i=0;i<vi->channels;i++){
ogg_int32_t *pcm=vb->pcm[i];
if(nonzero[i])
_vorbis_apply_window(pcm,b->window,ci->blocksizes,vb->lW,vb->W,vb->nW);
else
for(j=0;j<n;j++)
pcm[j]=0;
}
//for(j=0;j<vi->channels;j++)
//_analysis_output("window",seq+j,vb->pcm[j],-24,n,0,0);
seq+=vi->channels;
/* all done! */
return(0);
}
/* export hooks */
vorbis_func_mapping mapping0_exportbundle={
&mapping0_unpack,
&mapping0_look,
&mapping0_free_info,
&mapping0_free_look,
&mapping0_inverse
};
<p><p>1.1 Tremor/mdct.c
Index: mdct.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: normalized modified discrete cosine transform
power of two length transform only [64 <= n ]
last mod: $Id: mdct.c,v 1.1 2002/09/02 22:13:55 xiphmont Exp $
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(2PI*sin^2(x)), but others may
vehemently disagree.
********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "ivorbiscodec.h"
#include "os.h"
#include "mdct.h"
#include "mdct_lookup.h"
#include "misc.h"
typedef struct {
int n;
int log2n;
DATA_TYPE *trig;
ogg_int16_t *bitrev;
DATA_TYPE scale;
} mdct_lookup;
<p>static void mdct_init(mdct_lookup *lookup,int n){
lookup->n=n;
switch(n){
case 64:
lookup->log2n=6;
lookup->trig=triglook_64;
lookup->bitrev=bitrevlook_64;
lookup->scale=0x04000000;
break;
case 128:
lookup->log2n=7;
lookup->trig=triglook_128;
lookup->bitrev=bitrevlook_128;
lookup->scale=0x02000000;
break;
case 256:
lookup->log2n=8;
lookup->trig=triglook_256;
lookup->bitrev=bitrevlook_256;
lookup->scale=0x01000000;
break;
case 512:
lookup->log2n=9;
lookup->trig=triglook_512;
lookup->bitrev=bitrevlook_512;
lookup->scale=0x00800000;
break;
case 1024:
lookup->log2n=10;
lookup->trig=triglook_1024;
lookup->bitrev=bitrevlook_1024;
lookup->scale=0x00400000;
break;
case 2048:
lookup->log2n=11;
lookup->trig=triglook_2048;
lookup->bitrev=bitrevlook_2048;
lookup->scale=0x00200000;
break;
case 4096:
lookup->log2n=12;
lookup->trig=triglook_4096;
lookup->bitrev=bitrevlook_4096;
lookup->scale=0x00100000;
break;
case 8192:
lookup->log2n=13;
lookup->trig=triglook_8192;
lookup->bitrev=bitrevlook_8192;
lookup->scale=0x00080000;
break;
default:
/* die horribly */
memset(lookup,0,sizeof(*lookup));
}
}
/* 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] = MULT31((r0 + r1) , cPI2_8);
x[1] = MULT31((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] = MULT31((r0 - r1) , cPI2_8);
x[5] = MULT31((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] = MULT31( r0 , cPI1_8 ) - MULT31( r1 , cPI3_8 );
x[13] = MULT31( r0 , cPI3_8 ) + MULT31( r1 , cPI1_8 );
r0 = x[26] - x[10];
r1 = x[27] - x[11];
x[26] += x[10];
x[27] += x[11];
x[10] = MULT31(( r0 - r1 ) , cPI2_8);
x[11] = MULT31(( r0 + r1 ) , cPI2_8);
r0 = x[24] - x[8];
r1 = x[25] - x[9];
x[24] += x[8];
x[25] += x[9];
x[8] = MULT31( r0 , cPI3_8 ) - MULT31( r1 , cPI1_8 );
x[9] = MULT31( r1 , cPI3_8 ) + MULT31( 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] = MULT31( r1 , cPI1_8 ) + MULT31( r0 , cPI3_8 );
x[5] = MULT31( r1 , cPI3_8 ) - MULT31( r0 , cPI1_8 );
r0 = x[2] - x[18];
r1 = x[3] - x[19];
x[18] += x[2];
x[19] += x[3];
x[2] = MULT31(( r1 + r0 ) , cPI2_8);
x[3] = MULT31(( r1 - r0 ) , cPI2_8);
r0 = x[0] - x[16];
r1 = x[1] - x[17];
x[16] += x[0];
x[17] += x[1];
x[0] = MULT31( r1 , cPI3_8 ) + MULT31( r0 , cPI1_8 );
x[1] = MULT31( r1 , cPI1_8 ) - MULT31( 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] = MULT30(r1 , T[1] ) + MULT30( r0 , T[0]);
x2[7] = MULT30(r1 , T[0] ) - MULT30( r0 , T[1]);
r0 = x1[4] - x2[4];
r1 = x1[5] - x2[5];
x1[4] += x2[4];
x1[5] += x2[5];
x2[4] = MULT30(r1 , T[5] ) + MULT30( r0 , T[4]);
x2[5] = MULT30(r1 , T[4] ) - MULT30( r0 , T[5]);
r0 = x1[2] - x2[2];
r1 = x1[3] - x2[3];
x1[2] += x2[2];
x1[3] += x2[3];
x2[2] = MULT30(r1 , T[9] ) + MULT30( r0 , T[8]);
x2[3] = MULT30(r1 , T[8] ) - MULT30( r0 , T[9]);
r0 = x1[0] - x2[0];
r1 = x1[1] - x2[1];
x1[0] += x2[0];
x1[1] += x2[1];
x2[0] = MULT30(r1 , T[13] ) + MULT30( r0 , T[12]);
x2[1] = MULT30(r1 , T[12] ) - MULT30( 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] = MULT30(r1 , T[1] ) + MULT30 (r0 , T[0]);
x2[7] = MULT30(r1 , T[0] ) - MULT30( 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] = MULT30(r1 , T[1] ) + MULT30( r0 , T[0]);
x2[5] = MULT30(r1 , T[0] ) - MULT30( 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] = MULT30(r1 , T[1] ) + MULT30( r0 , T[0]);
x2[3] = MULT30(r1 , T[0] ) - MULT30( 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] = MULT30(r1 , T[1] ) + MULT30( r0 , T[0]);
x2[1] = MULT30(r1 , T[0] ) - MULT30( 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);
}
STIN void mdct_bitreverse(mdct_lookup *init,
DATA_TYPE *x){
int n = init->n;
ogg_int16_t *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 = MULT30(r1 , T[0] ) + MULT30(r0 , T[1]);
REG_TYPE r3 = MULT30(r1 , T[1] ) - MULT30(r0 , T[0]);
w1 -= 4;
r0 = (x0[1] + x1[1])/2;
r1 = (x0[0] - x1[0])/2;
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 = MULT30(r1 , T[2] ) + MULT30(r0 , T[3]);
r3 = MULT30(r1 , T[3] ) - MULT30(r0 , T[2]);
r0 = (x0[1] + x1[1])/2;
r1 = (x0[0] - x1[0])/2;
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(int n, DATA_TYPE *in, DATA_TYPE *out){
int n2=n>>1;
int n4=n>>2;
mdct_lookup init;
DATA_TYPE *iX;
DATA_TYPE *oX;
DATA_TYPE *T;
mdct_init(&init,n);
/* rotate */
iX = in+n2-7;
oX = out+n2+n4;
T = init.trig+n4;
do{
oX -= 4;
oX[0] = MULT30(-iX[2] , T[3]) - MULT30(iX[0] , T[2]);
oX[1] = MULT30 (iX[0] , T[3]) - MULT30(iX[2] , T[2]);
oX[2] = MULT30(-iX[6] , T[1]) - MULT30(iX[4] , T[0]);
oX[3] = MULT30 (iX[4] , T[1]) - MULT30(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] = MULT30 (iX[4] , T[3]) + MULT30(iX[6] , T[2]);
oX[1] = MULT30 (iX[4] , T[2]) - MULT30(iX[6] , T[3]);
oX[2] = MULT30 (iX[0] , T[1]) + MULT30(iX[2] , T[0]);
oX[3] = MULT30 (iX[0] , T[0]) - MULT30(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] = MULT30 (iX[0] , T[1]) - MULT30(iX[1] , T[0]);
oX2[0] =-(MULT30 (iX[0] , T[0]) + MULT30(iX[1] , T[1]));
oX1[2] = MULT30 (iX[2] , T[3]) - MULT30(iX[3] , T[2]);
oX2[1] =-(MULT30 (iX[2] , T[2]) + MULT30(iX[3] , T[3]));
oX1[1] = MULT30 (iX[4] , T[5]) - MULT30(iX[5] , T[4]);
oX2[2] =-(MULT30 (iX[4] , T[4]) + MULT30(iX[5] , T[5]));
oX1[0] = MULT30 (iX[6] , T[7]) - MULT30(iX[7] , T[6]);
oX2[3] =-(MULT30 (iX[6] , T[6]) + MULT30(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);
}
}
<p><p>1.1 Tremor/mdct.h
Index: mdct.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: modified discrete cosine transform prototypes
********************************************************************/
#ifndef _OGG_mdct_H_
#define _OGG_mdct_H_
#include "ivorbiscodec.h"
#include "misc.h"
#define DATA_TYPE ogg_int32_t
#define REG_TYPE register ogg_int32_t
#define cPI3_8 (0x61f78a9bUL>>1)
#define cPI2_8 (0xb504f334UL>>1)
#define cPI1_8 (0xec835e7aUL>>1)
extern void mdct_forward(int n, DATA_TYPE *in, DATA_TYPE *out);
extern void mdct_backward(int n, DATA_TYPE *in, DATA_TYPE *out);
#endif
<p><p><p><p><p><p><p><p><p><p><p><p><p><p>1.1 Tremor/mdct_lookup.h
Index: mdct_lookup.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: mdct trig lookups for n=64 through 8192
********************************************************************/
tatic ogg_int32_t triglook_64[80]={
0x40000000, 0x00000000, 0x3ec52fa0, 0xf383a3e2,
0x3b20d79e, 0xe7821d59, 0x3536cc52, 0xdc71898d,
0x2d413ccd, 0xd2bec333, 0x238e7673, 0xcac933ae,
0x187de2a7, 0xc4df2862, 0x0c7c5c1e, 0xc13ad060,
0x00000000, 0xc0000000, 0xf383a3e2, 0xc13ad060,
0xe7821d59, 0xc4df2862, 0xdc71898d, 0xcac933ae,
0xd2bec333, 0xd2bec333, 0xcac933ae, 0xdc71898d,
0xc4df2862, 0xe7821d59, 0xc13ad060, 0xf383a3e2,
0x3ffb10c1, 0x0192155f, 0x3fd39b5a, 0x04b54825,
0x3f84c8e2, 0x07d59396, 0x3f0ec9f5, 0x0af10a22,
0x3e71e759, 0x0e05c135, 0x3dae81cf, 0x1111d263,
0x3cc511d9, 0x14135c94, 0x3bb6276e, 0x17088531,
0x3a8269a3, 0x19ef7944, 0x392a9642, 0x1cc66e99,
0x37af8159, 0x1f8ba4dc, 0x361214b0, 0x223d66a8,
0x34534f41, 0x24da0a9a, 0x32744493, 0x275ff452,
0x30761c18, 0x29cd9578, 0x2e5a1070, 0x2c216eaa,
0x1fd88da4, 0xfcdd0b28, 0x1e9f4157, 0xf6b5fce9,
0x1c38b2f2, 0xf0ea5164, 0x18bc806b, 0xebb30cdb,
0x144cf325, 0xe7437f95, 0x0f15ae9c, 0xe3c74d0e,
0x094a0317, 0xe160bea9, 0x0322f4d8, 0xe027725c,
};
tatic ogg_int16_t bitrevlook_64[16]={
0x001e, 0x0000, 0x000e, 0x0010,
0x0016, 0x0008, 0x0006, 0x0018,
0x001a, 0x0004, 0x000a, 0x0014,
0x0012, 0x000c, 0x0002, 0x001c,
};
tatic ogg_int32_t triglook_128[160]={
0x40000000, 0x00000000, 0x3fb11b48, 0xf9ba1651,
0x3ec52fa0, 0xf383a3e2, 0x3d3e82ae, 0xed6bf9d1,
0x3b20d79e, 0xe7821d59, 0x387165e3, 0xe1d4a2c8,
0x3536cc52, 0xdc71898d, 0x317900d6, 0xd76619b6,
0x2d413ccd, 0xd2bec333, 0x2899e64a, 0xce86ff2a,
0x238e7673, 0xcac933ae, 0x1e2b5d38, 0xc78e9a1d,
0x187de2a7, 0xc4df2862, 0x1294062f, 0xc2c17d52,
0x0c7c5c1e, 0xc13ad060, 0x0645e9af, 0xc04ee4b8,
0x00000000, 0xc0000000, 0xf9ba1651, 0xc04ee4b8,
0xf383a3e2, 0xc13ad060, 0xed6bf9d1, 0xc2c17d52,
0xe7821d59, 0xc4df2862, 0xe1d4a2c8, 0xc78e9a1d,
0xdc71898d, 0xcac933ae, 0xd76619b6, 0xce86ff2a,
0xd2bec333, 0xd2bec333, 0xce86ff2a, 0xd76619b6,
0xcac933ae, 0xdc71898d, 0xc78e9a1d, 0xe1d4a2c8,
0xc4df2862, 0xe7821d59, 0xc2c17d52, 0xed6bf9d1,
0xc13ad060, 0xf383a3e2, 0xc04ee4b8, 0xf9ba1651,
0x3ffec42d, 0x00c90e90, 0x3ff4e5e0, 0x025b0caf,
0x3fe12acb, 0x03ecadcf, 0x3fc395f9, 0x057db403,
0x3f9c2bfb, 0x070de172, 0x3f6af2e3, 0x089cf867,
0x3f2ff24a, 0x0a2abb59, 0x3eeb3347, 0x0bb6ecef,
0x3e9cc076, 0x0d415013, 0x3e44a5ef, 0x0ec9a7f3,
0x3de2f148, 0x104fb80e, 0x3d77b192, 0x11d3443f,
0x3d02f757, 0x135410c3, 0x3c84d496, 0x14d1e242,
0x3bfd5cc4, 0x164c7ddd, 0x3b6ca4c4, 0x17c3a931,
0x3ad2c2e8, 0x19372a64, 0x3a2fcee8, 0x1aa6c82b,
0x3983e1e8, 0x1c1249d8, 0x38cf1669, 0x1d79775c,
0x3811884d, 0x1edc1953, 0x374b54ce, 0x2039f90f,
0x367c9a7e, 0x2192e09b, 0x35a5793c, 0x22e69ac8,
0x34c61236, 0x2434f332, 0x33de87de, 0x257db64c,
0x32eefdea, 0x26c0b162, 0x31f79948, 0x27fdb2a7,
0x30f8801f, 0x29348937, 0x2ff1d9c7, 0x2a650525,
0x2ee3cebe, 0x2b8ef77d, 0x2dce88aa, 0x2cb2324c,
0x1ff621e3, 0xfe6e09a1, 0x1fa7557f, 0xfb4dfbe4,
0x1f0a7efc, 0xf83981a1, 0x1e212105, 0xf53832c5,
0x1ced7af4, 0xf25177fb, 0x1b728345, 0xef8c7867,
0x19b3e048, 0xecf00803, 0x17b5df22, 0xea8296cb,
0x157d6935, 0xe84a20de, 0x130ff7fd, 0xe64c1fb8,
0x10738799, 0xe48d7cbb, 0x0dae8805, 0xe312850c,
0x0ac7cd3b, 0xe1dedefb, 0x07c67e5f, 0xe0f58104,
0x04b2041c, 0xe058aa81, 0x0191f65f, 0xe009de1d,
};
tatic ogg_int16_t bitrevlook_128[32]={
0x003e, 0x0000, 0x001e, 0x0020,
0x002e, 0x0010, 0x000e, 0x0030,
0x0036, 0x0008, 0x0016, 0x0028,
0x0026, 0x0018, 0x0006, 0x0038,
0x003a, 0x0004, 0x001a, 0x0024,
0x002a, 0x0014, 0x000a, 0x0034,
0x0032, 0x000c, 0x0012, 0x002c,
0x0022, 0x001c, 0x0002, 0x003c,
};
tatic ogg_int32_t triglook_256[320]={
0x40000000, 0x00000000, 0x3fec43c7, 0xfcdc1342,
0x3fb11b48, 0xf9ba1651, 0x3f4eaafe, 0xf69bf7c9,
0x3ec52fa0, 0xf383a3e2, 0x3e14fdf7, 0xf0730342,
0x3d3e82ae, 0xed6bf9d1, 0x3c42420a, 0xea70658a,
0x3b20d79e, 0xe7821d59, 0x39daf5e8, 0xe4a2eff6,
0x387165e3, 0xe1d4a2c8, 0x36e5068a, 0xdf18f0ce,
0x3536cc52, 0xdc71898d, 0x3367c090, 0xd9e01006,
0x317900d6, 0xd76619b6, 0x2f6bbe45, 0xd5052d97,
0x2d413ccd, 0xd2bec333, 0x2afad269, 0xd09441bb,
0x2899e64a, 0xce86ff2a, 0x261feffa, 0xcc983f70,
0x238e7673, 0xcac933ae, 0x20e70f32, 0xc91af976,
0x1e2b5d38, 0xc78e9a1d, 0x1b5d100a, 0xc6250a18,
0x187de2a7, 0xc4df2862, 0x158f9a76, 0xc3bdbdf6,
0x1294062f, 0xc2c17d52, 0x0f8cfcbe, 0xc1eb0209,
0x0c7c5c1e, 0xc13ad060, 0x09640837, 0xc0b15502,
0x0645e9af, 0xc04ee4b8, 0x0323ecbe, 0xc013bc39,
0x00000000, 0xc0000000, 0xfcdc1342, 0xc013bc39,
0xf9ba1651, 0xc04ee4b8, 0xf69bf7c9, 0xc0b15502,
0xf383a3e2, 0xc13ad060, 0xf0730342, 0xc1eb0209,
0xed6bf9d1, 0xc2c17d52, 0xea70658a, 0xc3bdbdf6,
0xe7821d59, 0xc4df2862, 0xe4a2eff6, 0xc6250a18,
0xe1d4a2c8, 0xc78e9a1d, 0xdf18f0ce, 0xc91af976,
0xdc71898d, 0xcac933ae, 0xd9e01006, 0xcc983f70,
0xd76619b6, 0xce86ff2a, 0xd5052d97, 0xd09441bb,
0xd2bec333, 0xd2bec333, 0xd09441bb, 0xd5052d97,
0xce86ff2a, 0xd76619b6, 0xcc983f70, 0xd9e01006,
0xcac933ae, 0xdc71898d, 0xc91af976, 0xdf18f0ce,
0xc78e9a1d, 0xe1d4a2c8, 0xc6250a18, 0xe4a2eff6,
0xc4df2862, 0xe7821d59, 0xc3bdbdf6, 0xea70658a,
0xc2c17d52, 0xed6bf9d1, 0xc1eb0209, 0xf0730342,
0xc13ad060, 0xf383a3e2, 0xc0b15502, 0xf69bf7c9,
0xc04ee4b8, 0xf9ba1651, 0xc013bc39, 0xfcdc1342,
0x3fffb10b, 0x006487c4, 0x3ffd3969, 0x012d936c,
0x3ff84a3c, 0x01f69373, 0x3ff0e3b6, 0x02bf801a,
0x3fe7061f, 0x038851a2, 0x3fdab1d9, 0x0451004d,
0x3fcbe75e, 0x0519845e, 0x3fbaa740, 0x05e1d61b,
0x3fa6f228, 0x06a9edc9, 0x3f90c8da, 0x0771c3b3,
0x3f782c30, 0x08395024, 0x3f5d1d1d, 0x09008b6a,
0x3f3f9cab, 0x09c76dd8, 0x3f1fabff, 0x0a8defc3,
0x3efd4c54, 0x0b540982, 0x3ed87efc, 0x0c19b374,
0x3eb14563, 0x0cdee5f9, 0x3e87a10c, 0x0da39978,
0x3e5b9392, 0x0e67c65a, 0x3e2d1ea8, 0x0f2b650f,
0x3dfc4418, 0x0fee6e0d, 0x3dc905c5, 0x10b0d9d0,
0x3d9365a8, 0x1172a0d7, 0x3d5b65d2, 0x1233bbac,
0x3d21086c, 0x12f422db, 0x3ce44fb7, 0x13b3cefa,
0x3ca53e09, 0x1472b8a5, 0x3c63d5d1, 0x1530d881,
0x3c201994, 0x15ee2738, 0x3bda0bf0, 0x16aa9d7e,
0x3b91af97, 0x1766340f, 0x3b470753, 0x1820e3b0,
0x3afa1605, 0x18daa52f, 0x3aaadea6, 0x19937161,
0x3a596442, 0x1a4b4128, 0x3a05a9fd, 0x1b020d6c,
0x39afb313, 0x1bb7cf23, 0x395782d3, 0x1c6c7f4a,
0x38fd1ca4, 0x1d2016e9, 0x38a08402, 0x1dd28f15,
0x3841bc7f, 0x1e83e0eb, 0x37e0c9c3, 0x1f340596,
0x377daf89, 0x1fe2f64c, 0x371871a5, 0x2090ac4d,
0x36b113fd, 0x213d20e8, 0x36479a8e, 0x21e84d76,
0x35dc0968, 0x22922b5e, 0x356e64b2, 0x233ab414,
0x34feb0a5, 0x23e1e117, 0x348cf190, 0x2487abf7,
0x34192bd5, 0x252c0e4f, 0x33a363ec, 0x25cf01c8,
0x332b9e5e, 0x2670801a, 0x32b1dfc9, 0x2710830c,
0x32362ce0, 0x27af0472, 0x31b88a66, 0x284bfe2f,
0x3138fd35, 0x28e76a37, 0x30b78a36, 0x2981428c,
0x30343667, 0x2a19813f, 0x2faf06da, 0x2ab02071,
0x2f2800af, 0x2b451a55, 0x2e9f291b, 0x2bd8692b,
0x2e148566, 0x2c6a0746, 0x2d881ae8, 0x2cf9ef09,
0x1ffd8861, 0xff36f550, 0x1fe9cdad, 0xfda55bee,
0x1fc26471, 0xfc153635, 0x1f8764fa, 0xfa877aef,
0x1f38f3ac, 0xf8fd1f65, 0x1ed740e7, 0xf77716cf,
0x1e6288ec, 0xf5f651b6, 0x1ddb13b7, 0xf47bbd68,
0x1d4134d1, 0xf308435e, 0x1c954b21, 0xf19cc8b3,
0x1bd7c0ac, 0xf03a2d92, 0x1b090a58, 0xeee14cac,
0x1a29a7a0, 0xed92fab3, 0x193a224a, 0xec5005d7,
0x183b0e0c, 0xeb193544, 0x172d0838, 0xe9ef48ab,
0x1610b755, 0xe8d2f7c8, 0x14e6cabc, 0xe7c4f1f4,
0x13affa29, 0xe6c5ddb6, 0x126d054d, 0xe5d65860,
0x111eb354, 0xe4f6f5a8, 0x0fc5d26e, 0xe4283f54,
0x0e63374d, 0xe36ab4df, 0x0cf7bca2, 0xe2becb2f,
0x0b844298, 0xe224ec49, 0x0a09ae4a, 0xe19d7714,
0x0888e931, 0xe128bf19, 0x0702e09b, 0xe0c70c54,
0x05788511, 0xe0789b06, 0x03eac9cb, 0xe03d9b8f,
0x025aa412, 0xe0163253, 0x00c90ab0, 0xe002779f,
};
tatic ogg_int16_t bitrevlook_256[64]={
0x007e, 0x0000, 0x003e, 0x0040,
0x005e, 0x0020, 0x001e, 0x0060,
0x006e, 0x0010, 0x002e, 0x0050,
0x004e, 0x0030, 0x000e, 0x0070,
0x0076, 0x0008, 0x0036, 0x0048,
0x0056, 0x0028, 0x0016, 0x0068,
0x0066, 0x0018, 0x0026, 0x0058,
0x0046, 0x0038, 0x0006, 0x0078,
0x007a, 0x0004, 0x003a, 0x0044,
0x005a, 0x0024, 0x001a, 0x0064,
0x006a, 0x0014, 0x002a, 0x0054,
0x004a, 0x0034, 0x000a, 0x0074,
0x0072, 0x000c, 0x0032, 0x004c,
0x0052, 0x002c, 0x0012, 0x006c,
0x0062, 0x001c, 0x0022, 0x005c,
0x0042, 0x003c, 0x0002, 0x007c,
};
tatic ogg_int32_t triglook_512[640]={
0x40000000, 0x00000000, 0x3ffb10c1, 0xfe6deaa1,
0x3fec43c7, 0xfcdc1342, 0x3fd39b5a, 0xfb4ab7db,
0x3fb11b48, 0xf9ba1651, 0x3f84c8e2, 0xf82a6c6a,
0x3f4eaafe, 0xf69bf7c9, 0x3f0ec9f5, 0xf50ef5de,
0x3ec52fa0, 0xf383a3e2, 0x3e71e759, 0xf1fa3ecb,
0x3e14fdf7, 0xf0730342, 0x3dae81cf, 0xeeee2d9d,
0x3d3e82ae, 0xed6bf9d1, 0x3cc511d9, 0xebeca36c,
0x3c42420a, 0xea70658a, 0x3bb6276e, 0xe8f77acf,
0x3b20d79e, 0xe7821d59, 0x3a8269a3, 0xe61086bc,
0x39daf5e8, 0xe4a2eff6, 0x392a9642, 0xe3399167,
0x387165e3, 0xe1d4a2c8, 0x37af8159, 0xe0745b24,
0x36e5068a, 0xdf18f0ce, 0x361214b0, 0xddc29958,
0x3536cc52, 0xdc71898d, 0x34534f41, 0xdb25f566,
0x3367c090, 0xd9e01006, 0x32744493, 0xd8a00bae,
0x317900d6, 0xd76619b6, 0x30761c18, 0xd6326a88,
0x2f6bbe45, 0xd5052d97, 0x2e5a1070, 0xd3de9156,
0x2d413ccd, 0xd2bec333, 0x2c216eaa, 0xd1a5ef90,
0x2afad269, 0xd09441bb, 0x29cd9578, 0xcf89e3e8,
0x2899e64a, 0xce86ff2a, 0x275ff452, 0xcd8bbb6d,
0x261feffa, 0xcc983f70, 0x24da0a9a, 0xcbacb0bf,
0x238e7673, 0xcac933ae, 0x223d66a8, 0xc9edeb50,
0x20e70f32, 0xc91af976, 0x1f8ba4dc, 0xc8507ea7,
0x1e2b5d38, 0xc78e9a1d, 0x1cc66e99, 0xc6d569be,
0x1b5d100a, 0xc6250a18, 0x19ef7944, 0xc57d965d,
0x187de2a7, 0xc4df2862, 0x17088531, 0xc449d892,
0x158f9a76, 0xc3bdbdf6, 0x14135c94, 0xc33aee27,
0x1294062f, 0xc2c17d52, 0x1111d263, 0xc2517e31,
0x0f8cfcbe, 0xc1eb0209, 0x0e05c135, 0xc18e18a7,
0x0c7c5c1e, 0xc13ad060, 0x0af10a22, 0xc0f1360b,
0x09640837, 0xc0b15502, 0x07d59396, 0xc07b371e,
0x0645e9af, 0xc04ee4b8, 0x04b54825, 0xc02c64a6,
0x0323ecbe, 0xc013bc39, 0x0192155f, 0xc004ef3f,
0x00000000, 0xc0000000, 0xfe6deaa1, 0xc004ef3f,
0xfcdc1342, 0xc013bc39, 0xfb4ab7db, 0xc02c64a6,
0xf9ba1651, 0xc04ee4b8, 0xf82a6c6a, 0xc07b371e,
0xf69bf7c9, 0xc0b15502, 0xf50ef5de, 0xc0f1360b,
0xf383a3e2, 0xc13ad060, 0xf1fa3ecb, 0xc18e18a7,
0xf0730342, 0xc1eb0209, 0xeeee2d9d, 0xc2517e31,
0xed6bf9d1, 0xc2c17d52, 0xebeca36c, 0xc33aee27,
0xea70658a, 0xc3bdbdf6, 0xe8f77acf, 0xc449d892,
0xe7821d59, 0xc4df2862, 0xe61086bc, 0xc57d965d,
0xe4a2eff6, 0xc6250a18, 0xe3399167, 0xc6d569be,
0xe1d4a2c8, 0xc78e9a1d, 0xe0745b24, 0xc8507ea7,
0xdf18f0ce, 0xc91af976, 0xddc29958, 0xc9edeb50,
0xdc71898d, 0xcac933ae, 0xdb25f566, 0xcbacb0bf,
0xd9e01006, 0xcc983f70, 0xd8a00bae, 0xcd8bbb6d,
0xd76619b6, 0xce86ff2a, 0xd6326a88, 0xcf89e3e8,
0xd5052d97, 0xd09441bb, 0xd3de9156, 0xd1a5ef90,
0xd2bec333, 0xd2bec333, 0xd1a5ef90, 0xd3de9156,
0xd09441bb, 0xd5052d97, 0xcf89e3e8, 0xd6326a88,
0xce86ff2a, 0xd76619b6, 0xcd8bbb6d, 0xd8a00bae,
0xcc983f70, 0xd9e01006, 0xcbacb0bf, 0xdb25f566,
0xcac933ae, 0xdc71898d, 0xc9edeb50, 0xddc29958,
0xc91af976, 0xdf18f0ce, 0xc8507ea7, 0xe0745b24,
0xc78e9a1d, 0xe1d4a2c8, 0xc6d569be, 0xe3399167,
0xc6250a18, 0xe4a2eff6, 0xc57d965d, 0xe61086bc,
0xc4df2862, 0xe7821d59, 0xc449d892, 0xe8f77acf,
0xc3bdbdf6, 0xea70658a, 0xc33aee27, 0xebeca36c,
0xc2c17d52, 0xed6bf9d1, 0xc2517e31, 0xeeee2d9d,
0xc1eb0209, 0xf0730342, 0xc18e18a7, 0xf1fa3ecb,
0xc13ad060, 0xf383a3e2, 0xc0f1360b, 0xf50ef5de,
0xc0b15502, 0xf69bf7c9, 0xc07b371e, 0xf82a6c6a,
0xc04ee4b8, 0xf9ba1651, 0xc02c64a6, 0xfb4ab7db,
0xc013bc39, 0xfcdc1342, 0xc004ef3f, 0xfe6deaa1,
0x3fffec43, 0x003243f1, 0x3fff4e59, 0x0096cb58,
0x3ffe1288, 0x00fb514b, 0x3ffc38d1, 0x015fd4d2,
0x3ff9c13a, 0x01c454f5, 0x3ff6abc8, 0x0228d0bb,
0x3ff2f884, 0x028d472e, 0x3feea776, 0x02f1b755,
0x3fe9b8a9, 0x03562038, 0x3fe42c2a, 0x03ba80df,
0x3fde0205, 0x041ed854, 0x3fd73a4a, 0x0483259d,
0x3fcfd50b, 0x04e767c5, 0x3fc7d258, 0x054b9dd3,
0x3fbf3246, 0x05afc6d0, 0x3fb5f4ea, 0x0613e1c5,
0x3fac1a5b, 0x0677edbb, 0x3fa1a2b2, 0x06dbe9bb,
0x3f968e07, 0x073fd4cf, 0x3f8adc77, 0x07a3adff,
0x3f7e8e1e, 0x08077457, 0x3f71a31b, 0x086b26de,
0x3f641b8d, 0x08cec4a0, 0x3f55f796, 0x09324ca7,
0x3f473759, 0x0995bdfd, 0x3f37dafa, 0x09f917ac,
0x3f27e29f, 0x0a5c58c0, 0x3f174e70, 0x0abf8043,
0x3f061e95, 0x0b228d42, 0x3ef45338, 0x0b857ec7,
0x3ee1ec87, 0x0be853de, 0x3eceeaad, 0x0c4b0b94,
0x3ebb4ddb, 0x0cada4f5, 0x3ea7163f, 0x0d101f0e,
0x3e92440d, 0x0d7278eb, 0x3e7cd778, 0x0dd4b19a,
0x3e66d0b4, 0x0e36c82a, 0x3e502ff9, 0x0e98bba7,
0x3e38f57c, 0x0efa8b20, 0x3e212179, 0x0f5c35a3,
0x3e08b42a, 0x0fbdba40, 0x3defadca, 0x101f1807,
0x3dd60e99, 0x10804e06, 0x3dbbd6d4, 0x10e15b4e,
0x3da106bd, 0x11423ef0, 0x3d859e96, 0x11a2f7fc,
0x3d699ea3, 0x12038584, 0x3d4d0728, 0x1263e699,
0x3d2fd86c, 0x12c41a4f, 0x3d1212b7, 0x13241fb6,
0x3cf3b653, 0x1383f5e3, 0x3cd4c38b, 0x13e39be9,
0x3cb53aaa, 0x144310dd, 0x3c951bff, 0x14a253d1,
0x3c7467d9, 0x150163dc, 0x3c531e88, 0x15604013,
0x3c314060, 0x15bee78c, 0x3c0ecdb2, 0x161d595d,
0x3bebc6d5, 0x167b949d, 0x3bc82c1f, 0x16d99864,
0x3ba3fde7, 0x173763c9, 0x3b7f3c87, 0x1794f5e6,
0x3b59e85a, 0x17f24dd3, 0x3b3401bb, 0x184f6aab,
0x3b0d8909, 0x18ac4b87, 0x3ae67ea1, 0x1908ef82,
0x3abee2e5, 0x196555b8, 0x3a96b636, 0x19c17d44,
0x3a6df8f8, 0x1a1d6544, 0x3a44ab8e, 0x1a790cd4,
0x3a1ace5f, 0x1ad47312, 0x39f061d2, 0x1b2f971e,
0x39c5664f, 0x1b8a7815, 0x3999dc42, 0x1be51518,
0x396dc414, 0x1c3f6d47, 0x39411e33, 0x1c997fc4,
0x3913eb0e, 0x1cf34baf, 0x38e62b13, 0x1d4cd02c,
0x38b7deb4, 0x1da60c5d, 0x38890663, 0x1dfeff67,
0x3859a292, 0x1e57a86d, 0x3829b3b9, 0x1eb00696,
0x37f93a4b, 0x1f081907, 0x37c836c2, 0x1f5fdee6,
0x3796a996, 0x1fb7575c, 0x37649341, 0x200e8190,
0x3731f440, 0x20655cac, 0x36fecd0e, 0x20bbe7d8,
0x36cb1e2a, 0x21122240, 0x3696e814, 0x21680b0f,
0x36622b4c, 0x21bda171, 0x362ce855, 0x2212e492,
0x35f71fb1, 0x2267d3a0, 0x35c0d1e7, 0x22bc6dca,
0x3589ff7a, 0x2310b23e, 0x3552a8f4, 0x2364a02e,
0x351acedd, 0x23b836ca, 0x34e271bd, 0x240b7543,
0x34a99221, 0x245e5acc, 0x34703095, 0x24b0e699,
0x34364da6, 0x250317df, 0x33fbe9e2, 0x2554edd1,
0x33c105db, 0x25a667a7, 0x3385a222, 0x25f78497,
0x3349bf48, 0x264843d9, 0x330d5de3, 0x2698a4a6,
0x32d07e85, 0x26e8a637, 0x329321c7, 0x273847c8,
0x32554840, 0x27878893, 0x3216f287, 0x27d667d5,
0x31d82137, 0x2824e4cc, 0x3198d4ea, 0x2872feb6,
0x31590e3e, 0x28c0b4d2, 0x3118cdcf, 0x290e0661,
0x30d8143b, 0x295af2a3, 0x3096e223, 0x29a778db,
0x30553828, 0x29f3984c, 0x301316eb, 0x2a3f503a,
0x2fd07f0f, 0x2a8a9fea, 0x2f8d713a, 0x2ad586a3,
0x2f49ee0f, 0x2b2003ac, 0x2f05f637, 0x2b6a164d,
0x2ec18a58, 0x2bb3bdce, 0x2e7cab1c, 0x2bfcf97c,
0x2e37592c, 0x2c45c8a0, 0x2df19534, 0x2c8e2a87,
0x2dab5fdf, 0x2cd61e7f, 0x2d64b9da, 0x2d1da3d5,
0x1fff6217, 0xff9b78b8, 0x1ffa72f0, 0xfed279a9,
0x1ff09566, 0xfe09a918, 0x1fe1cafd, 0xfd4125ff,
0x1fce15fd, 0xfc790f47, 0x1fb57972, 0xfbb183cc,
0x1f97f925, 0xfaeaa254, 0x1f7599a4, 0xfa248988,
0x1f4e603b, 0xf95f57f7, 0x1f2252f7, 0xf89b2c07,
0x1ef178a4, 0xf7d823f9, 0x1ebbd8c9, 0xf7165de0,
0x1e817bab, 0xf655f79f, 0x1e426a4b, 0xf5970edf,
0x1dfeae62, 0xf4d9c111, 0x1db65262, 0xf41e2b67,
0x1d696174, 0xf3646ace, 0x1d17e774, 0xf2ac9bea,
0x1cc1f0f4, 0xf1f6db14, 0x1c678b35, 0xf1434452,
0x1c08c426, 0xf091f357, 0x1ba5aa67, 0xefe30379,
0x1b3e4d3f, 0xef368fb3, 0x1ad2bc9e, 0xee8cb29c,
0x1a63091b, 0xede58667, 0x19ef43ef, 0xed4124da,
0x19777ef5, 0xec9fa74f, 0x18fbcca4, 0xec0126ad,
0x187c4010, 0xeb65bb64, 0x17f8ece3, 0xeacd7d6d,
0x1771e75f, 0xea388442, 0x16e74455, 0xe9a6e6da,
0x16591926, 0xe918bbab, 0x15c77bbe, 0xe88e18a1,
0x15328293, 0xe807131d, 0x149a449c, 0xe783bff0,
0x13fed953, 0xe704335c, 0x136058b1, 0xe688810b,
0x12bedb26, 0xe610bc11, 0x121a7999, 0xe59cf6e5,
0x11734d64, 0xe52d4362, 0x10c9704d, 0xe4c1b2c1,
0x101cfc87, 0xe45a5599, 0x0f6e0ca9, 0xe3f73bda,
0x0ebcbbae, 0xe39874cb, 0x0e0924ec, 0xe33e0f0c,
0x0d536416, 0xe2e8188c, 0x0c9b9532, 0xe2969e8c,
0x0be1d499, 0xe249ad9e, 0x0b263eef, 0xe201519e,
0x0a68f121, 0xe1bd95b5, 0x09aa0861, 0xe17e8455,
0x08e9a220, 0xe1442737, 0x0827dc07, 0xe10e875c,
0x0764d3f9, 0xe0ddad09, 0x06a0a809, 0xe0b19fc5,
0x05db7678, 0xe08a665c, 0x05155dac, 0xe06806db,
0x044e7c34, 0xe04a868e, 0x0386f0b9, 0xe031ea03,
0x02beda01, 0xe01e3503, 0x01f656e8, 0xe00f6a9a,
0x012d8657, 0xe0058d10, 0x00648748, 0xe0009de9,
};
tatic ogg_int16_t bitrevlook_512[128]={
0x00fe, 0x0000, 0x007e, 0x0080,
0x00be, 0x0040, 0x003e, 0x00c0,
0x00de, 0x0020, 0x005e, 0x00a0,
0x009e, 0x0060, 0x001e, 0x00e0,
0x00ee, 0x0010, 0x006e, 0x0090,
0x00ae, 0x0050, 0x002e, 0x00d0,
0x00ce, 0x0030, 0x004e, 0x00b0,
0x008e, 0x0070, 0x000e, 0x00f0,
0x00f6, 0x0008, 0x0076, 0x0088,
0x00b6, 0x0048, 0x0036, 0x00c8,
0x00d6, 0x0028, 0x0056, 0x00a8,
0x0096, 0x0068, 0x0016, 0x00e8,
0x00e6, 0x0018, 0x0066, 0x0098,
0x00a6, 0x0058, 0x0026, 0x00d8,
0x00c6, 0x0038, 0x0046, 0x00b8,
0x0086, 0x0078, 0x0006, 0x00f8,
0x00fa, 0x0004, 0x007a, 0x0084,
0x00ba, 0x0044, 0x003a, 0x00c4,
0x00da, 0x0024, 0x005a, 0x00a4,
0x009a, 0x0064, 0x001a, 0x00e4,
0x00ea, 0x0014, 0x006a, 0x0094,
0x00aa, 0x0054, 0x002a, 0x00d4,
0x00ca, 0x0034, 0x004a, 0x00b4,
0x008a, 0x0074, 0x000a, 0x00f4,
0x00f2, 0x000c, 0x0072, 0x008c,
0x00b2, 0x004c, 0x0032, 0x00cc,
0x00d2, 0x002c, 0x0052, 0x00ac,
0x0092, 0x006c, 0x0012, 0x00ec,
0x00e2, 0x001c, 0x0062, 0x009c,
0x00a2, 0x005c, 0x0022, 0x00dc,
0x00c2, 0x003c, 0x0042, 0x00bc,
0x0082, 0x007c, 0x0002, 0x00fc,
};
tatic ogg_int32_t triglook_1024[1280]={
0x40000000, 0x00000000, 0x3ffec42d, 0xff36f170,
0x3ffb10c1, 0xfe6deaa1, 0x3ff4e5e0, 0xfda4f351,
0x3fec43c7, 0xfcdc1342, 0x3fe12acb, 0xfc135231,
0x3fd39b5a, 0xfb4ab7db, 0x3fc395f9, 0xfa824bfd,
0x3fb11b48, 0xf9ba1651, 0x3f9c2bfb, 0xf8f21e8e,
0x3f84c8e2, 0xf82a6c6a, 0x3f6af2e3, 0xf7630799,
0x3f4eaafe, 0xf69bf7c9, 0x3f2ff24a, 0xf5d544a7,
0x3f0ec9f5, 0xf50ef5de, 0x3eeb3347, 0xf4491311,
0x3ec52fa0, 0xf383a3e2, 0x3e9cc076, 0xf2beafed,
0x3e71e759, 0xf1fa3ecb, 0x3e44a5ef, 0xf136580d,
0x3e14fdf7, 0xf0730342, 0x3de2f148, 0xefb047f2,
0x3dae81cf, 0xeeee2d9d, 0x3d77b192, 0xee2cbbc1,
0x3d3e82ae, 0xed6bf9d1, 0x3d02f757, 0xecabef3d,
0x3cc511d9, 0xebeca36c, 0x3c84d496, 0xeb2e1dbe,
0x3c42420a, 0xea70658a, 0x3bfd5cc4, 0xe9b38223,
0x3bb6276e, 0xe8f77acf, 0x3b6ca4c4, 0xe83c56cf,
0x3b20d79e, 0xe7821d59, 0x3ad2c2e8, 0xe6c8d59c,
0x3a8269a3, 0xe61086bc, 0x3a2fcee8, 0xe55937d5,
0x39daf5e8, 0xe4a2eff6, 0x3983e1e8, 0xe3edb628,
0x392a9642, 0xe3399167, 0x38cf1669, 0xe28688a4,
0x387165e3, 0xe1d4a2c8, 0x3811884d, 0xe123e6ad,
0x37af8159, 0xe0745b24, 0x374b54ce, 0xdfc606f1,
0x36e5068a, 0xdf18f0ce, 0x367c9a7e, 0xde6d1f65,
0x361214b0, 0xddc29958, 0x35a5793c, 0xdd196538,
0x3536cc52, 0xdc71898d, 0x34c61236, 0xdbcb0cce,
0x34534f41, 0xdb25f566, 0x33de87de, 0xda8249b4,
0x3367c090, 0xd9e01006, 0x32eefdea, 0xd93f4e9e,
0x32744493, 0xd8a00bae, 0x31f79948, 0xd8024d59,
0x317900d6, 0xd76619b6, 0x30f8801f, 0xd6cb76c9,
0x30761c18, 0xd6326a88, 0x2ff1d9c7, 0xd59afadb,
0x2f6bbe45, 0xd5052d97, 0x2ee3cebe, 0xd4710883,
0x2e5a1070, 0xd3de9156, 0x2dce88aa, 0xd34dcdb4,
0x2d413ccd, 0xd2bec333, 0x2cb2324c, 0xd2317756,
0x2c216eaa, 0xd1a5ef90, 0x2b8ef77d, 0xd11c3142,
0x2afad269, 0xd09441bb, 0x2a650525, 0xd00e2639,
0x29cd9578, 0xcf89e3e8, 0x29348937, 0xcf077fe1,
0x2899e64a, 0xce86ff2a, 0x27fdb2a7, 0xce0866b8,
0x275ff452, 0xcd8bbb6d, 0x26c0b162, 0xcd110216,
0x261feffa, 0xcc983f70, 0x257db64c, 0xcc217822,
0x24da0a9a, 0xcbacb0bf, 0x2434f332, 0xcb39edca,
0x238e7673, 0xcac933ae, 0x22e69ac8, 0xca5a86c4,
0x223d66a8, 0xc9edeb50, 0x2192e09b, 0xc9836582,
0x20e70f32, 0xc91af976, 0x2039f90f, 0xc8b4ab32,
0x1f8ba4dc, 0xc8507ea7, 0x1edc1953, 0xc7ee77b3,
0x1e2b5d38, 0xc78e9a1d, 0x1d79775c, 0xc730e997,
0x1cc66e99, 0xc6d569be, 0x1c1249d8, 0xc67c1e18,
0x1b5d100a, 0xc6250a18, 0x1aa6c82b, 0xc5d03118,
0x19ef7944, 0xc57d965d, 0x19372a64, 0xc52d3d18,
0x187de2a7, 0xc4df2862, 0x17c3a931, 0xc4935b3c,
0x17088531, 0xc449d892, 0x164c7ddd, 0xc402a33c,
0x158f9a76, 0xc3bdbdf6, 0x14d1e242, 0xc37b2b6a,
0x14135c94, 0xc33aee27, 0x135410c3, 0xc2fd08a9,
0x1294062f, 0xc2c17d52, 0x11d3443f, 0xc2884e6e,
0x1111d263, 0xc2517e31, 0x104fb80e, 0xc21d0eb8,
0x0f8cfcbe, 0xc1eb0209, 0x0ec9a7f3, 0xc1bb5a11,
0x0e05c135, 0xc18e18a7, 0x0d415013, 0xc1633f8a,
0x0c7c5c1e, 0xc13ad060, 0x0bb6ecef, 0xc114ccb9,
0x0af10a22, 0xc0f1360b, 0x0a2abb59, 0xc0d00db6,
0x09640837, 0xc0b15502, 0x089cf867, 0xc0950d1d,
0x07d59396, 0xc07b371e, 0x070de172, 0xc063d405,
0x0645e9af, 0xc04ee4b8, 0x057db403, 0xc03c6a07,
0x04b54825, 0xc02c64a6, 0x03ecadcf, 0xc01ed535,
0x0323ecbe, 0xc013bc39, 0x025b0caf, 0xc00b1a20,
0x0192155f, 0xc004ef3f, 0x00c90e90, 0xc0013bd3,
0x00000000, 0xc0000000, 0xff36f170, 0xc0013bd3,
0xfe6deaa1, 0xc004ef3f, 0xfda4f351, 0xc00b1a20,
0xfcdc1342, 0xc013bc39, 0xfc135231, 0xc01ed535,
0xfb4ab7db, 0xc02c64a6, 0xfa824bfd, 0xc03c6a07,
0xf9ba1651, 0xc04ee4b8, 0xf8f21e8e, 0xc063d405,
0xf82a6c6a, 0xc07b371e, 0xf7630799, 0xc0950d1d,
0xf69bf7c9, 0xc0b15502, 0xf5d544a7, 0xc0d00db6,
0xf50ef5de, 0xc0f1360b, 0xf4491311, 0xc114ccb9,
0xf383a3e2, 0xc13ad060, 0xf2beafed, 0xc1633f8a,
0xf1fa3ecb, 0xc18e18a7, 0xf136580d, 0xc1bb5a11,
0xf0730342, 0xc1eb0209, 0xefb047f2, 0xc21d0eb8,
0xeeee2d9d, 0xc2517e31, 0xee2cbbc1, 0xc2884e6e,
0xed6bf9d1, 0xc2c17d52, 0xecabef3d, 0xc2fd08a9,
0xebeca36c, 0xc33aee27, 0xeb2e1dbe, 0xc37b2b6a,
0xea70658a, 0xc3bdbdf6, 0xe9b38223, 0xc402a33c,
0xe8f77acf, 0xc449d892, 0xe83c56cf, 0xc4935b3c,
0xe7821d59, 0xc4df2862, 0xe6c8d59c, 0xc52d3d18,
0xe61086bc, 0xc57d965d, 0xe55937d5, 0xc5d03118,
0xe4a2eff6, 0xc6250a18, 0xe3edb628, 0xc67c1e18,
0xe3399167, 0xc6d569be, 0xe28688a4, 0xc730e997,
0xe1d4a2c8, 0xc78e9a1d, 0xe123e6ad, 0xc7ee77b3,
0xe0745b24, 0xc8507ea7, 0xdfc606f1, 0xc8b4ab32,
0xdf18f0ce, 0xc91af976, 0xde6d1f65, 0xc9836582,
0xddc29958, 0xc9edeb50, 0xdd196538, 0xca5a86c4,
0xdc71898d, 0xcac933ae, 0xdbcb0cce, 0xcb39edca,
0xdb25f566, 0xcbacb0bf, 0xda8249b4, 0xcc217822,
0xd9e01006, 0xcc983f70, 0xd93f4e9e, 0xcd110216,
0xd8a00bae, 0xcd8bbb6d, 0xd8024d59, 0xce0866b8,
0xd76619b6, 0xce86ff2a, 0xd6cb76c9, 0xcf077fe1,
0xd6326a88, 0xcf89e3e8, 0xd59afadb, 0xd00e2639,
0xd5052d97, 0xd09441bb, 0xd4710883, 0xd11c3142,
0xd3de9156, 0xd1a5ef90, 0xd34dcdb4, 0xd2317756,
0xd2bec333, 0xd2bec333, 0xd2317756, 0xd34dcdb4,
0xd1a5ef90, 0xd3de9156, 0xd11c3142, 0xd4710883,
0xd09441bb, 0xd5052d97, 0xd00e2639, 0xd59afadb,
0xcf89e3e8, 0xd6326a88, 0xcf077fe1, 0xd6cb76c9,
0xce86ff2a, 0xd76619b6, 0xce0866b8, 0xd8024d59,
0xcd8bbb6d, 0xd8a00bae, 0xcd110216, 0xd93f4e9e,
0xcc983f70, 0xd9e01006, 0xcc217822, 0xda8249b4,
0xcbacb0bf, 0xdb25f566, 0xcb39edca, 0xdbcb0cce,
0xcac933ae, 0xdc71898d, 0xca5a86c4, 0xdd196538,
0xc9edeb50, 0xddc29958, 0xc9836582, 0xde6d1f65,
0xc91af976, 0xdf18f0ce, 0xc8b4ab32, 0xdfc606f1,
0xc8507ea7, 0xe0745b24, 0xc7ee77b3, 0xe123e6ad,
0xc78e9a1d, 0xe1d4a2c8, 0xc730e997, 0xe28688a4,
0xc6d569be, 0xe3399167, 0xc67c1e18, 0xe3edb628,
0xc6250a18, 0xe4a2eff6, 0xc5d03118, 0xe55937d5,
0xc57d965d, 0xe61086bc, 0xc52d3d18, 0xe6c8d59c,
0xc4df2862, 0xe7821d59, 0xc4935b3c, 0xe83c56cf,
0xc449d892, 0xe8f77acf, 0xc402a33c, 0xe9b38223,
0xc3bdbdf6, 0xea70658a, 0xc37b2b6a, 0xeb2e1dbe,
0xc33aee27, 0xebeca36c, 0xc2fd08a9, 0xecabef3d,
0xc2c17d52, 0xed6bf9d1, 0xc2884e6e, 0xee2cbbc1,
0xc2517e31, 0xeeee2d9d, 0xc21d0eb8, 0xefb047f2,
0xc1eb0209, 0xf0730342, 0xc1bb5a11, 0xf136580d,
0xc18e18a7, 0xf1fa3ecb, 0xc1633f8a, 0xf2beafed,
0xc13ad060, 0xf383a3e2, 0xc114ccb9, 0xf4491311,
0xc0f1360b, 0xf50ef5de, 0xc0d00db6, 0xf5d544a7,
0xc0b15502, 0xf69bf7c9, 0xc0950d1d, 0xf7630799,
0xc07b371e, 0xf82a6c6a, 0xc063d405, 0xf8f21e8e,
0xc04ee4b8, 0xf9ba1651, 0xc03c6a07, 0xfa824bfd,
0xc02c64a6, 0xfb4ab7db, 0xc01ed535, 0xfc135231,
0xc013bc39, 0xfcdc1342, 0xc00b1a20, 0xfda4f351,
0xc004ef3f, 0xfe6deaa1, 0xc0013bd3, 0xff36f170,
0x3ffffb11, 0x001921fb, 0x3fffd396, 0x004b65e1,
0x3fff84a1, 0x007da998, 0x3fff0e32, 0x00afed02,
0x3ffe704a, 0x00e22fff, 0x3ffdaae7, 0x01147271,
0x3ffcbe0c, 0x0146b438, 0x3ffba9b8, 0x0178f536,
0x3ffa6dec, 0x01ab354b, 0x3ff90aaa, 0x01dd7459,
0x3ff77ff1, 0x020fb240, 0x3ff5cdc3, 0x0241eee2,
0x3ff3f420, 0x02742a1f, 0x3ff1f30b, 0x02a663d8,
0x3fefca84, 0x02d89bf0, 0x3fed7a8c, 0x030ad245,
0x3feb0326, 0x033d06bb, 0x3fe86452, 0x036f3931,
0x3fe59e12, 0x03a16988, 0x3fe2b067, 0x03d397a3,
0x3fdf9b55, 0x0405c361, 0x3fdc5edc, 0x0437eca4,
0x3fd8fafe, 0x046a134c, 0x3fd56fbe, 0x049c373c,
0x3fd1bd1e, 0x04ce5854, 0x3fcde320, 0x05007674,
0x3fc9e1c6, 0x0532917f, 0x3fc5b913, 0x0564a955,
0x3fc1690a, 0x0596bdd7, 0x3fbcf1ad, 0x05c8cee7,
0x3fb852ff, 0x05fadc66, 0x3fb38d02, 0x062ce634,
0x3fae9fbb, 0x065eec33, 0x3fa98b2a, 0x0690ee44,
0x3fa44f55, 0x06c2ec48, 0x3f9eec3e, 0x06f4e620,
0x3f9961e8, 0x0726dbae, 0x3f93b058, 0x0758ccd2,
0x3f8dd78f, 0x078ab96e, 0x3f87d792, 0x07bca163,
0x3f81b065, 0x07ee8493, 0x3f7b620c, 0x082062de,
0x3f74ec8a, 0x08523c25, 0x3f6e4fe3, 0x0884104b,
0x3f678c1c, 0x08b5df30, 0x3f60a138, 0x08e7a8b5,
0x3f598f3c, 0x09196cbc, 0x3f52562c, 0x094b2b27,
0x3f4af60d, 0x097ce3d5, 0x3f436ee3, 0x09ae96aa,
0x3f3bc0b3, 0x09e04385, 0x3f33eb81, 0x0a11ea49,
0x3f2bef53, 0x0a438ad7, 0x3f23cc2e, 0x0a752510,
0x3f1b8215, 0x0aa6b8d5, 0x3f13110f, 0x0ad84609,
0x3f0a7921, 0x0b09cc8c, 0x3f01ba50, 0x0b3b4c40,
0x3ef8d4a1, 0x0b6cc506, 0x3eefc81a, 0x0b9e36c0,
0x3ee694c1, 0x0bcfa150, 0x3edd3a9a, 0x0c010496,
0x3ed3b9ad, 0x0c326075, 0x3eca11fe, 0x0c63b4ce,
0x3ec04394, 0x0c950182, 0x3eb64e75, 0x0cc64673,
0x3eac32a6, 0x0cf78383, 0x3ea1f02f, 0x0d28b894,
0x3e978715, 0x0d59e586, 0x3e8cf75f, 0x0d8b0a3d,
0x3e824114, 0x0dbc2698, 0x3e77643a, 0x0ded3a7b,
0x3e6c60d7, 0x0e1e45c6, 0x3e6136f3, 0x0e4f485c,
0x3e55e694, 0x0e80421e, 0x3e4a6fc1, 0x0eb132ef,
0x3e3ed282, 0x0ee21aaf, 0x3e330ede, 0x0f12f941,
0x3e2724db, 0x0f43ce86, 0x3e1b1482, 0x0f749a61,
0x3e0eddd9, 0x0fa55cb4, 0x3e0280e9, 0x0fd6155f,
0x3df5fdb8, 0x1006c446, 0x3de9544f, 0x1037694b,
0x3ddc84b5, 0x1068044e, 0x3dcf8ef3, 0x10989532,
0x3dc2730f, 0x10c91bda, 0x3db53113, 0x10f99827,
0x3da7c907, 0x112a09fc, 0x3d9a3af2, 0x115a713a,
0x3d8c86de, 0x118acdc4, 0x3d7eacd2, 0x11bb1f7c,
0x3d70acd7, 0x11eb6643, 0x3d6286f6, 0x121ba1fd,
0x3d543b37, 0x124bd28c, 0x3d45c9a4, 0x127bf7d1,
0x3d373245, 0x12ac11af, 0x3d287523, 0x12dc2009,
0x3d199248, 0x130c22c1, 0x3d0a89bc, 0x133c19b8,
0x3cfb5b89, 0x136c04d2, 0x3cec07b8, 0x139be3f2,
0x3cdc8e52, 0x13cbb6f8, 0x3cccef62, 0x13fb7dc9,
0x3cbd2af0, 0x142b3846, 0x3cad4107, 0x145ae653,
0x3c9d31b0, 0x148a87d1, 0x3c8cfcf6, 0x14ba1ca3,
0x3c7ca2e2, 0x14e9a4ac, 0x3c6c237e, 0x15191fcf,
0x3c5b7ed4, 0x15488dee, 0x3c4ab4ef, 0x1577eeec,
0x3c39c5da, 0x15a742ac, 0x3c28b19e, 0x15d68911,
0x3c177845, 0x1605c1fd, 0x3c0619dc, 0x1634ed53,
0x3bf4966c, 0x16640af7, 0x3be2ee01, 0x16931acb,
0x3bd120a4, 0x16c21cb2, 0x3bbf2e62, 0x16f1108f,
0x3bad1744, 0x171ff646, 0x3b9adb57, 0x174ecdb8,
0x3b887aa6, 0x177d96ca, 0x3b75f53c, 0x17ac515f,
0x3b634b23, 0x17dafd59, 0x3b507c69, 0x18099a9c,
0x3b3d8918, 0x1838290c, 0x3b2a713d, 0x1866a88a,
0x3b1734e2, 0x189518fc, 0x3b03d414, 0x18c37a44,
0x3af04edf, 0x18f1cc45, 0x3adca54e, 0x19200ee3,
0x3ac8d76f, 0x194e4201, 0x3ab4e54c, 0x197c6584,
0x3aa0cef3, 0x19aa794d, 0x3a8c9470, 0x19d87d42,
0x3a7835cf, 0x1a067145, 0x3a63b31d, 0x1a34553b,
0x3a4f0c67, 0x1a622907, 0x3a3a41b9, 0x1a8fec8c,
0x3a25531f, 0x1abd9faf, 0x3a1040a8, 0x1aeb4253,
0x39fb0a60, 0x1b18d45c, 0x39e5b054, 0x1b4655ae,
0x39d03291, 0x1b73c62d, 0x39ba9125, 0x1ba125bd,
0x39a4cc1c, 0x1bce7442, 0x398ee385, 0x1bfbb1a0,
0x3978d76c, 0x1c28ddbb, 0x3962a7e0, 0x1c55f878,
0x394c54ee, 0x1c8301b9, 0x3935dea4, 0x1caff965,
0x391f4510, 0x1cdcdf5e, 0x3908883f, 0x1d09b389,
0x38f1a840, 0x1d3675cb, 0x38daa520, 0x1d632608,
0x38c37eef, 0x1d8fc424, 0x38ac35ba, 0x1dbc5004,
0x3894c98f, 0x1de8c98c, 0x387d3a7e, 0x1e1530a1,
0x38658894, 0x1e418528, 0x384db3e0, 0x1e6dc705,
0x3835bc71, 0x1e99f61d, 0x381da256, 0x1ec61254,
0x3805659e, 0x1ef21b90, 0x37ed0657, 0x1f1e11b5,
0x37d48490, 0x1f49f4a8, 0x37bbe05a, 0x1f75c44e,
0x37a319c2, 0x1fa1808c, 0x378a30d8, 0x1fcd2948,
0x377125ac, 0x1ff8be65, 0x3757f84c, 0x20243fca,
0x373ea8ca, 0x204fad5b, 0x37253733, 0x207b06fe,
0x370ba398, 0x20a64c97, 0x36f1ee09, 0x20d17e0d,
0x36d81695, 0x20fc9b44, 0x36be1d4c, 0x2127a423,
0x36a4023f, 0x2152988d, 0x3689c57d, 0x217d786a,
0x366f6717, 0x21a8439e, 0x3654e71d, 0x21d2fa0f,
0x363a45a0, 0x21fd9ba3, 0x361f82af, 0x2228283f,
0x36049e5b, 0x22529fca, 0x35e998b5, 0x227d0228,
0x35ce71ce, 0x22a74f40, 0x35b329b5, 0x22d186f8,
0x3597c07d, 0x22fba936, 0x357c3636, 0x2325b5df,
0x35608af1, 0x234facda, 0x3544bebf, 0x23798e0d,
0x3528d1b1, 0x23a3595e, 0x350cc3d8, 0x23cd0eb3,
0x34f09546, 0x23f6adf3, 0x34d4460c, 0x24203704,
0x34b7d63c, 0x2449a9cc, 0x349b45e7, 0x24730631,
0x347e951f, 0x249c4c1b, 0x3461c3f5, 0x24c57b6f,
0x3444d27b, 0x24ee9415, 0x3427c0c3, 0x251795f3,
0x340a8edf, 0x254080ef, 0x33ed3ce1, 0x256954f1,
0x33cfcadc, 0x259211df, 0x33b238e0, 0x25bab7a0,
0x33948701, 0x25e3461b, 0x3376b551, 0x260bbd37,
0x3358c3e2, 0x26341cdb, 0x333ab2c6, 0x265c64ef,
0x331c8211, 0x26849558, 0x32fe31d5, 0x26acadff,
0x32dfc224, 0x26d4aecb, 0x32c13311, 0x26fc97a3,
0x32a284b0, 0x2724686e, 0x3283b712, 0x274c2115,
0x3264ca4c, 0x2773c17d, 0x3245be70, 0x279b4990,
0x32269391, 0x27c2b934, 0x320749c3, 0x27ea1052,
0x31e7e118, 0x28114ed0, 0x31c859a5, 0x28387498,
0x31a8b37c, 0x285f8190, 0x3188eeb2, 0x288675a0,
0x31690b59, 0x28ad50b1, 0x31490986, 0x28d412ab,
0x3128e94c, 0x28fabb75, 0x3108aabf, 0x29214af8,
0x30e84df3, 0x2947c11c, 0x30c7d2fb, 0x296e1dc9,
0x30a739ed, 0x299460e8, 0x308682dc, 0x29ba8a61,
0x3065addb, 0x29e09a1c, 0x3044bb00, 0x2a069003,
0x3023aa5f, 0x2a2c6bfd, 0x30027c0c, 0x2a522df3,
0x2fe1301c, 0x2a77d5ce, 0x2fbfc6a3, 0x2a9d6377,
0x2f9e3fb6, 0x2ac2d6d6, 0x2f7c9b69, 0x2ae82fd5,
0x2f5ad9d1, 0x2b0d6e5c, 0x2f38fb03, 0x2b329255,
0x2f16ff14, 0x2b579ba8, 0x2ef4e619, 0x2b7c8a3f,
0x2ed2b027, 0x2ba15e03, 0x2eb05d53, 0x2bc616dd,
0x2e8dedb3, 0x2beab4b6, 0x2e6b615a, 0x2c0f3779,
0x2e48b860, 0x2c339f0e, 0x2e25f2d8, 0x2c57eb5e,
0x2e0310d9, 0x2c7c1c55, 0x2de01278, 0x2ca031da,
0x2dbcf7cb, 0x2cc42bd9, 0x2d99c0e7, 0x2ce80a3a,
0x2d766de2, 0x2d0bcce8, 0x2d52fed2, 0x2d2f73cd,
0x1fffd886, 0xffcdbc1e, 0x1ffe9cb4, 0xff69364a,
0x1ffc251e, 0xff04b646, 0x1ff871db, 0xfea03ff3,
0x1ff38310, 0xfe3bd72f, 0x1fed58ed, 0xfdd77fd9,
0x1fe5f3af, 0xfd733dd1, 0x1fdd53a0, 0xfd0f14f3,
0x1fd37914, 0xfcab091b, 0x1fc8646d, 0xfc471e27,
0x1fbc1618, 0xfbe357ee, 0x1fae8e8e, 0xfb7fba4b,
0x1f9fce56, 0xfb1c4914, 0x1f8fd600, 0xfab9081f,
0x1f7ea62a, 0xfa55fb3f, 0x1f6c3f7e, 0xf9f32646,
0x1f58a2b1, 0xf9908d03, 0x1f43d086, 0xf92e3344,
0x1f2dc9c9, 0xf8cc1cd3, 0x1f168f54, 0xf86a4d78,
0x1efe220c, 0xf808c8f9, 0x1ee482e2, 0xf7a79318,
0x1ec9b2d4, 0xf746af94, 0x1eadb2e9, 0xf6e6222a,
0x1e908436, 0xf685ee93, 0x1e7227db, 0xf6261883,
0x1e529f04, 0xf5c6a3ad, 0x1e31eae8, 0xf56793c0,
0x1e100cca, 0xf508ec64, 0x1ded05f8, 0xf4aab141,
0x1dc8d7cb, 0xf44ce5f8, 0x1da383a9, 0xf3ef8e28,
0x1d7d0b03, 0xf392ad69, 0x1d556f53, 0xf336474f,
0x1d2cb221, 0xf2da5f6c, 0x1d02d4ff, 0xf27ef94a,
0x1cd7d98a, 0xf224186e, 0x1cabc16a, 0xf1c9c05b,
0x1c7e8e52, 0xf16ff48c, 0x1c504201, 0xf116b876,
0x1c20de40, 0xf0be0f8b, 0x1bf064e1, 0xf065fd35,
0x1bbed7c5, 0xf00e84da, 0x1b8c38d2, 0xefb7a9d9,
0x1b5889ff, 0xef616f8c, 0x1b23cd47, 0xef0bd945,
0x1aee04b4, 0xeeb6ea51, 0x1ab73259, 0xee62a5f6,
0x1a7f5853, 0xee0f0f74, 0x1a4678c8, 0xedbc2a04,
0x1a0c95eb, 0xed69f8d9, 0x19d1b1f6, 0xed187f1c,
0x1995cf2f, 0xecc7bff3, 0x1958efe5, 0xec77be7a,
0x191b1670, 0xec287dc7, 0x18dc4533, 0xebda00e8,
0x189c7e9a, 0xeb8c4ae4, 0x185bc51b, 0xeb3f5eba,
0x181a1b34, 0xeaf33f61, 0x17d7836d, 0xeaa7efc7,
0x17940057, 0xea5d72d6, 0x174f948e, 0xea13cb6a,
0x170a42b3, 0xe9cafc5d, 0x16c40d74, 0xe983087b,
0x167cf785, 0xe93bf28c, 0x163503a3, 0xe8f5bd4d,
0x15ec3496, 0xe8b06b72, 0x15a28d2a, 0xe86bffa9,
0x15581039, 0xe8287c93, 0x150cc09f, 0xe7e5e4cc,
0x14c0a146, 0xe7a43ae5, 0x1473b51c, 0xe7638166,
0x1425ff18, 0xe723bacd, 0x13d78239, 0xe6e4e990,
0x13884186, 0xe6a7101b, 0x1338400d, 0xe66a30d1,
0x12e780e4, 0xe62e4e0a, 0x12960727, 0xe5f36a15,
0x1243d5fc, 0xe5b98738, 0x11f0f08c, 0xe580a7ad,
0x119d5a0a, 0xe548cda7, 0x114915af, 0xe511fb4c,
0x10f426bb, 0xe4dc32b9, 0x109e9074, 0xe4a77601,
0x10485627, 0xe473c72e, 0x0ff17b26, 0xe441283b,
0x0f9a02cb, 0xe40f9b1f, 0x0f41f075, 0xe3df21c0,
0x0ee9478a, 0xe3afbdff, 0x0e900b74, 0xe38171ae,
0x0e363fa5, 0xe3543e96, 0x0ddbe792, 0xe3282676,
0x0d8106b6, 0xe2fd2b01, 0x0d25a094, 0xe2d34ddf,
0x0cc9b8b1, 0xe2aa90ad, 0x0c6d5297, 0xe282f4fd,
0x0c1071d8, 0xe25c7c57, 0x0bb31a08, 0xe2372835,
0x0b554ebf, 0xe212fa08, 0x0af7139c, 0xe1eff336,
0x0a986c40, 0xe1ce1518, 0x0a395c53, 0xe1ad60fc,
0x09d9e77d, 0xe18dd825, 0x097a116d, 0xe16f7bca,
0x0919ddd6, 0xe1524d17, 0x08b9506c, 0xe1364d2c,
0x08586ce8, 0xe11b7d1e, 0x07f73707, 0xe101ddf4,
0x0795b288, 0xe0e970ac, 0x0733e32d, 0xe0d23637,
0x06d1ccbc, 0xe0bc2f7a, 0x066f72fd, 0xe0a75d4f,
0x060cd9ba, 0xe093c082, 0x05aa04c1, 0xe08159d6,
0x0546f7e1, 0xe0702a00, 0x04e3b6ec, 0xe06031aa,
0x048045b5, 0xe0517172, 0x041ca812, 0xe043e9e8,
0x03b8e1d9, 0xe0379b93, 0x0354f6e5, 0xe02c86ec,
0x02f0eb0d, 0xe022ac60, 0x028cc22f, 0xe01a0c51,
0x02288027, 0xe012a713, 0x01c428d1, 0xe00c7cf0,
0x015fc00d, 0xe0078e25, 0x00fb49ba, 0xe003dae2,
0x0096c9b6, 0xe001634c, 0x003243e2, 0xe000277a,
};
tatic ogg_int16_t bitrevlook_1024[256]={
0x01fe, 0x0000, 0x00fe, 0x0100,
0x017e, 0x0080, 0x007e, 0x0180,
0x01be, 0x0040, 0x00be, 0x0140,
0x013e, 0x00c0, 0x003e, 0x01c0,
0x01de, 0x0020, 0x00de, 0x0120,
0x015e, 0x00a0, 0x005e, 0x01a0,
0x019e, 0x0060, 0x009e, 0x0160,
0x011e, 0x00e0, 0x001e, 0x01e0,
0x01ee, 0x0010, 0x00ee, 0x0110,
0x016e, 0x0090, 0x006e, 0x0190,
0x01ae, 0x0050, 0x00ae, 0x0150,
0x012e, 0x00d0, 0x002e, 0x01d0,
0x01ce, 0x0030, 0x00ce, 0x0130,
0x014e, 0x00b0, 0x004e, 0x01b0,
0x018e, 0x0070, 0x008e, 0x0170,
0x010e, 0x00f0, 0x000e, 0x01f0,
0x01f6, 0x0008, 0x00f6, 0x0108,
0x0176, 0x0088, 0x0076, 0x0188,
0x01b6, 0x0048, 0x00b6, 0x0148,
0x0136, 0x00c8, 0x0036, 0x01c8,
0x01d6, 0x0028, 0x00d6, 0x0128,
0x0156, 0x00a8, 0x0056, 0x01a8,
0x0196, 0x0068, 0x0096, 0x0168,
0x0116, 0x00e8, 0x0016, 0x01e8,
0x01e6, 0x0018, 0x00e6, 0x0118,
0x0166, 0x0098, 0x0066, 0x0198,
0x01a6, 0x0058, 0x00a6, 0x0158,
0x0126, 0x00d8, 0x0026, 0x01d8,
0x01c6, 0x0038, 0x00c6, 0x0138,
0x0146, 0x00b8, 0x0046, 0x01b8,
0x0186, 0x0078, 0x0086, 0x0178,
0x0106, 0x00f8, 0x0006, 0x01f8,
0x01fa, 0x0004, 0x00fa, 0x0104,
0x017a, 0x0084, 0x007a, 0x0184,
0x01ba, 0x0044, 0x00ba, 0x0144,
0x013a, 0x00c4, 0x003a, 0x01c4,
0x01da, 0x0024, 0x00da, 0x0124,
0x015a, 0x00a4, 0x005a, 0x01a4,
0x019a, 0x0064, 0x009a, 0x0164,
0x011a, 0x00e4, 0x001a, 0x01e4,
0x01ea, 0x0014, 0x00ea, 0x0114,
0x016a, 0x0094, 0x006a, 0x0194,
0x01aa, 0x0054, 0x00aa, 0x0154,
0x012a, 0x00d4, 0x002a, 0x01d4,
0x01ca, 0x0034, 0x00ca, 0x0134,
0x014a, 0x00b4, 0x004a, 0x01b4,
0x018a, 0x0074, 0x008a, 0x0174,
0x010a, 0x00f4, 0x000a, 0x01f4,
0x01f2, 0x000c, 0x00f2, 0x010c,
0x0172, 0x008c, 0x0072, 0x018c,
0x01b2, 0x004c, 0x00b2, 0x014c,
0x0132, 0x00cc, 0x0032, 0x01cc,
0x01d2, 0x002c, 0x00d2, 0x012c,
0x0152, 0x00ac, 0x0052, 0x01ac,
0x0192, 0x006c, 0x0092, 0x016c,
0x0112, 0x00ec, 0x0012, 0x01ec,
0x01e2, 0x001c, 0x00e2, 0x011c,
0x0162, 0x009c, 0x0062, 0x019c,
0x01a2, 0x005c, 0x00a2, 0x015c,
0x0122, 0x00dc, 0x0022, 0x01dc,
0x01c2, 0x003c, 0x00c2, 0x013c,
0x0142, 0x00bc, 0x0042, 0x01bc,
0x0182, 0x007c, 0x0082, 0x017c,
0x0102, 0x00fc, 0x0002, 0x01fc,
};
tatic ogg_int32_t triglook_2048[2560]={
0x40000000, 0x00000000, 0x3fffb10b, 0xff9b783c,
0x3ffec42d, 0xff36f170, 0x3ffd3969, 0xfed26c94,
0x3ffb10c1, 0xfe6deaa1, 0x3ff84a3c, 0xfe096c8d,
0x3ff4e5e0, 0xfda4f351, 0x3ff0e3b6, 0xfd407fe6,
0x3fec43c7, 0xfcdc1342, 0x3fe7061f, 0xfc77ae5e,
0x3fe12acb, 0xfc135231, 0x3fdab1d9, 0xfbaeffb3,
0x3fd39b5a, 0xfb4ab7db, 0x3fcbe75e, 0xfae67ba2,
0x3fc395f9, 0xfa824bfd, 0x3fbaa740, 0xfa1e29e5,
0x3fb11b48, 0xf9ba1651, 0x3fa6f228, 0xf9561237,
0x3f9c2bfb, 0xf8f21e8e, 0x3f90c8da, 0xf88e3c4d,
0x3f84c8e2, 0xf82a6c6a, 0x3f782c30, 0xf7c6afdc,
0x3f6af2e3, 0xf7630799, 0x3f5d1d1d, 0xf6ff7496,
0x3f4eaafe, 0xf69bf7c9, 0x3f3f9cab, 0xf6389228,
0x3f2ff24a, 0xf5d544a7, 0x3f1fabff, 0xf572103d,
0x3f0ec9f5, 0xf50ef5de, 0x3efd4c54, 0xf4abf67e,
0x3eeb3347, 0xf4491311, 0x3ed87efc, 0xf3e64c8c,
0x3ec52fa0, 0xf383a3e2, 0x3eb14563, 0xf3211a07,
0x3e9cc076, 0xf2beafed, 0x3e87a10c, 0xf25c6688,
0x3e71e759, 0xf1fa3ecb, 0x3e5b9392, 0xf19839a6,
0x3e44a5ef, 0xf136580d, 0x3e2d1ea8, 0xf0d49af1,
0x3e14fdf7, 0xf0730342, 0x3dfc4418, 0xf01191f3,
0x3de2f148, 0xefb047f2, 0x3dc905c5, 0xef4f2630,
0x3dae81cf, 0xeeee2d9d, 0x3d9365a8, 0xee8d5f29,
0x3d77b192, 0xee2cbbc1, 0x3d5b65d2, 0xedcc4454,
0x3d3e82ae, 0xed6bf9d1, 0x3d21086c, 0xed0bdd25,
0x3d02f757, 0xecabef3d, 0x3ce44fb7, 0xec4c3106,
0x3cc511d9, 0xebeca36c, 0x3ca53e09, 0xeb8d475b,
0x3c84d496, 0xeb2e1dbe, 0x3c63d5d1, 0xeacf277f,
0x3c42420a, 0xea70658a, 0x3c201994, 0xea11d8c8,
0x3bfd5cc4, 0xe9b38223, 0x3bda0bf0, 0xe9556282,
0x3bb6276e, 0xe8f77acf, 0x3b91af97, 0xe899cbf1,
0x3b6ca4c4, 0xe83c56cf, 0x3b470753, 0xe7df1c50,
0x3b20d79e, 0xe7821d59, 0x3afa1605, 0xe7255ad1,
0x3ad2c2e8, 0xe6c8d59c, 0x3aaadea6, 0xe66c8e9f,
0x3a8269a3, 0xe61086bc, 0x3a596442, 0xe5b4bed8,
0x3a2fcee8, 0xe55937d5, 0x3a05a9fd, 0xe4fdf294,
0x39daf5e8, 0xe4a2eff6, 0x39afb313, 0xe44830dd,
0x3983e1e8, 0xe3edb628, 0x395782d3, 0xe39380b6,
0x392a9642, 0xe3399167, 0x38fd1ca4, 0xe2dfe917,
0x38cf1669, 0xe28688a4, 0x38a08402, 0xe22d70eb,
0x387165e3, 0xe1d4a2c8, 0x3841bc7f, 0xe17c1f15,
0x3811884d, 0xe123e6ad, 0x37e0c9c3, 0xe0cbfa6a,
0x37af8159, 0xe0745b24, 0x377daf89, 0xe01d09b4,
0x374b54ce, 0xdfc606f1, 0x371871a5, 0xdf6f53b3,
0x36e5068a, 0xdf18f0ce, 0x36b113fd, 0xdec2df18,
0x367c9a7e, 0xde6d1f65, 0x36479a8e, 0xde17b28a,
0x361214b0, 0xddc29958, 0x35dc0968, 0xdd6dd4a2,
0x35a5793c, 0xdd196538, 0x356e64b2, 0xdcc54bec,
0x3536cc52, 0xdc71898d, 0x34feb0a5, 0xdc1e1ee9,
0x34c61236, 0xdbcb0cce, 0x348cf190, 0xdb785409,
0x34534f41, 0xdb25f566, 0x34192bd5, 0xdad3f1b1,
0x33de87de, 0xda8249b4, 0x33a363ec, 0xda30fe38,
0x3367c090, 0xd9e01006, 0x332b9e5e, 0xd98f7fe6,
0x32eefdea, 0xd93f4e9e, 0x32b1dfc9, 0xd8ef7cf4,
0x32744493, 0xd8a00bae, 0x32362ce0, 0xd850fb8e,
0x31f79948, 0xd8024d59, 0x31b88a66, 0xd7b401d1,
0x317900d6, 0xd76619b6, 0x3138fd35, 0xd71895c9,
0x30f8801f, 0xd6cb76c9, 0x30b78a36, 0xd67ebd74,
0x30761c18, 0xd6326a88, 0x30343667, 0xd5e67ec1,
0x2ff1d9c7, 0xd59afadb, 0x2faf06da, 0xd54fdf8f,
0x2f6bbe45, 0xd5052d97, 0x2f2800af, 0xd4bae5ab,
0x2ee3cebe, 0xd4710883, 0x2e9f291b, 0xd42796d5,
0x2e5a1070, 0xd3de9156, 0x2e148566, 0xd395f8ba,
0x2dce88aa, 0xd34dcdb4, 0x2d881ae8, 0xd30610f7,
0x2d413ccd, 0xd2bec333, 0x2cf9ef09, 0xd277e518,
0x2cb2324c, 0xd2317756, 0x2c6a0746, 0xd1eb7a9a,
0x2c216eaa, 0xd1a5ef90, 0x2bd8692b, 0xd160d6e5,
0x2b8ef77d, 0xd11c3142, 0x2b451a55, 0xd0d7ff51,
0x2afad269, 0xd09441bb, 0x2ab02071, 0xd050f926,
0x2a650525, 0xd00e2639, 0x2a19813f, 0xcfcbc999,
0x29cd9578, 0xcf89e3e8, 0x2981428c, 0xcf4875ca,
0x29348937, 0xcf077fe1, 0x28e76a37, 0xcec702cb,
0x2899e64a, 0xce86ff2a, 0x284bfe2f, 0xce47759a,
0x27fdb2a7, 0xce0866b8, 0x27af0472, 0xcdc9d320,
0x275ff452, 0xcd8bbb6d, 0x2710830c, 0xcd4e2037,
0x26c0b162, 0xcd110216, 0x2670801a, 0xccd461a2,
0x261feffa, 0xcc983f70, 0x25cf01c8, 0xcc5c9c14,
0x257db64c, 0xcc217822, 0x252c0e4f, 0xcbe6d42b,
0x24da0a9a, 0xcbacb0bf, 0x2487abf7, 0xcb730e70,
0x2434f332, 0xcb39edca, 0x23e1e117, 0xcb014f5b,
0x238e7673, 0xcac933ae, 0x233ab414, 0xca919b4e,
0x22e69ac8, 0xca5a86c4, 0x22922b5e, 0xca23f698,
0x223d66a8, 0xc9edeb50, 0x21e84d76, 0xc9b86572,
0x2192e09b, 0xc9836582, 0x213d20e8, 0xc94eec03,
0x20e70f32, 0xc91af976, 0x2090ac4d, 0xc8e78e5b,
0x2039f90f, 0xc8b4ab32, 0x1fe2f64c, 0xc8825077,
0x1f8ba4dc, 0xc8507ea7, 0x1f340596, 0xc81f363d,
0x1edc1953, 0xc7ee77b3, 0x1e83e0eb, 0xc7be4381,
0x1e2b5d38, 0xc78e9a1d, 0x1dd28f15, 0xc75f7bfe,
0x1d79775c, 0xc730e997, 0x1d2016e9, 0xc702e35c,
0x1cc66e99, 0xc6d569be, 0x1c6c7f4a, 0xc6a87d2d,
0x1c1249d8, 0xc67c1e18, 0x1bb7cf23, 0xc6504ced,
0x1b5d100a, 0xc6250a18, 0x1b020d6c, 0xc5fa5603,
0x1aa6c82b, 0xc5d03118, 0x1a4b4128, 0xc5a69bbe,
0x19ef7944, 0xc57d965d, 0x19937161, 0xc555215a,
0x19372a64, 0xc52d3d18, 0x18daa52f, 0xc505e9fb,
0x187de2a7, 0xc4df2862, 0x1820e3b0, 0xc4b8f8ad,
0x17c3a931, 0xc4935b3c, 0x1766340f, 0xc46e5069,
0x17088531, 0xc449d892, 0x16aa9d7e, 0xc425f410,
0x164c7ddd, 0xc402a33c, 0x15ee2738, 0xc3dfe66c,
0x158f9a76, 0xc3bdbdf6, 0x1530d881, 0xc39c2a2f,
0x14d1e242, 0xc37b2b6a, 0x1472b8a5, 0xc35ac1f7,
0x14135c94, 0xc33aee27, 0x13b3cefa, 0xc31bb049,
0x135410c3, 0xc2fd08a9, 0x12f422db, 0xc2def794,
0x1294062f, 0xc2c17d52, 0x1233bbac, 0xc2a49a2e,
0x11d3443f, 0xc2884e6e, 0x1172a0d7, 0xc26c9a58,
0x1111d263, 0xc2517e31, 0x10b0d9d0, 0xc236fa3b,
0x104fb80e, 0xc21d0eb8, 0x0fee6e0d, 0xc203bbe8,
0x0f8cfcbe, 0xc1eb0209, 0x0f2b650f, 0xc1d2e158,
0x0ec9a7f3, 0xc1bb5a11, 0x0e67c65a, 0xc1a46c6e,
0x0e05c135, 0xc18e18a7, 0x0da39978, 0xc1785ef4,
0x0d415013, 0xc1633f8a, 0x0cdee5f9, 0xc14eba9d,
0x0c7c5c1e, 0xc13ad060, 0x0c19b374, 0xc1278104,
0x0bb6ecef, 0xc114ccb9, 0x0b540982, 0xc102b3ac,
0x0af10a22, 0xc0f1360b, 0x0a8defc3, 0xc0e05401,
0x0a2abb59, 0xc0d00db6, 0x09c76dd8, 0xc0c06355,
0x09640837, 0xc0b15502, 0x09008b6a, 0xc0a2e2e3,
0x089cf867, 0xc0950d1d, 0x08395024, 0xc087d3d0,
0x07d59396, 0xc07b371e, 0x0771c3b3, 0xc06f3726,
0x070de172, 0xc063d405, 0x06a9edc9, 0xc0590dd8,
0x0645e9af, 0xc04ee4b8, 0x05e1d61b, 0xc04558c0,
0x057db403, 0xc03c6a07, 0x0519845e, 0xc03418a2,
0x04b54825, 0xc02c64a6, 0x0451004d, 0xc0254e27,
0x03ecadcf, 0xc01ed535, 0x038851a2, 0xc018f9e1,
0x0323ecbe, 0xc013bc39, 0x02bf801a, 0xc00f1c4a,
0x025b0caf, 0xc00b1a20, 0x01f69373, 0xc007b5c4,
0x0192155f, 0xc004ef3f, 0x012d936c, 0xc002c697,
0x00c90e90, 0xc0013bd3, 0x006487c4, 0xc0004ef5,
0x00000000, 0xc0000000, 0xff9b783c, 0xc0004ef5,
0xff36f170, 0xc0013bd3, 0xfed26c94, 0xc002c697,
0xfe6deaa1, 0xc004ef3f, 0xfe096c8d, 0xc007b5c4,
0xfda4f351, 0xc00b1a20, 0xfd407fe6, 0xc00f1c4a,
0xfcdc1342, 0xc013bc39, 0xfc77ae5e, 0xc018f9e1,
0xfc135231, 0xc01ed535, 0xfbaeffb3, 0xc0254e27,
0xfb4ab7db, 0xc02c64a6, 0xfae67ba2, 0xc03418a2,
0xfa824bfd, 0xc03c6a07, 0xfa1e29e5, 0xc04558c0,
0xf9ba1651, 0xc04ee4b8, 0xf9561237, 0xc0590dd8,
0xf8f21e8e, 0xc063d405, 0xf88e3c4d, 0xc06f3726,
0xf82a6c6a, 0xc07b371e, 0xf7c6afdc, 0xc087d3d0,
0xf7630799, 0xc0950d1d, 0xf6ff7496, 0xc0a2e2e3,
0xf69bf7c9, 0xc0b15502, 0xf6389228, 0xc0c06355,
0xf5d544a7, 0xc0d00db6, 0xf572103d, 0xc0e05401,
0xf50ef5de, 0xc0f1360b, 0xf4abf67e, 0xc102b3ac,
0xf4491311, 0xc114ccb9, 0xf3e64c8c, 0xc1278104,
0xf383a3e2, 0xc13ad060, 0xf3211a07, 0xc14eba9d,
0xf2beafed, 0xc1633f8a, 0xf25c6688, 0xc1785ef4,
0xf1fa3ecb, 0xc18e18a7, 0xf19839a6, 0xc1a46c6e,
0xf136580d, 0xc1bb5a11, 0xf0d49af1, 0xc1d2e158,
0xf0730342, 0xc1eb0209, 0xf01191f3, 0xc203bbe8,
0xefb047f2, 0xc21d0eb8, 0xef4f2630, 0xc236fa3b,
0xeeee2d9d, 0xc2517e31, 0xee8d5f29, 0xc26c9a58,
0xee2cbbc1, 0xc2884e6e, 0xedcc4454, 0xc2a49a2e,
0xed6bf9d1, 0xc2c17d52, 0xed0bdd25, 0xc2def794,
0xecabef3d, 0xc2fd08a9, 0xec4c3106, 0xc31bb049,
0xebeca36c, 0xc33aee27, 0xeb8d475b, 0xc35ac1f7,
0xeb2e1dbe, 0xc37b2b6a, 0xeacf277f, 0xc39c2a2f,
0xea70658a, 0xc3bdbdf6, 0xea11d8c8, 0xc3dfe66c,
0xe9b38223, 0xc402a33c, 0xe9556282, 0xc425f410,
0xe8f77acf, 0xc449d892, 0xe899cbf1, 0xc46e5069,
0xe83c56cf, 0xc4935b3c, 0xe7df1c50, 0xc4b8f8ad,
0xe7821d59, 0xc4df2862, 0xe7255ad1, 0xc505e9fb,
0xe6c8d59c, 0xc52d3d18, 0xe66c8e9f, 0xc555215a,
0xe61086bc, 0xc57d965d, 0xe5b4bed8, 0xc5a69bbe,
0xe55937d5, 0xc5d03118, 0xe4fdf294, 0xc5fa5603,
0xe4a2eff6, 0xc6250a18, 0xe44830dd, 0xc6504ced,
0xe3edb628, 0xc67c1e18, 0xe39380b6, 0xc6a87d2d,
0xe3399167, 0xc6d569be, 0xe2dfe917, 0xc702e35c,
0xe28688a4, 0xc730e997, 0xe22d70eb, 0xc75f7bfe,
0xe1d4a2c8, 0xc78e9a1d, 0xe17c1f15, 0xc7be4381,
0xe123e6ad, 0xc7ee77b3, 0xe0cbfa6a, 0xc81f363d,
0xe0745b24, 0xc8507ea7, 0xe01d09b4, 0xc8825077,
0xdfc606f1, 0xc8b4ab32, 0xdf6f53b3, 0xc8e78e5b,
0xdf18f0ce, 0xc91af976, 0xdec2df18, 0xc94eec03,
0xde6d1f65, 0xc9836582, 0xde17b28a, 0xc9b86572,
0xddc29958, 0xc9edeb50, 0xdd6dd4a2, 0xca23f698,
0xdd196538, 0xca5a86c4, 0xdcc54bec, 0xca919b4e,
0xdc71898d, 0xcac933ae, 0xdc1e1ee9, 0xcb014f5b,
0xdbcb0cce, 0xcb39edca, 0xdb785409, 0xcb730e70,
0xdb25f566, 0xcbacb0bf, 0xdad3f1b1, 0xcbe6d42b,
0xda8249b4, 0xcc217822, 0xda30fe38, 0xcc5c9c14,
0xd9e01006, 0xcc983f70, 0xd98f7fe6, 0xccd461a2,
0xd93f4e9e, 0xcd110216, 0xd8ef7cf4, 0xcd4e2037,
0xd8a00bae, 0xcd8bbb6d, 0xd850fb8e, 0xcdc9d320,
0xd8024d59, 0xce0866b8, 0xd7b401d1, 0xce47759a,
0xd76619b6, 0xce86ff2a, 0xd71895c9, 0xcec702cb,
0xd6cb76c9, 0xcf077fe1, 0xd67ebd74, 0xcf4875ca,
0xd6326a88, 0xcf89e3e8, 0xd5e67ec1, 0xcfcbc999,
0xd59afadb, 0xd00e2639, 0xd54fdf8f, 0xd050f926,
0xd5052d97, 0xd09441bb, 0xd4bae5ab, 0xd0d7ff51,
0xd4710883, 0xd11c3142, 0xd42796d5, 0xd160d6e5,
0xd3de9156, 0xd1a5ef90, 0xd395f8ba, 0xd1eb7a9a,
0xd34dcdb4, 0xd2317756, 0xd30610f7, 0xd277e518,
0xd2bec333, 0xd2bec333, 0xd277e518, 0xd30610f7,
0xd2317756, 0xd34dcdb4, 0xd1eb7a9a, 0xd395f8ba,
0xd1a5ef90, 0xd3de9156, 0xd160d6e5, 0xd42796d5,
0xd11c3142, 0xd4710883, 0xd0d7ff51, 0xd4bae5ab,
0xd09441bb, 0xd5052d97, 0xd050f926, 0xd54fdf8f,
0xd00e2639, 0xd59afadb, 0xcfcbc999, 0xd5e67ec1,
0xcf89e3e8, 0xd6326a88, 0xcf4875ca, 0xd67ebd74,
0xcf077fe1, 0xd6cb76c9, 0xcec702cb, 0xd71895c9,
0xce86ff2a, 0xd76619b6, 0xce47759a, 0xd7b401d1,
0xce0866b8, 0xd8024d59, 0xcdc9d320, 0xd850fb8e,
0xcd8bbb6d, 0xd8a00bae, 0xcd4e2037, 0xd8ef7cf4,
0xcd110216, 0xd93f4e9e, 0xccd461a2, 0xd98f7fe6,
0xcc983f70, 0xd9e01006, 0xcc5c9c14, 0xda30fe38,
0xcc217822, 0xda8249b4, 0xcbe6d42b, 0xdad3f1b1,
0xcbacb0bf, 0xdb25f566, 0xcb730e70, 0xdb785409,
0xcb39edca, 0xdbcb0cce, 0xcb014f5b, 0xdc1e1ee9,
0xcac933ae, 0xdc71898d, 0xca919b4e, 0xdcc54bec,
0xca5a86c4, 0xdd196538, 0xca23f698, 0xdd6dd4a2,
0xc9edeb50, 0xddc29958, 0xc9b86572, 0xde17b28a,
0xc9836582, 0xde6d1f65, 0xc94eec03, 0xdec2df18,
0xc91af976, 0xdf18f0ce, 0xc8e78e5b, 0xdf6f53b3,
0xc8b4ab32, 0xdfc606f1, 0xc8825077, 0xe01d09b4,
0xc8507ea7, 0xe0745b24, 0xc81f363d, 0xe0cbfa6a,
0xc7ee77b3, 0xe123e6ad, 0xc7be4381, 0xe17c1f15,
0xc78e9a1d, 0xe1d4a2c8, 0xc75f7bfe, 0xe22d70eb,
0xc730e997, 0xe28688a4, 0xc702e35c, 0xe2dfe917,
0xc6d569be, 0xe3399167, 0xc6a87d2d, 0xe39380b6,
0xc67c1e18, 0xe3edb628, 0xc6504ced, 0xe44830dd,
0xc6250a18, 0xe4a2eff6, 0xc5fa5603, 0xe4fdf294,
0xc5d03118, 0xe55937d5, 0xc5a69bbe, 0xe5b4bed8,
0xc57d965d, 0xe61086bc, 0xc555215a, 0xe66c8e9f,
0xc52d3d18, 0xe6c8d59c, 0xc505e9fb, 0xe7255ad1,
0xc4df2862, 0xe7821d59, 0xc4b8f8ad, 0xe7df1c50,
0xc4935b3c, 0xe83c56cf, 0xc46e5069, 0xe899cbf1,
0xc449d892, 0xe8f77acf, 0xc425f410, 0xe9556282,
0xc402a33c, 0xe9b38223, 0xc3dfe66c, 0xea11d8c8,
0xc3bdbdf6, 0xea70658a, 0xc39c2a2f, 0xeacf277f,
0xc37b2b6a, 0xeb2e1dbe, 0xc35ac1f7, 0xeb8d475b,
0xc33aee27, 0xebeca36c, 0xc31bb049, 0xec4c3106,
0xc2fd08a9, 0xecabef3d, 0xc2def794, 0xed0bdd25,
0xc2c17d52, 0xed6bf9d1, 0xc2a49a2e, 0xedcc4454,
0xc2884e6e, 0xee2cbbc1, 0xc26c9a58, 0xee8d5f29,
0xc2517e31, 0xeeee2d9d, 0xc236fa3b, 0xef4f2630,
0xc21d0eb8, 0xefb047f2, 0xc203bbe8, 0xf01191f3,
0xc1eb0209, 0xf0730342, 0xc1d2e158, 0xf0d49af1,
0xc1bb5a11, 0xf136580d, 0xc1a46c6e, 0xf19839a6,
0xc18e18a7, 0xf1fa3ecb, 0xc1785ef4, 0xf25c6688,
0xc1633f8a, 0xf2beafed, 0xc14eba9d, 0xf3211a07,
0xc13ad060, 0xf383a3e2, 0xc1278104, 0xf3e64c8c,
0xc114ccb9, 0xf4491311, 0xc102b3ac, 0xf4abf67e,
0xc0f1360b, 0xf50ef5de, 0xc0e05401, 0xf572103d,
0xc0d00db6, 0xf5d544a7, 0xc0c06355, 0xf6389228,
0xc0b15502, 0xf69bf7c9, 0xc0a2e2e3, 0xf6ff7496,
0xc0950d1d, 0xf7630799, 0xc087d3d0, 0xf7c6afdc,
0xc07b371e, 0xf82a6c6a, 0xc06f3726, 0xf88e3c4d,
0xc063d405, 0xf8f21e8e, 0xc0590dd8, 0xf9561237,
0xc04ee4b8, 0xf9ba1651, 0xc04558c0, 0xfa1e29e5,
0xc03c6a07, 0xfa824bfd, 0xc03418a2, 0xfae67ba2,
0xc02c64a6, 0xfb4ab7db, 0xc0254e27, 0xfbaeffb3,
0xc01ed535, 0xfc135231, 0xc018f9e1, 0xfc77ae5e,
0xc013bc39, 0xfcdc1342, 0xc00f1c4a, 0xfd407fe6,
0xc00b1a20, 0xfda4f351, 0xc007b5c4, 0xfe096c8d,
0xc004ef3f, 0xfe6deaa1, 0xc002c697, 0xfed26c94,
0xc0013bd3, 0xff36f170, 0xc0004ef5, 0xff9b783c,
0x3ffffec4, 0x000c90fe, 0x3ffff4e6, 0x0025b2f7,
0x3fffe128, 0x003ed4ea, 0x3fffc38c, 0x0057f6d4,
0x3fff9c12, 0x007118b0, 0x3fff6ab9, 0x008a3a7b,
0x3fff2f82, 0x00a35c30, 0x3ffeea6c, 0x00bc7dcc,
0x3ffe9b77, 0x00d59f4c, 0x3ffe42a4, 0x00eec0aa,
0x3ffddff3, 0x0107e1e3, 0x3ffd7364, 0x012102f4,
0x3ffcfcf6, 0x013a23d8, 0x3ffc7caa, 0x0153448c,
0x3ffbf280, 0x016c650b, 0x3ffb5e78, 0x01858552,
0x3ffac092, 0x019ea55d, 0x3ffa18cf, 0x01b7c528,
0x3ff9672d, 0x01d0e4b0, 0x3ff8abae, 0x01ea03ef,
0x3ff7e652, 0x020322e3, 0x3ff71718, 0x021c4188,
0x3ff63e01, 0x02355fd9, 0x3ff55b0d, 0x024e7dd4,
0x3ff46e3c, 0x02679b73, 0x3ff3778e, 0x0280b8b3,
0x3ff27703, 0x0299d590, 0x3ff16c9c, 0x02b2f207,
0x3ff05858, 0x02cc0e13, 0x3fef3a39, 0x02e529b0,
0x3fee123d, 0x02fe44dc, 0x3fece065, 0x03175f91,
0x3feba4b2, 0x033079cc, 0x3fea5f23, 0x03499389,
0x3fe90fb9, 0x0362acc5, 0x3fe7b674, 0x037bc57b,
0x3fe65354, 0x0394dda7, 0x3fe4e659, 0x03adf546,
0x3fe36f84, 0x03c70c54, 0x3fe1eed5, 0x03e022cc,
0x3fe0644b, 0x03f938ac, 0x3fdecfe8, 0x04124dee,
0x3fdd31ac, 0x042b6290, 0x3fdb8996, 0x0444768d,
0x3fd9d7a7, 0x045d89e2, 0x3fd81bdf, 0x04769c8b,
0x3fd6563f, 0x048fae83, 0x3fd486c7, 0x04a8bfc7,
0x3fd2ad77, 0x04c1d054, 0x3fd0ca4f, 0x04dae024,
0x3fcedd50, 0x04f3ef35, 0x3fcce67a, 0x050cfd82,
0x3fcae5cd, 0x05260b08, 0x3fc8db4a, 0x053f17c3,
0x3fc6c6f0, 0x055823ae, 0x3fc4a8c1, 0x05712ec7,
0x3fc280bc, 0x058a3908, 0x3fc04ee3, 0x05a3426f,
0x3fbe1334, 0x05bc4af8, 0x3fbbcdb1, 0x05d5529e,
0x3fb97e5a, 0x05ee595d, 0x3fb7252f, 0x06075f33,
0x3fb4c231, 0x0620641a, 0x3fb2555f, 0x06396810,
0x3fafdebb, 0x06526b10, 0x3fad5e45, 0x066b6d16,
0x3faad3fd, 0x06846e1f, 0x3fa83fe3, 0x069d6e27,
0x3fa5a1f9, 0x06b66d29, 0x3fa2fa3d, 0x06cf6b23,
0x3fa048b2, 0x06e86810, 0x3f9d8d56, 0x070163eb,
0x3f9ac82c, 0x071a5eb3, 0x3f97f932, 0x07335862,
0x3f952069, 0x074c50f4, 0x3f923dd2, 0x07654867,
0x3f8f516e, 0x077e3eb5, 0x3f8c5b3d, 0x079733dc,
0x3f895b3e, 0x07b027d7, 0x3f865174, 0x07c91aa3,
0x3f833ddd, 0x07e20c3b, 0x3f80207b, 0x07fafc9c,
0x3f7cf94e, 0x0813ebc2, 0x3f79c857, 0x082cd9a9,
0x3f768d96, 0x0845c64d, 0x3f73490b, 0x085eb1ab,
0x3f6ffab8, 0x08779bbe, 0x3f6ca29c, 0x08908483,
0x3f6940b8, 0x08a96bf6, 0x3f65d50d, 0x08c25213,
0x3f625f9b, 0x08db36d6, 0x3f5ee063, 0x08f41a3c,
0x3f5b5765, 0x090cfc40, 0x3f57c4a2, 0x0925dcdf,
0x3f54281a, 0x093ebc14, 0x3f5081cd, 0x095799dd,
0x3f4cd1be, 0x09707635, 0x3f4917eb, 0x09895118,
0x3f455456, 0x09a22a83, 0x3f4186ff, 0x09bb0271,
0x3f3dafe7, 0x09d3d8df, 0x3f39cf0e, 0x09ecadc9,
0x3f35e476, 0x0a05812c, 0x3f31f01d, 0x0a1e5303,
0x3f2df206, 0x0a37234a, 0x3f29ea31, 0x0a4ff1fe,
0x3f25d89e, 0x0a68bf1b, 0x3f21bd4e, 0x0a818a9d,
0x3f1d9842, 0x0a9a5480, 0x3f19697a, 0x0ab31cc1,
0x3f1530f7, 0x0acbe35b, 0x3f10eeb9, 0x0ae4a84b,
0x3f0ca2c2, 0x0afd6b8d, 0x3f084d12, 0x0b162d1d,
0x3f03eda9, 0x0b2eecf8, 0x3eff8489, 0x0b47ab19,
0x3efb11b1, 0x0b60677c, 0x3ef69523, 0x0b79221f,
0x3ef20ee0, 0x0b91dafc, 0x3eed7ee7, 0x0baa9211,
0x3ee8e53a, 0x0bc34759, 0x3ee441da, 0x0bdbfad1,
0x3edf94c7, 0x0bf4ac75, 0x3edade01, 0x0c0d5c41,
0x3ed61d8a, 0x0c260a31, 0x3ed15363, 0x0c3eb641,
0x3ecc7f8b, 0x0c57606e, 0x3ec7a205, 0x0c7008b3,
0x3ec2bad0, 0x0c88af0e, 0x3ebdc9ed, 0x0ca1537a,
0x3eb8cf5d, 0x0cb9f5f3, 0x3eb3cb21, 0x0cd29676,
0x3eaebd3a, 0x0ceb34fe, 0x3ea9a5a8, 0x0d03d189,
0x3ea4846c, 0x0d1c6c11, 0x3e9f5988, 0x0d350495,
0x3e9a24fb, 0x0d4d9b0e, 0x3e94e6c6, 0x0d662f7b,
0x3e8f9eeb, 0x0d7ec1d6, 0x3e8a4d6a, 0x0d97521d,
0x3e84f245, 0x0dafe04b, 0x3e7f8d7b, 0x0dc86c5d,
0x3e7a1f0d, 0x0de0f64f, 0x3e74a6fd, 0x0df97e1d,
0x3e6f254c, 0x0e1203c3, 0x3e6999fa, 0x0e2a873e,
0x3e640507, 0x0e430889, 0x3e5e6676, 0x0e5b87a2,
0x3e58be47, 0x0e740483, 0x3e530c7a, 0x0e8c7f2a,
0x3e4d5110, 0x0ea4f793, 0x3e478c0b, 0x0ebd6db9,
0x3e41bd6c, 0x0ed5e19a, 0x3e3be532, 0x0eee5331,
0x3e360360, 0x0f06c27a, 0x3e3017f6, 0x0f1f2f73,
0x3e2a22f4, 0x0f379a16, 0x3e24245d, 0x0f500260,
0x3e1e1c30, 0x0f68684e, 0x3e180a6f, 0x0f80cbdc,
0x3e11ef1b, 0x0f992d06, 0x3e0bca34, 0x0fb18bc8,
0x3e059bbb, 0x0fc9e81e, 0x3dff63b2, 0x0fe24205,
0x3df9221a, 0x0ffa9979, 0x3df2d6f3, 0x1012ee76,
0x3dec823e, 0x102b40f8, 0x3de623fd, 0x104390fd,
0x3ddfbc30, 0x105bde7f, 0x3dd94ad8, 0x1074297b,
0x3dd2cff7, 0x108c71ee, 0x3dcc4b8d, 0x10a4b7d3,
0x3dc5bd9b, 0x10bcfb28, 0x3dbf2622, 0x10d53be7,
0x3db88524, 0x10ed7a0e, 0x3db1daa2, 0x1105b599,
0x3dab269b, 0x111dee84, 0x3da46912, 0x113624cb,
0x3d9da208, 0x114e586a, 0x3d96d17d, 0x1166895f,
0x3d8ff772, 0x117eb7a4, 0x3d8913ea, 0x1196e337,
0x3d8226e4, 0x11af0c13, 0x3d7b3061, 0x11c73235,
0x3d743064, 0x11df5599, 0x3d6d26ec, 0x11f7763c,
0x3d6613fb, 0x120f941a, 0x3d5ef793, 0x1227af2e,
0x3d57d1b3, 0x123fc776, 0x3d50a25e, 0x1257dced,
0x3d496994, 0x126fef90, 0x3d422757, 0x1287ff5b,
0x3d3adba7, 0x12a00c4b, 0x3d338687, 0x12b8165b,
0x3d2c27f6, 0x12d01d89, 0x3d24bff6, 0x12e821cf,
0x3d1d4e88, 0x1300232c, 0x3d15d3ad, 0x1318219a,
0x3d0e4f67, 0x13301d16, 0x3d06c1b6, 0x1348159d,
0x3cff2a9d, 0x13600b2a, 0x3cf78a1b, 0x1377fdbb,
0x3cefe032, 0x138fed4b, 0x3ce82ce4, 0x13a7d9d7,
0x3ce07031, 0x13bfc35b, 0x3cd8aa1b, 0x13d7a9d3,
0x3cd0daa2, 0x13ef8d3c, 0x3cc901c9, 0x14076d91,
0x3cc11f90, 0x141f4ad1, 0x3cb933f9, 0x143724f5,
0x3cb13f04, 0x144efbfc, 0x3ca940b3, 0x1466cfe1,
0x3ca13908, 0x147ea0a0, 0x3c992803, 0x14966e36,
0x3c910da5, 0x14ae38a0, 0x3c88e9f1, 0x14c5ffd9,
0x3c80bce7, 0x14ddc3de, 0x3c788688, 0x14f584ac,
0x3c7046d6, 0x150d423d, 0x3c67fdd1, 0x1524fc90,
0x3c5fab7c, 0x153cb3a0, 0x3c574fd8, 0x1554676a,
0x3c4eeae5, 0x156c17e9, 0x3c467ca6, 0x1583c51b,
0x3c3e051b, 0x159b6efb, 0x3c358446, 0x15b31587,
0x3c2cfa28, 0x15cab8ba, 0x3c2466c2, 0x15e25890,
0x3c1bca16, 0x15f9f507, 0x3c132424, 0x16118e1a,
0x3c0a74f0, 0x162923c5, 0x3c01bc78, 0x1640b606,
0x3bf8fac0, 0x165844d8, 0x3bf02fc9, 0x166fd039,
0x3be75b93, 0x16875823, 0x3bde7e20, 0x169edc94,
0x3bd59771, 0x16b65d88, 0x3bcca789, 0x16cddafb,
0x3bc3ae67, 0x16e554ea, 0x3bbaac0e, 0x16fccb51,
0x3bb1a080, 0x17143e2d, 0x3ba88bbc, 0x172bad7a,
0x3b9f6dc5, 0x17431933, 0x3b96469d, 0x175a8157,
0x3b8d1644, 0x1771e5e0, 0x3b83dcbc, 0x178946cc,
0x3b7a9a07, 0x17a0a417, 0x3b714e25, 0x17b7fdbd,
0x3b67f919, 0x17cf53bb, 0x3b5e9ae4, 0x17e6a60c,
0x3b553386, 0x17fdf4ae, 0x3b4bc303, 0x18153f9d,
0x3b42495a, 0x182c86d5, 0x3b38c68e, 0x1843ca53,
0x3b2f3aa0, 0x185b0a13, 0x3b25a591, 0x18724611,
0x3b1c0764, 0x18897e4a, 0x3b126019, 0x18a0b2bb,
0x3b08afb2, 0x18b7e35f, 0x3afef630, 0x18cf1034,
0x3af53395, 0x18e63935, 0x3aeb67e3, 0x18fd5e5f,
0x3ae1931a, 0x19147fae, 0x3ad7b53d, 0x192b9d1f,
0x3acdce4d, 0x1942b6af, 0x3ac3de4c, 0x1959cc5a,
0x3ab9e53a, 0x1970de1b, 0x3aafe31b, 0x1987ebf0,
0x3aa5d7ee, 0x199ef5d6, 0x3a9bc3b6, 0x19b5fbc8,
0x3a91a674, 0x19ccfdc2, 0x3a87802a, 0x19e3fbc3,
0x3a7d50da, 0x19faf5c5, 0x3a731884, 0x1a11ebc5,
0x3a68d72b, 0x1a28ddc0, 0x3a5e8cd0, 0x1a3fcbb3,
0x3a543974, 0x1a56b599, 0x3a49dd1a, 0x1a6d9b70,
0x3a3f77c3, 0x1a847d33, 0x3a350970, 0x1a9b5adf,
0x3a2a9223, 0x1ab23471, 0x3a2011de, 0x1ac909e5,
0x3a1588a2, 0x1adfdb37, 0x3a0af671, 0x1af6a865,
0x3a005b4d, 0x1b0d716a, 0x39f5b737, 0x1b243643,
0x39eb0a31, 0x1b3af6ec, 0x39e0543c, 0x1b51b363,
0x39d5955a, 0x1b686ba3, 0x39cacd8d, 0x1b7f1fa9,
0x39bffcd7, 0x1b95cf71, 0x39b52339, 0x1bac7af9,
0x39aa40b4, 0x1bc3223c, 0x399f554b, 0x1bd9c537,
0x399460ff, 0x1bf063e6, 0x398963d2, 0x1c06fe46,
0x397e5dc6, 0x1c1d9454, 0x39734edc, 0x1c34260c,
0x39683715, 0x1c4ab36b, 0x395d1675, 0x1c613c6d,
0x3951ecfc, 0x1c77c10e, 0x3946baac, 0x1c8e414b,
0x393b7f86, 0x1ca4bd21, 0x39303b8e, 0x1cbb348d,
0x3924eec3, 0x1cd1a78a, 0x39199929, 0x1ce81615,
0x390e3ac0, 0x1cfe802b, 0x3902d38b, 0x1d14e5c9,
0x38f7638b, 0x1d2b46ea, 0x38ebeac2, 0x1d41a38c,
0x38e06932, 0x1d57fbaa, 0x38d4dedd, 0x1d6e4f43,
0x38c94bc4, 0x1d849e51, 0x38bdafea, 0x1d9ae8d2,
0x38b20b4f, 0x1db12ec3, 0x38a65df6, 0x1dc7701f,
0x389aa7e0, 0x1dddace4, 0x388ee910, 0x1df3e50d,
0x38832187, 0x1e0a1898, 0x38775147, 0x1e204781,
0x386b7852, 0x1e3671c5, 0x385f96a9, 0x1e4c9760,
0x3853ac4f, 0x1e62b84f, 0x3847b946, 0x1e78d48e,
0x383bbd8e, 0x1e8eec1b, 0x382fb92a, 0x1ea4fef0,
0x3823ac1d, 0x1ebb0d0d, 0x38179666, 0x1ed1166b,
0x380b780a, 0x1ee71b0a, 0x37ff5109, 0x1efd1ae4,
0x37f32165, 0x1f1315f7, 0x37e6e921, 0x1f290c3f,
0x37daa83d, 0x1f3efdb9, 0x37ce5ebd, 0x1f54ea62,
0x37c20ca1, 0x1f6ad235, 0x37b5b1ec, 0x1f80b531,
0x37a94ea0, 0x1f969350, 0x379ce2be, 0x1fac6c91,
0x37906e49, 0x1fc240ef, 0x3783f143, 0x1fd81067,
0x37776bac, 0x1feddaf6, 0x376add88, 0x2003a099,
0x375e46d8, 0x2019614c, 0x3751a79e, 0x202f1d0b,
0x3744ffdd, 0x2044d3d4, 0x37384f95, 0x205a85a3,
0x372b96ca, 0x20703275, 0x371ed57c, 0x2085da46,
0x37120bae, 0x209b7d13, 0x37053962, 0x20b11ad9,
0x36f85e9a, 0x20c6b395, 0x36eb7b58, 0x20dc4742,
0x36de8f9e, 0x20f1d5de, 0x36d19b6e, 0x21075f65,
0x36c49ec9, 0x211ce3d5, 0x36b799b3, 0x21326329,
0x36aa8c2c, 0x2147dd5f, 0x369d7637, 0x215d5273,
0x369057d6, 0x2172c262, 0x3683310b, 0x21882d28,
0x367601d7, 0x219d92c2, 0x3668ca3e, 0x21b2f32e,
0x365b8a41, 0x21c84e67, 0x364e41e2, 0x21dda46a,
0x3640f123, 0x21f2f534, 0x36339806, 0x220840c2,
0x3626368d, 0x221d8711, 0x3618ccba, 0x2232c81c,
0x360b5a90, 0x224803e2, 0x35fde011, 0x225d3a5e,
0x35f05d3d, 0x22726b8e, 0x35e2d219, 0x2287976e,
0x35d53ea5, 0x229cbdfa, 0x35c7a2e3, 0x22b1df30,
0x35b9fed7, 0x22c6fb0c, 0x35ac5282, 0x22dc118c,
0x359e9de5, 0x22f122ab, 0x3590e104, 0x23062e67,
0x35831be0, 0x231b34bc, 0x35754e7c, 0x233035a7,
0x356778d9, 0x23453125, 0x35599afa, 0x235a2733,
0x354bb4e1, 0x236f17cc, 0x353dc68f, 0x238402ef,
0x352fd008, 0x2398e898, 0x3521d14d, 0x23adc8c4,
0x3513ca60, 0x23c2a36f, 0x3505bb44, 0x23d77896,
0x34f7a3fb, 0x23ec4837, 0x34e98487, 0x2401124d,
0x34db5cea, 0x2415d6d5, 0x34cd2d26, 0x242a95ce,
0x34bef53d, 0x243f4f32, 0x34b0b533, 0x245402ff,
0x34a26d08, 0x2468b132, 0x34941cbf, 0x247d59c8,
0x3485c45b, 0x2491fcbe, 0x347763dd, 0x24a69a0f,
0x3468fb47, 0x24bb31ba, 0x345a8a9d, 0x24cfc3ba,
0x344c11e0, 0x24e4500e, 0x343d9112, 0x24f8d6b0,
0x342f0836, 0x250d57a0, 0x3420774d, 0x2521d2d8,
0x3411de5b, 0x25364857, 0x34033d61, 0x254ab818,
0x33f49462, 0x255f2219, 0x33e5e360, 0x25738657,
0x33d72a5d, 0x2587e4cf, 0x33c8695b, 0x259c3d7c,
0x33b9a05d, 0x25b0905d, 0x33aacf65, 0x25c4dd6e,
0x339bf675, 0x25d924ac, 0x338d1590, 0x25ed6614,
0x337e2cb7, 0x2601a1a2, 0x336f3bee, 0x2615d754,
0x33604336, 0x262a0727, 0x33514292, 0x263e3117,
0x33423a04, 0x26525521, 0x3333298f, 0x26667342,
0x33241134, 0x267a8b77, 0x3314f0f6, 0x268e9dbd,
0x3305c8d7, 0x26a2aa11, 0x32f698db, 0x26b6b070,
0x32e76102, 0x26cab0d6, 0x32d82150, 0x26deab41,
0x32c8d9c6, 0x26f29fad, 0x32b98a67, 0x27068e18,
0x32aa3336, 0x271a767e, 0x329ad435, 0x272e58dc,
0x328b6d66, 0x27423530, 0x327bfecc, 0x27560b76,
0x326c8868, 0x2769dbaa, 0x325d0a3e, 0x277da5cb,
0x324d8450, 0x279169d5, 0x323df6a0, 0x27a527c4,
0x322e6130, 0x27b8df97, 0x321ec403, 0x27cc9149,
0x320f1f1c, 0x27e03cd8, 0x31ff727c, 0x27f3e241,
0x31efbe27, 0x28078181, 0x31e0021e, 0x281b1a94,
0x31d03e64, 0x282ead78, 0x31c072fb, 0x28423a2a,
0x31b09fe7, 0x2855c0a6, 0x31a0c528, 0x286940ea,
0x3190e2c3, 0x287cbaf3, 0x3180f8b8, 0x28902ebd,
0x3171070c, 0x28a39c46, 0x31610dbf, 0x28b7038b,
0x31510cd5, 0x28ca6488, 0x31410450, 0x28ddbf3b,
0x3130f433, 0x28f113a0, 0x3120dc80, 0x290461b5,
0x3110bd39, 0x2917a977, 0x31009661, 0x292aeae3,
0x30f067fb, 0x293e25f5, 0x30e03208, 0x29515aab,
0x30cff48c, 0x29648902, 0x30bfaf89, 0x2977b0f7,
0x30af6302, 0x298ad287, 0x309f0ef8, 0x299dedaf,
0x308eb36f, 0x29b1026c, 0x307e5069, 0x29c410ba,
0x306de5e9, 0x29d71899, 0x305d73f0, 0x29ea1a03,
0x304cfa83, 0x29fd14f6, 0x303c79a2, 0x2a100970,
0x302bf151, 0x2a22f76e, 0x301b6193, 0x2a35deeb,
0x300aca69, 0x2a48bfe7, 0x2ffa2bd6, 0x2a5b9a5d,
0x2fe985de, 0x2a6e6e4b, 0x2fd8d882, 0x2a813bae,
0x2fc823c5, 0x2a940283, 0x2fb767aa, 0x2aa6c2c6,
0x2fa6a433, 0x2ab97c77, 0x2f95d963, 0x2acc2f90,
0x2f85073c, 0x2adedc10, 0x2f742dc1, 0x2af181f3,
0x2f634cf5, 0x2b042137, 0x2f5264da, 0x2b16b9d9,
0x2f417573, 0x2b294bd5, 0x2f307ec2, 0x2b3bd72a,
0x2f1f80ca, 0x2b4e5bd4, 0x2f0e7b8e, 0x2b60d9d0,
0x2efd6f10, 0x2b73511c, 0x2eec5b53, 0x2b85c1b5,
0x2edb405a, 0x2b982b97, 0x2eca1e27, 0x2baa8ec0,
0x2eb8f4bc, 0x2bbceb2d, 0x2ea7c41e, 0x2bcf40dc,
0x2e968c4d, 0x2be18fc9, 0x2e854d4d, 0x2bf3d7f2,
0x2e740720, 0x2c061953, 0x2e62b9ca, 0x2c1853eb,
0x2e51654c, 0x2c2a87b6, 0x2e4009aa, 0x2c3cb4b1,
0x2e2ea6e6, 0x2c4edada, 0x2e1d3d03, 0x2c60fa2d,
0x2e0bcc03, 0x2c7312a9, 0x2dfa53e9, 0x2c85244a,
0x2de8d4b8, 0x2c972f0d, 0x2dd74e73, 0x2ca932ef,
0x2dc5c11c, 0x2cbb2fef, 0x2db42cb6, 0x2ccd2609,
0x2da29144, 0x2cdf153a, 0x2d90eec8, 0x2cf0fd80,
0x2d7f4545, 0x2d02ded7, 0x2d6d94bf, 0x2d14b93d,
0x2d5bdd36, 0x2d268cb0, 0x2d4a1eaf, 0x2d38592c,
0x1ffff621, 0xffe6de07, 0x1fffa72d, 0xffb49a54,
0x1fff0944, 0xff82575a, 0x1ffe1c68, 0xff501597,
0x1ffce09d, 0xff1dd586, 0x1ffb55e4, 0xfeeb97a2,
0x1ff97c42, 0xfeb95c69, 0x1ff753bb, 0xfe872456,
0x1ff4dc55, 0xfe54efe4, 0x1ff21615, 0xfe22bf90,
0x1fef0103, 0xfdf093d6, 0x1feb9d25, 0xfdbe6d31,
0x1fe7ea85, 0xfd8c4c1e, 0x1fe3e92c, 0xfd5a3117,
0x1fdf9923, 0xfd281c98, 0x1fdafa75, 0xfcf60f1e,
0x1fd60d2e, 0xfcc40923, 0x1fd0d159, 0xfc920b22,
0x1fcb4704, 0xfc601599, 0x1fc56e3b, 0xfc2e2900,
0x1fbf470f, 0xfbfc45d5, 0x1fb8d18d, 0xfbca6c91,
0x1fb20dc7, 0xfb989db0, 0x1faafbcb, 0xfb66d9ad,
0x1fa39bac, 0xfb352102, 0x1f9bed7d, 0xfb03742a,
0x1f93f150, 0xfad1d3a0, 0x1f8ba738, 0xfaa03fde,
0x1f830f4a, 0xfa6eb95f, 0x1f7a299c, 0xfa3d409d,
0x1f70f643, 0xfa0bd611, 0x1f677557, 0xf9da7a36,
0x1f5da6ed, 0xf9a92d86, 0x1f538b20, 0xf977f079,
0x1f492207, 0xf946c38b, 0x1f3e6bbc, 0xf915a733,
0x1f33685a, 0xf8e49beb, 0x1f2817fc, 0xf8b3a22d,
0x1f1c7abe, 0xf882ba70, 0x1f1090bd, 0xf851e52e,
0x1f045a15, 0xf82122e0, 0x1ef7d6e5, 0xf7f073fd,
0x1eeb074c, 0xf7bfd8fd, 0x1eddeb6a, 0xf78f5259,
0x1ed0835f, 0xf75ee088, 0x1ec2cf4b, 0xf72e8402,
0x1eb4cf51, 0xf6fe3d3e, 0x1ea68394, 0xf6ce0cb3,
0x1e97ec36, 0xf69df2d9, 0x1e89095c, 0xf66df025,
0x1e79db2a, 0xf63e050e, 0x1e6a61c5, 0xf60e320b,
0x1e5a9d55, 0xf5de7792, 0x1e4a8e00, 0xf5aed617,
0x1e3a33ec, 0xf57f4e12, 0x1e298f44, 0xf54fdff7,
0x1e18a030, 0xf5208c3a, 0x1e0766d9, 0xf4f15352,
0x1df5e36b, 0xf4c235b2, 0x1de4160f, 0xf49333ce,
0x1dd1fef4, 0xf4644e1b, 0x1dbf9e44, 0xf435850d,
0x1dacf42d, 0xf406d916, 0x1d9a00de, 0xf3d84aab,
0x1d86c484, 0xf3a9da3d, 0x1d733f51, 0xf37b883f,
0x1d5f7173, 0xf34d5524, 0x1d4b5b1b, 0xf31f415e,
0x1d36fc7c, 0xf2f14d5e, 0x1d2255c7, 0xf2c37996,
0x1d0d672f, 0xf295c677, 0x1cf830e9, 0xf2683471,
0x1ce2b328, 0xf23ac3f6, 0x1cccee21, 0xf20d7574,
0x1cb6e20a, 0xf1e0495c, 0x1ca08f1a, 0xf1b3401e,
0x1c89f587, 0xf1865a29, 0x1c73158a, 0xf15997ea,
0x1c5bef5a, 0xf12cf9d2, 0x1c448331, 0xf100804d,
0x1c2cd149, 0xf0d42bc9, 0x1c14d9dc, 0xf0a7fcb5,
0x1bfc9d26, 0xf07bf37d, 0x1be41b61, 0xf050108d,
0x1bcb54cb, 0xf0245452, 0x1bb249a1, 0xeff8bf38,
0x1b98fa20, 0xefcd51aa, 0x1b7f6687, 0xefa20c14,
0x1b658f15, 0xef76eee0, 0x1b4b740a, 0xef4bfa78,
0x1b3115a6, 0xef212f48, 0x1b16742a, 0xeef68db7,
0x1afb8fd9, 0xeecc1630, 0x1ae068f3, 0xeea1c91b,
0x1ac4ffbd, 0xee77a6e1, 0x1aa9547a, 0xee4dafe9,
0x1a8d676e, 0xee23e49b, 0x1a7138df, 0xedfa455f,
0x1a54c911, 0xedd0d29a, 0x1a38184a, 0xeda78cb3,
0x1a1b26d3, 0xed7e7411, 0x19fdf4f1, 0xed558918,
0x19e082ee, 0xed2ccc2d, 0x19c2d111, 0xed043db5,
0x19a4dfa4, 0xecdbde14, 0x1986aef1, 0xecb3adad,
0x19683f43, 0xec8bace4, 0x194990e4, 0xec63dc1c,
0x192aa420, 0xec3c3bb6, 0x190b7943, 0xec14cc15,
0x18ec109b, 0xebed8d9a, 0x18cc6a75, 0xebc680a5,
0x18ac871f, 0xeb9fa597, 0x188c66e7, 0xeb78fcd0,
0x186c0a1e, 0xeb5286af, 0x184b7112, 0xeb2c4393,
0x182a9c14, 0xeb0633da, 0x18098b75, 0xeae057e3,
0x17e83f88, 0xeabab00b, 0x17c6b89d, 0xea953cae,
0x17a4f708, 0xea6ffe2a, 0x1782fb1c, 0xea4af4da,
0x1760c52c, 0xea262119, 0x173e558e, 0xea018342,
0x171bac96, 0xe9dd1bb0, 0x16f8ca9a, 0xe9b8eabd,
0x16d5afef, 0xe994f0c1, 0x16b25ced, 0xe9712e15,
0x168ed1eb, 0xe94da313, 0x166b0f3f, 0xe92a5011,
0x16471543, 0xe9073566, 0x1622e450, 0xe8e4536a,
0x15fe7cbe, 0xe8c1aa72, 0x15d9dee7, 0xe89f3ad4,
0x15b50b26, 0xe87d04e4, 0x159001d6, 0xe85b08f8,
0x156ac352, 0xe8394763, 0x15454ff5, 0xe817c078,
0x151fa81d, 0xe7f6748b, 0x14f9cc26, 0xe7d563ec,
0x14d3bc6d, 0xe7b48eee, 0x14ad7951, 0xe793f5e2,
0x14870330, 0xe7739919, 0x14605a69, 0xe75378e1,
0x14397f5b, 0xe733958b, 0x14127266, 0xe713ef65,
0x13eb33eb, 0xe6f486bd, 0x13c3c44a, 0xe6d55be0,
0x139c23e4, 0xe6b66f1c, 0x1374531c, 0xe697c0bd,
0x134c5253, 0xe679510f, 0x132421ec, 0xe65b205c,
0x12fbc24b, 0xe63d2eef, 0x12d333d3, 0xe61f7d12,
0x12aa76e8, 0xe6020b0f, 0x12818bef, 0xe5e4d92d,
0x1258734d, 0xe5c7e7b6, 0x122f2d66, 0xe5ab36ef,
0x1205baa1, 0xe58ec721, 0x11dc1b65, 0xe5729892,
0x11b25017, 0xe556ab86, 0x1188591f, 0xe53b0043,
0x115e36e5, 0xe51f970d, 0x1133e9d0, 0xe5047027,
0x11097249, 0xe4e98bd6, 0x10ded0b8, 0xe4ceea5a,
0x10b40588, 0xe4b48bf6, 0x10891120, 0xe49a70eb,
0x105df3ec, 0xe4809979, 0x1032ae56, 0xe46705e0,
0x100740c8, 0xe44db65f, 0x0fdbabae, 0xe434ab35,
0x0fafef73, 0xe41be49f, 0x0f840c83, 0xe40362da,
0x0f58034b, 0xe3eb2624, 0x0f2bd437, 0xe3d32eb7,
0x0eff7fb3, 0xe3bb7ccf, 0x0ed3062e, 0xe3a410a6,
0x0ea66816, 0xe38cea76, 0x0e79a5d7, 0xe3760a79,
0x0e4cbfe2, 0xe35f70e6, 0x0e1fb6a4, 0xe3491df6,
0x0df28a8c, 0xe33311df, 0x0dc53c0a, 0xe31d4cd8,
0x0d97cb8f, 0xe307cf17, 0x0d6a3989, 0xe2f298d1,
0x0d3c866a, 0xe2ddaa39, 0x0d0eb2a2, 0xe2c90384,
0x0ce0bea2, 0xe2b4a4e5, 0x0cb2aadc, 0xe2a08e8d,
0x0c8477c1, 0xe28cc0af, 0x0c5625c3, 0xe2793b7c,
0x0c27b555, 0xe265ff22, 0x0bf926ea, 0xe2530bd3,
0x0bca7af3, 0xe24061bc, 0x0b9bb1e5, 0xe22e010c,
0x0b6ccc32, 0xe21be9f1, 0x0b3dca4e, 0xe20a1c95,
0x0b0eacae, 0xe1f89927, 0x0adf73c6, 0xe1e75fd0,
0x0ab02009, 0xe1d670bc, 0x0a80b1ee, 0xe1c5cc14,
0x0a5129e9, 0xe1b57200, 0x0a21886e, 0xe1a562ab,
0x09f1cdf5, 0xe1959e3b, 0x09c1faf2, 0xe18624d6,
0x09920fdb, 0xe176f6a4, 0x09620d27, 0xe16813ca,
0x0931f34d, 0xe1597c6c, 0x0901c2c2, 0xe14b30af,
0x08d17bfe, 0xe13d30b5, 0x08a11f78, 0xe12f7ca1,
0x0870ada7, 0xe1221496, 0x08402703, 0xe114f8b4,
0x080f8c03, 0xe108291b, 0x07dedd20, 0xe0fba5eb,
0x07ae1ad2, 0xe0ef6f43, 0x077d4590, 0xe0e38542,
0x074c5dd3, 0xe0d7e804, 0x071b6415, 0xe0cc97a6,
0x06ea58cd, 0xe0c19444, 0x06b93c75, 0xe0b6ddf9,
0x06880f87, 0xe0ac74e0, 0x0656d27a, 0xe0a25913,
0x062585ca, 0xe0988aa9, 0x05f429ef, 0xe08f09bd,
0x05c2bf63, 0xe085d664, 0x059146a1, 0xe07cf0b6,
0x055fc022, 0xe07458c8, 0x052e2c60, 0xe06c0eb0,
0x04fc8bd6, 0xe0641283, 0x04cadefe, 0xe05c6454,
0x04992653, 0xe0550435, 0x04676250, 0xe04df239,
0x0435936f, 0xe0472e73, 0x0403ba2b, 0xe040b8f1,
0x03d1d700, 0xe03a91c5, 0x039fea67, 0xe034b8fc,
0x036df4de, 0xe02f2ea7, 0x033bf6dd, 0xe029f2d2,
0x0309f0e2, 0xe025058b, 0x02d7e368, 0xe02066dd,
0x02a5cee9, 0xe01c16d4, 0x0273b3e2, 0xe018157b,
0x024192cf, 0xe01462db, 0x020f6c2a, 0xe010fefd,
0x01dd4070, 0xe00de9eb, 0x01ab101c, 0xe00b23ab,
0x0178dbaa, 0xe008ac45, 0x0146a397, 0xe00683be,
0x0114685e, 0xe004aa1c, 0x00e22a7a, 0xe0031f63,
0x00afea69, 0xe001e398, 0x007da8a6, 0xe000f6bc,
0x004b65ac, 0xe00058d3, 0x001921f9, 0xe00009df,
};
tatic ogg_int16_t bitrevlook_2048[512]={
0x03fe, 0x0000, 0x01fe, 0x0200,
0x02fe, 0x0100, 0x00fe, 0x0300,
0x037e, 0x0080, 0x017e, 0x0280,
0x027e, 0x0180, 0x007e, 0x0380,
0x03be, 0x0040, 0x01be, 0x0240,
0x02be, 0x0140, 0x00be, 0x0340,
0x033e, 0x00c0, 0x013e, 0x02c0,
0x023e, 0x01c0, 0x003e, 0x03c0,
0x03de, 0x0020, 0x01de, 0x0220,
0x02de, 0x0120, 0x00de, 0x0320,
0x035e, 0x00a0, 0x015e, 0x02a0,
0x025e, 0x01a0, 0x005e, 0x03a0,
0x039e, 0x0060, 0x019e, 0x0260,
0x029e, 0x0160, 0x009e, 0x0360,
0x031e, 0x00e0, 0x011e, 0x02e0,
0x021e, 0x01e0, 0x001e, 0x03e0,
0x03ee, 0x0010, 0x01ee, 0x0210,
0x02ee, 0x0110, 0x00ee, 0x0310,
0x036e, 0x0090, 0x016e, 0x0290,
0x026e, 0x0190, 0x006e, 0x0390,
0x03ae, 0x0050, 0x01ae, 0x0250,
0x02ae, 0x0150, 0x00ae, 0x0350,
0x032e, 0x00d0, 0x012e, 0x02d0,
0x022e, 0x01d0, 0x002e, 0x03d0,
0x03ce, 0x0030, 0x01ce, 0x0230,
0x02ce, 0x0130, 0x00ce, 0x0330,
0x034e, 0x00b0, 0x014e, 0x02b0,
0x024e, 0x01b0, 0x004e, 0x03b0,
0x038e, 0x0070, 0x018e, 0x0270,
0x028e, 0x0170, 0x008e, 0x0370,
0x030e, 0x00f0, 0x010e, 0x02f0,
0x020e, 0x01f0, 0x000e, 0x03f0,
0x03f6, 0x0008, 0x01f6, 0x0208,
0x02f6, 0x0108, 0x00f6, 0x0308,
0x0376, 0x0088, 0x0176, 0x0288,
0x0276, 0x0188, 0x0076, 0x0388,
0x03b6, 0x0048, 0x01b6, 0x0248,
0x02b6, 0x0148, 0x00b6, 0x0348,
0x0336, 0x00c8, 0x0136, 0x02c8,
0x0236, 0x01c8, 0x0036, 0x03c8,
0x03d6, 0x0028, 0x01d6, 0x0228,
0x02d6, 0x0128, 0x00d6, 0x0328,
0x0356, 0x00a8, 0x0156, 0x02a8,
0x0256, 0x01a8, 0x0056, 0x03a8,
0x0396, 0x0068, 0x0196, 0x0268,
0x0296, 0x0168, 0x0096, 0x0368,
0x0316, 0x00e8, 0x0116, 0x02e8,
0x0216, 0x01e8, 0x0016, 0x03e8,
0x03e6, 0x0018, 0x01e6, 0x0218,
0x02e6, 0x0118, 0x00e6, 0x0318,
0x0366, 0x0098, 0x0166, 0x0298,
0x0266, 0x0198, 0x0066, 0x0398,
0x03a6, 0x0058, 0x01a6, 0x0258,
0x02a6, 0x0158, 0x00a6, 0x0358,
0x0326, 0x00d8, 0x0126, 0x02d8,
0x0226, 0x01d8, 0x0026, 0x03d8,
0x03c6, 0x0038, 0x01c6, 0x0238,
0x02c6, 0x0138, 0x00c6, 0x0338,
0x0346, 0x00b8, 0x0146, 0x02b8,
0x0246, 0x01b8, 0x0046, 0x03b8,
0x0386, 0x0078, 0x0186, 0x0278,
0x0286, 0x0178, 0x0086, 0x0378,
0x0306, 0x00f8, 0x0106, 0x02f8,
0x0206, 0x01f8, 0x0006, 0x03f8,
0x03fa, 0x0004, 0x01fa, 0x0204,
0x02fa, 0x0104, 0x00fa, 0x0304,
0x037a, 0x0084, 0x017a, 0x0284,
0x027a, 0x0184, 0x007a, 0x0384,
0x03ba, 0x0044, 0x01ba, 0x0244,
0x02ba, 0x0144, 0x00ba, 0x0344,
0x033a, 0x00c4, 0x013a, 0x02c4,
0x023a, 0x01c4, 0x003a, 0x03c4,
0x03da, 0x0024, 0x01da, 0x0224,
0x02da, 0x0124, 0x00da, 0x0324,
0x035a, 0x00a4, 0x015a, 0x02a4,
0x025a, 0x01a4, 0x005a, 0x03a4,
0x039a, 0x0064, 0x019a, 0x0264,
0x029a, 0x0164, 0x009a, 0x0364,
0x031a, 0x00e4, 0x011a, 0x02e4,
0x021a, 0x01e4, 0x001a, 0x03e4,
0x03ea, 0x0014, 0x01ea, 0x0214,
0x02ea, 0x0114, 0x00ea, 0x0314,
0x036a, 0x0094, 0x016a, 0x0294,
0x026a, 0x0194, 0x006a, 0x0394,
0x03aa, 0x0054, 0x01aa, 0x0254,
0x02aa, 0x0154, 0x00aa, 0x0354,
0x032a, 0x00d4, 0x012a, 0x02d4,
0x022a, 0x01d4, 0x002a, 0x03d4,
0x03ca, 0x0034, 0x01ca, 0x0234,
0x02ca, 0x0134, 0x00ca, 0x0334,
0x034a, 0x00b4, 0x014a, 0x02b4,
0x024a, 0x01b4, 0x004a, 0x03b4,
0x038a, 0x0074, 0x018a, 0x0274,
0x028a, 0x0174, 0x008a, 0x0374,
0x030a, 0x00f4, 0x010a, 0x02f4,
0x020a, 0x01f4, 0x000a, 0x03f4,
0x03f2, 0x000c, 0x01f2, 0x020c,
0x02f2, 0x010c, 0x00f2, 0x030c,
0x0372, 0x008c, 0x0172, 0x028c,
0x0272, 0x018c, 0x0072, 0x038c,
0x03b2, 0x004c, 0x01b2, 0x024c,
0x02b2, 0x014c, 0x00b2, 0x034c,
0x0332, 0x00cc, 0x0132, 0x02cc,
0x0232, 0x01cc, 0x0032, 0x03cc,
0x03d2, 0x002c, 0x01d2, 0x022c,
0x02d2, 0x012c, 0x00d2, 0x032c,
0x0352, 0x00ac, 0x0152, 0x02ac,
0x0252, 0x01ac, 0x0052, 0x03ac,
0x0392, 0x006c, 0x0192, 0x026c,
0x0292, 0x016c, 0x0092, 0x036c,
0x0312, 0x00ec, 0x0112, 0x02ec,
0x0212, 0x01ec, 0x0012, 0x03ec,
0x03e2, 0x001c, 0x01e2, 0x021c,
0x02e2, 0x011c, 0x00e2, 0x031c,
0x0362, 0x009c, 0x0162, 0x029c,
0x0262, 0x019c, 0x0062, 0x039c,
0x03a2, 0x005c, 0x01a2, 0x025c,
0x02a2, 0x015c, 0x00a2, 0x035c,
0x0322, 0x00dc, 0x0122, 0x02dc,
0x0222, 0x01dc, 0x0022, 0x03dc,
0x03c2, 0x003c, 0x01c2, 0x023c,
0x02c2, 0x013c, 0x00c2, 0x033c,
0x0342, 0x00bc, 0x0142, 0x02bc,
0x0242, 0x01bc, 0x0042, 0x03bc,
0x0382, 0x007c, 0x0182, 0x027c,
0x0282, 0x017c, 0x0082, 0x037c,
0x0302, 0x00fc, 0x0102, 0x02fc,
0x0202, 0x01fc, 0x0002, 0x03fc,
};
tatic ogg_int32_t triglook_4096[5120]={
0x40000000, 0x00000000, 0x3fffec43, 0xffcdbc0f,
0x3fffb10b, 0xff9b783c, 0x3fff4e59, 0xff6934a8,
0x3ffec42d, 0xff36f170, 0x3ffe1288, 0xff04aeb5,
0x3ffd3969, 0xfed26c94, 0x3ffc38d1, 0xfea02b2e,
0x3ffb10c1, 0xfe6deaa1, 0x3ff9c13a, 0xfe3bab0b,
0x3ff84a3c, 0xfe096c8d, 0x3ff6abc8, 0xfdd72f45,
0x3ff4e5e0, 0xfda4f351, 0x3ff2f884, 0xfd72b8d2,
0x3ff0e3b6, 0xfd407fe6, 0x3feea776, 0xfd0e48ab,
0x3fec43c7, 0xfcdc1342, 0x3fe9b8a9, 0xfca9dfc8,
0x3fe7061f, 0xfc77ae5e, 0x3fe42c2a, 0xfc457f21,
0x3fe12acb, 0xfc135231, 0x3fde0205, 0xfbe127ac,
0x3fdab1d9, 0xfbaeffb3, 0x3fd73a4a, 0xfb7cda63,
0x3fd39b5a, 0xfb4ab7db, 0x3fcfd50b, 0xfb18983b,
0x3fcbe75e, 0xfae67ba2, 0x3fc7d258, 0xfab4622d,
0x3fc395f9, 0xfa824bfd, 0x3fbf3246, 0xfa503930,
0x3fbaa740, 0xfa1e29e5, 0x3fb5f4ea, 0xf9ec1e3b,
0x3fb11b48, 0xf9ba1651, 0x3fac1a5b, 0xf9881245,
0x3fa6f228, 0xf9561237, 0x3fa1a2b2, 0xf9241645,
0x3f9c2bfb, 0xf8f21e8e, 0x3f968e07, 0xf8c02b31,
0x3f90c8da, 0xf88e3c4d, 0x3f8adc77, 0xf85c5201,
0x3f84c8e2, 0xf82a6c6a, 0x3f7e8e1e, 0xf7f88ba9,
0x3f782c30, 0xf7c6afdc, 0x3f71a31b, 0xf794d922,
0x3f6af2e3, 0xf7630799, 0x3f641b8d, 0xf7313b60,
0x3f5d1d1d, 0xf6ff7496, 0x3f55f796, 0xf6cdb359,
0x3f4eaafe, 0xf69bf7c9, 0x3f473759, 0xf66a4203,
0x3f3f9cab, 0xf6389228, 0x3f37dafa, 0xf606e854,
0x3f2ff24a, 0xf5d544a7, 0x3f27e29f, 0xf5a3a740,
0x3f1fabff, 0xf572103d, 0x3f174e70, 0xf5407fbd,
0x3f0ec9f5, 0xf50ef5de, 0x3f061e95, 0xf4dd72be,
0x3efd4c54, 0xf4abf67e, 0x3ef45338, 0xf47a8139,
0x3eeb3347, 0xf4491311, 0x3ee1ec87, 0xf417ac22,
0x3ed87efc, 0xf3e64c8c, 0x3eceeaad, 0xf3b4f46c,
0x3ec52fa0, 0xf383a3e2, 0x3ebb4ddb, 0xf3525b0b,
0x3eb14563, 0xf3211a07, 0x3ea7163f, 0xf2efe0f2,
0x3e9cc076, 0xf2beafed, 0x3e92440d, 0xf28d8715,
0x3e87a10c, 0xf25c6688, 0x3e7cd778, 0xf22b4e66,
0x3e71e759, 0xf1fa3ecb, 0x3e66d0b4, 0xf1c937d6,
0x3e5b9392, 0xf19839a6, 0x3e502ff9, 0xf1674459,
0x3e44a5ef, 0xf136580d, 0x3e38f57c, 0xf10574e0,
0x3e2d1ea8, 0xf0d49af1, 0x3e212179, 0xf0a3ca5d,
0x3e14fdf7, 0xf0730342, 0x3e08b42a, 0xf04245c0,
0x3dfc4418, 0xf01191f3, 0x3defadca, 0xefe0e7f9,
0x3de2f148, 0xefb047f2, 0x3dd60e99, 0xef7fb1fa,
0x3dc905c5, 0xef4f2630, 0x3dbbd6d4, 0xef1ea4b2,
0x3dae81cf, 0xeeee2d9d, 0x3da106bd, 0xeebdc110,
0x3d9365a8, 0xee8d5f29, 0x3d859e96, 0xee5d0804,
0x3d77b192, 0xee2cbbc1, 0x3d699ea3, 0xedfc7a7c,
0x3d5b65d2, 0xedcc4454, 0x3d4d0728, 0xed9c1967,
0x3d3e82ae, 0xed6bf9d1, 0x3d2fd86c, 0xed3be5b1,
0x3d21086c, 0xed0bdd25, 0x3d1212b7, 0xecdbe04a,
0x3d02f757, 0xecabef3d, 0x3cf3b653, 0xec7c0a1d,
0x3ce44fb7, 0xec4c3106, 0x3cd4c38b, 0xec1c6417,
0x3cc511d9, 0xebeca36c, 0x3cb53aaa, 0xebbcef23,
0x3ca53e09, 0xeb8d475b, 0x3c951bff, 0xeb5dac2f,
0x3c84d496, 0xeb2e1dbe, 0x3c7467d9, 0xeafe9c24,
0x3c63d5d1, 0xeacf277f, 0x3c531e88, 0xea9fbfed,
0x3c42420a, 0xea70658a, 0x3c314060, 0xea411874,
0x3c201994, 0xea11d8c8, 0x3c0ecdb2, 0xe9e2a6a3,
0x3bfd5cc4, 0xe9b38223, 0x3bebc6d5, 0xe9846b63,
0x3bda0bf0, 0xe9556282, 0x3bc82c1f, 0xe926679c,
0x3bb6276e, 0xe8f77acf, 0x3ba3fde7, 0xe8c89c37,
0x3b91af97, 0xe899cbf1, 0x3b7f3c87, 0xe86b0a1a,
0x3b6ca4c4, 0xe83c56cf, 0x3b59e85a, 0xe80db22d,
0x3b470753, 0xe7df1c50, 0x3b3401bb, 0xe7b09555,
0x3b20d79e, 0xe7821d59, 0x3b0d8909, 0xe753b479,
0x3afa1605, 0xe7255ad1, 0x3ae67ea1, 0xe6f7107e,
0x3ad2c2e8, 0xe6c8d59c, 0x3abee2e5, 0xe69aaa48,
0x3aaadea6, 0xe66c8e9f, 0x3a96b636, 0xe63e82bc,
0x3a8269a3, 0xe61086bc, 0x3a6df8f8, 0xe5e29abc,
0x3a596442, 0xe5b4bed8, 0x3a44ab8e, 0xe586f32c,
0x3a2fcee8, 0xe55937d5, 0x3a1ace5f, 0xe52b8cee,
0x3a05a9fd, 0xe4fdf294, 0x39f061d2, 0xe4d068e2,
0x39daf5e8, 0xe4a2eff6, 0x39c5664f, 0xe47587eb,
0x39afb313, 0xe44830dd, 0x3999dc42, 0xe41aeae8,
0x3983e1e8, 0xe3edb628, 0x396dc414, 0xe3c092b9,
0x395782d3, 0xe39380b6, 0x39411e33, 0xe366803c,
0x392a9642, 0xe3399167, 0x3913eb0e, 0xe30cb451,
0x38fd1ca4, 0xe2dfe917, 0x38e62b13, 0xe2b32fd4,
0x38cf1669, 0xe28688a4, 0x38b7deb4, 0xe259f3a3,
0x38a08402, 0xe22d70eb, 0x38890663, 0xe2010099,
0x387165e3, 0xe1d4a2c8, 0x3859a292, 0xe1a85793,
0x3841bc7f, 0xe17c1f15, 0x3829b3b9, 0xe14ff96a,
0x3811884d, 0xe123e6ad, 0x37f93a4b, 0xe0f7e6f9,
0x37e0c9c3, 0xe0cbfa6a, 0x37c836c2, 0xe0a0211a,
0x37af8159, 0xe0745b24, 0x3796a996, 0xe048a8a4,
0x377daf89, 0xe01d09b4, 0x37649341, 0xdff17e70,
0x374b54ce, 0xdfc606f1, 0x3731f440, 0xdf9aa354,
0x371871a5, 0xdf6f53b3, 0x36fecd0e, 0xdf441828,
0x36e5068a, 0xdf18f0ce, 0x36cb1e2a, 0xdeedddc0,
0x36b113fd, 0xdec2df18, 0x3696e814, 0xde97f4f1,
0x367c9a7e, 0xde6d1f65, 0x36622b4c, 0xde425e8f,
0x36479a8e, 0xde17b28a, 0x362ce855, 0xdded1b6e,
0x361214b0, 0xddc29958, 0x35f71fb1, 0xdd982c60,
0x35dc0968, 0xdd6dd4a2, 0x35c0d1e7, 0xdd439236,
0x35a5793c, 0xdd196538, 0x3589ff7a, 0xdcef4dc2,
0x356e64b2, 0xdcc54bec, 0x3552a8f4, 0xdc9b5fd2,
0x3536cc52, 0xdc71898d, 0x351acedd, 0xdc47c936,
0x34feb0a5, 0xdc1e1ee9, 0x34e271bd, 0xdbf48abd,
0x34c61236, 0xdbcb0cce, 0x34a99221, 0xdba1a534,
0x348cf190, 0xdb785409, 0x34703095, 0xdb4f1967,
0x34534f41, 0xdb25f566, 0x34364da6, 0xdafce821,
0x34192bd5, 0xdad3f1b1, 0x33fbe9e2, 0xdaab122f,
0x33de87de, 0xda8249b4, 0x33c105db, 0xda599859,
0x33a363ec, 0xda30fe38, 0x3385a222, 0xda087b69,
0x3367c090, 0xd9e01006, 0x3349bf48, 0xd9b7bc27,
0x332b9e5e, 0xd98f7fe6, 0x330d5de3, 0xd9675b5a,
0x32eefdea, 0xd93f4e9e, 0x32d07e85, 0xd91759c9,
0x32b1dfc9, 0xd8ef7cf4, 0x329321c7, 0xd8c7b838,
0x32744493, 0xd8a00bae, 0x32554840, 0xd878776d,
0x32362ce0, 0xd850fb8e, 0x3216f287, 0xd829982b,
0x31f79948, 0xd8024d59, 0x31d82137, 0xd7db1b34,
0x31b88a66, 0xd7b401d1, 0x3198d4ea, 0xd78d014a,
0x317900d6, 0xd76619b6, 0x31590e3e, 0xd73f4b2e,
0x3138fd35, 0xd71895c9, 0x3118cdcf, 0xd6f1f99f,
0x30f8801f, 0xd6cb76c9, 0x30d8143b, 0xd6a50d5d,
0x30b78a36, 0xd67ebd74, 0x3096e223, 0xd6588725,
0x30761c18, 0xd6326a88, 0x30553828, 0xd60c67b4,
0x30343667, 0xd5e67ec1, 0x301316eb, 0xd5c0afc6,
0x2ff1d9c7, 0xd59afadb, 0x2fd07f0f, 0xd5756016,
0x2faf06da, 0xd54fdf8f, 0x2f8d713a, 0xd52a795d,
0x2f6bbe45, 0xd5052d97, 0x2f49ee0f, 0xd4dffc54,
0x2f2800af, 0xd4bae5ab, 0x2f05f637, 0xd495e9b3,
0x2ee3cebe, 0xd4710883, 0x2ec18a58, 0xd44c4232,
0x2e9f291b, 0xd42796d5, 0x2e7cab1c, 0xd4030684,
0x2e5a1070, 0xd3de9156, 0x2e37592c, 0xd3ba3760,
0x2e148566, 0xd395f8ba, 0x2df19534, 0xd371d579,
0x2dce88aa, 0xd34dcdb4, 0x2dab5fdf, 0xd329e181,
0x2d881ae8, 0xd30610f7, 0x2d64b9da, 0xd2e25c2b,
0x2d413ccd, 0xd2bec333, 0x2d1da3d5, 0xd29b4626,
0x2cf9ef09, 0xd277e518, 0x2cd61e7f, 0xd254a021,
0x2cb2324c, 0xd2317756, 0x2c8e2a87, 0xd20e6acc,
0x2c6a0746, 0xd1eb7a9a, 0x2c45c8a0, 0xd1c8a6d4,
0x2c216eaa, 0xd1a5ef90, 0x2bfcf97c, 0xd18354e4,
0x2bd8692b, 0xd160d6e5, 0x2bb3bdce, 0xd13e75a8,
0x2b8ef77d, 0xd11c3142, 0x2b6a164d, 0xd0fa09c9,
0x2b451a55, 0xd0d7ff51, 0x2b2003ac, 0xd0b611f1,
0x2afad269, 0xd09441bb, 0x2ad586a3, 0xd0728ec6,
0x2ab02071, 0xd050f926, 0x2a8a9fea, 0xd02f80f1,
0x2a650525, 0xd00e2639, 0x2a3f503a, 0xcfece915,
0x2a19813f, 0xcfcbc999, 0x29f3984c, 0xcfaac7d8,
0x29cd9578, 0xcf89e3e8, 0x29a778db, 0xcf691ddd,
0x2981428c, 0xcf4875ca, 0x295af2a3, 0xcf27ebc5,
0x29348937, 0xcf077fe1, 0x290e0661, 0xcee73231,
0x28e76a37, 0xcec702cb, 0x28c0b4d2, 0xcea6f1c2,
0x2899e64a, 0xce86ff2a, 0x2872feb6, 0xce672b16,
0x284bfe2f, 0xce47759a, 0x2824e4cc, 0xce27dec9,
0x27fdb2a7, 0xce0866b8, 0x27d667d5, 0xcde90d79,
0x27af0472, 0xcdc9d320, 0x27878893, 0xcdaab7c0,
0x275ff452, 0xcd8bbb6d, 0x273847c8, 0xcd6cde39,
0x2710830c, 0xcd4e2037, 0x26e8a637, 0xcd2f817b,
0x26c0b162, 0xcd110216, 0x2698a4a6, 0xccf2a21d,
0x2670801a, 0xccd461a2, 0x264843d9, 0xccb640b8,
0x261feffa, 0xcc983f70, 0x25f78497, 0xcc7a5dde,
0x25cf01c8, 0xcc5c9c14, 0x25a667a7, 0xcc3efa25,
0x257db64c, 0xcc217822, 0x2554edd1, 0xcc04161e,
0x252c0e4f, 0xcbe6d42b, 0x250317df, 0xcbc9b25a,
0x24da0a9a, 0xcbacb0bf, 0x24b0e699, 0xcb8fcf6b,
0x2487abf7, 0xcb730e70, 0x245e5acc, 0xcb566ddf,
0x2434f332, 0xcb39edca, 0x240b7543, 0xcb1d8e43,
0x23e1e117, 0xcb014f5b, 0x23b836ca, 0xcae53123,
0x238e7673, 0xcac933ae, 0x2364a02e, 0xcaad570c,
0x233ab414, 0xca919b4e, 0x2310b23e, 0xca760086,
0x22e69ac8, 0xca5a86c4, 0x22bc6dca, 0xca3f2e19,
0x22922b5e, 0xca23f698, 0x2267d3a0, 0xca08e04f,
0x223d66a8, 0xc9edeb50, 0x2212e492, 0xc9d317ab,
0x21e84d76, 0xc9b86572, 0x21bda171, 0xc99dd4b4,
0x2192e09b, 0xc9836582, 0x21680b0f, 0xc96917ec,
0x213d20e8, 0xc94eec03, 0x21122240, 0xc934e1d6,
0x20e70f32, 0xc91af976, 0x20bbe7d8, 0xc90132f2,
0x2090ac4d, 0xc8e78e5b, 0x20655cac, 0xc8ce0bc0,
0x2039f90f, 0xc8b4ab32, 0x200e8190, 0xc89b6cbf,
0x1fe2f64c, 0xc8825077, 0x1fb7575c, 0xc869566a,
0x1f8ba4dc, 0xc8507ea7, 0x1f5fdee6, 0xc837c93e,
0x1f340596, 0xc81f363d, 0x1f081907, 0xc806c5b5,
0x1edc1953, 0xc7ee77b3, 0x1eb00696, 0xc7d64c47,
0x1e83e0eb, 0xc7be4381, 0x1e57a86d, 0xc7a65d6e,
0x1e2b5d38, 0xc78e9a1d, 0x1dfeff67, 0xc776f99d,
0x1dd28f15, 0xc75f7bfe, 0x1da60c5d, 0xc748214c,
0x1d79775c, 0xc730e997, 0x1d4cd02c, 0xc719d4ed,
0x1d2016e9, 0xc702e35c, 0x1cf34baf, 0xc6ec14f2,
0x1cc66e99, 0xc6d569be, 0x1c997fc4, 0xc6bee1cd,
0x1c6c7f4a, 0xc6a87d2d, 0x1c3f6d47, 0xc6923bec,
0x1c1249d8, 0xc67c1e18, 0x1be51518, 0xc66623be,
0x1bb7cf23, 0xc6504ced, 0x1b8a7815, 0xc63a99b1,
0x1b5d100a, 0xc6250a18, 0x1b2f971e, 0xc60f9e2e,
0x1b020d6c, 0xc5fa5603, 0x1ad47312, 0xc5e531a1,
0x1aa6c82b, 0xc5d03118, 0x1a790cd4, 0xc5bb5472,
0x1a4b4128, 0xc5a69bbe, 0x1a1d6544, 0xc5920708,
0x19ef7944, 0xc57d965d, 0x19c17d44, 0xc56949ca,
0x19937161, 0xc555215a, 0x196555b8, 0xc5411d1b,
0x19372a64, 0xc52d3d18, 0x1908ef82, 0xc519815f,
0x18daa52f, 0xc505e9fb, 0x18ac4b87, 0xc4f276f7,
0x187de2a7, 0xc4df2862, 0x184f6aab, 0xc4cbfe45,
0x1820e3b0, 0xc4b8f8ad, 0x17f24dd3, 0xc4a617a6,
0x17c3a931, 0xc4935b3c, 0x1794f5e6, 0xc480c379,
0x1766340f, 0xc46e5069, 0x173763c9, 0xc45c0219,
0x17088531, 0xc449d892, 0x16d99864, 0xc437d3e1,
0x16aa9d7e, 0xc425f410, 0x167b949d, 0xc414392b,
0x164c7ddd, 0xc402a33c, 0x161d595d, 0xc3f1324e,
0x15ee2738, 0xc3dfe66c, 0x15bee78c, 0xc3cebfa0,
0x158f9a76, 0xc3bdbdf6, 0x15604013, 0xc3ace178,
0x1530d881, 0xc39c2a2f, 0x150163dc, 0xc38b9827,
0x14d1e242, 0xc37b2b6a, 0x14a253d1, 0xc36ae401,
0x1472b8a5, 0xc35ac1f7, 0x144310dd, 0xc34ac556,
0x14135c94, 0xc33aee27, 0x13e39be9, 0xc32b3c75,
0x13b3cefa, 0xc31bb049, 0x1383f5e3, 0xc30c49ad,
0x135410c3, 0xc2fd08a9, 0x13241fb6, 0xc2eded49,
0x12f422db, 0xc2def794, 0x12c41a4f, 0xc2d02794,
0x1294062f, 0xc2c17d52, 0x1263e699, 0xc2b2f8d8,
0x1233bbac, 0xc2a49a2e, 0x12038584, 0xc296615d,
0x11d3443f, 0xc2884e6e, 0x11a2f7fc, 0xc27a616a,
0x1172a0d7, 0xc26c9a58, 0x11423ef0, 0xc25ef943,
0x1111d263, 0xc2517e31, 0x10e15b4e, 0xc244292c,
0x10b0d9d0, 0xc236fa3b, 0x10804e06, 0xc229f167,
0x104fb80e, 0xc21d0eb8, 0x101f1807, 0xc2105236,
0x0fee6e0d, 0xc203bbe8, 0x0fbdba40, 0xc1f74bd6,
0x0f8cfcbe, 0xc1eb0209, 0x0f5c35a3, 0xc1dede87,
0x0f2b650f, 0xc1d2e158, 0x0efa8b20, 0xc1c70a84,
0x0ec9a7f3, 0xc1bb5a11, 0x0e98bba7, 0xc1afd007,
0x0e67c65a, 0xc1a46c6e, 0x0e36c82a, 0xc1992f4c,
0x0e05c135, 0xc18e18a7, 0x0dd4b19a, 0xc1832888,
0x0da39978, 0xc1785ef4, 0x0d7278eb, 0xc16dbbf3,
0x0d415013, 0xc1633f8a, 0x0d101f0e, 0xc158e9c1,
0x0cdee5f9, 0xc14eba9d, 0x0cada4f5, 0xc144b225,
0x0c7c5c1e, 0xc13ad060, 0x0c4b0b94, 0xc1311553,
0x0c19b374, 0xc1278104, 0x0be853de, 0xc11e1379,
0x0bb6ecef, 0xc114ccb9, 0x0b857ec7, 0xc10bacc8,
0x0b540982, 0xc102b3ac, 0x0b228d42, 0xc0f9e16b,
0x0af10a22, 0xc0f1360b, 0x0abf8043, 0xc0e8b190,
0x0a8defc3, 0xc0e05401, 0x0a5c58c0, 0xc0d81d61,
0x0a2abb59, 0xc0d00db6, 0x09f917ac, 0xc0c82506,
0x09c76dd8, 0xc0c06355, 0x0995bdfd, 0xc0b8c8a7,
0x09640837, 0xc0b15502, 0x09324ca7, 0xc0aa086a,
0x09008b6a, 0xc0a2e2e3, 0x08cec4a0, 0xc09be473,
0x089cf867, 0xc0950d1d, 0x086b26de, 0xc08e5ce5,
0x08395024, 0xc087d3d0, 0x08077457, 0xc08171e2,
0x07d59396, 0xc07b371e, 0x07a3adff, 0xc0752389,
0x0771c3b3, 0xc06f3726, 0x073fd4cf, 0xc06971f9,
0x070de172, 0xc063d405, 0x06dbe9bb, 0xc05e5d4e,
0x06a9edc9, 0xc0590dd8, 0x0677edbb, 0xc053e5a5,
0x0645e9af, 0xc04ee4b8, 0x0613e1c5, 0xc04a0b16,
0x05e1d61b, 0xc04558c0, 0x05afc6d0, 0xc040cdba,
0x057db403, 0xc03c6a07, 0x054b9dd3, 0xc0382da8,
0x0519845e, 0xc03418a2, 0x04e767c5, 0xc0302af5,
0x04b54825, 0xc02c64a6, 0x0483259d, 0xc028c5b6,
0x0451004d, 0xc0254e27, 0x041ed854, 0xc021fdfb,
0x03ecadcf, 0xc01ed535, 0x03ba80df, 0xc01bd3d6,
0x038851a2, 0xc018f9e1, 0x03562038, 0xc0164757,
0x0323ecbe, 0xc013bc39, 0x02f1b755, 0xc011588a,
0x02bf801a, 0xc00f1c4a, 0x028d472e, 0xc00d077c,
0x025b0caf, 0xc00b1a20, 0x0228d0bb, 0xc0095438,
0x01f69373, 0xc007b5c4, 0x01c454f5, 0xc0063ec6,
0x0192155f, 0xc004ef3f, 0x015fd4d2, 0xc003c72f,
0x012d936c, 0xc002c697, 0x00fb514b, 0xc001ed78,
0x00c90e90, 0xc0013bd3, 0x0096cb58, 0xc000b1a7,
0x006487c4, 0xc0004ef5, 0x003243f1, 0xc00013bd,
0x00000000, 0xc0000000, 0xffcdbc0f, 0xc00013bd,
0xff9b783c, 0xc0004ef5, 0xff6934a8, 0xc000b1a7,
0xff36f170, 0xc0013bd3, 0xff04aeb5, 0xc001ed78,
0xfed26c94, 0xc002c697, 0xfea02b2e, 0xc003c72f,
0xfe6deaa1, 0xc004ef3f, 0xfe3bab0b, 0xc0063ec6,
0xfe096c8d, 0xc007b5c4, 0xfdd72f45, 0xc0095438,
0xfda4f351, 0xc00b1a20, 0xfd72b8d2, 0xc00d077c,
0xfd407fe6, 0xc00f1c4a, 0xfd0e48ab, 0xc011588a,
0xfcdc1342, 0xc013bc39, 0xfca9dfc8, 0xc0164757,
0xfc77ae5e, 0xc018f9e1, 0xfc457f21, 0xc01bd3d6,
0xfc135231, 0xc01ed535, 0xfbe127ac, 0xc021fdfb,
0xfbaeffb3, 0xc0254e27, 0xfb7cda63, 0xc028c5b6,
0xfb4ab7db, 0xc02c64a6, 0xfb18983b, 0xc0302af5,
0xfae67ba2, 0xc03418a2, 0xfab4622d, 0xc0382da8,
0xfa824bfd, 0xc03c6a07, 0xfa503930, 0xc040cdba,
0xfa1e29e5, 0xc04558c0, 0xf9ec1e3b, 0xc04a0b16,
0xf9ba1651, 0xc04ee4b8, 0xf9881245, 0xc053e5a5,
0xf9561237, 0xc0590dd8, 0xf9241645, 0xc05e5d4e,
0xf8f21e8e, 0xc063d405, 0xf8c02b31, 0xc06971f9,
0xf88e3c4d, 0xc06f3726, 0xf85c5201, 0xc0752389,
0xf82a6c6a, 0xc07b371e, 0xf7f88ba9, 0xc08171e2,
0xf7c6afdc, 0xc087d3d0, 0xf794d922, 0xc08e5ce5,
0xf7630799, 0xc0950d1d, 0xf7313b60, 0xc09be473,
0xf6ff7496, 0xc0a2e2e3, 0xf6cdb359, 0xc0aa086a,
0xf69bf7c9, 0xc0b15502, 0xf66a4203, 0xc0b8c8a7,
0xf6389228, 0xc0c06355, 0xf606e854, 0xc0c82506,
0xf5d544a7, 0xc0d00db6, 0xf5a3a740, 0xc0d81d61,
0xf572103d, 0xc0e05401, 0xf5407fbd, 0xc0e8b190,
0xf50ef5de, 0xc0f1360b, 0xf4dd72be, 0xc0f9e16b,
0xf4abf67e, 0xc102b3ac, 0xf47a8139, 0xc10bacc8,
0xf4491311, 0xc114ccb9, 0xf417ac22, 0xc11e1379,
0xf3e64c8c, 0xc1278104, 0xf3b4f46c, 0xc1311553,
0xf383a3e2, 0xc13ad060, 0xf3525b0b, 0xc144b225,
0xf3211a07, 0xc14eba9d, 0xf2efe0f2, 0xc158e9c1,
0xf2beafed, 0xc1633f8a, 0xf28d8715, 0xc16dbbf3,
0xf25c6688, 0xc1785ef4, 0xf22b4e66, 0xc1832888,
0xf1fa3ecb, 0xc18e18a7, 0xf1c937d6, 0xc1992f4c,
0xf19839a6, 0xc1a46c6e, 0xf1674459, 0xc1afd007,
0xf136580d, 0xc1bb5a11, 0xf10574e0, 0xc1c70a84,
0xf0d49af1, 0xc1d2e158, 0xf0a3ca5d, 0xc1dede87,
0xf0730342, 0xc1eb0209, 0xf04245c0, 0xc1f74bd6,
0xf01191f3, 0xc203bbe8, 0xefe0e7f9, 0xc2105236,
0xefb047f2, 0xc21d0eb8, 0xef7fb1fa, 0xc229f167,
0xef4f2630, 0xc236fa3b, 0xef1ea4b2, 0xc244292c,
0xeeee2d9d, 0xc2517e31, 0xeebdc110, 0xc25ef943,
0xee8d5f29, 0xc26c9a58, 0xee5d0804, 0xc27a616a,
0xee2cbbc1, 0xc2884e6e, 0xedfc7a7c, 0xc296615d,
0xedcc4454, 0xc2a49a2e, 0xed9c1967, 0xc2b2f8d8,
0xed6bf9d1, 0xc2c17d52, 0xed3be5b1, 0xc2d02794,
0xed0bdd25, 0xc2def794, 0xecdbe04a, 0xc2eded49,
0xecabef3d, 0xc2fd08a9, 0xec7c0a1d, 0xc30c49ad,
0xec4c3106, 0xc31bb049, 0xec1c6417, 0xc32b3c75,
0xebeca36c, 0xc33aee27, 0xebbcef23, 0xc34ac556,
0xeb8d475b, 0xc35ac1f7, 0xeb5dac2f, 0xc36ae401,
0xeb2e1dbe, 0xc37b2b6a, 0xeafe9c24, 0xc38b9827,
0xeacf277f, 0xc39c2a2f, 0xea9fbfed, 0xc3ace178,
0xea70658a, 0xc3bdbdf6, 0xea411874, 0xc3cebfa0,
0xea11d8c8, 0xc3dfe66c, 0xe9e2a6a3, 0xc3f1324e,
0xe9b38223, 0xc402a33c, 0xe9846b63, 0xc414392b,
0xe9556282, 0xc425f410, 0xe926679c, 0xc437d3e1,
0xe8f77acf, 0xc449d892, 0xe8c89c37, 0xc45c0219,
0xe899cbf1, 0xc46e5069, 0xe86b0a1a, 0xc480c379,
0xe83c56cf, 0xc4935b3c, 0xe80db22d, 0xc4a617a6,
0xe7df1c50, 0xc4b8f8ad, 0xe7b09555, 0xc4cbfe45,
0xe7821d59, 0xc4df2862, 0xe753b479, 0xc4f276f7,
0xe7255ad1, 0xc505e9fb, 0xe6f7107e, 0xc519815f,
0xe6c8d59c, 0xc52d3d18, 0xe69aaa48, 0xc5411d1b,
0xe66c8e9f, 0xc555215a, 0xe63e82bc, 0xc56949ca,
0xe61086bc, 0xc57d965d, 0xe5e29abc, 0xc5920708,
0xe5b4bed8, 0xc5a69bbe, 0xe586f32c, 0xc5bb5472,
0xe55937d5, 0xc5d03118, 0xe52b8cee, 0xc5e531a1,
0xe4fdf294, 0xc5fa5603, 0xe4d068e2, 0xc60f9e2e,
0xe4a2eff6, 0xc6250a18, 0xe47587eb, 0xc63a99b1,
0xe44830dd, 0xc6504ced, 0xe41aeae8, 0xc66623be,
0xe3edb628, 0xc67c1e18, 0xe3c092b9, 0xc6923bec,
0xe39380b6, 0xc6a87d2d, 0xe366803c, 0xc6bee1cd,
0xe3399167, 0xc6d569be, 0xe30cb451, 0xc6ec14f2,
0xe2dfe917, 0xc702e35c, 0xe2b32fd4, 0xc719d4ed,
0xe28688a4, 0xc730e997, 0xe259f3a3, 0xc748214c,
0xe22d70eb, 0xc75f7bfe, 0xe2010099, 0xc776f99d,
0xe1d4a2c8, 0xc78e9a1d, 0xe1a85793, 0xc7a65d6e,
0xe17c1f15, 0xc7be4381, 0xe14ff96a, 0xc7d64c47,
0xe123e6ad, 0xc7ee77b3, 0xe0f7e6f9, 0xc806c5b5,
0xe0cbfa6a, 0xc81f363d, 0xe0a0211a, 0xc837c93e,
0xe0745b24, 0xc8507ea7, 0xe048a8a4, 0xc869566a,
0xe01d09b4, 0xc8825077, 0xdff17e70, 0xc89b6cbf,
0xdfc606f1, 0xc8b4ab32, 0xdf9aa354, 0xc8ce0bc0,
0xdf6f53b3, 0xc8e78e5b, 0xdf441828, 0xc90132f2,
0xdf18f0ce, 0xc91af976, 0xdeedddc0, 0xc934e1d6,
0xdec2df18, 0xc94eec03, 0xde97f4f1, 0xc96917ec,
0xde6d1f65, 0xc9836582, 0xde425e8f, 0xc99dd4b4,
0xde17b28a, 0xc9b86572, 0xdded1b6e, 0xc9d317ab,
0xddc29958, 0xc9edeb50, 0xdd982c60, 0xca08e04f,
0xdd6dd4a2, 0xca23f698, 0xdd439236, 0xca3f2e19,
0xdd196538, 0xca5a86c4, 0xdcef4dc2, 0xca760086,
0xdcc54bec, 0xca919b4e, 0xdc9b5fd2, 0xcaad570c,
0xdc71898d, 0xcac933ae, 0xdc47c936, 0xcae53123,
0xdc1e1ee9, 0xcb014f5b, 0xdbf48abd, 0xcb1d8e43,
0xdbcb0cce, 0xcb39edca, 0xdba1a534, 0xcb566ddf,
0xdb785409, 0xcb730e70, 0xdb4f1967, 0xcb8fcf6b,
0xdb25f566, 0xcbacb0bf, 0xdafce821, 0xcbc9b25a,
0xdad3f1b1, 0xcbe6d42b, 0xdaab122f, 0xcc04161e,
0xda8249b4, 0xcc217822, 0xda599859, 0xcc3efa25,
0xda30fe38, 0xcc5c9c14, 0xda087b69, 0xcc7a5dde,
0xd9e01006, 0xcc983f70, 0xd9b7bc27, 0xccb640b8,
0xd98f7fe6, 0xccd461a2, 0xd9675b5a, 0xccf2a21d,
0xd93f4e9e, 0xcd110216, 0xd91759c9, 0xcd2f817b,
0xd8ef7cf4, 0xcd4e2037, 0xd8c7b838, 0xcd6cde39,
0xd8a00bae, 0xcd8bbb6d, 0xd878776d, 0xcdaab7c0,
0xd850fb8e, 0xcdc9d320, 0xd829982b, 0xcde90d79,
0xd8024d59, 0xce0866b8, 0xd7db1b34, 0xce27dec9,
0xd7b401d1, 0xce47759a, 0xd78d014a, 0xce672b16,
0xd76619b6, 0xce86ff2a, 0xd73f4b2e, 0xcea6f1c2,
0xd71895c9, 0xcec702cb, 0xd6f1f99f, 0xcee73231,
0xd6cb76c9, 0xcf077fe1, 0xd6a50d5d, 0xcf27ebc5,
0xd67ebd74, 0xcf4875ca, 0xd6588725, 0xcf691ddd,
0xd6326a88, 0xcf89e3e8, 0xd60c67b4, 0xcfaac7d8,
0xd5e67ec1, 0xcfcbc999, 0xd5c0afc6, 0xcfece915,
0xd59afadb, 0xd00e2639, 0xd5756016, 0xd02f80f1,
0xd54fdf8f, 0xd050f926, 0xd52a795d, 0xd0728ec6,
0xd5052d97, 0xd09441bb, 0xd4dffc54, 0xd0b611f1,
0xd4bae5ab, 0xd0d7ff51, 0xd495e9b3, 0xd0fa09c9,
0xd4710883, 0xd11c3142, 0xd44c4232, 0xd13e75a8,
0xd42796d5, 0xd160d6e5, 0xd4030684, 0xd18354e4,
0xd3de9156, 0xd1a5ef90, 0xd3ba3760, 0xd1c8a6d4,
0xd395f8ba, 0xd1eb7a9a, 0xd371d579, 0xd20e6acc,
0xd34dcdb4, 0xd2317756, 0xd329e181, 0xd254a021,
0xd30610f7, 0xd277e518, 0xd2e25c2b, 0xd29b4626,
0xd2bec333, 0xd2bec333, 0xd29b4626, 0xd2e25c2b,
0xd277e518, 0xd30610f7, 0xd254a021, 0xd329e181,
0xd2317756, 0xd34dcdb4, 0xd20e6acc, 0xd371d579,
0xd1eb7a9a, 0xd395f8ba, 0xd1c8a6d4, 0xd3ba3760,
0xd1a5ef90, 0xd3de9156, 0xd18354e4, 0xd4030684,
0xd160d6e5, 0xd42796d5, 0xd13e75a8, 0xd44c4232,
0xd11c3142, 0xd4710883, 0xd0fa09c9, 0xd495e9b3,
0xd0d7ff51, 0xd4bae5ab, 0xd0b611f1, 0xd4dffc54,
0xd09441bb, 0xd5052d97, 0xd0728ec6, 0xd52a795d,
0xd050f926, 0xd54fdf8f, 0xd02f80f1, 0xd5756016,
0xd00e2639, 0xd59afadb, 0xcfece915, 0xd5c0afc6,
0xcfcbc999, 0xd5e67ec1, 0xcfaac7d8, 0xd60c67b4,
0xcf89e3e8, 0xd6326a88, 0xcf691ddd, 0xd6588725,
0xcf4875ca, 0xd67ebd74, 0xcf27ebc5, 0xd6a50d5d,
0xcf077fe1, 0xd6cb76c9, 0xcee73231, 0xd6f1f99f,
0xcec702cb, 0xd71895c9, 0xcea6f1c2, 0xd73f4b2e,
0xce86ff2a, 0xd76619b6, 0xce672b16, 0xd78d014a,
0xce47759a, 0xd7b401d1, 0xce27dec9, 0xd7db1b34,
0xce0866b8, 0xd8024d59, 0xcde90d79, 0xd829982b,
0xcdc9d320, 0xd850fb8e, 0xcdaab7c0, 0xd878776d,
0xcd8bbb6d, 0xd8a00bae, 0xcd6cde39, 0xd8c7b838,
0xcd4e2037, 0xd8ef7cf4, 0xcd2f817b, 0xd91759c9,
0xcd110216, 0xd93f4e9e, 0xccf2a21d, 0xd9675b5a,
0xccd461a2, 0xd98f7fe6, 0xccb640b8, 0xd9b7bc27,
0xcc983f70, 0xd9e01006, 0xcc7a5dde, 0xda087b69,
0xcc5c9c14, 0xda30fe38, 0xcc3efa25, 0xda599859,
0xcc217822, 0xda8249b4, 0xcc04161e, 0xdaab122f,
0xcbe6d42b, 0xdad3f1b1, 0xcbc9b25a, 0xdafce821,
0xcbacb0bf, 0xdb25f566, 0xcb8fcf6b, 0xdb4f1967,
0xcb730e70, 0xdb785409, 0xcb566ddf, 0xdba1a534,
0xcb39edca, 0xdbcb0cce, 0xcb1d8e43, 0xdbf48abd,
0xcb014f5b, 0xdc1e1ee9, 0xcae53123, 0xdc47c936,
0xcac933ae, 0xdc71898d, 0xcaad570c, 0xdc9b5fd2,
0xca919b4e, 0xdcc54bec, 0xca760086, 0xdcef4dc2,
0xca5a86c4, 0xdd196538, 0xca3f2e19, 0xdd439236,
0xca23f698, 0xdd6dd4a2, 0xca08e04f, 0xdd982c60,
0xc9edeb50, 0xddc29958, 0xc9d317ab, 0xdded1b6e,
0xc9b86572, 0xde17b28a, 0xc99dd4b4, 0xde425e8f,
0xc9836582, 0xde6d1f65, 0xc96917ec, 0xde97f4f1,
0xc94eec03, 0xdec2df18, 0xc934e1d6, 0xdeedddc0,
0xc91af976, 0xdf18f0ce, 0xc90132f2, 0xdf441828,
0xc8e78e5b, 0xdf6f53b3, 0xc8ce0bc0, 0xdf9aa354,
0xc8b4ab32, 0xdfc606f1, 0xc89b6cbf, 0xdff17e70,
0xc8825077, 0xe01d09b4, 0xc869566a, 0xe048a8a4,
0xc8507ea7, 0xe0745b24, 0xc837c93e, 0xe0a0211a,
0xc81f363d, 0xe0cbfa6a, 0xc806c5b5, 0xe0f7e6f9,
0xc7ee77b3, 0xe123e6ad, 0xc7d64c47, 0xe14ff96a,
0xc7be4381, 0xe17c1f15, 0xc7a65d6e, 0xe1a85793,
0xc78e9a1d, 0xe1d4a2c8, 0xc776f99d, 0xe2010099,
0xc75f7bfe, 0xe22d70eb, 0xc748214c, 0xe259f3a3,
0xc730e997, 0xe28688a4, 0xc719d4ed, 0xe2b32fd4,
0xc702e35c, 0xe2dfe917, 0xc6ec14f2, 0xe30cb451,
0xc6d569be, 0xe3399167, 0xc6bee1cd, 0xe366803c,
0xc6a87d2d, 0xe39380b6, 0xc6923bec, 0xe3c092b9,
0xc67c1e18, 0xe3edb628, 0xc66623be, 0xe41aeae8,
0xc6504ced, 0xe44830dd, 0xc63a99b1, 0xe47587eb,
0xc6250a18, 0xe4a2eff6, 0xc60f9e2e, 0xe4d068e2,
0xc5fa5603, 0xe4fdf294, 0xc5e531a1, 0xe52b8cee,
0xc5d03118, 0xe55937d5, 0xc5bb5472, 0xe586f32c,
0xc5a69bbe, 0xe5b4bed8, 0xc5920708, 0xe5e29abc,
0xc57d965d, 0xe61086bc, 0xc56949ca, 0xe63e82bc,
0xc555215a, 0xe66c8e9f, 0xc5411d1b, 0xe69aaa48,
0xc52d3d18, 0xe6c8d59c, 0xc519815f, 0xe6f7107e,
0xc505e9fb, 0xe7255ad1, 0xc4f276f7, 0xe753b479,
0xc4df2862, 0xe7821d59, 0xc4cbfe45, 0xe7b09555,
0xc4b8f8ad, 0xe7df1c50, 0xc4a617a6, 0xe80db22d,
0xc4935b3c, 0xe83c56cf, 0xc480c379, 0xe86b0a1a,
0xc46e5069, 0xe899cbf1, 0xc45c0219, 0xe8c89c37,
0xc449d892, 0xe8f77acf, 0xc437d3e1, 0xe926679c,
0xc425f410, 0xe9556282, 0xc414392b, 0xe9846b63,
0xc402a33c, 0xe9b38223, 0xc3f1324e, 0xe9e2a6a3,
0xc3dfe66c, 0xea11d8c8, 0xc3cebfa0, 0xea411874,
0xc3bdbdf6, 0xea70658a, 0xc3ace178, 0xea9fbfed,
0xc39c2a2f, 0xeacf277f, 0xc38b9827, 0xeafe9c24,
0xc37b2b6a, 0xeb2e1dbe, 0xc36ae401, 0xeb5dac2f,
0xc35ac1f7, 0xeb8d475b, 0xc34ac556, 0xebbcef23,
0xc33aee27, 0xebeca36c, 0xc32b3c75, 0xec1c6417,
0xc31bb049, 0xec4c3106, 0xc30c49ad, 0xec7c0a1d,
0xc2fd08a9, 0xecabef3d, 0xc2eded49, 0xecdbe04a,
0xc2def794, 0xed0bdd25, 0xc2d02794, 0xed3be5b1,
0xc2c17d52, 0xed6bf9d1, 0xc2b2f8d8, 0xed9c1967,
0xc2a49a2e, 0xedcc4454, 0xc296615d, 0xedfc7a7c,
0xc2884e6e, 0xee2cbbc1, 0xc27a616a, 0xee5d0804,
0xc26c9a58, 0xee8d5f29, 0xc25ef943, 0xeebdc110,
0xc2517e31, 0xeeee2d9d, 0xc244292c, 0xef1ea4b2,
0xc236fa3b, 0xef4f2630, 0xc229f167, 0xef7fb1fa,
0xc21d0eb8, 0xefb047f2, 0xc2105236, 0xefe0e7f9,
0xc203bbe8, 0xf01191f3, 0xc1f74bd6, 0xf04245c0,
0xc1eb0209, 0xf0730342, 0xc1dede87, 0xf0a3ca5d,
0xc1d2e158, 0xf0d49af1, 0xc1c70a84, 0xf10574e0,
0xc1bb5a11, 0xf136580d, 0xc1afd007, 0xf1674459,
0xc1a46c6e, 0xf19839a6, 0xc1992f4c, 0xf1c937d6,
0xc18e18a7, 0xf1fa3ecb, 0xc1832888, 0xf22b4e66,
0xc1785ef4, 0xf25c6688, 0xc16dbbf3, 0xf28d8715,
0xc1633f8a, 0xf2beafed, 0xc158e9c1, 0xf2efe0f2,
0xc14eba9d, 0xf3211a07, 0xc144b225, 0xf3525b0b,
0xc13ad060, 0xf383a3e2, 0xc1311553, 0xf3b4f46c,
0xc1278104, 0xf3e64c8c, 0xc11e1379, 0xf417ac22,
0xc114ccb9, 0xf4491311, 0xc10bacc8, 0xf47a8139,
0xc102b3ac, 0xf4abf67e, 0xc0f9e16b, 0xf4dd72be,
0xc0f1360b, 0xf50ef5de, 0xc0e8b190, 0xf5407fbd,
0xc0e05401, 0xf572103d, 0xc0d81d61, 0xf5a3a740,
0xc0d00db6, 0xf5d544a7, 0xc0c82506, 0xf606e854,
0xc0c06355, 0xf6389228, 0xc0b8c8a7, 0xf66a4203,
0xc0b15502, 0xf69bf7c9, 0xc0aa086a, 0xf6cdb359,
0xc0a2e2e3, 0xf6ff7496, 0xc09be473, 0xf7313b60,
0xc0950d1d, 0xf7630799, 0xc08e5ce5, 0xf794d922,
0xc087d3d0, 0xf7c6afdc, 0xc08171e2, 0xf7f88ba9,
0xc07b371e, 0xf82a6c6a, 0xc0752389, 0xf85c5201,
0xc06f3726, 0xf88e3c4d, 0xc06971f9, 0xf8c02b31,
0xc063d405, 0xf8f21e8e, 0xc05e5d4e, 0xf9241645,
0xc0590dd8, 0xf9561237, 0xc053e5a5, 0xf9881245,
0xc04ee4b8, 0xf9ba1651, 0xc04a0b16, 0xf9ec1e3b,
0xc04558c0, 0xfa1e29e5, 0xc040cdba, 0xfa503930,
0xc03c6a07, 0xfa824bfd, 0xc0382da8, 0xfab4622d,
0xc03418a2, 0xfae67ba2, 0xc0302af5, 0xfb18983b,
0xc02c64a6, 0xfb4ab7db, 0xc028c5b6, 0xfb7cda63,
0xc0254e27, 0xfbaeffb3, 0xc021fdfb, 0xfbe127ac,
0xc01ed535, 0xfc135231, 0xc01bd3d6, 0xfc457f21,
0xc018f9e1, 0xfc77ae5e, 0xc0164757, 0xfca9dfc8,
0xc013bc39, 0xfcdc1342, 0xc011588a, 0xfd0e48ab,
0xc00f1c4a, 0xfd407fe6, 0xc00d077c, 0xfd72b8d2,
0xc00b1a20, 0xfda4f351, 0xc0095438, 0xfdd72f45,
0xc007b5c4, 0xfe096c8d, 0xc0063ec6, 0xfe3bab0b,
0xc004ef3f, 0xfe6deaa1, 0xc003c72f, 0xfea02b2e,
0xc002c697, 0xfed26c94, 0xc001ed78, 0xff04aeb5,
0xc0013bd3, 0xff36f170, 0xc000b1a7, 0xff6934a8,
0xc0004ef5, 0xff9b783c, 0xc00013bd, 0xffcdbc0f,
0x3fffffb1, 0x0006487f, 0x3ffffd39, 0x0012d97c,
0x3ffff84a, 0x001f6a79, 0x3ffff0e3, 0x002bfb74,
0x3fffe705, 0x00388c6e, 0x3fffdaae, 0x00451d66,
0x3fffcbe0, 0x0051ae5b, 0x3fffba9b, 0x005e3f4c,
0x3fffa6de, 0x006ad03b, 0x3fff90a9, 0x00776125,
0x3fff77fc, 0x0083f20a, 0x3fff5cd8, 0x009082ea,
0x3fff3f3c, 0x009d13c5, 0x3fff1f29, 0x00a9a49a,
0x3ffefc9e, 0x00b63568, 0x3ffed79b, 0x00c2c62f,
0x3ffeb021, 0x00cf56ef, 0x3ffe862f, 0x00dbe7a6,
0x3ffe59c6, 0x00e87856, 0x3ffe2ae5, 0x00f508fc,
0x3ffdf98c, 0x01019998, 0x3ffdc5bc, 0x010e2a2b,
0x3ffd8f74, 0x011abab4, 0x3ffd56b5, 0x01274b31,
0x3ffd1b7e, 0x0133dba3, 0x3ffcddd0, 0x01406c0a,
0x3ffc9daa, 0x014cfc63, 0x3ffc5b0c, 0x01598cb1,
0x3ffc15f7, 0x01661cf0, 0x3ffbce6b, 0x0172ad22,
0x3ffb8467, 0x017f3d46, 0x3ffb37ec, 0x018bcd5b,
0x3ffae8f9, 0x01985d60, 0x3ffa978e, 0x01a4ed56,
0x3ffa43ac, 0x01b17d3c, 0x3ff9ed53, 0x01be0d11,
0x3ff99483, 0x01ca9cd4, 0x3ff9393a, 0x01d72c87,
0x3ff8db7b, 0x01e3bc26, 0x3ff87b44, 0x01f04bb4,
0x3ff81896, 0x01fcdb2e, 0x3ff7b370, 0x02096a94,
0x3ff74bd3, 0x0215f9e7, 0x3ff6e1bf, 0x02228924,
0x3ff67534, 0x022f184d, 0x3ff60631, 0x023ba760,
0x3ff594b7, 0x0248365d, 0x3ff520c5, 0x0254c544,
0x3ff4aa5d, 0x02615414, 0x3ff4317d, 0x026de2cc,
0x3ff3b626, 0x027a716c, 0x3ff33858, 0x0286fff3,
0x3ff2b813, 0x02938e62, 0x3ff23556, 0x02a01cb8,
0x3ff1b022, 0x02acaaf3, 0x3ff12878, 0x02b93914,
0x3ff09e56, 0x02c5c71a, 0x3ff011bd, 0x02d25505,
0x3fef82ad, 0x02dee2d4, 0x3feef126, 0x02eb7086,
0x3fee5d28, 0x02f7fe1c, 0x3fedc6b4, 0x03048b94,
0x3fed2dc8, 0x031118ef, 0x3fec9265, 0x031da62b,
0x3febf48b, 0x032a3349, 0x3feb543b, 0x0336c047,
0x3feab173, 0x03434d26, 0x3fea0c35, 0x034fd9e5,
0x3fe96480, 0x035c6682, 0x3fe8ba54, 0x0368f2ff,
0x3fe80db2, 0x03757f5a, 0x3fe75e98, 0x03820b93,
0x3fe6ad08, 0x038e97a9, 0x3fe5f902, 0x039b239c,
0x3fe54284, 0x03a7af6c, 0x3fe48990, 0x03b43b17,
0x3fe3ce26, 0x03c0c69e, 0x3fe31045, 0x03cd5200,
0x3fe24fed, 0x03d9dd3c, 0x3fe18d1f, 0x03e66852,
0x3fe0c7da, 0x03f2f342, 0x3fe0001f, 0x03ff7e0b,
0x3fdf35ed, 0x040c08ad, 0x3fde6945, 0x04189326,
0x3fdd9a27, 0x04251d77, 0x3fdcc892, 0x0431a79f,
0x3fdbf488, 0x043e319e, 0x3fdb1e06, 0x044abb73,
0x3fda450f, 0x0457451d, 0x3fd969a1, 0x0463ce9d,
0x3fd88bbe, 0x047057f1, 0x3fd7ab64, 0x047ce11a,
0x3fd6c894, 0x04896a16, 0x3fd5e34e, 0x0495f2e5,
0x3fd4fb91, 0x04a27b87, 0x3fd4115f, 0x04af03fc,
0x3fd324b7, 0x04bb8c42, 0x3fd23599, 0x04c81459,
0x3fd14405, 0x04d49c42, 0x3fd04ffc, 0x04e123fa,
0x3fcf597c, 0x04edab83, 0x3fce6087, 0x04fa32db,
0x3fcd651c, 0x0506ba01, 0x3fcc673b, 0x051340f6,
0x3fcb66e4, 0x051fc7b9, 0x3fca6418, 0x052c4e4a,
0x3fc95ed7, 0x0538d4a7, 0x3fc8571f, 0x05455ad1,
0x3fc74cf3, 0x0551e0c7, 0x3fc64051, 0x055e6688,
0x3fc53139, 0x056aec15, 0x3fc41fac, 0x0577716b,
0x3fc30baa, 0x0583f68c, 0x3fc1f532, 0x05907b77,
0x3fc0dc45, 0x059d002a, 0x3fbfc0e3, 0x05a984a6,
0x3fbea30c, 0x05b608eb, 0x3fbd82bf, 0x05c28cf7,
0x3fbc5ffe, 0x05cf10ca, 0x3fbb3ac7, 0x05db9463,
0x3fba131b, 0x05e817c3, 0x3fb8e8fb, 0x05f49ae9,
0x3fb7bc65, 0x06011dd4, 0x3fb68d5b, 0x060da083,
0x3fb55bdc, 0x061a22f7, 0x3fb427e8, 0x0626a52f,
0x3fb2f17f, 0x0633272a, 0x3fb1b8a2, 0x063fa8e7,
0x3fb07d50, 0x064c2a67, 0x3faf3f89, 0x0658aba9,
0x3fadff4e, 0x06652cac, 0x3facbc9f, 0x0671ad71,
0x3fab777b, 0x067e2df5, 0x3faa2fe2, 0x068aae3a,
0x3fa8e5d5, 0x06972e3d, 0x3fa79954, 0x06a3ae00,
0x3fa64a5f, 0x06b02d81, 0x3fa4f8f6, 0x06bcacc1,
0x3fa3a518, 0x06c92bbe, 0x3fa24ec6, 0x06d5aa77,
0x3fa0f600, 0x06e228ee, 0x3f9f9ac6, 0x06eea720,
0x3f9e3d19, 0x06fb250e, 0x3f9cdcf7, 0x0707a2b7,
0x3f9b7a62, 0x0714201b, 0x3f9a1558, 0x07209d39,
0x3f98addb, 0x072d1a10, 0x3f9743eb, 0x073996a1,
0x3f95d787, 0x074612eb, 0x3f9468af, 0x07528eec,
0x3f92f763, 0x075f0aa5, 0x3f9183a5, 0x076b8616,
0x3f900d72, 0x0778013d, 0x3f8e94cd, 0x07847c1b,
0x3f8d19b4, 0x0790f6ae, 0x3f8b9c28, 0x079d70f7,
0x3f8a1c29, 0x07a9eaf5, 0x3f8899b7, 0x07b664a7,
0x3f8714d1, 0x07c2de0d, 0x3f858d79, 0x07cf5726,
0x3f8403ae, 0x07dbcff2, 0x3f827770, 0x07e84871,
0x3f80e8bf, 0x07f4c0a1, 0x3f7f579b, 0x08013883,
0x3f7dc405, 0x080db016, 0x3f7c2dfc, 0x081a275a,
0x3f7a9580, 0x08269e4d, 0x3f78fa92, 0x083314f1,
0x3f775d31, 0x083f8b43, 0x3f75bd5e, 0x084c0144,
0x3f741b19, 0x085876f3, 0x3f727661, 0x0864ec4f,
0x3f70cf38, 0x08716159, 0x3f6f259c, 0x087dd60f,
0x3f6d798e, 0x088a4a72, 0x3f6bcb0e, 0x0896be80,
0x3f6a1a1c, 0x08a3323a, 0x3f6866b8, 0x08afa59e,
0x3f66b0e3, 0x08bc18ac, 0x3f64f89b, 0x08c88b65,
0x3f633de2, 0x08d4fdc6, 0x3f6180b8, 0x08e16fd1,
0x3f5fc11c, 0x08ede184, 0x3f5dff0e, 0x08fa52de,
0x3f5c3a8f, 0x0906c3e0, 0x3f5a739e, 0x09133489,
0x3f58aa3d, 0x091fa4d9, 0x3f56de6a, 0x092c14ce,
0x3f551026, 0x09388469, 0x3f533f71, 0x0944f3a9,
0x3f516c4b, 0x0951628d, 0x3f4f96b4, 0x095dd116,
0x3f4dbeac, 0x096a3f42, 0x3f4be433, 0x0976ad11,
0x3f4a074a, 0x09831a82, 0x3f4827f0, 0x098f8796,
0x3f464626, 0x099bf44c, 0x3f4461eb, 0x09a860a2,
0x3f427b3f, 0x09b4cc99, 0x3f409223, 0x09c13831,
0x3f3ea697, 0x09cda368, 0x3f3cb89b, 0x09da0e3e,
0x3f3ac82f, 0x09e678b4, 0x3f38d552, 0x09f2e2c7,
0x3f36e006, 0x09ff4c78, 0x3f34e849, 0x0a0bb5c7,
0x3f32ee1d, 0x0a181eb2, 0x3f30f181, 0x0a24873a,
0x3f2ef276, 0x0a30ef5e, 0x3f2cf0fb, 0x0a3d571d,
0x3f2aed10, 0x0a49be77, 0x3f28e6b6, 0x0a56256c,
0x3f26ddec, 0x0a628bfa, 0x3f24d2b4, 0x0a6ef222,
0x3f22c50c, 0x0a7b57e3, 0x3f20b4f5, 0x0a87bd3d,
0x3f1ea26e, 0x0a94222f, 0x3f1c8d79, 0x0aa086b8,
0x3f1a7615, 0x0aacead8, 0x3f185c43, 0x0ab94e8f,
0x3f164001, 0x0ac5b1dc, 0x3f142151, 0x0ad214bf,
0x3f120032, 0x0ade7737, 0x3f0fdca5, 0x0aead944,
0x3f0db6a9, 0x0af73ae5, 0x3f0b8e3f, 0x0b039c1a,
0x3f096367, 0x0b0ffce2, 0x3f073621, 0x0b1c5d3d,
0x3f05066d, 0x0b28bd2a, 0x3f02d44a, 0x0b351caa,
0x3f009fba, 0x0b417bba, 0x3efe68bc, 0x0b4dda5c,
0x3efc2f50, 0x0b5a388d, 0x3ef9f377, 0x0b66964f,
0x3ef7b530, 0x0b72f3a1, 0x3ef5747b, 0x0b7f5081,
0x3ef3315a, 0x0b8bacf0, 0x3ef0ebcb, 0x0b9808ed,
0x3eeea3ce, 0x0ba46477, 0x3eec5965, 0x0bb0bf8f,
0x3eea0c8e, 0x0bbd1a33, 0x3ee7bd4b, 0x0bc97463,
0x3ee56b9b, 0x0bd5ce1f, 0x3ee3177e, 0x0be22766,
0x3ee0c0f4, 0x0bee8038, 0x3ede67fe, 0x0bfad894,
0x3edc0c9b, 0x0c07307a, 0x3ed9aecc, 0x0c1387e9,
0x3ed74e91, 0x0c1fdee1, 0x3ed4ebe9, 0x0c2c3562,
0x3ed286d5, 0x0c388b6a, 0x3ed01f55, 0x0c44e0f9,
0x3ecdb56a, 0x0c513610, 0x3ecb4912, 0x0c5d8aad,
0x3ec8da4f, 0x0c69ded0, 0x3ec66920, 0x0c763278,
0x3ec3f585, 0x0c8285a5, 0x3ec17f7f, 0x0c8ed857,
0x3ebf070e, 0x0c9b2a8d, 0x3ebc8c31, 0x0ca77c47,
0x3eba0ee9, 0x0cb3cd84, 0x3eb78f36, 0x0cc01e43,
0x3eb50d18, 0x0ccc6e84, 0x3eb2888f, 0x0cd8be47,
0x3eb0019c, 0x0ce50d8c, 0x3ead783d, 0x0cf15c51,
0x3eaaec74, 0x0cfdaa96, 0x3ea85e41, 0x0d09f85b,
0x3ea5cda3, 0x0d1645a0, 0x3ea33a9b, 0x0d229263,
0x3ea0a529, 0x0d2edea5, 0x3e9e0d4c, 0x0d3b2a64,
0x3e9b7306, 0x0d4775a1, 0x3e98d655, 0x0d53c05b,
0x3e96373b, 0x0d600a91, 0x3e9395b7, 0x0d6c5443,
0x3e90f1ca, 0x0d789d71, 0x3e8e4b72, 0x0d84e61a,
0x3e8ba2b2, 0x0d912e3e, 0x3e88f788, 0x0d9d75db,
0x3e8649f5, 0x0da9bcf2, 0x3e8399f9, 0x0db60383,
0x3e80e794, 0x0dc2498c, 0x3e7e32c6, 0x0dce8f0d,
0x3e7b7b90, 0x0ddad406, 0x3e78c1f0, 0x0de71876,
0x3e7605e9, 0x0df35c5d, 0x3e734778, 0x0dff9fba,
0x3e70869f, 0x0e0be28e, 0x3e6dc35e, 0x0e1824d6,
0x3e6afdb5, 0x0e246693, 0x3e6835a4, 0x0e30a7c5,
0x3e656b2b, 0x0e3ce86b, 0x3e629e4a, 0x0e492884,
0x3e5fcf01, 0x0e556811, 0x3e5cfd51, 0x0e61a70f,
0x3e5a2939, 0x0e6de580, 0x3e5752ba, 0x0e7a2363,
0x3e5479d4, 0x0e8660b6, 0x3e519e86, 0x0e929d7a,
0x3e4ec0d1, 0x0e9ed9af, 0x3e4be0b6, 0x0eab1553,
0x3e48fe33, 0x0eb75066, 0x3e46194a, 0x0ec38ae8,
0x3e4331fa, 0x0ecfc4d9, 0x3e404844, 0x0edbfe37,
0x3e3d5c27, 0x0ee83702, 0x3e3a6da4, 0x0ef46f3b,
0x3e377cbb, 0x0f00a6df, 0x3e34896c, 0x0f0cddf0,
0x3e3193b7, 0x0f19146c, 0x3e2e9b9c, 0x0f254a53,
0x3e2ba11b, 0x0f317fa5, 0x3e28a435, 0x0f3db461,
0x3e25a4e9, 0x0f49e886, 0x3e22a338, 0x0f561c15,
0x3e1f9f21, 0x0f624f0c, 0x3e1c98a6, 0x0f6e816b,
0x3e198fc5, 0x0f7ab332, 0x3e168480, 0x0f86e460,
0x3e1376d5, 0x0f9314f5, 0x3e1066c7, 0x0f9f44f0,
0x3e0d5453, 0x0fab7451, 0x3e0a3f7b, 0x0fb7a317,
0x3e07283f, 0x0fc3d143, 0x3e040e9f, 0x0fcffed2,
0x3e00f29a, 0x0fdc2bc6, 0x3dfdd432, 0x0fe8581d,
0x3dfab365, 0x0ff483d7, 0x3df79036, 0x1000aef3,
0x3df46aa2, 0x100cd972, 0x3df142ab, 0x10190352,
0x3dee1851, 0x10252c94, 0x3deaeb93, 0x10315535,
0x3de7bc72, 0x103d7d38, 0x3de48aef, 0x1049a49a,
0x3de15708, 0x1055cb5b, 0x3dde20bf, 0x1061f17b,
0x3ddae813, 0x106e16f9, 0x3dd7ad05, 0x107a3bd5,
0x3dd46f94, 0x1086600e, 0x3dd12fc1, 0x109283a5,
0x3dcded8c, 0x109ea697, 0x3dcaa8f5, 0x10aac8e6,
0x3dc761fc, 0x10b6ea90, 0x3dc418a1, 0x10c30b96,
0x3dc0cce5, 0x10cf2bf6, 0x3dbd7ec7, 0x10db4baf,
0x3dba2e48, 0x10e76ac3, 0x3db6db68, 0x10f38930,
0x3db38627, 0x10ffa6f5, 0x3db02e84, 0x110bc413,
0x3dacd481, 0x1117e088, 0x3da9781d, 0x1123fc55,
0x3da61959, 0x11301779, 0x3da2b834, 0x113c31f3,
0x3d9f54af, 0x11484bc2, 0x3d9beec9, 0x115464e8,
0x3d988684, 0x11607d62, 0x3d951bde, 0x116c9531,
0x3d91aed9, 0x1178ac53, 0x3d8e3f74, 0x1184c2ca,
0x3d8acdb0, 0x1190d893, 0x3d87598c, 0x119cedaf,
0x3d83e309, 0x11a9021d, 0x3d806a27, 0x11b515dd,
0x3d7ceee5, 0x11c128ee, 0x3d797145, 0x11cd3b50,
0x3d75f147, 0x11d94d02, 0x3d726ee9, 0x11e55e04,
0x3d6eea2d, 0x11f16e56, 0x3d6b6313, 0x11fd7df6,
0x3d67d99b, 0x12098ce5, 0x3d644dc4, 0x12159b22,
0x3d60bf90, 0x1221a8ac, 0x3d5d2efe, 0x122db583,
0x3d599c0e, 0x1239c1a7, 0x3d5606c1, 0x1245cd17,
0x3d526f16, 0x1251d7d3, 0x3d4ed50f, 0x125de1da,
0x3d4b38aa, 0x1269eb2b, 0x3d4799e8, 0x1275f3c7,
0x3d43f8c9, 0x1281fbad, 0x3d40554e, 0x128e02dc,
0x3d3caf76, 0x129a0954, 0x3d390742, 0x12a60f14,
0x3d355cb1, 0x12b2141c, 0x3d31afc5, 0x12be186c,
0x3d2e007c, 0x12ca1c03, 0x3d2a4ed8, 0x12d61ee0,
0x3d269ad8, 0x12e22103, 0x3d22e47c, 0x12ee226c,
0x3d1f2bc5, 0x12fa231b, 0x3d1b70b3, 0x1306230d,
0x3d17b346, 0x13122245, 0x3d13f37e, 0x131e20c0,
0x3d10315a, 0x132a1e7e, 0x3d0c6cdd, 0x13361b7f,
0x3d08a604, 0x134217c2, 0x3d04dcd2, 0x134e1348,
0x3d011145, 0x135a0e0e, 0x3cfd435e, 0x13660816,
0x3cf9731d, 0x1372015f, 0x3cf5a082, 0x137df9e7,
0x3cf1cb8e, 0x1389f1af, 0x3cedf440, 0x1395e8b7,
0x3cea1a99, 0x13a1defd, 0x3ce63e98, 0x13add481,
0x3ce2603f, 0x13b9c943, 0x3cde7f8d, 0x13c5bd42,
0x3cda9c81, 0x13d1b07e, 0x3cd6b71e, 0x13dda2f7,
0x3cd2cf62, 0x13e994ab, 0x3ccee54d, 0x13f5859b,
0x3ccaf8e0, 0x140175c6, 0x3cc70a1c, 0x140d652c,
0x3cc318ff, 0x141953cb, 0x3cbf258b, 0x142541a4,
0x3cbb2fbf, 0x14312eb7, 0x3cb7379c, 0x143d1b02,
0x3cb33d22, 0x14490685, 0x3caf4051, 0x1454f140,
0x3cab4128, 0x1460db33, 0x3ca73fa9, 0x146cc45c,
0x3ca33bd3, 0x1478acbc, 0x3c9f35a7, 0x14849452,
0x3c9b2d24, 0x14907b1d, 0x3c97224c, 0x149c611d,
0x3c93151d, 0x14a84652, 0x3c8f0598, 0x14b42abb,
0x3c8af3be, 0x14c00e58, 0x3c86df8e, 0x14cbf127,
0x3c82c909, 0x14d7d32a, 0x3c7eb02f, 0x14e3b45f,
0x3c7a94ff, 0x14ef94c6, 0x3c76777b, 0x14fb745e,
0x3c7257a2, 0x15075327, 0x3c6e3574, 0x15133120,
0x3c6a10f2, 0x151f0e4a, 0x3c65ea1c, 0x152aeaa3,
0x3c61c0f1, 0x1536c62b, 0x3c5d9573, 0x1542a0e1,
0x3c5967a1, 0x154e7ac6, 0x3c55377b, 0x155a53d9,
0x3c510501, 0x15662c18, 0x3c4cd035, 0x15720385,
0x3c489915, 0x157dda1e, 0x3c445fa2, 0x1589afe3,
0x3c4023dd, 0x159584d3, 0x3c3be5c5, 0x15a158ee,
0x3c37a55a, 0x15ad2c34, 0x3c33629d, 0x15b8fea4,
0x3c2f1d8e, 0x15c4d03e, 0x3c2ad62d, 0x15d0a100,
0x3c268c7a, 0x15dc70eb, 0x3c224075, 0x15e83fff,
0x3c1df21f, 0x15f40e3a, 0x3c19a178, 0x15ffdb9d,
0x3c154e7f, 0x160ba826, 0x3c10f935, 0x161773d6,
0x3c0ca19b, 0x16233eac, 0x3c0847b0, 0x162f08a8,
0x3c03eb74, 0x163ad1c8, 0x3bff8ce8, 0x16469a0d,
0x3bfb2c0c, 0x16526176, 0x3bf6c8e0, 0x165e2803,
0x3bf26364, 0x1669edb3, 0x3bedfb99, 0x1675b286,
0x3be9917e, 0x1681767c, 0x3be52513, 0x168d3993,
0x3be0b65a, 0x1698fbcb, 0x3bdc4552, 0x16a4bd25,
0x3bd7d1fa, 0x16b07d9f, 0x3bd35c54, 0x16bc3d39,
0x3bcee460, 0x16c7fbf3, 0x3bca6a1d, 0x16d3b9cc,
0x3bc5ed8d, 0x16df76c3, 0x3bc16eae, 0x16eb32d9,
0x3bbced82, 0x16f6ee0d, 0x3bb86a08, 0x1702a85e,
0x3bb3e440, 0x170e61cc, 0x3baf5c2c, 0x171a1a56,
0x3baad1ca, 0x1725d1fc, 0x3ba6451b, 0x173188be,
0x3ba1b620, 0x173d3e9b, 0x3b9d24d8, 0x1748f393,
0x3b989144, 0x1754a7a4, 0x3b93fb63, 0x17605ad0,
0x3b8f6337, 0x176c0d15, 0x3b8ac8bf, 0x1777be72,
0x3b862bfb, 0x17836ee8, 0x3b818ceb, 0x178f1e76,
0x3b7ceb90, 0x179acd1c, 0x3b7847eb, 0x17a67ad8,
0x3b73a1fa, 0x17b227ab, 0x3b6ef9be, 0x17bdd394,
0x3b6a4f38, 0x17c97e93, 0x3b65a268, 0x17d528a7,
0x3b60f34d, 0x17e0d1d0, 0x3b5c41e8, 0x17ec7a0d,
0x3b578e39, 0x17f8215e, 0x3b52d841, 0x1803c7c3,
0x3b4e1fff, 0x180f6d3a, 0x3b496574, 0x181b11c4,
0x3b44a8a0, 0x1826b561, 0x3b3fe982, 0x1832580e,
0x3b3b281c, 0x183df9cd, 0x3b36646e, 0x18499a9d,
0x3b319e77, 0x18553a7d, 0x3b2cd637, 0x1860d96d,
0x3b280bb0, 0x186c776c, 0x3b233ee1, 0x1878147a,
0x3b1e6fca, 0x1883b097, 0x3b199e6c, 0x188f4bc2,
0x3b14cac6, 0x189ae5fa, 0x3b0ff4d9, 0x18a67f3f,
0x3b0b1ca6, 0x18b21791, 0x3b06422c, 0x18bdaef0,
0x3b01656b, 0x18c9455a, 0x3afc8663, 0x18d4dad0,
0x3af7a516, 0x18e06f50, 0x3af2c183, 0x18ec02db,
0x3aeddba9, 0x18f79571, 0x3ae8f38b, 0x1903270f,
0x3ae40926, 0x190eb7b7, 0x3adf1c7d, 0x191a4767,
0x3ada2d8e, 0x1925d620, 0x3ad53c5b, 0x193163e1,
0x3ad048e3, 0x193cf0a9, 0x3acb5327, 0x19487c77,
0x3ac65b26, 0x1954074d, 0x3ac160e1, 0x195f9128,
0x3abc6458, 0x196b1a09, 0x3ab7658c, 0x1976a1ef,
0x3ab2647c, 0x198228d9, 0x3aad6129, 0x198daec8,
0x3aa85b92, 0x199933bb, 0x3aa353b9, 0x19a4b7b1,
0x3a9e499d, 0x19b03aaa, 0x3a993d3e, 0x19bbbca6,
0x3a942e9d, 0x19c73da3, 0x3a8f1dba, 0x19d2bda2,
0x3a8a0a95, 0x19de3ca2, 0x3a84f52f, 0x19e9baa3,
0x3a7fdd86, 0x19f537a4, 0x3a7ac39d, 0x1a00b3a5,
0x3a75a772, 0x1a0c2ea5, 0x3a708906, 0x1a17a8a5,
0x3a6b6859, 0x1a2321a2, 0x3a66456c, 0x1a2e999e,
0x3a61203e, 0x1a3a1097, 0x3a5bf8d1, 0x1a45868e,
0x3a56cf23, 0x1a50fb81, 0x3a51a335, 0x1a5c6f70,
0x3a4c7508, 0x1a67e25c, 0x3a47449c, 0x1a735442,
0x3a4211f0, 0x1a7ec524, 0x3a3cdd05, 0x1a8a3500,
0x3a37a5dc, 0x1a95a3d6, 0x3a326c74, 0x1aa111a6,
0x3a2d30cd, 0x1aac7e6f, 0x3a27f2e9, 0x1ab7ea31,
0x3a22b2c6, 0x1ac354eb, 0x3a1d7066, 0x1acebe9d,
0x3a182bc8, 0x1ada2746, 0x3a12e4ed, 0x1ae58ee6,
0x3a0d9bd4, 0x1af0f57d, 0x3a08507f, 0x1afc5b0a,
0x3a0302ed, 0x1b07bf8c, 0x39fdb31e, 0x1b132304,
0x39f86113, 0x1b1e8571, 0x39f30ccc, 0x1b29e6d2,
0x39edb649, 0x1b354727, 0x39e85d8a, 0x1b40a66f,
0x39e3028f, 0x1b4c04aa, 0x39dda55a, 0x1b5761d8,
0x39d845e9, 0x1b62bdf8, 0x39d2e43d, 0x1b6e190a,
0x39cd8056, 0x1b79730d, 0x39c81a36, 0x1b84cc01,
0x39c2b1da, 0x1b9023e5, 0x39bd4745, 0x1b9b7ab9,
0x39b7da76, 0x1ba6d07d, 0x39b26b6d, 0x1bb22530,
0x39acfa2b, 0x1bbd78d2, 0x39a786af, 0x1bc8cb61,
0x39a210fb, 0x1bd41cdf, 0x399c990d, 0x1bdf6d4a,
0x39971ee7, 0x1beabca1, 0x3991a289, 0x1bf60ae6,
0x398c23f3, 0x1c015816, 0x3986a324, 0x1c0ca432,
0x3981201e, 0x1c17ef39, 0x397b9ae0, 0x1c23392b,
0x3976136b, 0x1c2e8207, 0x397089bf, 0x1c39c9cd,
0x396afddc, 0x1c45107c, 0x39656fc2, 0x1c505614,
0x395fdf71, 0x1c5b9a95, 0x395a4ceb, 0x1c66ddfe,
0x3954b82e, 0x1c72204f, 0x394f213c, 0x1c7d6187,
0x39498814, 0x1c88a1a6, 0x3943ecb6, 0x1c93e0ab,
0x393e4f23, 0x1c9f1e96, 0x3938af5c, 0x1caa5b66,
0x39330d5f, 0x1cb5971c, 0x392d692f, 0x1cc0d1b6,
0x3927c2c9, 0x1ccc0b35, 0x39221a30, 0x1cd74397,
0x391c6f63, 0x1ce27add, 0x3916c262, 0x1cedb106,
0x3911132d, 0x1cf8e611, 0x390b61c6, 0x1d0419fe,
0x3905ae2b, 0x1d0f4ccd, 0x38fff85e, 0x1d1a7e7d,
0x38fa405e, 0x1d25af0d, 0x38f4862c, 0x1d30de7e,
0x38eec9c7, 0x1d3c0ccf, 0x38e90b31, 0x1d473a00,
0x38e34a69, 0x1d52660f, 0x38dd8770, 0x1d5d90fd,
0x38d7c245, 0x1d68baca, 0x38d1fae9, 0x1d73e374,
0x38cc315d, 0x1d7f0afb, 0x38c665a0, 0x1d8a315f,
0x38c097b2, 0x1d9556a0, 0x38bac795, 0x1da07abc,
0x38b4f547, 0x1dab9db5, 0x38af20ca, 0x1db6bf88,
0x38a94a1e, 0x1dc1e036, 0x38a37142, 0x1dccffbf,
0x389d9637, 0x1dd81e21, 0x3897b8fe, 0x1de33b5d,
0x3891d995, 0x1dee5771, 0x388bf7ff, 0x1df9725f,
0x3886143b, 0x1e048c24, 0x38802e48, 0x1e0fa4c2,
0x387a4628, 0x1e1abc36, 0x38745bdb, 0x1e25d282,
0x386e6f60, 0x1e30e7a4, 0x386880b8, 0x1e3bfb9c,
0x38628fe4, 0x1e470e69, 0x385c9ce3, 0x1e52200c,
0x3856a7b6, 0x1e5d3084, 0x3850b05d, 0x1e683fcf,
0x384ab6d8, 0x1e734def, 0x3844bb28, 0x1e7e5ae2,
0x383ebd4c, 0x1e8966a8, 0x3838bd45, 0x1e947141,
0x3832bb13, 0x1e9f7aac, 0x382cb6b7, 0x1eaa82e9,
0x3826b030, 0x1eb589f7, 0x3820a77f, 0x1ec08fd6,
0x381a9ca4, 0x1ecb9486, 0x38148f9f, 0x1ed69805,
0x380e8071, 0x1ee19a54, 0x38086f19, 0x1eec9b73,
0x38025b98, 0x1ef79b60, 0x37fc45ef, 0x1f029a1c,
0x37f62e1d, 0x1f0d97a5, 0x37f01423, 0x1f1893fc,
0x37e9f801, 0x1f238f20, 0x37e3d9b7, 0x1f2e8911,
0x37ddb945, 0x1f3981ce, 0x37d796ac, 0x1f447957,
0x37d171eb, 0x1f4f6fab, 0x37cb4b04, 0x1f5a64cb,
0x37c521f6, 0x1f6558b5, 0x37bef6c2, 0x1f704b69,
0x37b8c968, 0x1f7b3ce6, 0x37b299e7, 0x1f862d2d,
0x37ac6841, 0x1f911c3d, 0x37a63476, 0x1f9c0a15,
0x379ffe85, 0x1fa6f6b6, 0x3799c66f, 0x1fb1e21d,
0x37938c34, 0x1fbccc4d, 0x378d4fd5, 0x1fc7b542,
0x37871152, 0x1fd29cff, 0x3780d0aa, 0x1fdd8381,
0x377a8ddf, 0x1fe868c8, 0x377448f0, 0x1ff34cd5,
0x376e01de, 0x1ffe2fa6, 0x3767b8a9, 0x2009113c,
0x37616d51, 0x2013f196, 0x375b1fd7, 0x201ed0b2,
0x3754d03a, 0x2029ae92, 0x374e7e7b, 0x20348b35,
0x37482a9a, 0x203f6699, 0x3741d497, 0x204a40bf,
0x373b7c73, 0x205519a7, 0x3735222f, 0x205ff14f,
0x372ec5c9, 0x206ac7b8, 0x37286742, 0x20759ce1,
0x3722069b, 0x208070ca, 0x371ba3d4, 0x208b4372,
0x37153eee, 0x209614d9, 0x370ed7e7, 0x20a0e4fe,
0x37086ec1, 0x20abb3e1, 0x3702037c, 0x20b68181,
0x36fb9618, 0x20c14ddf, 0x36f52695, 0x20cc18f9,
0x36eeb4f4, 0x20d6e2d0, 0x36e84135, 0x20e1ab63,
0x36e1cb58, 0x20ec72b1, 0x36db535d, 0x20f738ba,
0x36d4d945, 0x2101fd7e, 0x36ce5d10, 0x210cc0fc,
0x36c7debd, 0x21178334, 0x36c15e4e, 0x21224425,
0x36badbc3, 0x212d03cf, 0x36b4571b, 0x2137c232,
0x36add058, 0x21427f4d, 0x36a74779, 0x214d3b1f,
0x36a0bc7e, 0x2157f5a9, 0x369a2f69, 0x2162aeea,
0x3693a038, 0x216d66e2, 0x368d0eed, 0x21781d8f,
0x36867b87, 0x2182d2f2, 0x367fe608, 0x218d870b,
0x36794e6e, 0x219839d8, 0x3672b4bb, 0x21a2eb5a,
0x366c18ee, 0x21ad9b8f, 0x36657b08, 0x21b84a79,
0x365edb09, 0x21c2f815, 0x365838f2, 0x21cda465,
0x365194c3, 0x21d84f66, 0x364aee7b, 0x21e2f91a,
0x3644461b, 0x21eda17f, 0x363d9ba4, 0x21f84895,
0x3636ef16, 0x2202ee5d, 0x36304070, 0x220d92d4,
0x36298fb4, 0x221835fb, 0x3622dce1, 0x2222d7d2,
0x361c27f7, 0x222d7858, 0x361570f8, 0x2238178d,
0x360eb7e3, 0x2242b56f, 0x3607fcb8, 0x224d5200,
0x36013f78, 0x2257ed3e, 0x35fa8023, 0x22628729,
0x35f3beba, 0x226d1fc1, 0x35ecfb3c, 0x2277b705,
0x35e635a9, 0x22824cf5, 0x35df6e03, 0x228ce191,
0x35d8a449, 0x229774d7, 0x35d1d87c, 0x22a206c8,
0x35cb0a9b, 0x22ac9763, 0x35c43aa7, 0x22b726a8,
0x35bd68a1, 0x22c1b496, 0x35b69489, 0x22cc412d,
0x35afbe5e, 0x22d6cc6d, 0x35a8e621, 0x22e15655,
0x35a20bd3, 0x22ebdee5, 0x359b2f73, 0x22f6661c,
0x35945103, 0x2300ebf9, 0x358d7081, 0x230b707e,
0x35868def, 0x2315f3a8, 0x357fa94d, 0x23207579,
0x3578c29b, 0x232af5ee, 0x3571d9d9, 0x23357509,
0x356aef08, 0x233ff2c8, 0x35640227, 0x234a6f2b,
0x355d1337, 0x2354ea32, 0x35562239, 0x235f63dc,
0x354f2f2c, 0x2369dc29, 0x35483a11, 0x23745318,
0x354142e9, 0x237ec8aa, 0x353a49b2, 0x23893cdd,
0x35334e6f, 0x2393afb2, 0x352c511e, 0x239e2127,
0x352551c0, 0x23a8913d, 0x351e5056, 0x23b2fff3,
0x35174ce0, 0x23bd6d48, 0x3510475e, 0x23c7d93d,
0x35093fd0, 0x23d243d1, 0x35023636, 0x23dcad03,
0x34fb2a92, 0x23e714d3, 0x34f41ce2, 0x23f17b41,
0x34ed0d28, 0x23fbe04c, 0x34e5fb63, 0x240643f4,
0x34dee795, 0x2410a639, 0x34d7d1bc, 0x241b0719,
0x34d0b9da, 0x24256695, 0x34c99fef, 0x242fc4ad,
0x34c283fb, 0x243a215f, 0x34bb65fe, 0x24447cac,
0x34b445f8, 0x244ed692, 0x34ad23eb, 0x24592f13,
0x34a5ffd5, 0x2463862c, 0x349ed9b8, 0x246ddbdf,
0x3497b194, 0x2478302a, 0x34908768, 0x2482830d,
0x34895b36, 0x248cd487, 0x34822cfd, 0x24972499,
0x347afcbe, 0x24a17342, 0x3473ca79, 0x24abc082,
0x346c962f, 0x24b60c57, 0x34655fdf, 0x24c056c2,
0x345e2789, 0x24ca9fc2, 0x3456ed2f, 0x24d4e757,
0x344fb0d1, 0x24df2d81, 0x3448726e, 0x24e9723f,
0x34413207, 0x24f3b590, 0x3439ef9c, 0x24fdf775,
0x3432ab2e, 0x250837ed, 0x342b64bd, 0x251276f7,
0x34241c49, 0x251cb493, 0x341cd1d2, 0x2526f0c1,
0x34158559, 0x25312b81, 0x340e36dd, 0x253b64d1,
0x3406e660, 0x25459cb2, 0x33ff93e2, 0x254fd323,
0x33f83f62, 0x255a0823, 0x33f0e8e2, 0x25643bb3,
0x33e99061, 0x256e6dd2, 0x33e235df, 0x25789e80,
0x33dad95e, 0x2582cdbc, 0x33d37adc, 0x258cfb85,
0x33cc1a5b, 0x259727dc, 0x33c4b7db, 0x25a152c0,
0x33bd535c, 0x25ab7c30, 0x33b5ecde, 0x25b5a42d,
0x33ae8462, 0x25bfcab6, 0x33a719e8, 0x25c9efca,
0x339fad70, 0x25d41369, 0x33983efb, 0x25de3592,
0x3390ce88, 0x25e85646, 0x33895c18, 0x25f27584,
0x3381e7ac, 0x25fc934b, 0x337a7144, 0x2606af9c,
0x3372f8df, 0x2610ca75, 0x336b7e7e, 0x261ae3d6,
0x33640223, 0x2624fbbf, 0x335c83cb, 0x262f1230,
0x33550379, 0x26392728, 0x334d812d, 0x26433aa7,
0x3345fce6, 0x264d4cac, 0x333e76a4, 0x26575d37,
0x3336ee6a, 0x26616c48, 0x332f6435, 0x266b79dd,
0x3327d808, 0x267585f8, 0x332049e1, 0x267f9097,
0x3318b9c2, 0x268999ba, 0x331127ab, 0x2693a161,
0x3309939c, 0x269da78b, 0x3301fd95, 0x26a7ac38,
0x32fa6596, 0x26b1af67, 0x32f2cba1, 0x26bbb119,
0x32eb2fb5, 0x26c5b14c, 0x32e391d2, 0x26cfb000,
0x32dbf1f8, 0x26d9ad36, 0x32d45029, 0x26e3a8ec,
0x32ccac64, 0x26eda322, 0x32c506aa, 0x26f79bd8,
0x32bd5efb, 0x2701930e, 0x32b5b557, 0x270b88c2,
0x32ae09be, 0x27157cf5, 0x32a65c32, 0x271f6fa6,
0x329eacb1, 0x272960d6, 0x3296fb3d, 0x27335082,
0x328f47d5, 0x273d3eac, 0x3287927b, 0x27472b53,
0x327fdb2d, 0x27511676, 0x327821ee, 0x275b0014,
0x327066bc, 0x2764e82f, 0x3268a998, 0x276ecec5,
0x3260ea83, 0x2778b3d5, 0x3259297d, 0x27829760,
0x32516686, 0x278c7965, 0x3249a19e, 0x279659e3,
0x3241dac6, 0x27a038db, 0x323a11fe, 0x27aa164c,
0x32324746, 0x27b3f235, 0x322a7a9e, 0x27bdcc97,
0x3222ac08, 0x27c7a570, 0x321adb83, 0x27d17cc1,
0x3213090f, 0x27db5288, 0x320b34ad, 0x27e526c6,
0x32035e5d, 0x27eef97b, 0x31fb8620, 0x27f8caa5,
0x31f3abf5, 0x28029a45, 0x31ebcfdd, 0x280c685a,
0x31e3f1d8, 0x281634e4, 0x31dc11e8, 0x281fffe2,
0x31d4300b, 0x2829c954, 0x31cc4c42, 0x2833913a,
0x31c4668d, 0x283d5793, 0x31bc7eee, 0x28471c5e,
0x31b49564, 0x2850df9d, 0x31aca9ef, 0x285aa14d,
0x31a4bc90, 0x2864616f, 0x319ccd46, 0x286e2002,
0x3194dc14, 0x2877dd07, 0x318ce8f7, 0x2881987c,
0x3184f3f2, 0x288b5261, 0x317cfd04, 0x28950ab6,
0x3175042e, 0x289ec17a, 0x316d096f, 0x28a876ae,
0x31650cc9, 0x28b22a50, 0x315d0e3b, 0x28bbdc61,
0x31550dc6, 0x28c58cdf, 0x314d0b6a, 0x28cf3bcc,
0x31450728, 0x28d8e925, 0x313d00ff, 0x28e294eb,
0x3134f8f1, 0x28ec3f1e, 0x312ceefc, 0x28f5e7bd,
0x3124e322, 0x28ff8ec8, 0x311cd564, 0x2909343e,
0x3114c5c0, 0x2912d81f, 0x310cb438, 0x291c7a6a,
0x3104a0cc, 0x29261b20, 0x30fc8b7d, 0x292fba40,
0x30f47449, 0x293957c9, 0x30ec5b33, 0x2942f3bb,
0x30e4403a, 0x294c8e16, 0x30dc235e, 0x295626da,
0x30d404a0, 0x295fbe06, 0x30cbe400, 0x29695399,
0x30c3c17e, 0x2972e793, 0x30bb9d1c, 0x297c79f5,
0x30b376d8, 0x29860abd, 0x30ab4eb3, 0x298f99eb,
0x30a324af, 0x2999277f, 0x309af8ca, 0x29a2b378,
0x3092cb05, 0x29ac3dd7, 0x308a9b61, 0x29b5c69a,
0x308269de, 0x29bf4dc1, 0x307a367c, 0x29c8d34d,
0x3072013c, 0x29d2573c, 0x3069ca1e, 0x29dbd98e,
0x30619121, 0x29e55a43, 0x30595648, 0x29eed95b,
0x30511991, 0x29f856d5, 0x3048dafd, 0x2a01d2b0,
0x30409a8d, 0x2a0b4ced, 0x30385840, 0x2a14c58b,
0x30301418, 0x2a1e3c8a, 0x3027ce14, 0x2a27b1e9,
0x301f8634, 0x2a3125a8, 0x30173c7a, 0x2a3a97c7,
0x300ef0e5, 0x2a440844, 0x3006a376, 0x2a4d7721,
0x2ffe542d, 0x2a56e45c, 0x2ff6030a, 0x2a604ff5,
0x2fedb00d, 0x2a69b9ec, 0x2fe55b38, 0x2a732241,
0x2fdd048a, 0x2a7c88f2, 0x2fd4ac04, 0x2a85ee00,
0x2fcc51a5, 0x2a8f516b, 0x2fc3f56f, 0x2a98b331,
0x2fbb9761, 0x2aa21353, 0x2fb3377c, 0x2aab71d0,
0x2faad5c1, 0x2ab4cea9, 0x2fa2722f, 0x2abe29db,
0x2f9a0cc7, 0x2ac78368, 0x2f91a589, 0x2ad0db4e,
0x2f893c75, 0x2ada318e, 0x2f80d18d, 0x2ae38627,
0x2f7864cf, 0x2aecd919, 0x2f6ff63d, 0x2af62a63,
0x2f6785d7, 0x2aff7a05, 0x2f5f139d, 0x2b08c7ff,
0x2f569f90, 0x2b121450, 0x2f4e29af, 0x2b1b5ef8,
0x2f45b1fb, 0x2b24a7f6, 0x2f3d3875, 0x2b2def4b,
0x2f34bd1d, 0x2b3734f5, 0x2f2c3ff2, 0x2b4078f5,
0x2f23c0f6, 0x2b49bb4a, 0x2f1b4029, 0x2b52fbf4,
0x2f12bd8b, 0x2b5c3af2, 0x2f0a391d, 0x2b657844,
0x2f01b2de, 0x2b6eb3ea, 0x2ef92acf, 0x2b77ede3,
0x2ef0a0f0, 0x2b812630, 0x2ee81543, 0x2b8a5cce,
0x2edf87c6, 0x2b9391c0, 0x2ed6f87a, 0x2b9cc503,
0x2ece6761, 0x2ba5f697, 0x2ec5d479, 0x2baf267d,
0x2ebd3fc4, 0x2bb854b4, 0x2eb4a942, 0x2bc1813b,
0x2eac10f2, 0x2bcaac12, 0x2ea376d6, 0x2bd3d53a,
0x2e9adaee, 0x2bdcfcb0, 0x2e923d39, 0x2be62276,
0x2e899db9, 0x2bef468a, 0x2e80fc6e, 0x2bf868ed,
0x2e785958, 0x2c01899e, 0x2e6fb477, 0x2c0aa89c,
0x2e670dcb, 0x2c13c5e8, 0x2e5e6556, 0x2c1ce181,
0x2e55bb17, 0x2c25fb66, 0x2e4d0f0f, 0x2c2f1398,
0x2e44613e, 0x2c382a16, 0x2e3bb1a4, 0x2c413edf,
0x2e330042, 0x2c4a51f3, 0x2e2a4d18, 0x2c536353,
0x2e219826, 0x2c5c72fd, 0x2e18e16d, 0x2c6580f1,
0x2e1028ed, 0x2c6e8d2e, 0x2e076ea7, 0x2c7797b6,
0x2dfeb29a, 0x2c80a086, 0x2df5f4c7, 0x2c89a79f,
0x2ded352f, 0x2c92ad01, 0x2de473d1, 0x2c9bb0ab,
0x2ddbb0ae, 0x2ca4b29c, 0x2dd2ebc7, 0x2cadb2d5,
0x2dca251c, 0x2cb6b155, 0x2dc15cac, 0x2cbfae1b,
0x2db89279, 0x2cc8a928, 0x2dafc683, 0x2cd1a27b,
0x2da6f8ca, 0x2cda9a14, 0x2d9e294e, 0x2ce38ff1,
0x2d955810, 0x2cec8414, 0x2d8c8510, 0x2cf5767c,
0x2d83b04f, 0x2cfe6728, 0x2d7ad9cc, 0x2d075617,
0x2d720189, 0x2d10434a, 0x2d692784, 0x2d192ec1,
0x2d604bc0, 0x2d22187a, 0x2d576e3c, 0x2d2b0076,
0x2d4e8ef9, 0x2d33e6b4, 0x2d45adf6, 0x2d3ccb34,
0x1ffffd88, 0xfff36f03, 0x1fffe9cb, 0xffda4d10,
0x1fffc251, 0xffc12b34, 0x1fff8719, 0xffa8097f,
0x1fff3825, 0xff8ee800, 0x1ffed574, 0xff75c6c8,
0x1ffe5f06, 0xff5ca5e4, 0x1ffdd4dc, 0xff438565,
0x1ffd36f6, 0xff2a655a, 0x1ffc8555, 0xff1145d4,
0x1ffbbff8, 0xfef826e0, 0x1ffae6e1, 0xfedf088f,
0x1ff9fa10, 0xfec5eaf1, 0x1ff8f986, 0xfeacce14,
0x1ff7e542, 0xfe93b208, 0x1ff6bd46, 0xfe7a96dd,
0x1ff58193, 0xfe617ca3, 0x1ff43229, 0xfe486368,
0x1ff2cf09, 0xfe2f4b3c, 0x1ff15834, 0xfe16342f,
0x1fefcdaa, 0xfdfd1e50, 0x1fee2f6e, 0xfde409ae,
0x1fec7d7f, 0xfdcaf65a, 0x1feab7df, 0xfdb1e462,
0x1fe8de8f, 0xfd98d3d6, 0x1fe6f190, 0xfd7fc4c6,
0x1fe4f0e3, 0xfd66b740, 0x1fe2dc8a, 0xfd4dab55,
0x1fe0b485, 0xfd34a114, 0x1fde78d7, 0xfd1b988c,
0x1fdc297f, 0xfd0291cd, 0x1fd9c681, 0xfce98ce6,
0x1fd74fdd, 0xfcd089e7, 0x1fd4c595, 0xfcb788de,
0x1fd227ab, 0xfc9e89dc, 0x1fcf761f, 0xfc858cf0,
0x1fccb0f4, 0xfc6c9229, 0x1fc9d82c, 0xfc539997,
0x1fc6ebc7, 0xfc3aa349, 0x1fc3ebc9, 0xfc21af4e,
0x1fc0d833, 0xfc08bdb7, 0x1fbdb106, 0xfbefce91,
0x1fba7645, 0xfbd6e1ed, 0x1fb727f2, 0xfbbdf7db,
0x1fb3c60e, 0xfba51068, 0x1fb0509c, 0xfb8c2ba5,
0x1facc79e, 0xfb7349a2, 0x1fa92b16, 0xfb5a6a6d,
0x1fa57b06, 0xfb418e15, 0x1fa1b771, 0xfb28b4ab,
0x1f9de059, 0xfb0fde3d, 0x1f99f5c1, 0xfaf70adb,
0x1f95f7aa, 0xfade3a95, 0x1f91e617, 0xfac56d78,
0x1f8dc10b, 0xfaaca395, 0x1f898888, 0xfa93dcfc,
0x1f853c91, 0xfa7b19ba, 0x1f80dd28, 0xfa6259e0,
0x1f7c6a51, 0xfa499d7d, 0x1f77e40d, 0xfa30e4a0,
0x1f734a60, 0xfa182f58, 0x1f6e9d4d, 0xf9ff7db5,
0x1f69dcd6, 0xf9e6cfc6, 0x1f6508ff, 0xf9ce2599,
0x1f6021ca, 0xf9b57f3f, 0x1f5b273a, 0xf99cdcc6,
0x1f561953, 0xf9843e3e, 0x1f50f818, 0xf96ba3b6,
0x1f4bc38b, 0xf9530d3d, 0x1f467bb0, 0xf93a7ae2,
0x1f41208a, 0xf921ecb4, 0x1f3bb21d, 0xf90962c3,
0x1f36306b, 0xf8f0dd1d, 0x1f309b79, 0xf8d85bd2,
0x1f2af34a, 0xf8bfdef1, 0x1f2537e1, 0xf8a76689,
0x1f1f6941, 0xf88ef2a9, 0x1f19876f, 0xf8768360,
0x1f13926e, 0xf85e18bd, 0x1f0d8a41, 0xf845b2cf,
0x1f076eed, 0xf82d51a6, 0x1f014074, 0xf814f550,
0x1efafedc, 0xf7fc9ddd, 0x1ef4aa28, 0xf7e44b5b,
0x1eee425b, 0xf7cbfdd9, 0x1ee7c779, 0xf7b3b567,
0x1ee13988, 0xf79b7213, 0x1eda988a, 0xf78333ec,
0x1ed3e484, 0xf76afb02, 0x1ecd1d79, 0xf752c763,
0x1ec6436f, 0xf73a991e, 0x1ebf5669, 0xf7227042,
0x1eb8566c, 0xf70a4cde, 0x1eb1437b, 0xf6f22f01,
0x1eaa1d9c, 0xf6da16ba, 0x1ea2e4d2, 0xf6c20418,
0x1e9b9923, 0xf6a9f728, 0x1e943a92, 0xf691effb,
0x1e8cc924, 0xf679eea0, 0x1e8544de, 0xf661f324,
0x1e7dadc4, 0xf649fd97, 0x1e7603dc, 0xf6320e07,
0x1e6e4729, 0xf61a2484, 0x1e6677b1, 0xf602411b,
0x1e5e9578, 0xf5ea63dd, 0x1e56a084, 0xf5d28cd7,
0x1e4e98d8, 0xf5babc18, 0x1e467e7b, 0xf5a2f1af,
0x1e3e5171, 0xf58b2daa, 0x1e3611bf, 0xf5737019,
0x1e2dbf6a, 0xf55bb909, 0x1e255a78, 0xf544088a,
0x1e1ce2ed, 0xf52c5eaa, 0x1e1458cf, 0xf514bb78,
0x1e0bbc23, 0xf4fd1f02, 0x1e030cee, 0xf4e58956,
0x1dfa4b36, 0xf4cdfa85, 0x1df17700, 0xf4b6729b,
0x1de89052, 0xf49ef1a7, 0x1ddf9731, 0xf48777b8,
0x1dd68ba2, 0xf47004dd, 0x1dcd6dac, 0xf4589924,
0x1dc43d53, 0xf441349b, 0x1dbafa9e, 0xf429d751,
0x1db1a592, 0xf4128153, 0x1da83e35, 0xf3fb32b2,
0x1d9ec48c, 0xf3e3eb7a, 0x1d95389e, 0xf3ccabbb,
0x1d8b9a71, 0xf3b57382, 0x1d81ea0a, 0xf39e42de,
0x1d78276f, 0xf38719de, 0x1d6e52a7, 0xf36ff88f,
0x1d646bb7, 0xf358deff, 0x1d5a72a6, 0xf341cd3e,
0x1d50677a, 0xf32ac359, 0x1d464a38, 0xf313c15f,
0x1d3c1ae8, 0xf2fcc75d, 0x1d31d98f, 0xf2e5d562,
0x1d278633, 0xf2ceeb7d, 0x1d1d20dc, 0xf2b809ba,
0x1d12a990, 0xf2a13029, 0x1d082054, 0xf28a5ed7,
0x1cfd8530, 0xf27395d2, 0x1cf2d82a, 0xf25cd529,
0x1ce81949, 0xf2461ce9, 0x1cdd4892, 0xf22f6d21,
0x1cd2660e, 0xf218c5df, 0x1cc771c2, 0xf2022730,
0x1cbc6bb6, 0xf1eb9122, 0x1cb153f0, 0xf1d503c4,
0x1ca62a77, 0xf1be7f23, 0x1c9aef52, 0xf1a8034e,
0x1c8fa288, 0xf1919051, 0x1c84441f, 0xf17b263b,
0x1c78d420, 0xf164c51b, 0x1c6d5290, 0xf14e6cfc,
0x1c61bf77, 0xf1381dee, 0x1c561add, 0xf121d7fe,
0x1c4a64c8, 0xf10b9b3a, 0x1c3e9d3f, 0xf0f567af,
0x1c32c44a, 0xf0df3d6c, 0x1c26d9f0, 0xf0c91c7e,
0x1c1ade39, 0xf0b304f2, 0x1c0ed12b, 0xf09cf6d6,
0x1c02b2cf, 0xf086f238, 0x1bf6832b, 0xf070f726,
0x1bea4248, 0xf05b05ac, 0x1bddf02d, 0xf0451dd9,
0x1bd18ce1, 0xf02f3fba, 0x1bc5186c, 0xf0196b5c,
0x1bb892d6, 0xf003a0cd, 0x1babfc26, 0xefede01b,
0x1b9f5465, 0xefd82952, 0x1b929b99, 0xefc27c81,
0x1b85d1cc, 0xefacd9b4, 0x1b78f704, 0xef9740f9,
0x1b6c0b4a, 0xef81b25e, 0x1b5f0ea6, 0xef6c2def,
0x1b520120, 0xef56b3b9, 0x1b44e2bf, 0xef4143cb,
0x1b37b38c, 0xef2bde31, 0x1b2a738f, 0xef1682f8,
0x1b1d22d0, 0xef01322f, 0x1b0fc157, 0xeeebebe0,
0x1b024f2d, 0xeed6b01b, 0x1af4cc5b, 0xeec17eec,
0x1ae738e7, 0xeeac5860, 0x1ad994db, 0xee973c84,
0x1acbe03f, 0xee822b65, 0x1abe1b1b, 0xee6d2511,
0x1ab04578, 0xee582993, 0x1aa25f5f, 0xee4338f9,
0x1a9468d8, 0xee2e5351, 0x1a8661ec, 0xee1978a6,
0x1a784aa3, 0xee04a906, 0x1a6a2306, 0xedefe47e,
0x1a5beb1e, 0xeddb2b1a, 0x1a4da2f4, 0xedc67ce7,
0x1a3f4a8f, 0xedb1d9f3, 0x1a30e1fa, 0xed9d4248,
0x1a22693d, 0xed88b5f5, 0x1a13e061, 0xed743507,
0x1a054770, 0xed5fbf88, 0x19f69e71, 0xed4b5588,
0x19e7e56e, 0xed36f711, 0x19d91c70, 0xed22a430,
0x19ca4381, 0xed0e5cf2, 0x19bb5aa8, 0xecfa2164,
0x19ac61f1, 0xece5f192, 0x199d5963, 0xecd1cd89,
0x198e4109, 0xecbdb554, 0x197f18ea, 0xeca9a900,
0x196fe112, 0xec95a89a, 0x19609989, 0xec81b42f,
0x19514258, 0xec6dcbc9, 0x1941db89, 0xec59ef76,
0x19326526, 0xec461f41, 0x1922df38, 0xec325b38,
0x191349c9, 0xec1ea366, 0x1903a4e1, 0xec0af7d7,
0x18f3f08c, 0xebf75898, 0x18e42cd3, 0xebe3c5b4,
0x18d459be, 0xebd03f38, 0x18c47759, 0xebbcc530,
0x18b485ad, 0xeba957a7, 0x18a484c3, 0xeb95f6ab,
0x189474a6, 0xeb82a246, 0x1884555f, 0xeb6f5a84,
0x187426f9, 0xeb5c1f72, 0x1863e97e, 0xeb48f11b,
0x18539cf6, 0xeb35cf8c, 0x1843416e, 0xeb22bad0,
0x1832d6ee, 0xeb0fb2f2, 0x18225d80, 0xeafcb7ff,
0x1811d530, 0xeae9ca02, 0x18013e06, 0xead6e907,
0x17f0980e, 0xeac41519, 0x17dfe351, 0xeab14e45,
0x17cf1fdb, 0xea9e9495, 0x17be4db4, 0xea8be815,
0x17ad6ce8, 0xea7948d2, 0x179c7d82, 0xea66b6d5,
0x178b7f8a, 0xea54322c, 0x177a730d, 0xea41bae0,
0x17695814, 0xea2f50ff, 0x17582eaa, 0xea1cf492,
0x1746f6d9, 0xea0aa5a5, 0x1735b0ad, 0xe9f86444,
0x17245c30, 0xe9e63079, 0x1712f96c, 0xe9d40a51,
0x1701886d, 0xe9c1f1d6, 0x16f0093c, 0xe9afe713,
0x16de7be6, 0xe99dea14, 0x16cce074, 0xe98bfae3,
0x16bb36f1, 0xe97a198c, 0x16a97f69, 0xe9684619,
0x1697b9e7, 0xe9568097, 0x1685e674, 0xe944c90f,
0x1674051d, 0xe9331f8c, 0x166215ec, 0xe921841a,
0x165018ed, 0xe90ff6c4, 0x163e0e2a, 0xe8fe7793,
0x162bf5af, 0xe8ed0694, 0x1619cf87, 0xe8dba3d0,
0x16079bbc, 0xe8ca4f53, 0x15f55a5b, 0xe8b90927,
0x15e30b6e, 0xe8a7d156, 0x15d0af01, 0xe896a7ec,
0x15be4520, 0xe8858cf3, 0x15abcdd4, 0xe8748076,
0x1599492b, 0xe863827e, 0x1586b72e, 0xe8529318,
0x157417eb, 0xe841b24c, 0x15616b6b, 0xe830e025,
0x154eb1bb, 0xe8201caf, 0x153beae7, 0xe80f67f2,
0x152916f9, 0xe7fec1fa, 0x151635fe, 0xe7ee2ad0,
0x15034801, 0xe7dda280, 0x14f04d0e, 0xe7cd2912,
0x14dd4530, 0xe7bcbe92, 0x14ca3074, 0xe7ac630a,
0x14b70ee5, 0xe79c1682, 0x14a3e08e, 0xe78bd907,
0x1490a57c, 0xe77baaa1, 0x147d5dba, 0xe76b8b5a,
0x146a0955, 0xe75b7b3d, 0x1456a859, 0xe74b7a53,
0x14433ad0, 0xe73b88a7, 0x142fc0c8, 0xe72ba642,
0x141c3a4c, 0xe71bd32d, 0x1408a768, 0xe70c0f74,
0x13f50829, 0xe6fc5b1f, 0x13e15c9a, 0xe6ecb637,
0x13cda4c8, 0xe6dd20c8, 0x13b9e0bf, 0xe6cd9ada,
0x13a6108a, 0xe6be2477, 0x13923437, 0xe6aebda8,
0x137e4bd1, 0xe69f6677, 0x136a5766, 0xe6901eee,
0x13565700, 0xe680e716, 0x13424aac, 0xe671bef7,
0x132e3277, 0xe662a69d, 0x131a0e6e, 0xe6539e0f,
0x1305de9c, 0xe644a558, 0x12f1a30e, 0xe635bc7f,
0x12dd5bd0, 0xe626e390, 0x12c908ef, 0xe6181a92,
0x12b4aa78, 0xe609618f, 0x12a04078, 0xe5fab890,
0x128bcaf9, 0xe5ec1f9f, 0x12774a0b, 0xe5dd96c3,
0x1262bdb8, 0xe5cf1e06, 0x124e260d, 0xe5c0b571,
0x12398319, 0xe5b25d0c, 0x1224d4e6, 0xe5a414e2,
0x12101b82, 0xe595dcfa, 0x11fb56fa, 0xe587b55d,
0x11e6875a, 0xe5799e14, 0x11d1acaf, 0xe56b9728,
0x11bcc707, 0xe55da0a1, 0x11a7d66d, 0xe54fba88,
0x1192daef, 0xe541e4e5, 0x117dd49b, 0xe5341fc1,
0x1168c37c, 0xe5266b25, 0x1153a7a0, 0xe518c719,
0x113e8114, 0xe50b33a5, 0x11294fe5, 0xe4fdb0d3,
0x11141420, 0xe4f03ea9, 0x10fecdd1, 0xe4e2dd30,
0x10e97d08, 0xe4d58c71, 0x10d421cf, 0xe4c84c74,
0x10bebc35, 0xe4bb1d41, 0x10a94c47, 0xe4adfee0,
0x1093d211, 0xe4a0f15a, 0x107e4da2, 0xe493f4b6,
0x1068bf07, 0xe48708fc, 0x1053264c, 0xe47a2e34,
0x103d837f, 0xe46d6467, 0x1027d6ae, 0xe460ab9b,
0x10121fe5, 0xe45403da, 0x0ffc5f33, 0xe4476d2a,
0x0fe694a4, 0xe43ae794, 0x0fd0c046, 0xe42e731f,
0x0fbae227, 0xe4220fd3, 0x0fa4fa54, 0xe415bdb8,
0x0f8f08da, 0xe4097cd5, 0x0f790dc8, 0xe3fd4d31,
0x0f63092a, 0xe3f12ed5, 0x0f4cfb0e, 0xe3e521c7,
0x0f36e382, 0xe3d92610, 0x0f20c294, 0xe3cd3bb6,
0x0f0a9851, 0xe3c162c1, 0x0ef464c6, 0xe3b59b38,
0x0ede2802, 0xe3a9e523, 0x0ec7e212, 0xe39e4089,
0x0eb19304, 0xe392ad70, 0x0e9b3ae5, 0xe3872be0,
0x0e84d9c5, 0xe37bbbe1, 0x0e6e6faf, 0xe3705d78,
0x0e57fcb2, 0xe36510ae, 0x0e4180dd, 0xe359d589,
0x0e2afc3c, 0xe34eac10, 0x0e146ede, 0xe343944a,
0x0dfdd8d0, 0xe3388e3e, 0x0de73a21, 0xe32d99f2,
0x0dd092df, 0xe322b76e, 0x0db9e317, 0xe317e6b7,
0x0da32ad7, 0xe30d27d6, 0x0d8c6a2e, 0xe3027ad0,
0x0d75a129, 0xe2f7dfac, 0x0d5ecfd7, 0xe2ed5670,
0x0d47f646, 0xe2e2df24, 0x0d311483, 0xe2d879cd,
0x0d1a2a9e, 0xe2ce2671, 0x0d0338a3, 0xe2c3e518,
0x0cec3ea1, 0xe2b9b5c8, 0x0cd53ca7, 0xe2af9886,
0x0cbe32c2, 0xe2a58d5a, 0x0ca72101, 0xe29b9449,
0x0c900771, 0xe291ad59, 0x0c78e622, 0xe287d891,
0x0c61bd22, 0xe27e15f6, 0x0c4a8c7e, 0xe274658f,
0x0c335445, 0xe26ac762, 0x0c1c1486, 0xe2613b74,
0x0c04cd4e, 0xe257c1cb, 0x0bed7ead, 0xe24e5a6e,
0x0bd628af, 0xe2450562, 0x0bbecb65, 0xe23bc2ad,
0x0ba766dc, 0xe2329254, 0x0b8ffb23, 0xe229745e,
0x0b788848, 0xe22068cf, 0x0b610e59, 0xe2176fae,
0x0b498d65, 0xe20e8900, 0x0b32057b, 0xe205b4ca,
0x0b1a76aa, 0xe1fcf312, 0x0b02e0fe, 0xe1f443dd,
0x0aeb4488, 0xe1eba731, 0x0ad3a156, 0xe1e31d13,
0x0abbf776, 0xe1daa588, 0x0aa446f7, 0xe1d24096,
0x0a8c8fe7, 0xe1c9ee41, 0x0a74d256, 0xe1c1ae8f,
0x0a5d0e51, 0xe1b98185, 0x0a4543e8, 0xe1b16728,
0x0a2d7329, 0xe1a95f7c, 0x0a159c23, 0xe1a16a88,
0x09fdbee5, 0xe199884f, 0x09e5db7c, 0xe191b8d7,
0x09cdf1f9, 0xe189fc24, 0x09b60269, 0xe182523c,
0x099e0cdc, 0xe17abb22, 0x09861160, 0xe17336dc,
0x096e1005, 0xe16bc56e, 0x095608d8, 0xe16466dd,
0x093dfbe8, 0xe15d1b2e, 0x0925e946, 0xe155e264,
0x090dd0ff, 0xe14ebc85, 0x08f5b322, 0xe147a994,
0x08dd8fbe, 0xe140a997, 0x08c566e2, 0xe139bc91,
0x08ad389d, 0xe132e287, 0x089504fe, 0xe12c1b7c,
0x087ccc14, 0xe1256776, 0x08648ded, 0xe11ec678,
0x084c4a99, 0xe1183887, 0x08340227, 0xe111bda5,
0x081bb4a5, 0xe10b55d8, 0x08036223, 0xe1050124,
0x07eb0ab0, 0xe0febf8c, 0x07d2ae5a, 0xe0f89113,
0x07ba4d31, 0xe0f275bf, 0x07a1e743, 0xe0ec6d92,
0x07897ca0, 0xe0e67891, 0x07710d57, 0xe0e096bf,
0x07589977, 0xe0dac81f, 0x0740210f, 0xe0d50cb6,
0x0727a42e, 0xe0cf6487, 0x070f22e3, 0xe0c9cf95,
0x06f69d3d, 0xe0c44de3, 0x06de134c, 0xe0bedf76,
0x06c5851e, 0xe0b98450, 0x06acf2c3, 0xe0b43c75,
0x06945c4a, 0xe0af07e8, 0x067bc1c2, 0xe0a9e6ad,
0x0663233a, 0xe0a4d8c6, 0x064a80c1, 0xe09fde36,
0x0631da67, 0xe09af701, 0x0619303a, 0xe096232a,
0x0600824b, 0xe09162b3, 0x05e7d0a8, 0xe08cb5a0,
0x05cf1b60, 0xe0881bf3, 0x05b66283, 0xe08395af,
0x059da620, 0xe07f22d8, 0x0584e646, 0xe07ac36f,
0x056c2304, 0xe0767778, 0x05535c6b, 0xe0723ef5,
0x053a9288, 0xe06e19e9, 0x0521c56b, 0xe06a0856,
0x0508f525, 0xe0660a3f, 0x04f021c3, 0xe0621fa7,
0x04d74b55, 0xe05e488f, 0x04be71eb, 0xe05a84fa,
0x04a59593, 0xe056d4ea, 0x048cb65e, 0xe0533862,
0x0473d45b, 0xe04faf64, 0x045aef98, 0xe04c39f2,
0x04420825, 0xe048d80e, 0x04291e13, 0xe04589bb,
0x0410316f, 0xe0424efa, 0x03f74249, 0xe03f27cd,
0x03de50b2, 0xe03c1437, 0x03c55cb7, 0xe0391439,
0x03ac6669, 0xe03627d4, 0x03936dd7, 0xe0334f0c,
0x037a7310, 0xe03089e1, 0x03617624, 0xe02dd855,
0x03487722, 0xe02b3a6b, 0x032f7619, 0xe028b023,
0x0316731a, 0xe026397f, 0x02fd6e33, 0xe023d681,
0x02e46774, 0xe0218729, 0x02cb5eec, 0xe01f4b7b,
0x02b254ab, 0xe01d2376, 0x029948c0, 0xe01b0f1d,
0x02803b3a, 0xe0190e70, 0x02672c2a, 0xe0172171,
0x024e1b9e, 0xe0154821, 0x023509a6, 0xe0138281,
0x021bf652, 0xe011d092, 0x0202e1b0, 0xe0103256,
0x01e9cbd1, 0xe00ea7cc, 0x01d0b4c4, 0xe00d30f7,
0x01b79c98, 0xe00bcdd7, 0x019e835d, 0xe00a7e6d,
0x01856923, 0xe00942ba, 0x016c4df8, 0xe0081abe,
0x015331ec, 0xe007067a, 0x013a150f, 0xe00605f0,
0x0120f771, 0xe005191f, 0x0107d920, 0xe0044008,
0x00eeba2c, 0xe0037aab, 0x00d59aa6, 0xe002c90a,
0x00bc7a9b, 0xe0022b24, 0x00a35a1c, 0xe001a0fa,
0x008a3938, 0xe0012a8c, 0x00711800, 0xe000c7db,
0x0057f681, 0xe00078e7, 0x003ed4cc, 0xe0003daf,
0x0025b2f0, 0xe0001635, 0x000c90fd, 0xe0000278,
};
tatic ogg_int16_t bitrevlook_4096[1024]={
0x07fe, 0x0000, 0x03fe, 0x0400,
0x05fe, 0x0200, 0x01fe, 0x0600,
0x06fe, 0x0100, 0x02fe, 0x0500,
0x04fe, 0x0300, 0x00fe, 0x0700,
0x077e, 0x0080, 0x037e, 0x0480,
0x057e, 0x0280, 0x017e, 0x0680,
0x067e, 0x0180, 0x027e, 0x0580,
0x047e, 0x0380, 0x007e, 0x0780,
0x07be, 0x0040, 0x03be, 0x0440,
0x05be, 0x0240, 0x01be, 0x0640,
0x06be, 0x0140, 0x02be, 0x0540,
0x04be, 0x0340, 0x00be, 0x0740,
0x073e, 0x00c0, 0x033e, 0x04c0,
0x053e, 0x02c0, 0x013e, 0x06c0,
0x063e, 0x01c0, 0x023e, 0x05c0,
0x043e, 0x03c0, 0x003e, 0x07c0,
0x07de, 0x0020, 0x03de, 0x0420,
0x05de, 0x0220, 0x01de, 0x0620,
0x06de, 0x0120, 0x02de, 0x0520,
0x04de, 0x0320, 0x00de, 0x0720,
0x075e, 0x00a0, 0x035e, 0x04a0,
0x055e, 0x02a0, 0x015e, 0x06a0,
0x065e, 0x01a0, 0x025e, 0x05a0,
0x045e, 0x03a0, 0x005e, 0x07a0,
0x079e, 0x0060, 0x039e, 0x0460,
0x059e, 0x0260, 0x019e, 0x0660,
0x069e, 0x0160, 0x029e, 0x0560,
0x049e, 0x0360, 0x009e, 0x0760,
0x071e, 0x00e0, 0x031e, 0x04e0,
0x051e, 0x02e0, 0x011e, 0x06e0,
0x061e, 0x01e0, 0x021e, 0x05e0,
0x041e, 0x03e0, 0x001e, 0x07e0,
0x07ee, 0x0010, 0x03ee, 0x0410,
0x05ee, 0x0210, 0x01ee, 0x0610,
0x06ee, 0x0110, 0x02ee, 0x0510,
0x04ee, 0x0310, 0x00ee, 0x0710,
0x076e, 0x0090, 0x036e, 0x0490,
0x056e, 0x0290, 0x016e, 0x0690,
0x066e, 0x0190, 0x026e, 0x0590,
0x046e, 0x0390, 0x006e, 0x0790,
0x07ae, 0x0050, 0x03ae, 0x0450,
0x05ae, 0x0250, 0x01ae, 0x0650,
0x06ae, 0x0150, 0x02ae, 0x0550,
0x04ae, 0x0350, 0x00ae, 0x0750,
0x072e, 0x00d0, 0x032e, 0x04d0,
0x052e, 0x02d0, 0x012e, 0x06d0,
0x062e, 0x01d0, 0x022e, 0x05d0,
0x042e, 0x03d0, 0x002e, 0x07d0,
0x07ce, 0x0030, 0x03ce, 0x0430,
0x05ce, 0x0230, 0x01ce, 0x0630,
0x06ce, 0x0130, 0x02ce, 0x0530,
0x04ce, 0x0330, 0x00ce, 0x0730,
0x074e, 0x00b0, 0x034e, 0x04b0,
0x054e, 0x02b0, 0x014e, 0x06b0,
0x064e, 0x01b0, 0x024e, 0x05b0,
0x044e, 0x03b0, 0x004e, 0x07b0,
0x078e, 0x0070, 0x038e, 0x0470,
0x058e, 0x0270, 0x018e, 0x0670,
0x068e, 0x0170, 0x028e, 0x0570,
0x048e, 0x0370, 0x008e, 0x0770,
0x070e, 0x00f0, 0x030e, 0x04f0,
0x050e, 0x02f0, 0x010e, 0x06f0,
0x060e, 0x01f0, 0x020e, 0x05f0,
0x040e, 0x03f0, 0x000e, 0x07f0,
0x07f6, 0x0008, 0x03f6, 0x0408,
0x05f6, 0x0208, 0x01f6, 0x0608,
0x06f6, 0x0108, 0x02f6, 0x0508,
0x04f6, 0x0308, 0x00f6, 0x0708,
0x0776, 0x0088, 0x0376, 0x0488,
0x0576, 0x0288, 0x0176, 0x0688,
0x0676, 0x0188, 0x0276, 0x0588,
0x0476, 0x0388, 0x0076, 0x0788,
0x07b6, 0x0048, 0x03b6, 0x0448,
0x05b6, 0x0248, 0x01b6, 0x0648,
0x06b6, 0x0148, 0x02b6, 0x0548,
0x04b6, 0x0348, 0x00b6, 0x0748,
0x0736, 0x00c8, 0x0336, 0x04c8,
0x0536, 0x02c8, 0x0136, 0x06c8,
0x0636, 0x01c8, 0x0236, 0x05c8,
0x0436, 0x03c8, 0x0036, 0x07c8,
0x07d6, 0x0028, 0x03d6, 0x0428,
0x05d6, 0x0228, 0x01d6, 0x0628,
0x06d6, 0x0128, 0x02d6, 0x0528,
0x04d6, 0x0328, 0x00d6, 0x0728,
0x0756, 0x00a8, 0x0356, 0x04a8,
0x0556, 0x02a8, 0x0156, 0x06a8,
0x0656, 0x01a8, 0x0256, 0x05a8,
0x0456, 0x03a8, 0x0056, 0x07a8,
0x0796, 0x0068, 0x0396, 0x0468,
0x0596, 0x0268, 0x0196, 0x0668,
0x0696, 0x0168, 0x0296, 0x0568,
0x0496, 0x0368, 0x0096, 0x0768,
0x0716, 0x00e8, 0x0316, 0x04e8,
0x0516, 0x02e8, 0x0116, 0x06e8,
0x0616, 0x01e8, 0x0216, 0x05e8,
0x0416, 0x03e8, 0x0016, 0x07e8,
0x07e6, 0x0018, 0x03e6, 0x0418,
0x05e6, 0x0218, 0x01e6, 0x0618,
0x06e6, 0x0118, 0x02e6, 0x0518,
0x04e6, 0x0318, 0x00e6, 0x0718,
0x0766, 0x0098, 0x0366, 0x0498,
0x0566, 0x0298, 0x0166, 0x0698,
0x0666, 0x0198, 0x0266, 0x0598,
0x0466, 0x0398, 0x0066, 0x0798,
0x07a6, 0x0058, 0x03a6, 0x0458,
0x05a6, 0x0258, 0x01a6, 0x0658,
0x06a6, 0x0158, 0x02a6, 0x0558,
0x04a6, 0x0358, 0x00a6, 0x0758,
0x0726, 0x00d8, 0x0326, 0x04d8,
0x0526, 0x02d8, 0x0126, 0x06d8,
0x0626, 0x01d8, 0x0226, 0x05d8,
0x0426, 0x03d8, 0x0026, 0x07d8,
0x07c6, 0x0038, 0x03c6, 0x0438,
0x05c6, 0x0238, 0x01c6, 0x0638,
0x06c6, 0x0138, 0x02c6, 0x0538,
0x04c6, 0x0338, 0x00c6, 0x0738,
0x0746, 0x00b8, 0x0346, 0x04b8,
0x0546, 0x02b8, 0x0146, 0x06b8,
0x0646, 0x01b8, 0x0246, 0x05b8,
0x0446, 0x03b8, 0x0046, 0x07b8,
0x0786, 0x0078, 0x0386, 0x0478,
0x0586, 0x0278, 0x0186, 0x0678,
0x0686, 0x0178, 0x0286, 0x0578,
0x0486, 0x0378, 0x0086, 0x0778,
0x0706, 0x00f8, 0x0306, 0x04f8,
0x0506, 0x02f8, 0x0106, 0x06f8,
0x0606, 0x01f8, 0x0206, 0x05f8,
0x0406, 0x03f8, 0x0006, 0x07f8,
0x07fa, 0x0004, 0x03fa, 0x0404,
0x05fa, 0x0204, 0x01fa, 0x0604,
0x06fa, 0x0104, 0x02fa, 0x0504,
0x04fa, 0x0304, 0x00fa, 0x0704,
0x077a, 0x0084, 0x037a, 0x0484,
0x057a, 0x0284, 0x017a, 0x0684,
0x067a, 0x0184, 0x027a, 0x0584,
0x047a, 0x0384, 0x007a, 0x0784,
0x07ba, 0x0044, 0x03ba, 0x0444,
0x05ba, 0x0244, 0x01ba, 0x0644,
0x06ba, 0x0144, 0x02ba, 0x0544,
0x04ba, 0x0344, 0x00ba, 0x0744,
0x073a, 0x00c4, 0x033a, 0x04c4,
0x053a, 0x02c4, 0x013a, 0x06c4,
0x063a, 0x01c4, 0x023a, 0x05c4,
0x043a, 0x03c4, 0x003a, 0x07c4,
0x07da, 0x0024, 0x03da, 0x0424,
0x05da, 0x0224, 0x01da, 0x0624,
0x06da, 0x0124, 0x02da, 0x0524,
0x04da, 0x0324, 0x00da, 0x0724,
0x075a, 0x00a4, 0x035a, 0x04a4,
0x055a, 0x02a4, 0x015a, 0x06a4,
0x065a, 0x01a4, 0x025a, 0x05a4,
0x045a, 0x03a4, 0x005a, 0x07a4,
0x079a, 0x0064, 0x039a, 0x0464,
0x059a, 0x0264, 0x019a, 0x0664,
0x069a, 0x0164, 0x029a, 0x0564,
0x049a, 0x0364, 0x009a, 0x0764,
0x071a, 0x00e4, 0x031a, 0x04e4,
0x051a, 0x02e4, 0x011a, 0x06e4,
0x061a, 0x01e4, 0x021a, 0x05e4,
0x041a, 0x03e4, 0x001a, 0x07e4,
0x07ea, 0x0014, 0x03ea, 0x0414,
0x05ea, 0x0214, 0x01ea, 0x0614,
0x06ea, 0x0114, 0x02ea, 0x0514,
0x04ea, 0x0314, 0x00ea, 0x0714,
0x076a, 0x0094, 0x036a, 0x0494,
0x056a, 0x0294, 0x016a, 0x0694,
0x066a, 0x0194, 0x026a, 0x0594,
0x046a, 0x0394, 0x006a, 0x0794,
0x07aa, 0x0054, 0x03aa, 0x0454,
0x05aa, 0x0254, 0x01aa, 0x0654,
0x06aa, 0x0154, 0x02aa, 0x0554,
0x04aa, 0x0354, 0x00aa, 0x0754,
0x072a, 0x00d4, 0x032a, 0x04d4,
0x052a, 0x02d4, 0x012a, 0x06d4,
0x062a, 0x01d4, 0x022a, 0x05d4,
0x042a, 0x03d4, 0x002a, 0x07d4,
0x07ca, 0x0034, 0x03ca, 0x0434,
0x05ca, 0x0234, 0x01ca, 0x0634,
0x06ca, 0x0134, 0x02ca, 0x0534,
0x04ca, 0x0334, 0x00ca, 0x0734,
0x074a, 0x00b4, 0x034a, 0x04b4,
0x054a, 0x02b4, 0x014a, 0x06b4,
0x064a, 0x01b4, 0x024a, 0x05b4,
0x044a, 0x03b4, 0x004a, 0x07b4,
0x078a, 0x0074, 0x038a, 0x0474,
0x058a, 0x0274, 0x018a, 0x0674,
0x068a, 0x0174, 0x028a, 0x0574,
0x048a, 0x0374, 0x008a, 0x0774,
0x070a, 0x00f4, 0x030a, 0x04f4,
0x050a, 0x02f4, 0x010a, 0x06f4,
0x060a, 0x01f4, 0x020a, 0x05f4,
0x040a, 0x03f4, 0x000a, 0x07f4,
0x07f2, 0x000c, 0x03f2, 0x040c,
0x05f2, 0x020c, 0x01f2, 0x060c,
0x06f2, 0x010c, 0x02f2, 0x050c,
0x04f2, 0x030c, 0x00f2, 0x070c,
0x0772, 0x008c, 0x0372, 0x048c,
0x0572, 0x028c, 0x0172, 0x068c,
0x0672, 0x018c, 0x0272, 0x058c,
0x0472, 0x038c, 0x0072, 0x078c,
0x07b2, 0x004c, 0x03b2, 0x044c,
0x05b2, 0x024c, 0x01b2, 0x064c,
0x06b2, 0x014c, 0x02b2, 0x054c,
0x04b2, 0x034c, 0x00b2, 0x074c,
0x0732, 0x00cc, 0x0332, 0x04cc,
0x0532, 0x02cc, 0x0132, 0x06cc,
0x0632, 0x01cc, 0x0232, 0x05cc,
0x0432, 0x03cc, 0x0032, 0x07cc,
0x07d2, 0x002c, 0x03d2, 0x042c,
0x05d2, 0x022c, 0x01d2, 0x062c,
0x06d2, 0x012c, 0x02d2, 0x052c,
0x04d2, 0x032c, 0x00d2, 0x072c,
0x0752, 0x00ac, 0x0352, 0x04ac,
0x0552, 0x02ac, 0x0152, 0x06ac,
0x0652, 0x01ac, 0x0252, 0x05ac,
0x0452, 0x03ac, 0x0052, 0x07ac,
0x0792, 0x006c, 0x0392, 0x046c,
0x0592, 0x026c, 0x0192, 0x066c,
0x0692, 0x016c, 0x0292, 0x056c,
0x0492, 0x036c, 0x0092, 0x076c,
0x0712, 0x00ec, 0x0312, 0x04ec,
0x0512, 0x02ec, 0x0112, 0x06ec,
0x0612, 0x01ec, 0x0212, 0x05ec,
0x0412, 0x03ec, 0x0012, 0x07ec,
0x07e2, 0x001c, 0x03e2, 0x041c,
0x05e2, 0x021c, 0x01e2, 0x061c,
0x06e2, 0x011c, 0x02e2, 0x051c,
0x04e2, 0x031c, 0x00e2, 0x071c,
0x0762, 0x009c, 0x0362, 0x049c,
0x0562, 0x029c, 0x0162, 0x069c,
0x0662, 0x019c, 0x0262, 0x059c,
0x0462, 0x039c, 0x0062, 0x079c,
0x07a2, 0x005c, 0x03a2, 0x045c,
0x05a2, 0x025c, 0x01a2, 0x065c,
0x06a2, 0x015c, 0x02a2, 0x055c,
0x04a2, 0x035c, 0x00a2, 0x075c,
0x0722, 0x00dc, 0x0322, 0x04dc,
0x0522, 0x02dc, 0x0122, 0x06dc,
0x0622, 0x01dc, 0x0222, 0x05dc,
0x0422, 0x03dc, 0x0022, 0x07dc,
0x07c2, 0x003c, 0x03c2, 0x043c,
0x05c2, 0x023c, 0x01c2, 0x063c,
0x06c2, 0x013c, 0x02c2, 0x053c,
0x04c2, 0x033c, 0x00c2, 0x073c,
0x0742, 0x00bc, 0x0342, 0x04bc,
0x0542, 0x02bc, 0x0142, 0x06bc,
0x0642, 0x01bc, 0x0242, 0x05bc,
0x0442, 0x03bc, 0x0042, 0x07bc,
0x0782, 0x007c, 0x0382, 0x047c,
0x0582, 0x027c, 0x0182, 0x067c,
0x0682, 0x017c, 0x0282, 0x057c,
0x0482, 0x037c, 0x0082, 0x077c,
0x0702, 0x00fc, 0x0302, 0x04fc,
0x0502, 0x02fc, 0x0102, 0x06fc,
0x0602, 0x01fc, 0x0202, 0x05fc,
0x0402, 0x03fc, 0x0002, 0x07fc,
};
tatic ogg_int32_t triglook_8192[10240]={
0x40000000, 0x00000000, 0x3ffffb11, 0xffe6de05,
0x3fffec43, 0xffcdbc0f, 0x3fffd396, 0xffb49a1f,
0x3fffb10b, 0xff9b783c, 0x3fff84a1, 0xff825668,
0x3fff4e59, 0xff6934a8, 0x3fff0e32, 0xff5012fe,
0x3ffec42d, 0xff36f170, 0x3ffe704a, 0xff1dd001,
0x3ffe1288, 0xff04aeb5, 0x3ffdaae7, 0xfeeb8d8f,
0x3ffd3969, 0xfed26c94, 0x3ffcbe0c, 0xfeb94bc8,
0x3ffc38d1, 0xfea02b2e, 0x3ffba9b8, 0xfe870aca,
0x3ffb10c1, 0xfe6deaa1, 0x3ffa6dec, 0xfe54cab5,
0x3ff9c13a, 0xfe3bab0b, 0x3ff90aaa, 0xfe228ba7,
0x3ff84a3c, 0xfe096c8d, 0x3ff77ff1, 0xfdf04dc0,
0x3ff6abc8, 0xfdd72f45, 0x3ff5cdc3, 0xfdbe111e,
0x3ff4e5e0, 0xfda4f351, 0x3ff3f420, 0xfd8bd5e1,
0x3ff2f884, 0xfd72b8d2, 0x3ff1f30b, 0xfd599c28,
0x3ff0e3b6, 0xfd407fe6, 0x3fefca84, 0xfd276410,
0x3feea776, 0xfd0e48ab, 0x3fed7a8c, 0xfcf52dbb,
0x3fec43c7, 0xfcdc1342, 0x3feb0326, 0xfcc2f945,
0x3fe9b8a9, 0xfca9dfc8, 0x3fe86452, 0xfc90c6cf,
0x3fe7061f, 0xfc77ae5e, 0x3fe59e12, 0xfc5e9678,
0x3fe42c2a, 0xfc457f21, 0x3fe2b067, 0xfc2c685d,
0x3fe12acb, 0xfc135231, 0x3fdf9b55, 0xfbfa3c9f,
0x3fde0205, 0xfbe127ac, 0x3fdc5edc, 0xfbc8135c,
0x3fdab1d9, 0xfbaeffb3, 0x3fd8fafe, 0xfb95ecb4,
0x3fd73a4a, 0xfb7cda63, 0x3fd56fbe, 0xfb63c8c4,
0x3fd39b5a, 0xfb4ab7db, 0x3fd1bd1e, 0xfb31a7ac,
0x3fcfd50b, 0xfb18983b, 0x3fcde320, 0xfaff898c,
0x3fcbe75e, 0xfae67ba2, 0x3fc9e1c6, 0xfacd6e81,
0x3fc7d258, 0xfab4622d, 0x3fc5b913, 0xfa9b56ab,
0x3fc395f9, 0xfa824bfd, 0x3fc1690a, 0xfa694229,
0x3fbf3246, 0xfa503930, 0x3fbcf1ad, 0xfa373119,
0x3fbaa740, 0xfa1e29e5, 0x3fb852ff, 0xfa05239a,
0x3fb5f4ea, 0xf9ec1e3b, 0x3fb38d02, 0xf9d319cc,
0x3fb11b48, 0xf9ba1651, 0x3fae9fbb, 0xf9a113cd,
0x3fac1a5b, 0xf9881245, 0x3fa98b2a, 0xf96f11bc,
0x3fa6f228, 0xf9561237, 0x3fa44f55, 0xf93d13b8,
0x3fa1a2b2, 0xf9241645, 0x3f9eec3e, 0xf90b19e0,
0x3f9c2bfb, 0xf8f21e8e, 0x3f9961e8, 0xf8d92452,
0x3f968e07, 0xf8c02b31, 0x3f93b058, 0xf8a7332e,
0x3f90c8da, 0xf88e3c4d, 0x3f8dd78f, 0xf8754692,
0x3f8adc77, 0xf85c5201, 0x3f87d792, 0xf8435e9d,
0x3f84c8e2, 0xf82a6c6a, 0x3f81b065, 0xf8117b6d,
0x3f7e8e1e, 0xf7f88ba9, 0x3f7b620c, 0xf7df9d22,
0x3f782c30, 0xf7c6afdc, 0x3f74ec8a, 0xf7adc3db,
0x3f71a31b, 0xf794d922, 0x3f6e4fe3, 0xf77befb5,
0x3f6af2e3, 0xf7630799, 0x3f678c1c, 0xf74a20d0,
0x3f641b8d, 0xf7313b60, 0x3f60a138, 0xf718574b,
0x3f5d1d1d, 0xf6ff7496, 0x3f598f3c, 0xf6e69344,
0x3f55f796, 0xf6cdb359, 0x3f52562c, 0xf6b4d4d9,
0x3f4eaafe, 0xf69bf7c9, 0x3f4af60d, 0xf6831c2b,
0x3f473759, 0xf66a4203, 0x3f436ee3, 0xf6516956,
0x3f3f9cab, 0xf6389228, 0x3f3bc0b3, 0xf61fbc7b,
0x3f37dafa, 0xf606e854, 0x3f33eb81, 0xf5ee15b7,
0x3f2ff24a, 0xf5d544a7, 0x3f2bef53, 0xf5bc7529,
0x3f27e29f, 0xf5a3a740, 0x3f23cc2e, 0xf58adaf0,
0x3f1fabff, 0xf572103d, 0x3f1b8215, 0xf559472b,
0x3f174e70, 0xf5407fbd, 0x3f13110f, 0xf527b9f7,
0x3f0ec9f5, 0xf50ef5de, 0x3f0a7921, 0xf4f63374,
0x3f061e95, 0xf4dd72be, 0x3f01ba50, 0xf4c4b3c0,
0x3efd4c54, 0xf4abf67e, 0x3ef8d4a1, 0xf4933afa,
0x3ef45338, 0xf47a8139, 0x3eefc81a, 0xf461c940,
0x3eeb3347, 0xf4491311, 0x3ee694c1, 0xf4305eb0,
0x3ee1ec87, 0xf417ac22, 0x3edd3a9a, 0xf3fefb6a,
0x3ed87efc, 0xf3e64c8c, 0x3ed3b9ad, 0xf3cd9f8b,
0x3eceeaad, 0xf3b4f46c, 0x3eca11fe, 0xf39c4b32,
0x3ec52fa0, 0xf383a3e2, 0x3ec04394, 0xf36afe7e,
0x3ebb4ddb, 0xf3525b0b, 0x3eb64e75, 0xf339b98d,
0x3eb14563, 0xf3211a07, 0x3eac32a6, 0xf3087c7d,
0x3ea7163f, 0xf2efe0f2, 0x3ea1f02f, 0xf2d7476c,
0x3e9cc076, 0xf2beafed, 0x3e978715, 0xf2a61a7a,
0x3e92440d, 0xf28d8715, 0x3e8cf75f, 0xf274f5c3,
0x3e87a10c, 0xf25c6688, 0x3e824114, 0xf243d968,
0x3e7cd778, 0xf22b4e66, 0x3e77643a, 0xf212c585,
0x3e71e759, 0xf1fa3ecb, 0x3e6c60d7, 0xf1e1ba3a,
0x3e66d0b4, 0xf1c937d6, 0x3e6136f3, 0xf1b0b7a4,
0x3e5b9392, 0xf19839a6, 0x3e55e694, 0xf17fbde2,
0x3e502ff9, 0xf1674459, 0x3e4a6fc1, 0xf14ecd11,
0x3e44a5ef, 0xf136580d, 0x3e3ed282, 0xf11de551,
0x3e38f57c, 0xf10574e0, 0x3e330ede, 0xf0ed06bf,
0x3e2d1ea8, 0xf0d49af1, 0x3e2724db, 0xf0bc317a,
0x3e212179, 0xf0a3ca5d, 0x3e1b1482, 0xf08b659f,
0x3e14fdf7, 0xf0730342, 0x3e0eddd9, 0xf05aa34c,
0x3e08b42a, 0xf04245c0, 0x3e0280e9, 0xf029eaa1,
0x3dfc4418, 0xf01191f3, 0x3df5fdb8, 0xeff93bba,
0x3defadca, 0xefe0e7f9, 0x3de9544f, 0xefc896b5,
0x3de2f148, 0xefb047f2, 0x3ddc84b5, 0xef97fbb2,
0x3dd60e99, 0xef7fb1fa, 0x3dcf8ef3, 0xef676ace,
0x3dc905c5, 0xef4f2630, 0x3dc2730f, 0xef36e426,
0x3dbbd6d4, 0xef1ea4b2, 0x3db53113, 0xef0667d9,
0x3dae81cf, 0xeeee2d9d, 0x3da7c907, 0xeed5f604,
0x3da106bd, 0xeebdc110, 0x3d9a3af2, 0xeea58ec6,
0x3d9365a8, 0xee8d5f29, 0x3d8c86de, 0xee75323c,
0x3d859e96, 0xee5d0804, 0x3d7eacd2, 0xee44e084,
0x3d77b192, 0xee2cbbc1, 0x3d70acd7, 0xee1499bd,
0x3d699ea3, 0xedfc7a7c, 0x3d6286f6, 0xede45e03,
0x3d5b65d2, 0xedcc4454, 0x3d543b37, 0xedb42d74,
0x3d4d0728, 0xed9c1967, 0x3d45c9a4, 0xed84082f,
0x3d3e82ae, 0xed6bf9d1, 0x3d373245, 0xed53ee51,
0x3d2fd86c, 0xed3be5b1, 0x3d287523, 0xed23dff7,
0x3d21086c, 0xed0bdd25, 0x3d199248, 0xecf3dd3f,
0x3d1212b7, 0xecdbe04a, 0x3d0a89bc, 0xecc3e648,
0x3d02f757, 0xecabef3d, 0x3cfb5b89, 0xec93fb2e,
0x3cf3b653, 0xec7c0a1d, 0x3cec07b8, 0xec641c0e,
0x3ce44fb7, 0xec4c3106, 0x3cdc8e52, 0xec344908,
0x3cd4c38b, 0xec1c6417, 0x3cccef62, 0xec048237,
0x3cc511d9, 0xebeca36c, 0x3cbd2af0, 0xebd4c7ba,
0x3cb53aaa, 0xebbcef23, 0x3cad4107, 0xeba519ad,
0x3ca53e09, 0xeb8d475b, 0x3c9d31b0, 0xeb75782f,
0x3c951bff, 0xeb5dac2f, 0x3c8cfcf6, 0xeb45e35d,
0x3c84d496, 0xeb2e1dbe, 0x3c7ca2e2, 0xeb165b54,
0x3c7467d9, 0xeafe9c24, 0x3c6c237e, 0xeae6e031,
0x3c63d5d1, 0xeacf277f, 0x3c5b7ed4, 0xeab77212,
0x3c531e88, 0xea9fbfed, 0x3c4ab4ef, 0xea881114,
0x3c42420a, 0xea70658a, 0x3c39c5da, 0xea58bd54,
0x3c314060, 0xea411874, 0x3c28b19e, 0xea2976ef,
0x3c201994, 0xea11d8c8, 0x3c177845, 0xe9fa3e03,
0x3c0ecdb2, 0xe9e2a6a3, 0x3c0619dc, 0xe9cb12ad,
0x3bfd5cc4, 0xe9b38223, 0x3bf4966c, 0xe99bf509,
0x3bebc6d5, 0xe9846b63, 0x3be2ee01, 0xe96ce535,
0x3bda0bf0, 0xe9556282, 0x3bd120a4, 0xe93de34e,
0x3bc82c1f, 0xe926679c, 0x3bbf2e62, 0xe90eef71,
0x3bb6276e, 0xe8f77acf, 0x3bad1744, 0xe8e009ba,
0x3ba3fde7, 0xe8c89c37, 0x3b9adb57, 0xe8b13248,
0x3b91af97, 0xe899cbf1, 0x3b887aa6, 0xe8826936,
0x3b7f3c87, 0xe86b0a1a, 0x3b75f53c, 0xe853aea1,
0x3b6ca4c4, 0xe83c56cf, 0x3b634b23, 0xe82502a7,
0x3b59e85a, 0xe80db22d, 0x3b507c69, 0xe7f66564,
0x3b470753, 0xe7df1c50, 0x3b3d8918, 0xe7c7d6f4,
0x3b3401bb, 0xe7b09555, 0x3b2a713d, 0xe7995776,
0x3b20d79e, 0xe7821d59, 0x3b1734e2, 0xe76ae704,
0x3b0d8909, 0xe753b479, 0x3b03d414, 0xe73c85bc,
0x3afa1605, 0xe7255ad1, 0x3af04edf, 0xe70e33bb,
0x3ae67ea1, 0xe6f7107e, 0x3adca54e, 0xe6dff11d,
0x3ad2c2e8, 0xe6c8d59c, 0x3ac8d76f, 0xe6b1bdff,
0x3abee2e5, 0xe69aaa48, 0x3ab4e54c, 0xe6839a7c,
0x3aaadea6, 0xe66c8e9f, 0x3aa0cef3, 0xe65586b3,
0x3a96b636, 0xe63e82bc, 0x3a8c9470, 0xe62782be,
0x3a8269a3, 0xe61086bc, 0x3a7835cf, 0xe5f98ebb,
0x3a6df8f8, 0xe5e29abc, 0x3a63b31d, 0xe5cbaac5,
0x3a596442, 0xe5b4bed8, 0x3a4f0c67, 0xe59dd6f9,
0x3a44ab8e, 0xe586f32c, 0x3a3a41b9, 0xe5701374,
0x3a2fcee8, 0xe55937d5, 0x3a25531f, 0xe5426051,
0x3a1ace5f, 0xe52b8cee, 0x3a1040a8, 0xe514bdad,
0x3a05a9fd, 0xe4fdf294, 0x39fb0a60, 0xe4e72ba4,
0x39f061d2, 0xe4d068e2, 0x39e5b054, 0xe4b9aa52,
0x39daf5e8, 0xe4a2eff6, 0x39d03291, 0xe48c39d3,
0x39c5664f, 0xe47587eb, 0x39ba9125, 0xe45eda43,
0x39afb313, 0xe44830dd, 0x39a4cc1c, 0xe4318bbe,
0x3999dc42, 0xe41aeae8, 0x398ee385, 0xe4044e60,
0x3983e1e8, 0xe3edb628, 0x3978d76c, 0xe3d72245,
0x396dc414, 0xe3c092b9, 0x3962a7e0, 0xe3aa0788,
0x395782d3, 0xe39380b6, 0x394c54ee, 0xe37cfe47,
0x39411e33, 0xe366803c, 0x3935dea4, 0xe350069b,
0x392a9642, 0xe3399167, 0x391f4510, 0xe32320a2,
0x3913eb0e, 0xe30cb451, 0x3908883f, 0xe2f64c77,
0x38fd1ca4, 0xe2dfe917, 0x38f1a840, 0xe2c98a35,
0x38e62b13, 0xe2b32fd4, 0x38daa520, 0xe29cd9f8,
0x38cf1669, 0xe28688a4, 0x38c37eef, 0xe2703bdc,
0x38b7deb4, 0xe259f3a3, 0x38ac35ba, 0xe243affc,
0x38a08402, 0xe22d70eb, 0x3894c98f, 0xe2173674,
0x38890663, 0xe2010099, 0x387d3a7e, 0xe1eacf5f,
0x387165e3, 0xe1d4a2c8, 0x38658894, 0xe1be7ad8,
0x3859a292, 0xe1a85793, 0x384db3e0, 0xe19238fb,
0x3841bc7f, 0xe17c1f15, 0x3835bc71, 0xe16609e3,
0x3829b3b9, 0xe14ff96a, 0x381da256, 0xe139edac,
0x3811884d, 0xe123e6ad, 0x3805659e, 0xe10de470,
0x37f93a4b, 0xe0f7e6f9, 0x37ed0657, 0xe0e1ee4b,
0x37e0c9c3, 0xe0cbfa6a, 0x37d48490, 0xe0b60b58,
0x37c836c2, 0xe0a0211a, 0x37bbe05a, 0xe08a3bb2,
0x37af8159, 0xe0745b24, 0x37a319c2, 0xe05e7f74,
0x3796a996, 0xe048a8a4, 0x378a30d8, 0xe032d6b8,
0x377daf89, 0xe01d09b4, 0x377125ac, 0xe007419b,
0x37649341, 0xdff17e70, 0x3757f84c, 0xdfdbc036,
0x374b54ce, 0xdfc606f1, 0x373ea8ca, 0xdfb052a5,
0x3731f440, 0xdf9aa354, 0x37253733, 0xdf84f902,
0x371871a5, 0xdf6f53b3, 0x370ba398, 0xdf59b369,
0x36fecd0e, 0xdf441828, 0x36f1ee09, 0xdf2e81f3,
0x36e5068a, 0xdf18f0ce, 0x36d81695, 0xdf0364bc,
0x36cb1e2a, 0xdeedddc0, 0x36be1d4c, 0xded85bdd,
0x36b113fd, 0xdec2df18, 0x36a4023f, 0xdead6773,
0x3696e814, 0xde97f4f1, 0x3689c57d, 0xde828796,
0x367c9a7e, 0xde6d1f65, 0x366f6717, 0xde57bc62,
0x36622b4c, 0xde425e8f, 0x3654e71d, 0xde2d05f1,
0x36479a8e, 0xde17b28a, 0x363a45a0, 0xde02645d,
0x362ce855, 0xdded1b6e, 0x361f82af, 0xddd7d7c1,
0x361214b0, 0xddc29958, 0x36049e5b, 0xddad6036,
0x35f71fb1, 0xdd982c60, 0x35e998b5, 0xdd82fdd8,
0x35dc0968, 0xdd6dd4a2, 0x35ce71ce, 0xdd58b0c0,
0x35c0d1e7, 0xdd439236, 0x35b329b5, 0xdd2e7908,
0x35a5793c, 0xdd196538, 0x3597c07d, 0xdd0456ca,
0x3589ff7a, 0xdcef4dc2, 0x357c3636, 0xdcda4a21,
0x356e64b2, 0xdcc54bec, 0x35608af1, 0xdcb05326,
0x3552a8f4, 0xdc9b5fd2, 0x3544bebf, 0xdc8671f3,
0x3536cc52, 0xdc71898d, 0x3528d1b1, 0xdc5ca6a2,
0x351acedd, 0xdc47c936, 0x350cc3d8, 0xdc32f14d,
0x34feb0a5, 0xdc1e1ee9, 0x34f09546, 0xdc09520d,
0x34e271bd, 0xdbf48abd, 0x34d4460c, 0xdbdfc8fc,
0x34c61236, 0xdbcb0cce, 0x34b7d63c, 0xdbb65634,
0x34a99221, 0xdba1a534, 0x349b45e7, 0xdb8cf9cf,
0x348cf190, 0xdb785409, 0x347e951f, 0xdb63b3e5,
0x34703095, 0xdb4f1967, 0x3461c3f5, 0xdb3a8491,
0x34534f41, 0xdb25f566, 0x3444d27b, 0xdb116beb,
0x34364da6, 0xdafce821, 0x3427c0c3, 0xdae86a0d,
0x34192bd5, 0xdad3f1b1, 0x340a8edf, 0xdabf7f11,
0x33fbe9e2, 0xdaab122f, 0x33ed3ce1, 0xda96ab0f,
0x33de87de, 0xda8249b4, 0x33cfcadc, 0xda6dee21,
0x33c105db, 0xda599859, 0x33b238e0, 0xda454860,
0x33a363ec, 0xda30fe38, 0x33948701, 0xda1cb9e5,
0x3385a222, 0xda087b69, 0x3376b551, 0xd9f442c9,
0x3367c090, 0xd9e01006, 0x3358c3e2, 0xd9cbe325,
0x3349bf48, 0xd9b7bc27, 0x333ab2c6, 0xd9a39b11,
0x332b9e5e, 0xd98f7fe6, 0x331c8211, 0xd97b6aa8,
0x330d5de3, 0xd9675b5a, 0x32fe31d5, 0xd9535201,
0x32eefdea, 0xd93f4e9e, 0x32dfc224, 0xd92b5135,
0x32d07e85, 0xd91759c9, 0x32c13311, 0xd903685d,
0x32b1dfc9, 0xd8ef7cf4, 0x32a284b0, 0xd8db9792,
0x329321c7, 0xd8c7b838, 0x3283b712, 0xd8b3deeb,
0x32744493, 0xd8a00bae, 0x3264ca4c, 0xd88c3e83,
0x32554840, 0xd878776d, 0x3245be70, 0xd864b670,
0x32362ce0, 0xd850fb8e, 0x32269391, 0xd83d46cc,
0x3216f287, 0xd829982b, 0x320749c3, 0xd815efae,
0x31f79948, 0xd8024d59, 0x31e7e118, 0xd7eeb130,
0x31d82137, 0xd7db1b34, 0x31c859a5, 0xd7c78b68,
0x31b88a66, 0xd7b401d1, 0x31a8b37c, 0xd7a07e70,
0x3198d4ea, 0xd78d014a, 0x3188eeb2, 0xd7798a60,
0x317900d6, 0xd76619b6, 0x31690b59, 0xd752af4f,
0x31590e3e, 0xd73f4b2e, 0x31490986, 0xd72bed55,
0x3138fd35, 0xd71895c9, 0x3128e94c, 0xd705448b,
0x3118cdcf, 0xd6f1f99f, 0x3108aabf, 0xd6deb508,
0x30f8801f, 0xd6cb76c9, 0x30e84df3, 0xd6b83ee4,
0x30d8143b, 0xd6a50d5d, 0x30c7d2fb, 0xd691e237,
0x30b78a36, 0xd67ebd74, 0x30a739ed, 0xd66b9f18,
0x3096e223, 0xd6588725, 0x308682dc, 0xd645759f,
0x30761c18, 0xd6326a88, 0x3065addb, 0xd61f65e4,
0x30553828, 0xd60c67b4, 0x3044bb00, 0xd5f96ffd,
0x30343667, 0xd5e67ec1, 0x3023aa5f, 0xd5d39403,
0x301316eb, 0xd5c0afc6, 0x30027c0c, 0xd5add20d,
0x2ff1d9c7, 0xd59afadb, 0x2fe1301c, 0xd5882a32,
0x2fd07f0f, 0xd5756016, 0x2fbfc6a3, 0xd5629c89,
0x2faf06da, 0xd54fdf8f, 0x2f9e3fb6, 0xd53d292a,
0x2f8d713a, 0xd52a795d, 0x2f7c9b69, 0xd517d02b,
0x2f6bbe45, 0xd5052d97, 0x2f5ad9d1, 0xd4f291a4,
0x2f49ee0f, 0xd4dffc54, 0x2f38fb03, 0xd4cd6dab,
0x2f2800af, 0xd4bae5ab, 0x2f16ff14, 0xd4a86458,
0x2f05f637, 0xd495e9b3, 0x2ef4e619, 0xd48375c1,
0x2ee3cebe, 0xd4710883, 0x2ed2b027, 0xd45ea1fd,
0x2ec18a58, 0xd44c4232, 0x2eb05d53, 0xd439e923,
0x2e9f291b, 0xd42796d5, 0x2e8dedb3, 0xd4154b4a,
0x2e7cab1c, 0xd4030684, 0x2e6b615a, 0xd3f0c887,
0x2e5a1070, 0xd3de9156, 0x2e48b860, 0xd3cc60f2,
0x2e37592c, 0xd3ba3760, 0x2e25f2d8, 0xd3a814a2,
0x2e148566, 0xd395f8ba, 0x2e0310d9, 0xd383e3ab,
0x2df19534, 0xd371d579, 0x2de01278, 0xd35fce26,
0x2dce88aa, 0xd34dcdb4, 0x2dbcf7cb, 0xd33bd427,
0x2dab5fdf, 0xd329e181, 0x2d99c0e7, 0xd317f5c6,
0x2d881ae8, 0xd30610f7, 0x2d766de2, 0xd2f43318,
0x2d64b9da, 0xd2e25c2b, 0x2d52fed2, 0xd2d08c33,
0x2d413ccd, 0xd2bec333, 0x2d2f73cd, 0xd2ad012e,
0x2d1da3d5, 0xd29b4626, 0x2d0bcce8, 0xd289921e,
0x2cf9ef09, 0xd277e518, 0x2ce80a3a, 0xd2663f19,
0x2cd61e7f, 0xd254a021, 0x2cc42bd9, 0xd2430835,
0x2cb2324c, 0xd2317756, 0x2ca031da, 0xd21fed88,
0x2c8e2a87, 0xd20e6acc, 0x2c7c1c55, 0xd1fcef27,
0x2c6a0746, 0xd1eb7a9a, 0x2c57eb5e, 0xd1da0d28,
0x2c45c8a0, 0xd1c8a6d4, 0x2c339f0e, 0xd1b747a0,
0x2c216eaa, 0xd1a5ef90, 0x2c0f3779, 0xd1949ea6,
0x2bfcf97c, 0xd18354e4, 0x2beab4b6, 0xd172124d,
0x2bd8692b, 0xd160d6e5, 0x2bc616dd, 0xd14fa2ad,
0x2bb3bdce, 0xd13e75a8, 0x2ba15e03, 0xd12d4fd9,
0x2b8ef77d, 0xd11c3142, 0x2b7c8a3f, 0xd10b19e7,
0x2b6a164d, 0xd0fa09c9, 0x2b579ba8, 0xd0e900ec,
0x2b451a55, 0xd0d7ff51, 0x2b329255, 0xd0c704fd,
0x2b2003ac, 0xd0b611f1, 0x2b0d6e5c, 0xd0a5262f,
0x2afad269, 0xd09441bb, 0x2ae82fd5, 0xd0836497,
0x2ad586a3, 0xd0728ec6, 0x2ac2d6d6, 0xd061c04a,
0x2ab02071, 0xd050f926, 0x2a9d6377, 0xd040395d,
0x2a8a9fea, 0xd02f80f1, 0x2a77d5ce, 0xd01ecfe4,
0x2a650525, 0xd00e2639, 0x2a522df3, 0xcffd83f4,
0x2a3f503a, 0xcfece915, 0x2a2c6bfd, 0xcfdc55a1,
0x2a19813f, 0xcfcbc999, 0x2a069003, 0xcfbb4500,
0x29f3984c, 0xcfaac7d8, 0x29e09a1c, 0xcf9a5225,
0x29cd9578, 0xcf89e3e8, 0x29ba8a61, 0xcf797d24,
0x29a778db, 0xcf691ddd, 0x299460e8, 0xcf58c613,
0x2981428c, 0xcf4875ca, 0x296e1dc9, 0xcf382d05,
0x295af2a3, 0xcf27ebc5, 0x2947c11c, 0xcf17b20d,
0x29348937, 0xcf077fe1, 0x29214af8, 0xcef75541,
0x290e0661, 0xcee73231, 0x28fabb75, 0xced716b4,
0x28e76a37, 0xcec702cb, 0x28d412ab, 0xceb6f67a,
0x28c0b4d2, 0xcea6f1c2, 0x28ad50b1, 0xce96f4a7,
0x2899e64a, 0xce86ff2a, 0x288675a0, 0xce77114e,
0x2872feb6, 0xce672b16, 0x285f8190, 0xce574c84,
0x284bfe2f, 0xce47759a, 0x28387498, 0xce37a65b,
0x2824e4cc, 0xce27dec9, 0x28114ed0, 0xce181ee8,
0x27fdb2a7, 0xce0866b8, 0x27ea1052, 0xcdf8b63d,
0x27d667d5, 0xcde90d79, 0x27c2b934, 0xcdd96c6f,
0x27af0472, 0xcdc9d320, 0x279b4990, 0xcdba4190,
0x27878893, 0xcdaab7c0, 0x2773c17d, 0xcd9b35b4,
0x275ff452, 0xcd8bbb6d, 0x274c2115, 0xcd7c48ee,
0x273847c8, 0xcd6cde39, 0x2724686e, 0xcd5d7b50,
0x2710830c, 0xcd4e2037, 0x26fc97a3, 0xcd3eccef,
0x26e8a637, 0xcd2f817b, 0x26d4aecb, 0xcd203ddc,
0x26c0b162, 0xcd110216, 0x26acadff, 0xcd01ce2b,
0x2698a4a6, 0xccf2a21d, 0x26849558, 0xcce37def,
0x2670801a, 0xccd461a2, 0x265c64ef, 0xccc54d3a,
0x264843d9, 0xccb640b8, 0x26341cdb, 0xcca73c1e,
0x261feffa, 0xcc983f70, 0x260bbd37, 0xcc894aaf,
0x25f78497, 0xcc7a5dde, 0x25e3461b, 0xcc6b78ff,
0x25cf01c8, 0xcc5c9c14, 0x25bab7a0, 0xcc4dc720,
0x25a667a7, 0xcc3efa25, 0x259211df, 0xcc303524,
0x257db64c, 0xcc217822, 0x256954f1, 0xcc12c31f,
0x2554edd1, 0xcc04161e, 0x254080ef, 0xcbf57121,
0x252c0e4f, 0xcbe6d42b, 0x251795f3, 0xcbd83f3d,
0x250317df, 0xcbc9b25a, 0x24ee9415, 0xcbbb2d85,
0x24da0a9a, 0xcbacb0bf, 0x24c57b6f, 0xcb9e3c0b,
0x24b0e699, 0xcb8fcf6b, 0x249c4c1b, 0xcb816ae1,
0x2487abf7, 0xcb730e70, 0x24730631, 0xcb64ba19,
0x245e5acc, 0xcb566ddf, 0x2449a9cc, 0xcb4829c4,
0x2434f332, 0xcb39edca, 0x24203704, 0xcb2bb9f4,
0x240b7543, 0xcb1d8e43, 0x23f6adf3, 0xcb0f6aba,
0x23e1e117, 0xcb014f5b, 0x23cd0eb3, 0xcaf33c28,
0x23b836ca, 0xcae53123, 0x23a3595e, 0xcad72e4f,
0x238e7673, 0xcac933ae, 0x23798e0d, 0xcabb4141,
0x2364a02e, 0xcaad570c, 0x234facda, 0xca9f750f,
0x233ab414, 0xca919b4e, 0x2325b5df, 0xca83c9ca,
0x2310b23e, 0xca760086, 0x22fba936, 0xca683f83,
0x22e69ac8, 0xca5a86c4, 0x22d186f8, 0xca4cd64b,
0x22bc6dca, 0xca3f2e19, 0x22a74f40, 0xca318e32,
0x22922b5e, 0xca23f698, 0x227d0228, 0xca16674b,
0x2267d3a0, 0xca08e04f, 0x22529fca, 0xc9fb61a5,
0x223d66a8, 0xc9edeb50, 0x2228283f, 0xc9e07d51,
0x2212e492, 0xc9d317ab, 0x21fd9ba3, 0xc9c5ba60,
0x21e84d76, 0xc9b86572, 0x21d2fa0f, 0xc9ab18e3,
0x21bda171, 0xc99dd4b4, 0x21a8439e, 0xc99098e9,
0x2192e09b, 0xc9836582, 0x217d786a, 0xc9763a83,
0x21680b0f, 0xc96917ec, 0x2152988d, 0xc95bfdc1,
0x213d20e8, 0xc94eec03, 0x2127a423, 0xc941e2b4,
0x21122240, 0xc934e1d6, 0x20fc9b44, 0xc927e96b,
0x20e70f32, 0xc91af976, 0x20d17e0d, 0xc90e11f7,
0x20bbe7d8, 0xc90132f2, 0x20a64c97, 0xc8f45c68,
0x2090ac4d, 0xc8e78e5b, 0x207b06fe, 0xc8dac8cd,
0x20655cac, 0xc8ce0bc0, 0x204fad5b, 0xc8c15736,
0x2039f90f, 0xc8b4ab32, 0x20243fca, 0xc8a807b4,
0x200e8190, 0xc89b6cbf, 0x1ff8be65, 0xc88eda54,
0x1fe2f64c, 0xc8825077, 0x1fcd2948, 0xc875cf28,
0x1fb7575c, 0xc869566a, 0x1fa1808c, 0xc85ce63e,
0x1f8ba4dc, 0xc8507ea7, 0x1f75c44e, 0xc8441fa6,
0x1f5fdee6, 0xc837c93e, 0x1f49f4a8, 0xc82b7b70,
0x1f340596, 0xc81f363d, 0x1f1e11b5, 0xc812f9a9,
0x1f081907, 0xc806c5b5, 0x1ef21b90, 0xc7fa9a62,
0x1edc1953, 0xc7ee77b3, 0x1ec61254, 0xc7e25daa,
0x1eb00696, 0xc7d64c47, 0x1e99f61d, 0xc7ca438f,
0x1e83e0eb, 0xc7be4381, 0x1e6dc705, 0xc7b24c20,
0x1e57a86d, 0xc7a65d6e, 0x1e418528, 0xc79a776c,
0x1e2b5d38, 0xc78e9a1d, 0x1e1530a1, 0xc782c582,
0x1dfeff67, 0xc776f99d, 0x1de8c98c, 0xc76b3671,
0x1dd28f15, 0xc75f7bfe, 0x1dbc5004, 0xc753ca46,
0x1da60c5d, 0xc748214c, 0x1d8fc424, 0xc73c8111,
0x1d79775c, 0xc730e997, 0x1d632608, 0xc7255ae0,
0x1d4cd02c, 0xc719d4ed, 0x1d3675cb, 0xc70e57c0,
0x1d2016e9, 0xc702e35c, 0x1d09b389, 0xc6f777c1,
0x1cf34baf, 0xc6ec14f2, 0x1cdcdf5e, 0xc6e0baf0,
0x1cc66e99, 0xc6d569be, 0x1caff965, 0xc6ca215c,
0x1c997fc4, 0xc6bee1cd, 0x1c8301b9, 0xc6b3ab12,
0x1c6c7f4a, 0xc6a87d2d, 0x1c55f878, 0xc69d5820,
0x1c3f6d47, 0xc6923bec, 0x1c28ddbb, 0xc6872894,
0x1c1249d8, 0xc67c1e18, 0x1bfbb1a0, 0xc6711c7b,
0x1be51518, 0xc66623be, 0x1bce7442, 0xc65b33e4,
0x1bb7cf23, 0xc6504ced, 0x1ba125bd, 0xc6456edb,
0x1b8a7815, 0xc63a99b1, 0x1b73c62d, 0xc62fcd6f,
0x1b5d100a, 0xc6250a18, 0x1b4655ae, 0xc61a4fac,
0x1b2f971e, 0xc60f9e2e, 0x1b18d45c, 0xc604f5a0,
0x1b020d6c, 0xc5fa5603, 0x1aeb4253, 0xc5efbf58,
0x1ad47312, 0xc5e531a1, 0x1abd9faf, 0xc5daace1,
0x1aa6c82b, 0xc5d03118, 0x1a8fec8c, 0xc5c5be47,
0x1a790cd4, 0xc5bb5472, 0x1a622907, 0xc5b0f399,
0x1a4b4128, 0xc5a69bbe, 0x1a34553b, 0xc59c4ce3,
0x1a1d6544, 0xc5920708, 0x1a067145, 0xc587ca31,
0x19ef7944, 0xc57d965d, 0x19d87d42, 0xc5736b90,
0x19c17d44, 0xc56949ca, 0x19aa794d, 0xc55f310d,
0x19937161, 0xc555215a, 0x197c6584, 0xc54b1ab4,
0x196555b8, 0xc5411d1b, 0x194e4201, 0xc5372891,
0x19372a64, 0xc52d3d18, 0x19200ee3, 0xc5235ab2,
0x1908ef82, 0xc519815f, 0x18f1cc45, 0xc50fb121,
0x18daa52f, 0xc505e9fb, 0x18c37a44, 0xc4fc2bec,
0x18ac4b87, 0xc4f276f7, 0x189518fc, 0xc4e8cb1e,
0x187de2a7, 0xc4df2862, 0x1866a88a, 0xc4d58ec3,
0x184f6aab, 0xc4cbfe45, 0x1838290c, 0xc4c276e8,
0x1820e3b0, 0xc4b8f8ad, 0x18099a9c, 0xc4af8397,
0x17f24dd3, 0xc4a617a6, 0x17dafd59, 0xc49cb4dd,
0x17c3a931, 0xc4935b3c, 0x17ac515f, 0xc48a0ac4,
0x1794f5e6, 0xc480c379, 0x177d96ca, 0xc477855a,
0x1766340f, 0xc46e5069, 0x174ecdb8, 0xc46524a9,
0x173763c9, 0xc45c0219, 0x171ff646, 0xc452e8bc,
0x17088531, 0xc449d892, 0x16f1108f, 0xc440d19e,
0x16d99864, 0xc437d3e1, 0x16c21cb2, 0xc42edf5c,
0x16aa9d7e, 0xc425f410, 0x16931acb, 0xc41d11ff,
0x167b949d, 0xc414392b, 0x16640af7, 0xc40b6994,
0x164c7ddd, 0xc402a33c, 0x1634ed53, 0xc3f9e624,
0x161d595d, 0xc3f1324e, 0x1605c1fd, 0xc3e887bb,
0x15ee2738, 0xc3dfe66c, 0x15d68911, 0xc3d74e62,
0x15bee78c, 0xc3cebfa0, 0x15a742ac, 0xc3c63a26,
0x158f9a76, 0xc3bdbdf6, 0x1577eeec, 0xc3b54b11,
0x15604013, 0xc3ace178, 0x15488dee, 0xc3a4812c,
0x1530d881, 0xc39c2a2f, 0x15191fcf, 0xc393dc82,
0x150163dc, 0xc38b9827, 0x14e9a4ac, 0xc3835d1e,
0x14d1e242, 0xc37b2b6a, 0x14ba1ca3, 0xc373030a,
0x14a253d1, 0xc36ae401, 0x148a87d1, 0xc362ce50,
0x1472b8a5, 0xc35ac1f7, 0x145ae653, 0xc352bef9,
0x144310dd, 0xc34ac556, 0x142b3846, 0xc342d510,
0x14135c94, 0xc33aee27, 0x13fb7dc9, 0xc333109e,
0x13e39be9, 0xc32b3c75, 0x13cbb6f8, 0xc32371ae,
0x13b3cefa, 0xc31bb049, 0x139be3f2, 0xc313f848,
0x1383f5e3, 0xc30c49ad, 0x136c04d2, 0xc304a477,
0x135410c3, 0xc2fd08a9, 0x133c19b8, 0xc2f57644,
0x13241fb6, 0xc2eded49, 0x130c22c1, 0xc2e66db8,
0x12f422db, 0xc2def794, 0x12dc2009, 0xc2d78add,
0x12c41a4f, 0xc2d02794, 0x12ac11af, 0xc2c8cdbb,
0x1294062f, 0xc2c17d52, 0x127bf7d1, 0xc2ba365c,
0x1263e699, 0xc2b2f8d8, 0x124bd28c, 0xc2abc4c9,
0x1233bbac, 0xc2a49a2e, 0x121ba1fd, 0xc29d790a,
0x12038584, 0xc296615d, 0x11eb6643, 0xc28f5329,
0x11d3443f, 0xc2884e6e, 0x11bb1f7c, 0xc281532e,
0x11a2f7fc, 0xc27a616a, 0x118acdc4, 0xc2737922,
0x1172a0d7, 0xc26c9a58, 0x115a713a, 0xc265c50e,
0x11423ef0, 0xc25ef943, 0x112a09fc, 0xc25836f9,
0x1111d263, 0xc2517e31, 0x10f99827, 0xc24aceed,
0x10e15b4e, 0xc244292c, 0x10c91bda, 0xc23d8cf1,
0x10b0d9d0, 0xc236fa3b, 0x10989532, 0xc230710d,
0x10804e06, 0xc229f167, 0x1068044e, 0xc2237b4b,
0x104fb80e, 0xc21d0eb8, 0x1037694b, 0xc216abb1,
0x101f1807, 0xc2105236, 0x1006c446, 0xc20a0248,
0x0fee6e0d, 0xc203bbe8, 0x0fd6155f, 0xc1fd7f17,
0x0fbdba40, 0xc1f74bd6, 0x0fa55cb4, 0xc1f12227,
0x0f8cfcbe, 0xc1eb0209, 0x0f749a61, 0xc1e4eb7e,
0x0f5c35a3, 0xc1dede87, 0x0f43ce86, 0xc1d8db25,
0x0f2b650f, 0xc1d2e158, 0x0f12f941, 0xc1ccf122,
0x0efa8b20, 0xc1c70a84, 0x0ee21aaf, 0xc1c12d7e,
0x0ec9a7f3, 0xc1bb5a11, 0x0eb132ef, 0xc1b5903f,
0x0e98bba7, 0xc1afd007, 0x0e80421e, 0xc1aa196c,
0x0e67c65a, 0xc1a46c6e, 0x0e4f485c, 0xc19ec90d,
0x0e36c82a, 0xc1992f4c, 0x0e1e45c6, 0xc1939f29,
0x0e05c135, 0xc18e18a7, 0x0ded3a7b, 0xc1889bc6,
0x0dd4b19a, 0xc1832888, 0x0dbc2698, 0xc17dbeec,
0x0da39978, 0xc1785ef4, 0x0d8b0a3d, 0xc17308a1,
0x0d7278eb, 0xc16dbbf3, 0x0d59e586, 0xc16878eb,
0x0d415013, 0xc1633f8a, 0x0d28b894, 0xc15e0fd1,
0x0d101f0e, 0xc158e9c1, 0x0cf78383, 0xc153cd5a,
0x0cdee5f9, 0xc14eba9d, 0x0cc64673, 0xc149b18b,
0x0cada4f5, 0xc144b225, 0x0c950182, 0xc13fbc6c,
0x0c7c5c1e, 0xc13ad060, 0x0c63b4ce, 0xc135ee02,
0x0c4b0b94, 0xc1311553, 0x0c326075, 0xc12c4653,
0x0c19b374, 0xc1278104, 0x0c010496, 0xc122c566,
0x0be853de, 0xc11e1379, 0x0bcfa150, 0xc1196b3f,
0x0bb6ecef, 0xc114ccb9, 0x0b9e36c0, 0xc11037e6,
0x0b857ec7, 0xc10bacc8, 0x0b6cc506, 0xc1072b5f,
0x0b540982, 0xc102b3ac, 0x0b3b4c40, 0xc0fe45b0,
0x0b228d42, 0xc0f9e16b, 0x0b09cc8c, 0xc0f586df,
0x0af10a22, 0xc0f1360b, 0x0ad84609, 0xc0eceef1,
0x0abf8043, 0xc0e8b190, 0x0aa6b8d5, 0xc0e47deb,
0x0a8defc3, 0xc0e05401, 0x0a752510, 0xc0dc33d2,
0x0a5c58c0, 0xc0d81d61, 0x0a438ad7, 0xc0d410ad,
0x0a2abb59, 0xc0d00db6, 0x0a11ea49, 0xc0cc147f,
0x09f917ac, 0xc0c82506, 0x09e04385, 0xc0c43f4d,
0x09c76dd8, 0xc0c06355, 0x09ae96aa, 0xc0bc911d,
0x0995bdfd, 0xc0b8c8a7, 0x097ce3d5, 0xc0b509f3,
0x09640837, 0xc0b15502, 0x094b2b27, 0xc0ada9d4,
0x09324ca7, 0xc0aa086a, 0x09196cbc, 0xc0a670c4,
0x09008b6a, 0xc0a2e2e3, 0x08e7a8b5, 0xc09f5ec8,
0x08cec4a0, 0xc09be473, 0x08b5df30, 0xc09873e4,
0x089cf867, 0xc0950d1d, 0x0884104b, 0xc091b01d,
0x086b26de, 0xc08e5ce5, 0x08523c25, 0xc08b1376,
0x08395024, 0xc087d3d0, 0x082062de, 0xc0849df4,
0x08077457, 0xc08171e2, 0x07ee8493, 0xc07e4f9b,
0x07d59396, 0xc07b371e, 0x07bca163, 0xc078286e,
0x07a3adff, 0xc0752389, 0x078ab96e, 0xc0722871,
0x0771c3b3, 0xc06f3726, 0x0758ccd2, 0xc06c4fa8,
0x073fd4cf, 0xc06971f9, 0x0726dbae, 0xc0669e18,
0x070de172, 0xc063d405, 0x06f4e620, 0xc06113c2,
0x06dbe9bb, 0xc05e5d4e, 0x06c2ec48, 0xc05bb0ab,
0x06a9edc9, 0xc0590dd8, 0x0690ee44, 0xc05674d6,
0x0677edbb, 0xc053e5a5, 0x065eec33, 0xc0516045,
0x0645e9af, 0xc04ee4b8, 0x062ce634, 0xc04c72fe,
0x0613e1c5, 0xc04a0b16, 0x05fadc66, 0xc047ad01,
0x05e1d61b, 0xc04558c0, 0x05c8cee7, 0xc0430e53,
0x05afc6d0, 0xc040cdba, 0x0596bdd7, 0xc03e96f6,
0x057db403, 0xc03c6a07, 0x0564a955, 0xc03a46ed,
0x054b9dd3, 0xc0382da8, 0x0532917f, 0xc0361e3a,
0x0519845e, 0xc03418a2, 0x05007674, 0xc0321ce0,
0x04e767c5, 0xc0302af5, 0x04ce5854, 0xc02e42e2,
0x04b54825, 0xc02c64a6, 0x049c373c, 0xc02a9042,
0x0483259d, 0xc028c5b6, 0x046a134c, 0xc0270502,
0x0451004d, 0xc0254e27, 0x0437eca4, 0xc023a124,
0x041ed854, 0xc021fdfb, 0x0405c361, 0xc02064ab,
0x03ecadcf, 0xc01ed535, 0x03d397a3, 0xc01d4f99,
0x03ba80df, 0xc01bd3d6, 0x03a16988, 0xc01a61ee,
0x038851a2, 0xc018f9e1, 0x036f3931, 0xc0179bae,
0x03562038, 0xc0164757, 0x033d06bb, 0xc014fcda,
0x0323ecbe, 0xc013bc39, 0x030ad245, 0xc0128574,
0x02f1b755, 0xc011588a, 0x02d89bf0, 0xc010357c,
0x02bf801a, 0xc00f1c4a, 0x02a663d8, 0xc00e0cf5,
0x028d472e, 0xc00d077c, 0x02742a1f, 0xc00c0be0,
0x025b0caf, 0xc00b1a20, 0x0241eee2, 0xc00a323d,
0x0228d0bb, 0xc0095438, 0x020fb240, 0xc008800f,
0x01f69373, 0xc007b5c4, 0x01dd7459, 0xc006f556,
0x01c454f5, 0xc0063ec6, 0x01ab354b, 0xc0059214,
0x0192155f, 0xc004ef3f, 0x0178f536, 0xc0045648,
0x015fd4d2, 0xc003c72f, 0x0146b438, 0xc00341f4,
0x012d936c, 0xc002c697, 0x01147271, 0xc0025519,
0x00fb514b, 0xc001ed78, 0x00e22fff, 0xc0018fb6,
0x00c90e90, 0xc0013bd3, 0x00afed02, 0xc000f1ce,
0x0096cb58, 0xc000b1a7, 0x007da998, 0xc0007b5f,
0x006487c4, 0xc0004ef5, 0x004b65e1, 0xc0002c6a,
0x003243f1, 0xc00013bd, 0x001921fb, 0xc00004ef,
0x00000000, 0xc0000000, 0xffe6de05, 0xc00004ef,
0xffcdbc0f, 0xc00013bd, 0xffb49a1f, 0xc0002c6a,
0xff9b783c, 0xc0004ef5, 0xff825668, 0xc0007b5f,
0xff6934a8, 0xc000b1a7, 0xff5012fe, 0xc000f1ce,
0xff36f170, 0xc0013bd3, 0xff1dd001, 0xc0018fb6,
0xff04aeb5, 0xc001ed78, 0xfeeb8d8f, 0xc0025519,
0xfed26c94, 0xc002c697, 0xfeb94bc8, 0xc00341f4,
0xfea02b2e, 0xc003c72f, 0xfe870aca, 0xc0045648,
0xfe6deaa1, 0xc004ef3f, 0xfe54cab5, 0xc0059214,
0xfe3bab0b, 0xc0063ec6, 0xfe228ba7, 0xc006f556,
0xfe096c8d, 0xc007b5c4, 0xfdf04dc0, 0xc008800f,
0xfdd72f45, 0xc0095438, 0xfdbe111e, 0xc00a323d,
0xfda4f351, 0xc00b1a20, 0xfd8bd5e1, 0xc00c0be0,
0xfd72b8d2, 0xc00d077c, 0xfd599c28, 0xc00e0cf5,
0xfd407fe6, 0xc00f1c4a, 0xfd276410, 0xc010357c,
0xfd0e48ab, 0xc011588a, 0xfcf52dbb, 0xc0128574,
0xfcdc1342, 0xc013bc39, 0xfcc2f945, 0xc014fcda,
0xfca9dfc8, 0xc0164757, 0xfc90c6cf, 0xc0179bae,
0xfc77ae5e, 0xc018f9e1, 0xfc5e9678, 0xc01a61ee,
0xfc457f21, 0xc01bd3d6, 0xfc2c685d, 0xc01d4f99,
0xfc135231, 0xc01ed535, 0xfbfa3c9f, 0xc02064ab,
0xfbe127ac, 0xc021fdfb, 0xfbc8135c, 0xc023a124,
0xfbaeffb3, 0xc0254e27, 0xfb95ecb4, 0xc0270502,
0xfb7cda63, 0xc028c5b6, 0xfb63c8c4, 0xc02a9042,
0xfb4ab7db, 0xc02c64a6, 0xfb31a7ac, 0xc02e42e2,
0xfb18983b, 0xc0302af5, 0xfaff898c, 0xc0321ce0,
0xfae67ba2, 0xc03418a2, 0xfacd6e81, 0xc0361e3a,
0xfab4622d, 0xc0382da8, 0xfa9b56ab, 0xc03a46ed,
0xfa824bfd, 0xc03c6a07, 0xfa694229, 0xc03e96f6,
0xfa503930, 0xc040cdba, 0xfa373119, 0xc0430e53,
0xfa1e29e5, 0xc04558c0, 0xfa05239a, 0xc047ad01,
0xf9ec1e3b, 0xc04a0b16, 0xf9d319cc, 0xc04c72fe,
0xf9ba1651, 0xc04ee4b8, 0xf9a113cd, 0xc0516045,
0xf9881245, 0xc053e5a5, 0xf96f11bc, 0xc05674d6,
0xf9561237, 0xc0590dd8, 0xf93d13b8, 0xc05bb0ab,
0xf9241645, 0xc05e5d4e, 0xf90b19e0, 0xc06113c2,
0xf8f21e8e, 0xc063d405, 0xf8d92452, 0xc0669e18,
0xf8c02b31, 0xc06971f9, 0xf8a7332e, 0xc06c4fa8,
0xf88e3c4d, 0xc06f3726, 0xf8754692, 0xc0722871,
0xf85c5201, 0xc0752389, 0xf8435e9d, 0xc078286e,
0xf82a6c6a, 0xc07b371e, 0xf8117b6d, 0xc07e4f9b,
0xf7f88ba9, 0xc08171e2, 0xf7df9d22, 0xc0849df4,
0xf7c6afdc, 0xc087d3d0, 0xf7adc3db, 0xc08b1376,
0xf794d922, 0xc08e5ce5, 0xf77befb5, 0xc091b01d,
0xf7630799, 0xc0950d1d, 0xf74a20d0, 0xc09873e4,
0xf7313b60, 0xc09be473, 0xf718574b, 0xc09f5ec8,
0xf6ff7496, 0xc0a2e2e3, 0xf6e69344, 0xc0a670c4,
0xf6cdb359, 0xc0aa086a, 0xf6b4d4d9, 0xc0ada9d4,
0xf69bf7c9, 0xc0b15502, 0xf6831c2b, 0xc0b509f3,
0xf66a4203, 0xc0b8c8a7, 0xf6516956, 0xc0bc911d,
0xf6389228, 0xc0c06355, 0xf61fbc7b, 0xc0c43f4d,
0xf606e854, 0xc0c82506, 0xf5ee15b7, 0xc0cc147f,
0xf5d544a7, 0xc0d00db6, 0xf5bc7529, 0xc0d410ad,
0xf5a3a740, 0xc0d81d61, 0xf58adaf0, 0xc0dc33d2,
0xf572103d, 0xc0e05401, 0xf559472b, 0xc0e47deb,
0xf5407fbd, 0xc0e8b190, 0xf527b9f7, 0xc0eceef1,
0xf50ef5de, 0xc0f1360b, 0xf4f63374, 0xc0f586df,
0xf4dd72be, 0xc0f9e16b, 0xf4c4b3c0, 0xc0fe45b0,
0xf4abf67e, 0xc102b3ac, 0xf4933afa, 0xc1072b5f,
0xf47a8139, 0xc10bacc8, 0xf461c940, 0xc11037e6,
0xf4491311, 0xc114ccb9, 0xf4305eb0, 0xc1196b3f,
0xf417ac22, 0xc11e1379, 0xf3fefb6a, 0xc122c566,
0xf3e64c8c, 0xc1278104, 0xf3cd9f8b, 0xc12c4653,
0xf3b4f46c, 0xc1311553, 0xf39c4b32, 0xc135ee02,
0xf383a3e2, 0xc13ad060, 0xf36afe7e, 0xc13fbc6c,
0xf3525b0b, 0xc144b225, 0xf339b98d, 0xc149b18b,
0xf3211a07, 0xc14eba9d, 0xf3087c7d, 0xc153cd5a,
0xf2efe0f2, 0xc158e9c1, 0xf2d7476c, 0xc15e0fd1,
0xf2beafed, 0xc1633f8a, 0xf2a61a7a, 0xc16878eb,
0xf28d8715, 0xc16dbbf3, 0xf274f5c3, 0xc17308a1,
0xf25c6688, 0xc1785ef4, 0xf243d968, 0xc17dbeec,
0xf22b4e66, 0xc1832888, 0xf212c585, 0xc1889bc6,
0xf1fa3ecb, 0xc18e18a7, 0xf1e1ba3a, 0xc1939f29,
0xf1c937d6, 0xc1992f4c, 0xf1b0b7a4, 0xc19ec90d,
0xf19839a6, 0xc1a46c6e, 0xf17fbde2, 0xc1aa196c,
0xf1674459, 0xc1afd007, 0xf14ecd11, 0xc1b5903f,
0xf136580d, 0xc1bb5a11, 0xf11de551, 0xc1c12d7e,
0xf10574e0, 0xc1c70a84, 0xf0ed06bf, 0xc1ccf122,
0xf0d49af1, 0xc1d2e158, 0xf0bc317a, 0xc1d8db25,
0xf0a3ca5d, 0xc1dede87, 0xf08b659f, 0xc1e4eb7e,
0xf0730342, 0xc1eb0209, 0xf05aa34c, 0xc1f12227,
0xf04245c0, 0xc1f74bd6, 0xf029eaa1, 0xc1fd7f17,
0xf01191f3, 0xc203bbe8, 0xeff93bba, 0xc20a0248,
0xefe0e7f9, 0xc2105236, 0xefc896b5, 0xc216abb1,
0xefb047f2, 0xc21d0eb8, 0xef97fbb2, 0xc2237b4b,
0xef7fb1fa, 0xc229f167, 0xef676ace, 0xc230710d,
0xef4f2630, 0xc236fa3b, 0xef36e426, 0xc23d8cf1,
0xef1ea4b2, 0xc244292c, 0xef0667d9, 0xc24aceed,
0xeeee2d9d, 0xc2517e31, 0xeed5f604, 0xc25836f9,
0xeebdc110, 0xc25ef943, 0xeea58ec6, 0xc265c50e,
0xee8d5f29, 0xc26c9a58, 0xee75323c, 0xc2737922,
0xee5d0804, 0xc27a616a, 0xee44e084, 0xc281532e,
0xee2cbbc1, 0xc2884e6e, 0xee1499bd, 0xc28f5329,
0xedfc7a7c, 0xc296615d, 0xede45e03, 0xc29d790a,
0xedcc4454, 0xc2a49a2e, 0xedb42d74, 0xc2abc4c9,
0xed9c1967, 0xc2b2f8d8, 0xed84082f, 0xc2ba365c,
0xed6bf9d1, 0xc2c17d52, 0xed53ee51, 0xc2c8cdbb,
0xed3be5b1, 0xc2d02794, 0xed23dff7, 0xc2d78add,
0xed0bdd25, 0xc2def794, 0xecf3dd3f, 0xc2e66db8,
0xecdbe04a, 0xc2eded49, 0xecc3e648, 0xc2f57644,
0xecabef3d, 0xc2fd08a9, 0xec93fb2e, 0xc304a477,
0xec7c0a1d, 0xc30c49ad, 0xec641c0e, 0xc313f848,
0xec4c3106, 0xc31bb049, 0xec344908, 0xc32371ae,
0xec1c6417, 0xc32b3c75, 0xec048237, 0xc333109e,
0xebeca36c, 0xc33aee27, 0xebd4c7ba, 0xc342d510,
0xebbcef23, 0xc34ac556, 0xeba519ad, 0xc352bef9,
0xeb8d475b, 0xc35ac1f7, 0xeb75782f, 0xc362ce50,
0xeb5dac2f, 0xc36ae401, 0xeb45e35d, 0xc373030a,
0xeb2e1dbe, 0xc37b2b6a, 0xeb165b54, 0xc3835d1e,
0xeafe9c24, 0xc38b9827, 0xeae6e031, 0xc393dc82,
0xeacf277f, 0xc39c2a2f, 0xeab77212, 0xc3a4812c,
0xea9fbfed, 0xc3ace178, 0xea881114, 0xc3b54b11,
0xea70658a, 0xc3bdbdf6, 0xea58bd54, 0xc3c63a26,
0xea411874, 0xc3cebfa0, 0xea2976ef, 0xc3d74e62,
0xea11d8c8, 0xc3dfe66c, 0xe9fa3e03, 0xc3e887bb,
0xe9e2a6a3, 0xc3f1324e, 0xe9cb12ad, 0xc3f9e624,
0xe9b38223, 0xc402a33c, 0xe99bf509, 0xc40b6994,
0xe9846b63, 0xc414392b, 0xe96ce535, 0xc41d11ff,
0xe9556282, 0xc425f410, 0xe93de34e, 0xc42edf5c,
0xe926679c, 0xc437d3e1, 0xe90eef71, 0xc440d19e,
0xe8f77acf, 0xc449d892, 0xe8e009ba, 0xc452e8bc,
0xe8c89c37, 0xc45c0219, 0xe8b13248, 0xc46524a9,
0xe899cbf1, 0xc46e5069, 0xe8826936, 0xc477855a,
0xe86b0a1a, 0xc480c379, 0xe853aea1, 0xc48a0ac4,
0xe83c56cf, 0xc4935b3c, 0xe82502a7, 0xc49cb4dd,
0xe80db22d, 0xc4a617a6, 0xe7f66564, 0xc4af8397,
0xe7df1c50, 0xc4b8f8ad, 0xe7c7d6f4, 0xc4c276e8,
0xe7b09555, 0xc4cbfe45, 0xe7995776, 0xc4d58ec3,
0xe7821d59, 0xc4df2862, 0xe76ae704, 0xc4e8cb1e,
0xe753b479, 0xc4f276f7, 0xe73c85bc, 0xc4fc2bec,
0xe7255ad1, 0xc505e9fb, 0xe70e33bb, 0xc50fb121,
0xe6f7107e, 0xc519815f, 0xe6dff11d, 0xc5235ab2,
0xe6c8d59c, 0xc52d3d18, 0xe6b1bdff, 0xc5372891,
0xe69aaa48, 0xc5411d1b, 0xe6839a7c, 0xc54b1ab4,
0xe66c8e9f, 0xc555215a, 0xe65586b3, 0xc55f310d,
0xe63e82bc, 0xc56949ca, 0xe62782be, 0xc5736b90,
0xe61086bc, 0xc57d965d, 0xe5f98ebb, 0xc587ca31,
0xe5e29abc, 0xc5920708, 0xe5cbaac5, 0xc59c4ce3,
0xe5b4bed8, 0xc5a69bbe, 0xe59dd6f9, 0xc5b0f399,
0xe586f32c, 0xc5bb5472, 0xe5701374, 0xc5c5be47,
0xe55937d5, 0xc5d03118, 0xe5426051, 0xc5daace1,
0xe52b8cee, 0xc5e531a1, 0xe514bdad, 0xc5efbf58,
0xe4fdf294, 0xc5fa5603, 0xe4e72ba4, 0xc604f5a0,
0xe4d068e2, 0xc60f9e2e, 0xe4b9aa52, 0xc61a4fac,
0xe4a2eff6, 0xc6250a18, 0xe48c39d3, 0xc62fcd6f,
0xe47587eb, 0xc63a99b1, 0xe45eda43, 0xc6456edb,
0xe44830dd, 0xc6504ced, 0xe4318bbe, 0xc65b33e4,
0xe41aeae8, 0xc66623be, 0xe4044e60, 0xc6711c7b,
0xe3edb628, 0xc67c1e18, 0xe3d72245, 0xc6872894,
0xe3c092b9, 0xc6923bec, 0xe3aa0788, 0xc69d5820,
0xe39380b6, 0xc6a87d2d, 0xe37cfe47, 0xc6b3ab12,
0xe366803c, 0xc6bee1cd, 0xe350069b, 0xc6ca215c,
0xe3399167, 0xc6d569be, 0xe32320a2, 0xc6e0baf0,
0xe30cb451, 0xc6ec14f2, 0xe2f64c77, 0xc6f777c1,
0xe2dfe917, 0xc702e35c, 0xe2c98a35, 0xc70e57c0,
0xe2b32fd4, 0xc719d4ed, 0xe29cd9f8, 0xc7255ae0,
0xe28688a4, 0xc730e997, 0xe2703bdc, 0xc73c8111,
0xe259f3a3, 0xc748214c, 0xe243affc, 0xc753ca46,
0xe22d70eb, 0xc75f7bfe, 0xe2173674, 0xc76b3671,
0xe2010099, 0xc776f99d, 0xe1eacf5f, 0xc782c582,
0xe1d4a2c8, 0xc78e9a1d, 0xe1be7ad8, 0xc79a776c,
0xe1a85793, 0xc7a65d6e, 0xe19238fb, 0xc7b24c20,
0xe17c1f15, 0xc7be4381, 0xe16609e3, 0xc7ca438f,
0xe14ff96a, 0xc7d64c47, 0xe139edac, 0xc7e25daa,
0xe123e6ad, 0xc7ee77b3, 0xe10de470, 0xc7fa9a62,
0xe0f7e6f9, 0xc806c5b5, 0xe0e1ee4b, 0xc812f9a9,
0xe0cbfa6a, 0xc81f363d, 0xe0b60b58, 0xc82b7b70,
0xe0a0211a, 0xc837c93e, 0xe08a3bb2, 0xc8441fa6,
0xe0745b24, 0xc8507ea7, 0xe05e7f74, 0xc85ce63e,
0xe048a8a4, 0xc869566a, 0xe032d6b8, 0xc875cf28,
0xe01d09b4, 0xc8825077, 0xe007419b, 0xc88eda54,
0xdff17e70, 0xc89b6cbf, 0xdfdbc036, 0xc8a807b4,
0xdfc606f1, 0xc8b4ab32, 0xdfb052a5, 0xc8c15736,
0xdf9aa354, 0xc8ce0bc0, 0xdf84f902, 0xc8dac8cd,
0xdf6f53b3, 0xc8e78e5b, 0xdf59b369, 0xc8f45c68,
0xdf441828, 0xc90132f2, 0xdf2e81f3, 0xc90e11f7,
0xdf18f0ce, 0xc91af976, 0xdf0364bc, 0xc927e96b,
0xdeedddc0, 0xc934e1d6, 0xded85bdd, 0xc941e2b4,
0xdec2df18, 0xc94eec03, 0xdead6773, 0xc95bfdc1,
0xde97f4f1, 0xc96917ec, 0xde828796, 0xc9763a83,
0xde6d1f65, 0xc9836582, 0xde57bc62, 0xc99098e9,
0xde425e8f, 0xc99dd4b4, 0xde2d05f1, 0xc9ab18e3,
0xde17b28a, 0xc9b86572, 0xde02645d, 0xc9c5ba60,
0xdded1b6e, 0xc9d317ab, 0xddd7d7c1, 0xc9e07d51,
0xddc29958, 0xc9edeb50, 0xddad6036, 0xc9fb61a5,
0xdd982c60, 0xca08e04f, 0xdd82fdd8, 0xca16674b,
0xdd6dd4a2, 0xca23f698, 0xdd58b0c0, 0xca318e32,
0xdd439236, 0xca3f2e19, 0xdd2e7908, 0xca4cd64b,
0xdd196538, 0xca5a86c4, 0xdd0456ca, 0xca683f83,
0xdcef4dc2, 0xca760086, 0xdcda4a21, 0xca83c9ca,
0xdcc54bec, 0xca919b4e, 0xdcb05326, 0xca9f750f,
0xdc9b5fd2, 0xcaad570c, 0xdc8671f3, 0xcabb4141,
0xdc71898d, 0xcac933ae, 0xdc5ca6a2, 0xcad72e4f,
0xdc47c936, 0xcae53123, 0xdc32f14d, 0xcaf33c28,
0xdc1e1ee9, 0xcb014f5b, 0xdc09520d, 0xcb0f6aba,
0xdbf48abd, 0xcb1d8e43, 0xdbdfc8fc, 0xcb2bb9f4,
0xdbcb0cce, 0xcb39edca, 0xdbb65634, 0xcb4829c4,
0xdba1a534, 0xcb566ddf, 0xdb8cf9cf, 0xcb64ba19,
0xdb785409, 0xcb730e70, 0xdb63b3e5, 0xcb816ae1,
0xdb4f1967, 0xcb8fcf6b, 0xdb3a8491, 0xcb9e3c0b,
0xdb25f566, 0xcbacb0bf, 0xdb116beb, 0xcbbb2d85,
0xdafce821, 0xcbc9b25a, 0xdae86a0d, 0xcbd83f3d,
0xdad3f1b1, 0xcbe6d42b, 0xdabf7f11, 0xcbf57121,
0xdaab122f, 0xcc04161e, 0xda96ab0f, 0xcc12c31f,
0xda8249b4, 0xcc217822, 0xda6dee21, 0xcc303524,
0xda599859, 0xcc3efa25, 0xda454860, 0xcc4dc720,
0xda30fe38, 0xcc5c9c14, 0xda1cb9e5, 0xcc6b78ff,
0xda087b69, 0xcc7a5dde, 0xd9f442c9, 0xcc894aaf,
0xd9e01006, 0xcc983f70, 0xd9cbe325, 0xcca73c1e,
0xd9b7bc27, 0xccb640b8, 0xd9a39b11, 0xccc54d3a,
0xd98f7fe6, 0xccd461a2, 0xd97b6aa8, 0xcce37def,
0xd9675b5a, 0xccf2a21d, 0xd9535201, 0xcd01ce2b,
0xd93f4e9e, 0xcd110216, 0xd92b5135, 0xcd203ddc,
0xd91759c9, 0xcd2f817b, 0xd903685d, 0xcd3eccef,
0xd8ef7cf4, 0xcd4e2037, 0xd8db9792, 0xcd5d7b50,
0xd8c7b838, 0xcd6cde39, 0xd8b3deeb, 0xcd7c48ee,
0xd8a00bae, 0xcd8bbb6d, 0xd88c3e83, 0xcd9b35b4,
0xd878776d, 0xcdaab7c0, 0xd864b670, 0xcdba4190,
0xd850fb8e, 0xcdc9d320, 0xd83d46cc, 0xcdd96c6f,
0xd829982b, 0xcde90d79, 0xd815efae, 0xcdf8b63d,
0xd8024d59, 0xce0866b8, 0xd7eeb130, 0xce181ee8,
0xd7db1b34, 0xce27dec9, 0xd7c78b68, 0xce37a65b,
0xd7b401d1, 0xce47759a, 0xd7a07e70, 0xce574c84,
0xd78d014a, 0xce672b16, 0xd7798a60, 0xce77114e,
0xd76619b6, 0xce86ff2a, 0xd752af4f, 0xce96f4a7,
0xd73f4b2e, 0xcea6f1c2, 0xd72bed55, 0xceb6f67a,
0xd71895c9, 0xcec702cb, 0xd705448b, 0xced716b4,
0xd6f1f99f, 0xcee73231, 0xd6deb508, 0xcef75541,
0xd6cb76c9, 0xcf077fe1, 0xd6b83ee4, 0xcf17b20d,
0xd6a50d5d, 0xcf27ebc5, 0xd691e237, 0xcf382d05,
0xd67ebd74, 0xcf4875ca, 0xd66b9f18, 0xcf58c613,
0xd6588725, 0xcf691ddd, 0xd645759f, 0xcf797d24,
0xd6326a88, 0xcf89e3e8, 0xd61f65e4, 0xcf9a5225,
0xd60c67b4, 0xcfaac7d8, 0xd5f96ffd, 0xcfbb4500,
0xd5e67ec1, 0xcfcbc999, 0xd5d39403, 0xcfdc55a1,
0xd5c0afc6, 0xcfece915, 0xd5add20d, 0xcffd83f4,
0xd59afadb, 0xd00e2639, 0xd5882a32, 0xd01ecfe4,
0xd5756016, 0xd02f80f1, 0xd5629c89, 0xd040395d,
0xd54fdf8f, 0xd050f926, 0xd53d292a, 0xd061c04a,
0xd52a795d, 0xd0728ec6, 0xd517d02b, 0xd0836497,
0xd5052d97, 0xd09441bb, 0xd4f291a4, 0xd0a5262f,
0xd4dffc54, 0xd0b611f1, 0xd4cd6dab, 0xd0c704fd,
0xd4bae5ab, 0xd0d7ff51, 0xd4a86458, 0xd0e900ec,
0xd495e9b3, 0xd0fa09c9, 0xd48375c1, 0xd10b19e7,
0xd4710883, 0xd11c3142, 0xd45ea1fd, 0xd12d4fd9,
0xd44c4232, 0xd13e75a8, 0xd439e923, 0xd14fa2ad,
0xd42796d5, 0xd160d6e5, 0xd4154b4a, 0xd172124d,
0xd4030684, 0xd18354e4, 0xd3f0c887, 0xd1949ea6,
0xd3de9156, 0xd1a5ef90, 0xd3cc60f2, 0xd1b747a0,
0xd3ba3760, 0xd1c8a6d4, 0xd3a814a2, 0xd1da0d28,
0xd395f8ba, 0xd1eb7a9a, 0xd383e3ab, 0xd1fcef27,
0xd371d579, 0xd20e6acc, 0xd35fce26, 0xd21fed88,
0xd34dcdb4, 0xd2317756, 0xd33bd427, 0xd2430835,
0xd329e181, 0xd254a021, 0xd317f5c6, 0xd2663f19,
0xd30610f7, 0xd277e518, 0xd2f43318, 0xd289921e,
0xd2e25c2b, 0xd29b4626, 0xd2d08c33, 0xd2ad012e,
0xd2bec333, 0xd2bec333, 0xd2ad012e, 0xd2d08c33,
0xd29b4626, 0xd2e25c2b, 0xd289921e, 0xd2f43318,
0xd277e518, 0xd30610f7, 0xd2663f19, 0xd317f5c6,
0xd254a021, 0xd329e181, 0xd2430835, 0xd33bd427,
0xd2317756, 0xd34dcdb4, 0xd21fed88, 0xd35fce26,
0xd20e6acc, 0xd371d579, 0xd1fcef27, 0xd383e3ab,
0xd1eb7a9a, 0xd395f8ba, 0xd1da0d28, 0xd3a814a2,
0xd1c8a6d4, 0xd3ba3760, 0xd1b747a0, 0xd3cc60f2,
0xd1a5ef90, 0xd3de9156, 0xd1949ea6, 0xd3f0c887,
0xd18354e4, 0xd4030684, 0xd172124d, 0xd4154b4a,
0xd160d6e5, 0xd42796d5, 0xd14fa2ad, 0xd439e923,
0xd13e75a8, 0xd44c4232, 0xd12d4fd9, 0xd45ea1fd,
0xd11c3142, 0xd4710883, 0xd10b19e7, 0xd48375c1,
0xd0fa09c9, 0xd495e9b3, 0xd0e900ec, 0xd4a86458,
0xd0d7ff51, 0xd4bae5ab, 0xd0c704fd, 0xd4cd6dab,
0xd0b611f1, 0xd4dffc54, 0xd0a5262f, 0xd4f291a4,
0xd09441bb, 0xd5052d97, 0xd0836497, 0xd517d02b,
0xd0728ec6, 0xd52a795d, 0xd061c04a, 0xd53d292a,
0xd050f926, 0xd54fdf8f, 0xd040395d, 0xd5629c89,
0xd02f80f1, 0xd5756016, 0xd01ecfe4, 0xd5882a32,
0xd00e2639, 0xd59afadb, 0xcffd83f4, 0xd5add20d,
0xcfece915, 0xd5c0afc6, 0xcfdc55a1, 0xd5d39403,
0xcfcbc999, 0xd5e67ec1, 0xcfbb4500, 0xd5f96ffd,
0xcfaac7d8, 0xd60c67b4, 0xcf9a5225, 0xd61f65e4,
0xcf89e3e8, 0xd6326a88, 0xcf797d24, 0xd645759f,
0xcf691ddd, 0xd6588725, 0xcf58c613, 0xd66b9f18,
0xcf4875ca, 0xd67ebd74, 0xcf382d05, 0xd691e237,
0xcf27ebc5, 0xd6a50d5d, 0xcf17b20d, 0xd6b83ee4,
0xcf077fe1, 0xd6cb76c9, 0xcef75541, 0xd6deb508,
0xcee73231, 0xd6f1f99f, 0xced716b4, 0xd705448b,
0xcec702cb, 0xd71895c9, 0xceb6f67a, 0xd72bed55,
0xcea6f1c2, 0xd73f4b2e, 0xce96f4a7, 0xd752af4f,
0xce86ff2a, 0xd76619b6, 0xce77114e, 0xd7798a60,
0xce672b16, 0xd78d014a, 0xce574c84, 0xd7a07e70,
0xce47759a, 0xd7b401d1, 0xce37a65b, 0xd7c78b68,
0xce27dec9, 0xd7db1b34, 0xce181ee8, 0xd7eeb130,
0xce0866b8, 0xd8024d59, 0xcdf8b63d, 0xd815efae,
0xcde90d79, 0xd829982b, 0xcdd96c6f, 0xd83d46cc,
0xcdc9d320, 0xd850fb8e, 0xcdba4190, 0xd864b670,
0xcdaab7c0, 0xd878776d, 0xcd9b35b4, 0xd88c3e83,
0xcd8bbb6d, 0xd8a00bae, 0xcd7c48ee, 0xd8b3deeb,
0xcd6cde39, 0xd8c7b838, 0xcd5d7b50, 0xd8db9792,
0xcd4e2037, 0xd8ef7cf4, 0xcd3eccef, 0xd903685d,
0xcd2f817b, 0xd91759c9, 0xcd203ddc, 0xd92b5135,
0xcd110216, 0xd93f4e9e, 0xcd01ce2b, 0xd9535201,
0xccf2a21d, 0xd9675b5a, 0xcce37def, 0xd97b6aa8,
0xccd461a2, 0xd98f7fe6, 0xccc54d3a, 0xd9a39b11,
0xccb640b8, 0xd9b7bc27, 0xcca73c1e, 0xd9cbe325,
0xcc983f70, 0xd9e01006, 0xcc894aaf, 0xd9f442c9,
0xcc7a5dde, 0xda087b69, 0xcc6b78ff, 0xda1cb9e5,
0xcc5c9c14, 0xda30fe38, 0xcc4dc720, 0xda454860,
0xcc3efa25, 0xda599859, 0xcc303524, 0xda6dee21,
0xcc217822, 0xda8249b4, 0xcc12c31f, 0xda96ab0f,
0xcc04161e, 0xdaab122f, 0xcbf57121, 0xdabf7f11,
0xcbe6d42b, 0xdad3f1b1, 0xcbd83f3d, 0xdae86a0d,
0xcbc9b25a, 0xdafce821, 0xcbbb2d85, 0xdb116beb,
0xcbacb0bf, 0xdb25f566, 0xcb9e3c0b, 0xdb3a8491,
0xcb8fcf6b, 0xdb4f1967, 0xcb816ae1, 0xdb63b3e5,
0xcb730e70, 0xdb785409, 0xcb64ba19, 0xdb8cf9cf,
0xcb566ddf, 0xdba1a534, 0xcb4829c4, 0xdbb65634,
0xcb39edca, 0xdbcb0cce, 0xcb2bb9f4, 0xdbdfc8fc,
0xcb1d8e43, 0xdbf48abd, 0xcb0f6aba, 0xdc09520d,
0xcb014f5b, 0xdc1e1ee9, 0xcaf33c28, 0xdc32f14d,
0xcae53123, 0xdc47c936, 0xcad72e4f, 0xdc5ca6a2,
0xcac933ae, 0xdc71898d, 0xcabb4141, 0xdc8671f3,
0xcaad570c, 0xdc9b5fd2, 0xca9f750f, 0xdcb05326,
0xca919b4e, 0xdcc54bec, 0xca83c9ca, 0xdcda4a21,
0xca760086, 0xdcef4dc2, 0xca683f83, 0xdd0456ca,
0xca5a86c4, 0xdd196538, 0xca4cd64b, 0xdd2e7908,
0xca3f2e19, 0xdd439236, 0xca318e32, 0xdd58b0c0,
0xca23f698, 0xdd6dd4a2, 0xca16674b, 0xdd82fdd8,
0xca08e04f, 0xdd982c60, 0xc9fb61a5, 0xddad6036,
0xc9edeb50, 0xddc29958, 0xc9e07d51, 0xddd7d7c1,
0xc9d317ab, 0xdded1b6e, 0xc9c5ba60, 0xde02645d,
0xc9b86572, 0xde17b28a, 0xc9ab18e3, 0xde2d05f1,
0xc99dd4b4, 0xde425e8f, 0xc99098e9, 0xde57bc62,
0xc9836582, 0xde6d1f65, 0xc9763a83, 0xde828796,
0xc96917ec, 0xde97f4f1, 0xc95bfdc1, 0xdead6773,
0xc94eec03, 0xdec2df18, 0xc941e2b4, 0xded85bdd,
0xc934e1d6, 0xdeedddc0, 0xc927e96b, 0xdf0364bc,
0xc91af976, 0xdf18f0ce, 0xc90e11f7, 0xdf2e81f3,
0xc90132f2, 0xdf441828, 0xc8f45c68, 0xdf59b369,
0xc8e78e5b, 0xdf6f53b3, 0xc8dac8cd, 0xdf84f902,
0xc8ce0bc0, 0xdf9aa354, 0xc8c15736, 0xdfb052a5,
0xc8b4ab32, 0xdfc606f1, 0xc8a807b4, 0xdfdbc036,
0xc89b6cbf, 0xdff17e70, 0xc88eda54, 0xe007419b,
0xc8825077, 0xe01d09b4, 0xc875cf28, 0xe032d6b8,
0xc869566a, 0xe048a8a4, 0xc85ce63e, 0xe05e7f74,
0xc8507ea7, 0xe0745b24, 0xc8441fa6, 0xe08a3bb2,
0xc837c93e, 0xe0a0211a, 0xc82b7b70, 0xe0b60b58,
0xc81f363d, 0xe0cbfa6a, 0xc812f9a9, 0xe0e1ee4b,
0xc806c5b5, 0xe0f7e6f9, 0xc7fa9a62, 0xe10de470,
0xc7ee77b3, 0xe123e6ad, 0xc7e25daa, 0xe139edac,
0xc7d64c47, 0xe14ff96a, 0xc7ca438f, 0xe16609e3,
0xc7be4381, 0xe17c1f15, 0xc7b24c20, 0xe19238fb,
0xc7a65d6e, 0xe1a85793, 0xc79a776c, 0xe1be7ad8,
0xc78e9a1d, 0xe1d4a2c8, 0xc782c582, 0xe1eacf5f,
0xc776f99d, 0xe2010099, 0xc76b3671, 0xe2173674,
0xc75f7bfe, 0xe22d70eb, 0xc753ca46, 0xe243affc,
0xc748214c, 0xe259f3a3, 0xc73c8111, 0xe2703bdc,
0xc730e997, 0xe28688a4, 0xc7255ae0, 0xe29cd9f8,
0xc719d4ed, 0xe2b32fd4, 0xc70e57c0, 0xe2c98a35,
0xc702e35c, 0xe2dfe917, 0xc6f777c1, 0xe2f64c77,
0xc6ec14f2, 0xe30cb451, 0xc6e0baf0, 0xe32320a2,
0xc6d569be, 0xe3399167, 0xc6ca215c, 0xe350069b,
0xc6bee1cd, 0xe366803c, 0xc6b3ab12, 0xe37cfe47,
0xc6a87d2d, 0xe39380b6, 0xc69d5820, 0xe3aa0788,
0xc6923bec, 0xe3c092b9, 0xc6872894, 0xe3d72245,
0xc67c1e18, 0xe3edb628, 0xc6711c7b, 0xe4044e60,
0xc66623be, 0xe41aeae8, 0xc65b33e4, 0xe4318bbe,
0xc6504ced, 0xe44830dd, 0xc6456edb, 0xe45eda43,
0xc63a99b1, 0xe47587eb, 0xc62fcd6f, 0xe48c39d3,
0xc6250a18, 0xe4a2eff6, 0xc61a4fac, 0xe4b9aa52,
0xc60f9e2e, 0xe4d068e2, 0xc604f5a0, 0xe4e72ba4,
0xc5fa5603, 0xe4fdf294, 0xc5efbf58, 0xe514bdad,
0xc5e531a1, 0xe52b8cee, 0xc5daace1, 0xe5426051,
0xc5d03118, 0xe55937d5, 0xc5c5be47, 0xe5701374,
0xc5bb5472, 0xe586f32c, 0xc5b0f399, 0xe59dd6f9,
0xc5a69bbe, 0xe5b4bed8, 0xc59c4ce3, 0xe5cbaac5,
0xc5920708, 0xe5e29abc, 0xc587ca31, 0xe5f98ebb,
0xc57d965d, 0xe61086bc, 0xc5736b90, 0xe62782be,
0xc56949ca, 0xe63e82bc, 0xc55f310d, 0xe65586b3,
0xc555215a, 0xe66c8e9f, 0xc54b1ab4, 0xe6839a7c,
0xc5411d1b, 0xe69aaa48, 0xc5372891, 0xe6b1bdff,
0xc52d3d18, 0xe6c8d59c, 0xc5235ab2, 0xe6dff11d,
0xc519815f, 0xe6f7107e, 0xc50fb121, 0xe70e33bb,
0xc505e9fb, 0xe7255ad1, 0xc4fc2bec, 0xe73c85bc,
0xc4f276f7, 0xe753b479, 0xc4e8cb1e, 0xe76ae704,
0xc4df2862, 0xe7821d59, 0xc4d58ec3, 0xe7995776,
0xc4cbfe45, 0xe7b09555, 0xc4c276e8, 0xe7c7d6f4,
0xc4b8f8ad, 0xe7df1c50, 0xc4af8397, 0xe7f66564,
0xc4a617a6, 0xe80db22d, 0xc49cb4dd, 0xe82502a7,
0xc4935b3c, 0xe83c56cf, 0xc48a0ac4, 0xe853aea1,
0xc480c379, 0xe86b0a1a, 0xc477855a, 0xe8826936,
0xc46e5069, 0xe899cbf1, 0xc46524a9, 0xe8b13248,
0xc45c0219, 0xe8c89c37, 0xc452e8bc, 0xe8e009ba,
0xc449d892, 0xe8f77acf, 0xc440d19e, 0xe90eef71,
0xc437d3e1, 0xe926679c, 0xc42edf5c, 0xe93de34e,
0xc425f410, 0xe9556282, 0xc41d11ff, 0xe96ce535,
0xc414392b, 0xe9846b63, 0xc40b6994, 0xe99bf509,
0xc402a33c, 0xe9b38223, 0xc3f9e624, 0xe9cb12ad,
0xc3f1324e, 0xe9e2a6a3, 0xc3e887bb, 0xe9fa3e03,
0xc3dfe66c, 0xea11d8c8, 0xc3d74e62, 0xea2976ef,
0xc3cebfa0, 0xea411874, 0xc3c63a26, 0xea58bd54,
0xc3bdbdf6, 0xea70658a, 0xc3b54b11, 0xea881114,
0xc3ace178, 0xea9fbfed, 0xc3a4812c, 0xeab77212,
0xc39c2a2f, 0xeacf277f, 0xc393dc82, 0xeae6e031,
0xc38b9827, 0xeafe9c24, 0xc3835d1e, 0xeb165b54,
0xc37b2b6a, 0xeb2e1dbe, 0xc373030a, 0xeb45e35d,
0xc36ae401, 0xeb5dac2f, 0xc362ce50, 0xeb75782f,
0xc35ac1f7, 0xeb8d475b, 0xc352bef9, 0xeba519ad,
0xc34ac556, 0xebbcef23, 0xc342d510, 0xebd4c7ba,
0xc33aee27, 0xebeca36c, 0xc333109e, 0xec048237,
0xc32b3c75, 0xec1c6417, 0xc32371ae, 0xec344908,
0xc31bb049, 0xec4c3106, 0xc313f848, 0xec641c0e,
0xc30c49ad, 0xec7c0a1d, 0xc304a477, 0xec93fb2e,
0xc2fd08a9, 0xecabef3d, 0xc2f57644, 0xecc3e648,
0xc2eded49, 0xecdbe04a, 0xc2e66db8, 0xecf3dd3f,
0xc2def794, 0xed0bdd25, 0xc2d78add, 0xed23dff7,
0xc2d02794, 0xed3be5b1, 0xc2c8cdbb, 0xed53ee51,
0xc2c17d52, 0xed6bf9d1, 0xc2ba365c, 0xed84082f,
0xc2b2f8d8, 0xed9c1967, 0xc2abc4c9, 0xedb42d74,
0xc2a49a2e, 0xedcc4454, 0xc29d790a, 0xede45e03,
0xc296615d, 0xedfc7a7c, 0xc28f5329, 0xee1499bd,
0xc2884e6e, 0xee2cbbc1, 0xc281532e, 0xee44e084,
0xc27a616a, 0xee5d0804, 0xc2737922, 0xee75323c,
0xc26c9a58, 0xee8d5f29, 0xc265c50e, 0xeea58ec6,
0xc25ef943, 0xeebdc110, 0xc25836f9, 0xeed5f604,
0xc2517e31, 0xeeee2d9d, 0xc24aceed, 0xef0667d9,
0xc244292c, 0xef1ea4b2, 0xc23d8cf1, 0xef36e426,
0xc236fa3b, 0xef4f2630, 0xc230710d, 0xef676ace,
0xc229f167, 0xef7fb1fa, 0xc2237b4b, 0xef97fbb2,
0xc21d0eb8, 0xefb047f2, 0xc216abb1, 0xefc896b5,
0xc2105236, 0xefe0e7f9, 0xc20a0248, 0xeff93bba,
0xc203bbe8, 0xf01191f3, 0xc1fd7f17, 0xf029eaa1,
0xc1f74bd6, 0xf04245c0, 0xc1f12227, 0xf05aa34c,
0xc1eb0209, 0xf0730342, 0xc1e4eb7e, 0xf08b659f,
0xc1dede87, 0xf0a3ca5d, 0xc1d8db25, 0xf0bc317a,
0xc1d2e158, 0xf0d49af1, 0xc1ccf122, 0xf0ed06bf,
0xc1c70a84, 0xf10574e0, 0xc1c12d7e, 0xf11de551,
0xc1bb5a11, 0xf136580d, 0xc1b5903f, 0xf14ecd11,
0xc1afd007, 0xf1674459, 0xc1aa196c, 0xf17fbde2,
0xc1a46c6e, 0xf19839a6, 0xc19ec90d, 0xf1b0b7a4,
0xc1992f4c, 0xf1c937d6, 0xc1939f29, 0xf1e1ba3a,
0xc18e18a7, 0xf1fa3ecb, 0xc1889bc6, 0xf212c585,
0xc1832888, 0xf22b4e66, 0xc17dbeec, 0xf243d968,
0xc1785ef4, 0xf25c6688, 0xc17308a1, 0xf274f5c3,
0xc16dbbf3, 0xf28d8715, 0xc16878eb, 0xf2a61a7a,
0xc1633f8a, 0xf2beafed, 0xc15e0fd1, 0xf2d7476c,
0xc158e9c1, 0xf2efe0f2, 0xc153cd5a, 0xf3087c7d,
0xc14eba9d, 0xf3211a07, 0xc149b18b, 0xf339b98d,
0xc144b225, 0xf3525b0b, 0xc13fbc6c, 0xf36afe7e,
0xc13ad060, 0xf383a3e2, 0xc135ee02, 0xf39c4b32,
0xc1311553, 0xf3b4f46c, 0xc12c4653, 0xf3cd9f8b,
0xc1278104, 0xf3e64c8c, 0xc122c566, 0xf3fefb6a,
0xc11e1379, 0xf417ac22, 0xc1196b3f, 0xf4305eb0,
0xc114ccb9, 0xf4491311, 0xc11037e6, 0xf461c940,
0xc10bacc8, 0xf47a8139, 0xc1072b5f, 0xf4933afa,
0xc102b3ac, 0xf4abf67e, 0xc0fe45b0, 0xf4c4b3c0,
0xc0f9e16b, 0xf4dd72be, 0xc0f586df, 0xf4f63374,
0xc0f1360b, 0xf50ef5de, 0xc0eceef1, 0xf527b9f7,
0xc0e8b190, 0xf5407fbd, 0xc0e47deb, 0xf559472b,
0xc0e05401, 0xf572103d, 0xc0dc33d2, 0xf58adaf0,
0xc0d81d61, 0xf5a3a740, 0xc0d410ad, 0xf5bc7529,
0xc0d00db6, 0xf5d544a7, 0xc0cc147f, 0xf5ee15b7,
0xc0c82506, 0xf606e854, 0xc0c43f4d, 0xf61fbc7b,
0xc0c06355, 0xf6389228, 0xc0bc911d, 0xf6516956,
0xc0b8c8a7, 0xf66a4203, 0xc0b509f3, 0xf6831c2b,
0xc0b15502, 0xf69bf7c9, 0xc0ada9d4, 0xf6b4d4d9,
0xc0aa086a, 0xf6cdb359, 0xc0a670c4, 0xf6e69344,
0xc0a2e2e3, 0xf6ff7496, 0xc09f5ec8, 0xf718574b,
0xc09be473, 0xf7313b60, 0xc09873e4, 0xf74a20d0,
0xc0950d1d, 0xf7630799, 0xc091b01d, 0xf77befb5,
0xc08e5ce5, 0xf794d922, 0xc08b1376, 0xf7adc3db,
0xc087d3d0, 0xf7c6afdc, 0xc0849df4, 0xf7df9d22,
0xc08171e2, 0xf7f88ba9, 0xc07e4f9b, 0xf8117b6d,
0xc07b371e, 0xf82a6c6a, 0xc078286e, 0xf8435e9d,
0xc0752389, 0xf85c5201, 0xc0722871, 0xf8754692,
0xc06f3726, 0xf88e3c4d, 0xc06c4fa8, 0xf8a7332e,
0xc06971f9, 0xf8c02b31, 0xc0669e18, 0xf8d92452,
0xc063d405, 0xf8f21e8e, 0xc06113c2, 0xf90b19e0,
0xc05e5d4e, 0xf9241645, 0xc05bb0ab, 0xf93d13b8,
0xc0590dd8, 0xf9561237, 0xc05674d6, 0xf96f11bc,
0xc053e5a5, 0xf9881245, 0xc0516045, 0xf9a113cd,
0xc04ee4b8, 0xf9ba1651, 0xc04c72fe, 0xf9d319cc,
0xc04a0b16, 0xf9ec1e3b, 0xc047ad01, 0xfa05239a,
0xc04558c0, 0xfa1e29e5, 0xc0430e53, 0xfa373119,
0xc040cdba, 0xfa503930, 0xc03e96f6, 0xfa694229,
0xc03c6a07, 0xfa824bfd, 0xc03a46ed, 0xfa9b56ab,
0xc0382da8, 0xfab4622d, 0xc0361e3a, 0xfacd6e81,
0xc03418a2, 0xfae67ba2, 0xc0321ce0, 0xfaff898c,
0xc0302af5, 0xfb18983b, 0xc02e42e2, 0xfb31a7ac,
0xc02c64a6, 0xfb4ab7db, 0xc02a9042, 0xfb63c8c4,
0xc028c5b6, 0xfb7cda63, 0xc0270502, 0xfb95ecb4,
0xc0254e27, 0xfbaeffb3, 0xc023a124, 0xfbc8135c,
0xc021fdfb, 0xfbe127ac, 0xc02064ab, 0xfbfa3c9f,
0xc01ed535, 0xfc135231, 0xc01d4f99, 0xfc2c685d,
0xc01bd3d6, 0xfc457f21, 0xc01a61ee, 0xfc5e9678,
0xc018f9e1, 0xfc77ae5e, 0xc0179bae, 0xfc90c6cf,
0xc0164757, 0xfca9dfc8, 0xc014fcda, 0xfcc2f945,
0xc013bc39, 0xfcdc1342, 0xc0128574, 0xfcf52dbb,
0xc011588a, 0xfd0e48ab, 0xc010357c, 0xfd276410,
0xc00f1c4a, 0xfd407fe6, 0xc00e0cf5, 0xfd599c28,
0xc00d077c, 0xfd72b8d2, 0xc00c0be0, 0xfd8bd5e1,
0xc00b1a20, 0xfda4f351, 0xc00a323d, 0xfdbe111e,
0xc0095438, 0xfdd72f45, 0xc008800f, 0xfdf04dc0,
0xc007b5c4, 0xfe096c8d, 0xc006f556, 0xfe228ba7,
0xc0063ec6, 0xfe3bab0b, 0xc0059214, 0xfe54cab5,
0xc004ef3f, 0xfe6deaa1, 0xc0045648, 0xfe870aca,
0xc003c72f, 0xfea02b2e, 0xc00341f4, 0xfeb94bc8,
0xc002c697, 0xfed26c94, 0xc0025519, 0xfeeb8d8f,
0xc001ed78, 0xff04aeb5, 0xc0018fb6, 0xff1dd001,
0xc0013bd3, 0xff36f170, 0xc000f1ce, 0xff5012fe,
0xc000b1a7, 0xff6934a8, 0xc0007b5f, 0xff825668,
0xc0004ef5, 0xff9b783c, 0xc0002c6a, 0xffb49a1f,
0xc00013bd, 0xffcdbc0f, 0xc00004ef, 0xffe6de05,
0x3fffffec, 0x0003243f, 0x3fffff4e, 0x00096cbe,
0x3ffffe13, 0x000fb53d, 0x3ffffc39, 0x0015fdbb,
0x3ffff9c1, 0x001c463a, 0x3ffff6ac, 0x00228eb8,
0x3ffff2f8, 0x0028d736, 0x3fffeea7, 0x002f1fb3,
0x3fffe9b7, 0x00356830, 0x3fffe42a, 0x003bb0ac,
0x3fffddff, 0x0041f928, 0x3fffd736, 0x004841a3,
0x3fffcfcf, 0x004e8a1e, 0x3fffc7ca, 0x0054d297,
0x3fffbf27, 0x005b1b10, 0x3fffb5e7, 0x00616388,
0x3fffac08, 0x0067abff, 0x3fffa18c, 0x006df475,
0x3fff9671, 0x00743cea, 0x3fff8ab9, 0x007a855e,
0x3fff7e63, 0x0080cdd1, 0x3fff716e, 0x00871643,
0x3fff63dc, 0x008d5eb3, 0x3fff55ac, 0x0093a722,
0x3fff46df, 0x0099ef8f, 0x3fff3773, 0x00a037fb,
0x3fff2769, 0x00a68065, 0x3fff16c1, 0x00acc8ce,
0x3fff057c, 0x00b31135, 0x3ffef399, 0x00b9599a,
0x3ffee117, 0x00bfa1fe, 0x3ffecdf8, 0x00c5ea60,
0x3ffeba3b, 0x00cc32c0, 0x3ffea5e0, 0x00d27b1d,
0x3ffe90e7, 0x00d8c379, 0x3ffe7b50, 0x00df0bd3,
0x3ffe651b, 0x00e5542b, 0x3ffe4e49, 0x00eb9c80,
0x3ffe36d8, 0x00f1e4d3, 0x3ffe1eca, 0x00f82d24,
0x3ffe061e, 0x00fe7572, 0x3ffdecd3, 0x0104bdbe,
0x3ffdd2eb, 0x010b0608, 0x3ffdb865, 0x01114e4e,
0x3ffd9d42, 0x01179693, 0x3ffd8180, 0x011dded4,
0x3ffd6520, 0x01242713, 0x3ffd4823, 0x012a6f4f,
0x3ffd2a87, 0x0130b788, 0x3ffd0c4e, 0x0136ffbe,
0x3ffced77, 0x013d47f1, 0x3ffcce02, 0x01439021,
0x3ffcadef, 0x0149d84e, 0x3ffc8d3e, 0x01502078,
0x3ffc6bef, 0x0156689f, 0x3ffc4a02, 0x015cb0c2,
0x3ffc2778, 0x0162f8e2, 0x3ffc0450, 0x016940fe,
0x3ffbe089, 0x016f8917, 0x3ffbbc25, 0x0175d12c,
0x3ffb9723, 0x017c193e, 0x3ffb7183, 0x0182614c,
0x3ffb4b46, 0x0188a957, 0x3ffb246a, 0x018ef15e,
0x3ffafcf1, 0x01953960, 0x3ffad4d9, 0x019b815f,
0x3ffaac24, 0x01a1c95a, 0x3ffa82d1, 0x01a81151,
0x3ffa58e0, 0x01ae5944, 0x3ffa2e51, 0x01b4a133,
0x3ffa0325, 0x01bae91d, 0x3ff9d75a, 0x01c13103,
0x3ff9aaf2, 0x01c778e5, 0x3ff97dec, 0x01cdc0c3,
0x3ff95048, 0x01d4089c, 0x3ff92206, 0x01da5070,
0x3ff8f326, 0x01e09840, 0x3ff8c3a8, 0x01e6e00b,
0x3ff8938d, 0x01ed27d2, 0x3ff862d4, 0x01f36f94,
0x3ff8317d, 0x01f9b751, 0x3ff7ff88, 0x01ffff09,
0x3ff7ccf5, 0x020646bc, 0x3ff799c4, 0x020c8e6b,
0x3ff765f6, 0x0212d614, 0x3ff7318a, 0x02191db8,
0x3ff6fc7f, 0x021f6557, 0x3ff6c6d7, 0x0225acf1,
0x3ff69092, 0x022bf485, 0x3ff659ae, 0x02323c14,
0x3ff6222d, 0x0238839e, 0x3ff5ea0d, 0x023ecb22,
0x3ff5b150, 0x024512a0, 0x3ff577f6, 0x024b5a19,
0x3ff53dfd, 0x0251a18c, 0x3ff50366, 0x0257e8fa,
0x3ff4c832, 0x025e3062, 0x3ff48c60, 0x026477c4,
0x3ff44ff0, 0x026abf20, 0x3ff412e2, 0x02710676,
0x3ff3d537, 0x02774dc6, 0x3ff396ee, 0x027d9510,
0x3ff35807, 0x0283dc54, 0x3ff31882, 0x028a2392,
0x3ff2d85f, 0x02906ac9, 0x3ff2979f, 0x0296b1fa,
0x3ff25640, 0x029cf925, 0x3ff21444, 0x02a34049,
0x3ff1d1aa, 0x02a98766, 0x3ff18e73, 0x02afce7e,
0x3ff14a9e, 0x02b6158e, 0x3ff1062a, 0x02bc5c98,
0x3ff0c11a, 0x02c2a39b, 0x3ff07b6b, 0x02c8ea97,
0x3ff0351e, 0x02cf318d, 0x3fefee34, 0x02d5787b,
0x3fefa6ac, 0x02dbbf63, 0x3fef5e87, 0x02e20643,
0x3fef15c3, 0x02e84d1c, 0x3feecc62, 0x02ee93ee,
0x3fee8263, 0x02f4dab9, 0x3fee37c6, 0x02fb217d,
0x3fedec8c, 0x03016839, 0x3feda0b4, 0x0307aeee,
0x3fed543e, 0x030df59b, 0x3fed072a, 0x03143c41,
0x3fecb979, 0x031a82df, 0x3fec6b2a, 0x0320c976,
0x3fec1c3d, 0x03271005, 0x3febccb2, 0x032d568c,
0x3feb7c8a, 0x03339d0b, 0x3feb2bc4, 0x0339e382,
0x3feada60, 0x034029f2, 0x3fea885f, 0x03467059,
0x3fea35c0, 0x034cb6b8, 0x3fe9e283, 0x0352fd0f,
0x3fe98ea8, 0x0359435e, 0x3fe93a30, 0x035f89a5,
0x3fe8e51a, 0x0365cfe3, 0x3fe88f67, 0x036c1619,
0x3fe83915, 0x03725c46, 0x3fe7e226, 0x0378a26b,
0x3fe78a9a, 0x037ee888, 0x3fe7326f, 0x03852e9c,
0x3fe6d9a7, 0x038b74a7, 0x3fe68042, 0x0391baa9,
0x3fe6263e, 0x039800a3, 0x3fe5cb9d, 0x039e4693,
0x3fe5705f, 0x03a48c7b, 0x3fe51482, 0x03aad25a,
0x3fe4b808, 0x03b11830, 0x3fe45af1, 0x03b75dfc,
0x3fe3fd3b, 0x03bda3c0, 0x3fe39ee8, 0x03c3e97a,
0x3fe33ff8, 0x03ca2f2b, 0x3fe2e06a, 0x03d074d2,
0x3fe2803e, 0x03d6ba71, 0x3fe21f74, 0x03dd0005,
0x3fe1be0d, 0x03e34591, 0x3fe15c09, 0x03e98b12,
0x3fe0f966, 0x03efd08a, 0x3fe09626, 0x03f615f8,
0x3fe03249, 0x03fc5b5d, 0x3fdfcdce, 0x0402a0b7,
0x3fdf68b5, 0x0408e608, 0x3fdf02fe, 0x040f2b4f,
0x3fde9caa, 0x0415708b, 0x3fde35b9, 0x041bb5be,
0x3fddce2a, 0x0421fae7, 0x3fdd65fd, 0x04284005,
0x3fdcfd33, 0x042e8519, 0x3fdc93cb, 0x0434ca23,
0x3fdc29c5, 0x043b0f22, 0x3fdbbf22, 0x04415417,
0x3fdb53e2, 0x04479901, 0x3fdae804, 0x044ddde1,
0x3fda7b88, 0x045422b7, 0x3fda0e6f, 0x045a6781,
0x3fd9a0b8, 0x0460ac41, 0x3fd93263, 0x0466f0f6,
0x3fd8c372, 0x046d35a0, 0x3fd853e2, 0x04737a3f,
0x3fd7e3b5, 0x0479bed4, 0x3fd772eb, 0x0480035d,
0x3fd70183, 0x048647db, 0x3fd68f7d, 0x048c8c4e,
0x3fd61cda, 0x0492d0b6, 0x3fd5a99a, 0x04991512,
0x3fd535bc, 0x049f5963, 0x3fd4c140, 0x04a59da9,
0x3fd44c27, 0x04abe1e3, 0x3fd3d670, 0x04b22612,
0x3fd3601c, 0x04b86a35, 0x3fd2e92b, 0x04beae4c,
0x3fd2719c, 0x04c4f258, 0x3fd1f96f, 0x04cb3658,
0x3fd180a5, 0x04d17a4c, 0x3fd1073e, 0x04d7be34,
0x3fd08d39, 0x04de0211, 0x3fd01297, 0x04e445e1,
0x3fcf9757, 0x04ea89a5, 0x3fcf1b7a, 0x04f0cd5d,
0x3fce9eff, 0x04f71109, 0x3fce21e7, 0x04fd54a9,
0x3fcda431, 0x0503983c, 0x3fcd25de, 0x0509dbc3,
0x3fcca6ee, 0x05101f3e, 0x3fcc2760, 0x051662ac,
0x3fcba735, 0x051ca60d, 0x3fcb266c, 0x0522e962,
0x3fcaa506, 0x05292cab, 0x3fca2303, 0x052f6fe6,
0x3fc9a062, 0x0535b315, 0x3fc91d24, 0x053bf637,
0x3fc89948, 0x0542394c, 0x3fc814cf, 0x05487c53,
0x3fc78fb9, 0x054ebf4e, 0x3fc70a05, 0x0555023c,
0x3fc683b4, 0x055b451d, 0x3fc5fcc6, 0x056187f0,
0x3fc5753a, 0x0567cab6, 0x3fc4ed11, 0x056e0d6f,
0x3fc4644a, 0x0574501b, 0x3fc3dae6, 0x057a92b9,
0x3fc350e5, 0x0580d549, 0x3fc2c647, 0x058717cc,
0x3fc23b0b, 0x058d5a41, 0x3fc1af32, 0x05939ca9,
0x3fc122bb, 0x0599df03, 0x3fc095a8, 0x05a0214f,
0x3fc007f6, 0x05a6638d, 0x3fbf79a8, 0x05aca5bd,
0x3fbeeabc, 0x05b2e7df, 0x3fbe5b33, 0x05b929f3,
0x3fbdcb0d, 0x05bf6bf9, 0x3fbd3a4a, 0x05c5adf1,
0x3fbca8e9, 0x05cbefda, 0x3fbc16eb, 0x05d231b5,
0x3fbb8450, 0x05d87382, 0x3fbaf117, 0x05deb541,
0x3fba5d41, 0x05e4f6f1, 0x3fb9c8ce, 0x05eb3892,
0x3fb933be, 0x05f17a25, 0x3fb89e11, 0x05f7bba9,
0x3fb807c6, 0x05fdfd1f, 0x3fb770de, 0x06043e85,
0x3fb6d959, 0x060a7fdd, 0x3fb64136, 0x0610c126,
0x3fb5a877, 0x06170260, 0x3fb50f1a, 0x061d438b,
0x3fb47520, 0x062384a6, 0x3fb3da89, 0x0629c5b3,
0x3fb33f54, 0x063006b1, 0x3fb2a383, 0x0636479f,
0x3fb20714, 0x063c887e, 0x3fb16a08, 0x0642c94d,
0x3fb0cc5f, 0x06490a0d, 0x3fb02e19, 0x064f4abe,
0x3faf8f36, 0x06558b5f, 0x3faeefb6, 0x065bcbf0,
0x3fae4f98, 0x06620c72, 0x3fadaedd, 0x06684ce3,
0x3fad0d86, 0x066e8d45, 0x3fac6b91, 0x0674cd98,
0x3fabc8ff, 0x067b0dda, 0x3fab25d0, 0x06814e0c,
0x3faa8203, 0x06878e2e, 0x3fa9dd9a, 0x068dce41,
0x3fa93894, 0x06940e42, 0x3fa892f0, 0x069a4e34,
0x3fa7ecb0, 0x06a08e16, 0x3fa745d2, 0x06a6cde7,
0x3fa69e57, 0x06ad0da7, 0x3fa5f640, 0x06b34d58,
0x3fa54d8b, 0x06b98cf7, 0x3fa4a439, 0x06bfcc86,
0x3fa3fa4a, 0x06c60c05, 0x3fa34fbe, 0x06cc4b72,
0x3fa2a495, 0x06d28acf, 0x3fa1f8d0, 0x06d8ca1b,
0x3fa14c6d, 0x06df0957, 0x3fa09f6d, 0x06e54881,
0x3f9ff1d0, 0x06eb879a, 0x3f9f4396, 0x06f1c6a2,
0x3f9e94bf, 0x06f80599, 0x3f9de54b, 0x06fe447f,
0x3f9d353a, 0x07048354, 0x3f9c848d, 0x070ac217,
0x3f9bd342, 0x071100c9, 0x3f9b215a, 0x07173f69,
0x3f9a6ed6, 0x071d7df8, 0x3f99bbb4, 0x0723bc75,
0x3f9907f6, 0x0729fae1, 0x3f98539a, 0x0730393b,
0x3f979ea2, 0x07367784, 0x3f96e90d, 0x073cb5ba,
0x3f9632da, 0x0742f3df, 0x3f957c0b, 0x074931f2,
0x3f94c4a0, 0x074f6ff3, 0x3f940c97, 0x0755ade1,
0x3f9353f1, 0x075bebbe, 0x3f929aaf, 0x07622988,
0x3f91e0cf, 0x07686741, 0x3f912653, 0x076ea4e7,
0x3f906b3a, 0x0774e27a, 0x3f8faf84, 0x077b1ffc,
0x3f8ef331, 0x07815d6b, 0x3f8e3642, 0x07879ac7,
0x3f8d78b5, 0x078dd811, 0x3f8cba8c, 0x07941548,
0x3f8bfbc6, 0x079a526c, 0x3f8b3c63, 0x07a08f7e,
0x3f8a7c64, 0x07a6cc7d, 0x3f89bbc7, 0x07ad0968,
0x3f88fa8e, 0x07b34641, 0x3f8838b8, 0x07b98307,
0x3f877645, 0x07bfbfba, 0x3f86b336, 0x07c5fc5a,
0x3f85ef8a, 0x07cc38e7, 0x3f852b41, 0x07d27560,
0x3f84665b, 0x07d8b1c6, 0x3f83a0d9, 0x07deee19,
0x3f82daba, 0x07e52a58, 0x3f8213fe, 0x07eb6684,
0x3f814ca6, 0x07f1a29c, 0x3f8084b0, 0x07f7dea1,
0x3f7fbc1f, 0x07fe1a92, 0x3f7ef2f0, 0x0804566f,
0x3f7e2925, 0x080a9239, 0x3f7d5ebd, 0x0810cdef,
0x3f7c93b9, 0x08170990, 0x3f7bc817, 0x081d451e,
0x3f7afbda, 0x08238098, 0x3f7a2eff, 0x0829bbfe,
0x3f796188, 0x082ff74f, 0x3f789374, 0x0836328d,
0x3f77c4c4, 0x083c6db6, 0x3f76f577, 0x0842a8cb,
0x3f76258e, 0x0848e3cb, 0x3f755508, 0x084f1eb7,
0x3f7483e5, 0x0855598f, 0x3f73b226, 0x085b9451,
0x3f72dfca, 0x0861cf00, 0x3f720cd2, 0x08680999,
0x3f71393d, 0x086e441e, 0x3f70650b, 0x08747e8e,
0x3f6f903d, 0x087ab8e9, 0x3f6ebad3, 0x0880f330,
0x3f6de4cc, 0x08872d61, 0x3f6d0e29, 0x088d677d,
0x3f6c36e9, 0x0893a184, 0x3f6b5f0c, 0x0899db76,
0x3f6a8693, 0x08a01553, 0x3f69ad7e, 0x08a64f1b,
0x3f68d3cc, 0x08ac88cd, 0x3f67f97d, 0x08b2c26a,
0x3f671e93, 0x08b8fbf1, 0x3f66430b, 0x08bf3563,
0x3f6566e8, 0x08c56ebf, 0x3f648a28, 0x08cba805,
0x3f63accb, 0x08d1e136, 0x3f62ced2, 0x08d81a51,
0x3f61f03d, 0x08de5356, 0x3f61110b, 0x08e48c46,
0x3f60313d, 0x08eac51f, 0x3f5f50d3, 0x08f0fde3,
0x3f5e6fcc, 0x08f73690, 0x3f5d8e29, 0x08fd6f27,
0x3f5cabe9, 0x0903a7a8, 0x3f5bc90d, 0x0909e013,
0x3f5ae595, 0x09101868, 0x3f5a0181, 0x091650a6,
0x3f591cd0, 0x091c88cd, 0x3f583783, 0x0922c0df,
0x3f575199, 0x0928f8d9, 0x3f566b14, 0x092f30bd,
0x3f5583f2, 0x0935688b, 0x3f549c33, 0x093ba042,
0x3f53b3d9, 0x0941d7e2, 0x3f52cae2, 0x09480f6b,
0x3f51e14f, 0x094e46dd, 0x3f50f720, 0x09547e38,
0x3f500c54, 0x095ab57c, 0x3f4f20ed, 0x0960eca9,
0x3f4e34e9, 0x096723bf, 0x3f4d4848, 0x096d5abe,
0x3f4c5b0c, 0x097391a6, 0x3f4b6d34, 0x0979c876,
0x3f4a7ebf, 0x097fff2f, 0x3f498fae, 0x098635d0,
0x3f48a001, 0x098c6c5a, 0x3f47afb8, 0x0992a2cc,
0x3f46bed3, 0x0998d927, 0x3f45cd51, 0x099f0f6a,
0x3f44db34, 0x09a54595, 0x3f43e87a, 0x09ab7ba9,
0x3f42f525, 0x09b1b1a4, 0x3f420133, 0x09b7e788,
0x3f410ca5, 0x09be1d54, 0x3f40177b, 0x09c45308,
0x3f3f21b5, 0x09ca88a3, 0x3f3e2b53, 0x09d0be27,
0x3f3d3455, 0x09d6f392, 0x3f3c3cba, 0x09dd28e5,
0x3f3b4484, 0x09e35e1f, 0x3f3a4bb2, 0x09e99342,
0x3f395244, 0x09efc84b, 0x3f38583a, 0x09f5fd3d,
0x3f375d93, 0x09fc3215, 0x3f366251, 0x0a0266d5,
0x3f356673, 0x0a089b7c, 0x3f3469f9, 0x0a0ed00b,
0x3f336ce3, 0x0a150481, 0x3f326f31, 0x0a1b38de,
0x3f3170e3, 0x0a216d22, 0x3f3071f9, 0x0a27a14d,
0x3f2f7273, 0x0a2dd55e, 0x3f2e7252, 0x0a340957,
0x3f2d7194, 0x0a3a3d37, 0x3f2c703a, 0x0a4070fd,
0x3f2b6e45, 0x0a46a4aa, 0x3f2a6bb4, 0x0a4cd83e,
0x3f296887, 0x0a530bb8, 0x3f2864be, 0x0a593f19,
0x3f276059, 0x0a5f7260, 0x3f265b59, 0x0a65a58e,
0x3f2555bc, 0x0a6bd8a2, 0x3f244f84, 0x0a720b9c,
0x3f2348b0, 0x0a783e7d, 0x3f224140, 0x0a7e7143,
0x3f213935, 0x0a84a3f0, 0x3f20308d, 0x0a8ad683,
0x3f1f274a, 0x0a9108fc, 0x3f1e1d6c, 0x0a973b5b,
0x3f1d12f1, 0x0a9d6d9f, 0x3f1c07db, 0x0aa39fca,
0x3f1afc29, 0x0aa9d1da, 0x3f19efdb, 0x0ab003d0,
0x3f18e2f2, 0x0ab635ab, 0x3f17d56d, 0x0abc676d,
0x3f16c74c, 0x0ac29913, 0x3f15b88f, 0x0ac8ca9f,
0x3f14a937, 0x0acefc11, 0x3f139944, 0x0ad52d67,
0x3f1288b4, 0x0adb5ea3, 0x3f117789, 0x0ae18fc5,
0x3f1065c3, 0x0ae7c0cb, 0x3f0f5360, 0x0aedf1b7,
0x3f0e4063, 0x0af42287, 0x3f0d2cc9, 0x0afa533d,
0x3f0c1894, 0x0b0083d7, 0x3f0b03c4, 0x0b06b456,
0x3f09ee58, 0x0b0ce4ba, 0x3f08d850, 0x0b131503,
0x3f07c1ad, 0x0b194531, 0x3f06aa6e, 0x0b1f7543,
0x3f059294, 0x0b25a539, 0x3f047a1e, 0x0b2bd515,
0x3f03610d, 0x0b3204d4, 0x3f024760, 0x0b383478,
0x3f012d18, 0x0b3e6400, 0x3f001235, 0x0b44936d,
0x3efef6b6, 0x0b4ac2be, 0x3efdda9b, 0x0b50f1f3,
0x3efcbde5, 0x0b57210b, 0x3efba094, 0x0b5d5008,
0x3efa82a7, 0x0b637ee9, 0x3ef9641f, 0x0b69adae,
0x3ef844fc, 0x0b6fdc57, 0x3ef7253d, 0x0b760ae3,
0x3ef604e3, 0x0b7c3953, 0x3ef4e3ed, 0x0b8267a7,
0x3ef3c25c, 0x0b8895df, 0x3ef2a030, 0x0b8ec3fa,
0x3ef17d69, 0x0b94f1f8, 0x3ef05a06, 0x0b9b1fda,
0x3eef3608, 0x0ba14d9f, 0x3eee116e, 0x0ba77b48,
0x3eecec39, 0x0bada8d4, 0x3eebc669, 0x0bb3d642,
0x3eea9ffe, 0x0bba0395, 0x3ee978f8, 0x0bc030ca,
0x3ee85156, 0x0bc65de2, 0x3ee72919, 0x0bcc8add,
0x3ee60041, 0x0bd2b7bb, 0x3ee4d6ce, 0x0bd8e47c,
0x3ee3acbf, 0x0bdf111f, 0x3ee28216, 0x0be53da6,
0x3ee156d1, 0x0beb6a0f, 0x3ee02af1, 0x0bf1965a,
0x3edefe76, 0x0bf7c288, 0x3eddd15f, 0x0bfdee99,
0x3edca3ae, 0x0c041a8c, 0x3edb7562, 0x0c0a4661,
0x3eda467a, 0x0c107219, 0x3ed916f7, 0x0c169db3,
0x3ed7e6da, 0x0c1cc92f, 0x3ed6b621, 0x0c22f48d,
0x3ed584cd, 0x0c291fcd, 0x3ed452de, 0x0c2f4aef,
0x3ed32054, 0x0c3575f3, 0x3ed1ed2f, 0x0c3ba0d9,
0x3ed0b970, 0x0c41cba1, 0x3ecf8515, 0x0c47f64a,
0x3ece501f, 0x0c4e20d6, 0x3ecd1a8e, 0x0c544b43,
0x3ecbe462, 0x0c5a7591, 0x3ecaad9b, 0x0c609fc1,
0x3ec9763a, 0x0c66c9d3, 0x3ec83e3d, 0x0c6cf3c5,
0x3ec705a6, 0x0c731d9a, 0x3ec5cc73, 0x0c79474f,
0x3ec492a6, 0x0c7f70e6, 0x3ec3583e, 0x0c859a5e,
0x3ec21d3b, 0x0c8bc3b7, 0x3ec0e19d, 0x0c91ecf1,
0x3ebfa564, 0x0c98160c, 0x3ebe6891, 0x0c9e3f07,
0x3ebd2b22, 0x0ca467e4, 0x3ebbed19, 0x0caa90a2,
0x3ebaae75, 0x0cb0b940, 0x3eb96f36, 0x0cb6e1bf,
0x3eb82f5d, 0x0cbd0a1f, 0x3eb6eee9, 0x0cc3325f,
0x3eb5adda, 0x0cc95a80, 0x3eb46c30, 0x0ccf8281,
0x3eb329ec, 0x0cd5aa62, 0x3eb1e70d, 0x0cdbd224,
0x3eb0a393, 0x0ce1f9c7, 0x3eaf5f7e, 0x0ce82149,
0x3eae1acf, 0x0cee48ab, 0x3eacd585, 0x0cf46fee,
0x3eab8fa1, 0x0cfa9711, 0x3eaa4922, 0x0d00be13,
0x3ea90208, 0x0d06e4f6, 0x3ea7ba54, 0x0d0d0bb8,
0x3ea67205, 0x0d13325b, 0x3ea5291b, 0x0d1958dd,
0x3ea3df97, 0x0d1f7f3e, 0x3ea29578, 0x0d25a57f,
0x3ea14abf, 0x0d2bcba0, 0x3e9fff6b, 0x0d31f1a1,
0x3e9eb37d, 0x0d381780, 0x3e9d66f4, 0x0d3e3d40,
0x3e9c19d1, 0x0d4462de, 0x3e9acc13, 0x0d4a885c,
0x3e997dbb, 0x0d50adb9, 0x3e982ec9, 0x0d56d2f5,
0x3e96df3b, 0x0d5cf810, 0x3e958f14, 0x0d631d0a,
0x3e943e52, 0x0d6941e3, 0x3e92ecf6, 0x0d6f669b,
0x3e919aff, 0x0d758b32, 0x3e90486e, 0x0d7bafa8,
0x3e8ef542, 0x0d81d3fc, 0x3e8da17c, 0x0d87f830,
0x3e8c4d1c, 0x0d8e1c41, 0x3e8af821, 0x0d944032,
0x3e89a28d, 0x0d9a6400, 0x3e884c5d, 0x0da087ae,
0x3e86f594, 0x0da6ab39, 0x3e859e30, 0x0daccea3,
0x3e844632, 0x0db2f1eb, 0x3e82ed9a, 0x0db91512,
0x3e819467, 0x0dbf3816, 0x3e803a9b, 0x0dc55af9,
0x3e7ee034, 0x0dcb7db9, 0x3e7d8533, 0x0dd1a058,
0x3e7c2997, 0x0dd7c2d4, 0x3e7acd62, 0x0ddde52f,
0x3e797092, 0x0de40767, 0x3e781328, 0x0dea297d,
0x3e76b524, 0x0df04b70, 0x3e755686, 0x0df66d41,
0x3e73f74e, 0x0dfc8ef0, 0x3e72977c, 0x0e02b07c,
0x3e71370f, 0x0e08d1e6, 0x3e6fd609, 0x0e0ef32d,
0x3e6e7468, 0x0e151451, 0x3e6d122e, 0x0e1b3552,
0x3e6baf59, 0x0e215631, 0x3e6a4beb, 0x0e2776ed,
0x3e68e7e2, 0x0e2d9786, 0x3e67833f, 0x0e33b7fc,
0x3e661e03, 0x0e39d84f, 0x3e64b82c, 0x0e3ff87f,
0x3e6351bc, 0x0e46188b, 0x3e61eab2, 0x0e4c3875,
0x3e60830d, 0x0e52583b, 0x3e5f1acf, 0x0e5877de,
0x3e5db1f7, 0x0e5e975d, 0x3e5c4885, 0x0e64b6b9,
0x3e5ade79, 0x0e6ad5f1, 0x3e5973d3, 0x0e70f506,
0x3e580894, 0x0e7713f7, 0x3e569cba, 0x0e7d32c5,
0x3e553047, 0x0e83516f, 0x3e53c33a, 0x0e896ff5,
0x3e525593, 0x0e8f8e57, 0x3e50e752, 0x0e95ac95,
0x3e4f7878, 0x0e9bcaaf, 0x3e4e0904, 0x0ea1e8a5,
0x3e4c98f6, 0x0ea80677, 0x3e4b284f, 0x0eae2425,
0x3e49b70d, 0x0eb441af, 0x3e484533, 0x0eba5f14,
0x3e46d2be, 0x0ec07c55, 0x3e455fb0, 0x0ec69972,
0x3e43ec08, 0x0eccb66a, 0x3e4277c6, 0x0ed2d33e,
0x3e4102eb, 0x0ed8efed, 0x3e3f8d76, 0x0edf0c77,
0x3e3e1768, 0x0ee528dd, 0x3e3ca0c0, 0x0eeb451e,
0x3e3b297e, 0x0ef1613a, 0x3e39b1a3, 0x0ef77d32,
0x3e38392f, 0x0efd9904, 0x3e36c021, 0x0f03b4b1,
0x3e354679, 0x0f09d03a, 0x3e33cc38, 0x0f0feb9d,
0x3e32515d, 0x0f1606db, 0x3e30d5e9, 0x0f1c21f4,
0x3e2f59dc, 0x0f223ce8, 0x3e2ddd35, 0x0f2857b6,
0x3e2c5ff5, 0x0f2e725f, 0x3e2ae21b, 0x0f348ce2,
0x3e2963a8, 0x0f3aa740, 0x3e27e49b, 0x0f40c178,
0x3e2664f5, 0x0f46db8b, 0x3e24e4b6, 0x0f4cf578,
0x3e2363dd, 0x0f530f3f, 0x3e21e26c, 0x0f5928e1,
0x3e206060, 0x0f5f425c, 0x3e1eddbc, 0x0f655bb2,
0x3e1d5a7e, 0x0f6b74e1, 0x3e1bd6a7, 0x0f718deb,
0x3e1a5237, 0x0f77a6ce, 0x3e18cd2d, 0x0f7dbf8c,
0x3e17478a, 0x0f83d823, 0x3e15c14f, 0x0f89f094,
0x3e143a79, 0x0f9008de, 0x3e12b30b, 0x0f962102,
0x3e112b04, 0x0f9c3900, 0x3e0fa263, 0x0fa250d7,
0x3e0e1929, 0x0fa86887, 0x3e0c8f57, 0x0fae8011,
0x3e0b04eb, 0x0fb49774, 0x3e0979e6, 0x0fbaaeb1,
0x3e07ee47, 0x0fc0c5c6, 0x3e066210, 0x0fc6dcb5,
0x3e04d540, 0x0fccf37d, 0x3e0347d7, 0x0fd30a1e,
0x3e01b9d5, 0x0fd92098, 0x3e002b39, 0x0fdf36ea,
0x3dfe9c05, 0x0fe54d16, 0x3dfd0c38, 0x0feb631a,
0x3dfb7bd2, 0x0ff178f7, 0x3df9ead3, 0x0ff78ead,
0x3df8593b, 0x0ffda43b, 0x3df6c70a, 0x1003b9a2,
0x3df53440, 0x1009cee1, 0x3df3a0de, 0x100fe3f9,
0x3df20ce2, 0x1015f8e9, 0x3df0784e, 0x101c0db1,
0x3deee321, 0x10222252, 0x3ded4d5b, 0x102836cb,
0x3debb6fc, 0x102e4b1c, 0x3dea2004, 0x10345f45,
0x3de88874, 0x103a7346, 0x3de6f04b, 0x1040871f,
0x3de55789, 0x10469ad0, 0x3de3be2e, 0x104cae59,
0x3de2243b, 0x1052c1b9, 0x3de089af, 0x1058d4f2,
0x3ddeee8a, 0x105ee802, 0x3ddd52cd, 0x1064fae9,
0x3ddbb677, 0x106b0da8, 0x3dda1989, 0x1071203f,
0x3dd87c02, 0x107732ad, 0x3dd6dde2, 0x107d44f2,
0x3dd53f29, 0x1083570f, 0x3dd39fd8, 0x10896903,
0x3dd1ffef, 0x108f7ace, 0x3dd05f6d, 0x10958c71,
0x3dcebe52, 0x109b9dea, 0x3dcd1c9f, 0x10a1af3a,
0x3dcb7a54, 0x10a7c062, 0x3dc9d770, 0x10add160,
0x3dc833f3, 0x10b3e235, 0x3dc68fdf, 0x10b9f2e1,
0x3dc4eb31, 0x10c00364, 0x3dc345eb, 0x10c613bd,
0x3dc1a00d, 0x10cc23ed, 0x3dbff997, 0x10d233f4,
0x3dbe5288, 0x10d843d1, 0x3dbcaae1, 0x10de5384,
0x3dbb02a1, 0x10e4630e, 0x3db959c9, 0x10ea726e,
0x3db7b059, 0x10f081a4, 0x3db60651, 0x10f690b1,
0x3db45bb0, 0x10fc9f94, 0x3db2b077, 0x1102ae4c,
0x3db104a6, 0x1108bcdb, 0x3daf583d, 0x110ecb40,
0x3dadab3b, 0x1114d97b, 0x3dabfda1, 0x111ae78b,
0x3daa4f6f, 0x1120f572, 0x3da8a0a5, 0x1127032e,
0x3da6f143, 0x112d10c0, 0x3da54149, 0x11331e27,
0x3da390b6, 0x11392b64, 0x3da1df8c, 0x113f3876,
0x3da02dc9, 0x1145455e, 0x3d9e7b6e, 0x114b521c,
0x3d9cc87b, 0x11515eae, 0x3d9b14f1, 0x11576b16,
0x3d9960ce, 0x115d7753, 0x3d97ac13, 0x11638366,
0x3d95f6c1, 0x11698f4d, 0x3d9440d6, 0x116f9b09,
0x3d928a53, 0x1175a69b, 0x3d90d339, 0x117bb201,
0x3d8f1b86, 0x1181bd3c, 0x3d8d633c, 0x1187c84c,
0x3d8baa5a, 0x118dd331, 0x3d89f0e0, 0x1193ddea,
0x3d8836ce, 0x1199e878, 0x3d867c24, 0x119ff2db,
0x3d84c0e2, 0x11a5fd12, 0x3d830509, 0x11ac071e,
0x3d814898, 0x11b210fe, 0x3d7f8b8f, 0x11b81ab2,
0x3d7dcdef, 0x11be243a, 0x3d7c0fb6, 0x11c42d97,
0x3d7a50e6, 0x11ca36c8, 0x3d78917e, 0x11d03fcd,
0x3d76d17f, 0x11d648a6, 0x3d7510e8, 0x11dc5153,
0x3d734fb9, 0x11e259d4, 0x3d718df3, 0x11e86229,
0x3d6fcb95, 0x11ee6a52, 0x3d6e08a0, 0x11f4724f,
0x3d6c4513, 0x11fa7a1f, 0x3d6a80ee, 0x120081c3,
0x3d68bc32, 0x1206893a, 0x3d66f6de, 0x120c9085,
0x3d6530f3, 0x121297a3, 0x3d636a70, 0x12189e95,
0x3d61a356, 0x121ea55a, 0x3d5fdba4, 0x1224abf3,
0x3d5e135b, 0x122ab25e, 0x3d5c4a7b, 0x1230b89d,
0x3d5a8103, 0x1236beaf, 0x3d58b6f4, 0x123cc494,
0x3d56ec4d, 0x1242ca4c, 0x3d55210f, 0x1248cfd7,
0x3d53553a, 0x124ed535, 0x3d5188cd, 0x1254da66,
0x3d4fbbc9, 0x125adf69, 0x3d4dee2e, 0x1260e43f,
0x3d4c1ffc, 0x1266e8e8, 0x3d4a5132, 0x126ced63,
0x3d4881d1, 0x1272f1b1, 0x3d46b1d9, 0x1278f5d2,
0x3d44e14a, 0x127ef9c5, 0x3d431023, 0x1284fd8a,
0x3d413e65, 0x128b0121, 0x3d3f6c11, 0x1291048b,
0x3d3d9925, 0x129707c7, 0x3d3bc5a2, 0x129d0ad5,
0x3d39f188, 0x12a30db5, 0x3d381cd6, 0x12a91067,
0x3d36478e, 0x12af12ec, 0x3d3471af, 0x12b51542,
0x3d329b39, 0x12bb1769, 0x3d30c42b, 0x12c11963,
0x3d2eec87, 0x12c71b2e, 0x3d2d144c, 0x12cd1ccc,
0x3d2b3b7a, 0x12d31e3a, 0x3d296210, 0x12d91f7a,
0x3d278810, 0x12df208c, 0x3d25ad7a, 0x12e5216f,
0x3d23d24c, 0x12eb2224, 0x3d21f687, 0x12f122aa,
0x3d201a2c, 0x12f72301, 0x3d1e3d39, 0x12fd2329,
0x3d1c5fb0, 0x13032322, 0x3d1a8190, 0x130922ed,
0x3d18a2da, 0x130f2288, 0x3d16c38c, 0x131521f5,
0x3d14e3a8, 0x131b2132, 0x3d13032d, 0x13212041,
0x3d11221c, 0x13271f20, 0x3d0f4074, 0x132d1dd0,
0x3d0d5e35, 0x13331c50, 0x3d0b7b5f, 0x13391aa1,
0x3d0997f3, 0x133f18c3, 0x3d07b3f0, 0x134516b5,
0x3d05cf57, 0x134b1478, 0x3d03ea27, 0x1351120b,
0x3d020461, 0x13570f6f, 0x3d001e04, 0x135d0ca2,
0x3cfe3710, 0x136309a6, 0x3cfc4f86, 0x1369067a,
0x3cfa6766, 0x136f031f, 0x3cf87eaf, 0x1374ff93,
0x3cf69561, 0x137afbd7, 0x3cf4ab7e, 0x1380f7eb,
0x3cf2c103, 0x1386f3cf, 0x3cf0d5f3, 0x138cef83,
0x3ceeea4c, 0x1392eb07, 0x3cecfe0f, 0x1398e65a,
0x3ceb113b, 0x139ee17d, 0x3ce923d1, 0x13a4dc70,
0x3ce735d1, 0x13aad732, 0x3ce5473a, 0x13b0d1c3,
0x3ce3580e, 0x13b6cc24, 0x3ce1684b, 0x13bcc655,
0x3cdf77f2, 0x13c2c054, 0x3cdd8702, 0x13c8ba23,
0x3cdb957d, 0x13ceb3c1, 0x3cd9a361, 0x13d4ad2f,
0x3cd7b0af, 0x13daa66b, 0x3cd5bd67, 0x13e09f76,
0x3cd3c989, 0x13e69850, 0x3cd1d515, 0x13ec90fa,
0x3ccfe00b, 0x13f28972, 0x3ccdea6a, 0x13f881b8,
0x3ccbf434, 0x13fe79ce, 0x3cc9fd68, 0x140471b2,
0x3cc80605, 0x140a6965, 0x3cc60e0d, 0x141060e6,
0x3cc4157f, 0x14165836, 0x3cc21c5b, 0x141c4f54,
0x3cc022a0, 0x14224641, 0x3cbe2850, 0x14283cfc,
0x3cbc2d6b, 0x142e3385, 0x3cba31ef, 0x143429dc,
0x3cb835dd, 0x143a2002, 0x3cb63936, 0x144015f5,
0x3cb43bf9, 0x14460bb7, 0x3cb23e26, 0x144c0147,
0x3cb03fbd, 0x1451f6a4, 0x3cae40bf, 0x1457ebd0,
0x3cac412a, 0x145de0c9, 0x3caa4100, 0x1463d590,
0x3ca84041, 0x1469ca25, 0x3ca63eec, 0x146fbe87,
0x3ca43d01, 0x1475b2b7, 0x3ca23a80, 0x147ba6b4,
0x3ca0376a, 0x14819a7f, 0x3c9e33be, 0x14878e18,
0x3c9c2f7d, 0x148d817d, 0x3c9a2aa6, 0x149374b0,
0x3c98253a, 0x149967b0, 0x3c961f38, 0x149f5a7e,
0x3c9418a1, 0x14a54d18, 0x3c921174, 0x14ab3f7f,
0x3c9009b2, 0x14b131b4, 0x3c8e015a, 0x14b723b5,
0x3c8bf86d, 0x14bd1584, 0x3c89eeea, 0x14c3071f,
0x3c87e4d2, 0x14c8f887, 0x3c85da25, 0x14cee9bb,
0x3c83cee2, 0x14d4dabd, 0x3c81c30a, 0x14dacb8b,
0x3c7fb69d, 0x14e0bc25, 0x3c7da99b, 0x14e6ac8c,
0x3c7b9c03, 0x14ec9cbf, 0x3c798dd6, 0x14f28cbf,
0x3c777f14, 0x14f87c8b, 0x3c756fbd, 0x14fe6c23,
0x3c735fd0, 0x15045b88, 0x3c714f4e, 0x150a4ab9,
0x3c6f3e37, 0x151039b5, 0x3c6d2c8b, 0x1516287e,
0x3c6b1a4a, 0x151c1713, 0x3c690774, 0x15220573,
0x3c66f409, 0x1527f3a0, 0x3c64e009, 0x152de198,
0x3c62cb74, 0x1533cf5c, 0x3c60b649, 0x1539bcec,
0x3c5ea08a, 0x153faa47, 0x3c5c8a36, 0x1545976e,
0x3c5a734d, 0x154b8461, 0x3c585bcf, 0x1551711e,
0x3c5643bc, 0x15575da8, 0x3c542b14, 0x155d49fc,
0x3c5211d8, 0x1563361c, 0x3c4ff806, 0x15692207,
0x3c4ddda0, 0x156f0dbe, 0x3c4bc2a5, 0x1574f93f,
0x3c49a715, 0x157ae48c, 0x3c478af0, 0x1580cfa3,
0x3c456e37, 0x1586ba86, 0x3c4350e9, 0x158ca533,
0x3c413306, 0x15928fab, 0x3c3f148f, 0x159879ee,
0x3c3cf582, 0x159e63fc, 0x3c3ad5e2, 0x15a44dd4,
0x3c38b5ac, 0x15aa3777, 0x3c3694e2, 0x15b020e4,
0x3c347384, 0x15b60a1c, 0x3c325191, 0x15bbf31f,
0x3c302f09, 0x15c1dbeb, 0x3c2e0bed, 0x15c7c482,
0x3c2be83d, 0x15cdace4, 0x3c29c3f8, 0x15d3950f,
0x3c279f1e, 0x15d97d05, 0x3c2579b0, 0x15df64c5,
0x3c2353ae, 0x15e54c4e, 0x3c212d17, 0x15eb33a2,
0x3c1f05ec, 0x15f11ac0, 0x3c1cde2d, 0x15f701a7,
0x3c1ab5d9, 0x15fce859, 0x3c188cf1, 0x1602ced4,
0x3c166375, 0x1608b518, 0x3c143964, 0x160e9b27,
0x3c120ebf, 0x161480ff, 0x3c0fe386, 0x161a66a0,
0x3c0db7b9, 0x16204c0b, 0x3c0b8b58, 0x16263140,
0x3c095e62, 0x162c163d, 0x3c0730d9, 0x1631fb04,
0x3c0502bb, 0x1637df95, 0x3c02d409, 0x163dc3ee,
0x3c00a4c3, 0x1643a810, 0x3bfe74e9, 0x16498bfc,
0x3bfc447b, 0x164f6fb1, 0x3bfa1379, 0x1655532e,
0x3bf7e1e3, 0x165b3675, 0x3bf5afb9, 0x16611984,
0x3bf37cfb, 0x1666fc5c, 0x3bf149a9, 0x166cdefd,
0x3bef15c3, 0x1672c166, 0x3bece149, 0x1678a398,
0x3beaac3c, 0x167e8593, 0x3be8769b, 0x16846756,
0x3be64065, 0x168a48e2, 0x3be4099c, 0x16902a36,
0x3be1d240, 0x16960b52, 0x3bdf9a4f, 0x169bec37,
0x3bdd61cb, 0x16a1cce3, 0x3bdb28b3, 0x16a7ad58,
0x3bd8ef07, 0x16ad8d95, 0x3bd6b4c8, 0x16b36d9a,
0x3bd479f5, 0x16b94d67, 0x3bd23e8f, 0x16bf2cfc,
0x3bd00295, 0x16c50c59, 0x3bcdc607, 0x16caeb7e,
0x3bcb88e5, 0x16d0ca6a, 0x3bc94b31, 0x16d6a91f,
0x3bc70ce8, 0x16dc879a, 0x3bc4ce0c, 0x16e265de,
0x3bc28e9d, 0x16e843e9, 0x3bc04e9a, 0x16ee21bb,
0x3bbe0e04, 0x16f3ff55, 0x3bbbccda, 0x16f9dcb6,
0x3bb98b1d, 0x16ffb9df, 0x3bb748cd, 0x170596ce,
0x3bb505e9, 0x170b7385, 0x3bb2c272, 0x17115003,
0x3bb07e68, 0x17172c49, 0x3bae39ca, 0x171d0855,
0x3babf499, 0x1722e428, 0x3ba9aed5, 0x1728bfc2,
0x3ba7687e, 0x172e9b23, 0x3ba52194, 0x1734764b,
0x3ba2da16, 0x173a5139, 0x3ba09205, 0x17402bee,
0x3b9e4961, 0x1746066a, 0x3b9c002a, 0x174be0ad,
0x3b99b660, 0x1751bab5, 0x3b976c03, 0x17579485,
0x3b952112, 0x175d6e1b, 0x3b92d58f, 0x17634777,
0x3b908979, 0x17692099, 0x3b8e3cd0, 0x176ef982,
0x3b8bef94, 0x1774d231, 0x3b89a1c5, 0x177aaaa6,
0x3b875363, 0x178082e1, 0x3b85046e, 0x17865ae2,
0x3b82b4e6, 0x178c32a9, 0x3b8064cc, 0x17920a35,
0x3b7e141e, 0x1797e188, 0x3b7bc2de, 0x179db8a1,
0x3b79710b, 0x17a38f7f, 0x3b771ea5, 0x17a96623,
0x3b74cbad, 0x17af3c8c, 0x3b727822, 0x17b512bb,
0x3b702404, 0x17bae8b0, 0x3b6dcf54, 0x17c0be6a,
0x3b6b7a11, 0x17c693ea, 0x3b69243b, 0x17cc692e,
0x3b66cdd3, 0x17d23e38, 0x3b6476d8, 0x17d81308,
0x3b621f4a, 0x17dde79c, 0x3b5fc72a, 0x17e3bbf6,
0x3b5d6e78, 0x17e99014, 0x3b5b1533, 0x17ef63f8,
0x3b58bb5c, 0x17f537a0, 0x3b5660f2, 0x17fb0b0e,
0x3b5405f6, 0x1800de40, 0x3b51aa67, 0x1806b137,
0x3b4f4e46, 0x180c83f3, 0x3b4cf193, 0x18125673,
0x3b4a944d, 0x181828b8, 0x3b483676, 0x181dfac2,
0x3b45d80b, 0x1823cc90, 0x3b43790f, 0x18299e22,
0x3b411980, 0x182f6f79, 0x3b3eb960, 0x18354094,
0x3b3c58ad, 0x183b1174, 0x3b39f767, 0x1840e218,
0x3b379590, 0x1846b280, 0x3b353327, 0x184c82ab,
0x3b32d02b, 0x1852529b, 0x3b306c9d, 0x1858224f,
0x3b2e087e, 0x185df1c7, 0x3b2ba3cc, 0x1863c103,
0x3b293e89, 0x18699003, 0x3b26d8b3, 0x186f5ec6,
0x3b24724b, 0x18752d4d, 0x3b220b52, 0x187afb98,
0x3b1fa3c6, 0x1880c9a6, 0x3b1d3ba9, 0x18869778,
0x3b1ad2fa, 0x188c650e, 0x3b1869b9, 0x18923266,
0x3b15ffe6, 0x1897ff82, 0x3b139582, 0x189dcc62,
0x3b112a8b, 0x18a39905, 0x3b0ebf03, 0x18a9656b,
0x3b0c52e9, 0x18af3194, 0x3b09e63e, 0x18b4fd80,
0x3b077901, 0x18bac92f, 0x3b050b32, 0x18c094a1,
0x3b029cd1, 0x18c65fd7, 0x3b002ddf, 0x18cc2acf,
0x3afdbe5c, 0x18d1f589, 0x3afb4e47, 0x18d7c007,
0x3af8dda0, 0x18dd8a47, 0x3af66c68, 0x18e3544a,
0x3af3fa9e, 0x18e91e10, 0x3af18843, 0x18eee798,
0x3aef1556, 0x18f4b0e2, 0x3aeca1d8, 0x18fa79ef,
0x3aea2dc9, 0x190042bf, 0x3ae7b928, 0x19060b50,
0x3ae543f6, 0x190bd3a4, 0x3ae2ce32, 0x19119bba,
0x3ae057de, 0x19176393, 0x3adde0f8, 0x191d2b2d,
0x3adb6980, 0x1922f289, 0x3ad8f178, 0x1928b9a8,
0x3ad678de, 0x192e8088, 0x3ad3ffb3, 0x1934472a,
0x3ad185f7, 0x193a0d8e, 0x3acf0baa, 0x193fd3b4,
0x3acc90cc, 0x1945999b, 0x3aca155d, 0x194b5f44,
0x3ac7995c, 0x195124af, 0x3ac51ccb, 0x1956e9db,
0x3ac29fa9, 0x195caec9, 0x3ac021f5, 0x19627378,
0x3abda3b1, 0x196837e8, 0x3abb24db, 0x196dfc1a,
0x3ab8a575, 0x1973c00d, 0x3ab6257e, 0x197983c1,
0x3ab3a4f6, 0x197f4736, 0x3ab123dd, 0x19850a6d,
0x3aaea234, 0x198acd64, 0x3aac1ff9, 0x1990901d,
0x3aa99d2e, 0x19965296, 0x3aa719d2, 0x199c14d0,
0x3aa495e6, 0x19a1d6cb, 0x3aa21168, 0x19a79887,
0x3a9f8c5a, 0x19ad5a04, 0x3a9d06bc, 0x19b31b41,
0x3a9a808c, 0x19b8dc3e, 0x3a97f9cc, 0x19be9cfd,
0x3a95727c, 0x19c45d7b, 0x3a92ea9b, 0x19ca1dbb,
0x3a906229, 0x19cfddba, 0x3a8dd927, 0x19d59d7a,
0x3a8b4f95, 0x19db5cfa, 0x3a88c572, 0x19e11c3a,
0x3a863abe, 0x19e6db3b, 0x3a83af7b, 0x19ec99fb,
0x3a8123a6, 0x19f2587c, 0x3a7e9742, 0x19f816bc,
0x3a7c0a4d, 0x19fdd4bd, 0x3a797cc8, 0x1a03927d,
0x3a76eeb2, 0x1a094ffd, 0x3a74600d, 0x1a0f0d3d,
0x3a71d0d7, 0x1a14ca3d, 0x3a6f4111, 0x1a1a86fc,
0x3a6cb0ba, 0x1a20437b, 0x3a6a1fd4, 0x1a25ffb9,
0x3a678e5d, 0x1a2bbbb7, 0x3a64fc57, 0x1a317775,
0x3a6269c0, 0x1a3732f1, 0x3a5fd699, 0x1a3cee2d,
0x3a5d42e2, 0x1a42a929, 0x3a5aae9b, 0x1a4863e3,
0x3a5819c4, 0x1a4e1e5d, 0x3a55845d, 0x1a53d895,
0x3a52ee67, 0x1a59928d, 0x3a5057e0, 0x1a5f4c44,
0x3a4dc0c9, 0x1a6505b9, 0x3a4b2923, 0x1a6abeee,
0x3a4890ed, 0x1a7077e1, 0x3a45f827, 0x1a763093,
0x3a435ed1, 0x1a7be904, 0x3a40c4eb, 0x1a81a134,
0x3a3e2a76, 0x1a875922, 0x3a3b8f71, 0x1a8d10ce,
0x3a38f3dc, 0x1a92c839, 0x3a3657b8, 0x1a987f63,
0x3a33bb04, 0x1a9e364b, 0x3a311dc0, 0x1aa3ecf1,
0x3a2e7fed, 0x1aa9a355, 0x3a2be18a, 0x1aaf5978,
0x3a294298, 0x1ab50f59, 0x3a26a316, 0x1abac4f8,
0x3a240305, 0x1ac07a55, 0x3a216264, 0x1ac62f70,
0x3a1ec134, 0x1acbe449, 0x3a1c1f74, 0x1ad198e0,
0x3a197d25, 0x1ad74d34, 0x3a16da47, 0x1add0147,
0x3a1436d9, 0x1ae2b517, 0x3a1192dc, 0x1ae868a5,
0x3a0eee50, 0x1aee1bf0, 0x3a0c4935, 0x1af3cef9,
0x3a09a38a, 0x1af981c0, 0x3a06fd50, 0x1aff3444,
0x3a045687, 0x1b04e685, 0x3a01af2f, 0x1b0a9883,
0x39ff0747, 0x1b104a3f, 0x39fc5ed1, 0x1b15fbb8,
0x39f9b5cb, 0x1b1bacef, 0x39f70c37, 0x1b215de2,
0x39f46213, 0x1b270e93, 0x39f1b761, 0x1b2cbf00,
0x39ef0c1f, 0x1b326f2b, 0x39ec604e, 0x1b381f12,
0x39e9b3ef, 0x1b3dceb6, 0x39e70701, 0x1b437e17,
0x39e45983, 0x1b492d35, 0x39e1ab77, 0x1b4edc0f,
0x39defcdd, 0x1b548aa6, 0x39dc4db3, 0x1b5a38f9,
0x39d99dfa, 0x1b5fe709, 0x39d6edb3, 0x1b6594d6,
0x39d43cdd, 0x1b6b425f, 0x39d18b79, 0x1b70efa4,
0x39ced986, 0x1b769ca6, 0x39cc2704, 0x1b7c4963,
0x39c973f3, 0x1b81f5dd, 0x39c6c054, 0x1b87a213,
0x39c40c27, 0x1b8d4e06, 0x39c1576a, 0x1b92f9b4,
0x39bea220, 0x1b98a51e, 0x39bbec47, 0x1b9e5044,
0x39b935df, 0x1ba3fb26, 0x39b67ee9, 0x1ba9a5c4,
0x39b3c765, 0x1baf501d, 0x39b10f52, 0x1bb4fa32,
0x39ae56b1, 0x1bbaa403, 0x39ab9d81, 0x1bc04d8f,
0x39a8e3c4, 0x1bc5f6d7, 0x39a62978, 0x1bcb9fda,
0x39a36e9d, 0x1bd14899, 0x39a0b335, 0x1bd6f113,
0x399df73e, 0x1bdc9949, 0x399b3ab9, 0x1be24139,
0x39987da6, 0x1be7e8e5, 0x3995c005, 0x1bed904c,
0x399301d6, 0x1bf3376f, 0x39904319, 0x1bf8de4c,
0x398d83ce, 0x1bfe84e4, 0x398ac3f4, 0x1c042b37,
0x3988038d, 0x1c09d145, 0x39854298, 0x1c0f770e,
0x39828115, 0x1c151c91, 0x397fbf04, 0x1c1ac1cf,
0x397cfc65, 0x1c2066c8, 0x397a3938, 0x1c260b7c,
0x3977757d, 0x1c2bafea, 0x3974b135, 0x1c315412,
0x3971ec5f, 0x1c36f7f5, 0x396f26fb, 0x1c3c9b93,
0x396c610a, 0x1c423eea, 0x39699a8a, 0x1c47e1fc,
0x3966d37d, 0x1c4d84c8, 0x39640be3, 0x1c53274f,
0x396143bb, 0x1c58c98f, 0x395e7b05, 0x1c5e6b8a,
0x395bb1c2, 0x1c640d3e, 0x3958e7f1, 0x1c69aead,
0x39561d92, 0x1c6f4fd5, 0x395352a7, 0x1c74f0b7,
0x3950872d, 0x1c7a9153, 0x394dbb27, 0x1c8031a9,
0x394aee93, 0x1c85d1b8, 0x39482171, 0x1c8b7181,
0x394553c3, 0x1c911104, 0x39428586, 0x1c96b040,
0x393fb6bd, 0x1c9c4f35, 0x393ce767, 0x1ca1ede4,
0x393a1783, 0x1ca78c4d, 0x39374712, 0x1cad2a6e,
0x39347613, 0x1cb2c849, 0x3931a488, 0x1cb865dd,
0x392ed270, 0x1cbe032a, 0x392bffca, 0x1cc3a031,
0x39292c97, 0x1cc93cf0, 0x392658d8, 0x1cced968,
0x3923848b, 0x1cd47599, 0x3920afb1, 0x1cda1183,
0x391dda4b, 0x1cdfad26, 0x391b0457, 0x1ce54882,
0x39182dd7, 0x1ceae396, 0x391556ca, 0x1cf07e63,
0x39127f2f, 0x1cf618e9, 0x390fa708, 0x1cfbb327,
0x390cce55, 0x1d014d1d, 0x3909f514, 0x1d06e6cc,
0x39071b47, 0x1d0c8034, 0x390440ed, 0x1d121954,
0x39016606, 0x1d17b22c, 0x38fe8a93, 0x1d1d4abc,
0x38fbae93, 0x1d22e304, 0x38f8d206, 0x1d287b05,
0x38f5f4ed, 0x1d2e12bd, 0x38f31747, 0x1d33aa2e,
0x38f03915, 0x1d394156, 0x38ed5a56, 0x1d3ed837,
0x38ea7b0b, 0x1d446ecf, 0x38e79b34, 0x1d4a051f,
0x38e4bad0, 0x1d4f9b26, 0x38e1d9df, 0x1d5530e6,
0x38def863, 0x1d5ac65d, 0x38dc165a, 0x1d605b8c,
0x38d933c4, 0x1d65f072, 0x38d650a3, 0x1d6b850f,
0x38d36cf5, 0x1d711964, 0x38d088bb, 0x1d76ad71,
0x38cda3f4, 0x1d7c4134, 0x38cabea2, 0x1d81d4af,
0x38c7d8c3, 0x1d8767e1, 0x38c4f259, 0x1d8cfaca,
0x38c20b62, 0x1d928d6b, 0x38bf23df, 0x1d981fc2,
0x38bc3bd1, 0x1d9db1d1, 0x38b95336, 0x1da34396,
0x38b66a0f, 0x1da8d512, 0x38b3805c, 0x1dae6645,
0x38b0961e, 0x1db3f72f, 0x38adab54, 0x1db987cf,
0x38aabffd, 0x1dbf1826, 0x38a7d41b, 0x1dc4a834,
0x38a4e7ad, 0x1dca37f8, 0x38a1fab4, 0x1dcfc773,
0x389f0d2e, 0x1dd556a4, 0x389c1f1d, 0x1ddae58b,
0x38993080, 0x1de07429, 0x38964158, 0x1de6027e,
0x389351a4, 0x1deb9088, 0x38906164, 0x1df11e49,
0x388d7099, 0x1df6abbf, 0x388a7f42, 0x1dfc38ec,
0x38878d60, 0x1e01c5cf, 0x38849af2, 0x1e075268,
0x3881a7f9, 0x1e0cdeb6, 0x387eb474, 0x1e126abb,
0x387bc064, 0x1e17f675, 0x3878cbc9, 0x1e1d81e5,
0x3875d6a2, 0x1e230d0b, 0x3872e0f0, 0x1e2897e6,
0x386feab3, 0x1e2e2277, 0x386cf3ea, 0x1e33acbe,
0x3869fc97, 0x1e3936ba, 0x386704b8, 0x1e3ec06b,
0x38640c4d, 0x1e4449d2, 0x38611358, 0x1e49d2ee,
0x385e19d8, 0x1e4f5bbf, 0x385b1fcc, 0x1e54e446,
0x38582536, 0x1e5a6c82, 0x38552a14, 0x1e5ff473,
0x38522e68, 0x1e657c19, 0x384f3230, 0x1e6b0373,
0x384c356e, 0x1e708a83, 0x38493820, 0x1e761148,
0x38463a48, 0x1e7b97c2, 0x38433be5, 0x1e811df0,
0x38403cf7, 0x1e86a3d3, 0x383d3d7e, 0x1e8c296b,
0x383a3d7b, 0x1e91aeb7, 0x38373ced, 0x1e9733b8,
0x38343bd4, 0x1e9cb86e, 0x38313a30, 0x1ea23cd8,
0x382e3802, 0x1ea7c0f6, 0x382b3549, 0x1ead44c9,
0x38283205, 0x1eb2c850, 0x38252e37, 0x1eb84b8b,
0x382229df, 0x1ebdce7b, 0x381f24fc, 0x1ec3511f,
0x381c1f8e, 0x1ec8d376, 0x38191996, 0x1ece5582,
0x38161314, 0x1ed3d742, 0x38130c07, 0x1ed958b6,
0x38100470, 0x1eded9dd, 0x380cfc4f, 0x1ee45ab9,
0x3809f3a3, 0x1ee9db48, 0x3806ea6d, 0x1eef5b8b,
0x3803e0ac, 0x1ef4db81, 0x3800d662, 0x1efa5b2c,
0x37fdcb8d, 0x1effda89, 0x37fac02e, 0x1f05599b,
0x37f7b446, 0x1f0ad860, 0x37f4a7d2, 0x1f1056d8,
0x37f19ad5, 0x1f15d503, 0x37ee8d4e, 0x1f1b52e2,
0x37eb7f3d, 0x1f20d074, 0x37e870a2, 0x1f264db9,
0x37e5617d, 0x1f2bcab2, 0x37e251ce, 0x1f31475d,
0x37df4195, 0x1f36c3bc, 0x37dc30d2, 0x1f3c3fcd,
0x37d91f86, 0x1f41bb92, 0x37d60daf, 0x1f473709,
0x37d2fb4f, 0x1f4cb233, 0x37cfe865, 0x1f522d10,
0x37ccd4f2, 0x1f57a7a0, 0x37c9c0f4, 0x1f5d21e2,
0x37c6ac6d, 0x1f629bd7, 0x37c3975d, 0x1f68157f,
0x37c081c3, 0x1f6d8ed9, 0x37bd6b9f, 0x1f7307e5,
0x37ba54f2, 0x1f7880a4, 0x37b73dbb, 0x1f7df915,
0x37b425fb, 0x1f837139, 0x37b10db1, 0x1f88e90e,
0x37adf4de, 0x1f8e6096, 0x37aadb82, 0x1f93d7d0,
0x37a7c19c, 0x1f994ebc, 0x37a4a72d, 0x1f9ec55b,
0x37a18c34, 0x1fa43bab, 0x379e70b3, 0x1fa9b1ad,
0x379b54a8, 0x1faf2761, 0x37983814, 0x1fb49cc7,
0x37951af6, 0x1fba11de, 0x3791fd50, 0x1fbf86a7,
0x378edf20, 0x1fc4fb22, 0x378bc068, 0x1fca6f4f,
0x3788a126, 0x1fcfe32d, 0x3785815b, 0x1fd556bd,
0x37826108, 0x1fdac9fe, 0x377f402b, 0x1fe03cf0,
0x377c1ec5, 0x1fe5af94, 0x3778fcd7, 0x1feb21e9,
0x3775da5f, 0x1ff093ef, 0x3772b75f, 0x1ff605a7,
0x376f93d6, 0x1ffb7710, 0x376c6fc4, 0x2000e829,
0x37694b2a, 0x200658f4, 0x37662606, 0x200bc970,
0x3763005a, 0x2011399d, 0x375fda26, 0x2016a97a,
0x375cb368, 0x201c1909, 0x37598c23, 0x20218848,
0x37566454, 0x2026f738, 0x37533bfd, 0x202c65d9,
0x3750131e, 0x2031d42a, 0x374ce9b6, 0x2037422c,
0x3749bfc5, 0x203cafde, 0x3746954c, 0x20421d41,
0x37436a4b, 0x20478a54, 0x37403ec1, 0x204cf717,
0x373d12b0, 0x2052638b, 0x3739e615, 0x2057cfaf,
0x3736b8f3, 0x205d3b83, 0x37338b48, 0x2062a708,
0x37305d15, 0x2068123c, 0x372d2e5a, 0x206d7d21,
0x3729ff17, 0x2072e7b5, 0x3726cf4c, 0x207851fa,
0x37239ef8, 0x207dbbee, 0x37206e1d, 0x20832592,
0x371d3cb9, 0x20888ee6, 0x371a0ace, 0x208df7ea,
0x3716d85a, 0x2093609d, 0x3713a55f, 0x2098c900,
0x371071dc, 0x209e3112, 0x370d3dd0, 0x20a398d5,
0x370a093d, 0x20a90046, 0x3706d423, 0x20ae6767,
0x37039e80, 0x20b3ce37, 0x37006856, 0x20b934b7,
0x36fd31a4, 0x20be9ae6, 0x36f9fa6a, 0x20c400c4,
0x36f6c2a9, 0x20c96651, 0x36f38a60, 0x20cecb8d,
0x36f0518f, 0x20d43079, 0x36ed1837, 0x20d99513,
0x36e9de58, 0x20def95c, 0x36e6a3f1, 0x20e45d55,
0x36e36902, 0x20e9c0fc, 0x36e02d8c, 0x20ef2451,
0x36dcf18f, 0x20f48756, 0x36d9b50a, 0x20f9ea09,
0x36d677fe, 0x20ff4c6b, 0x36d33a6a, 0x2104ae7c,
0x36cffc50, 0x210a103b, 0x36ccbdae, 0x210f71a8,
0x36c97e85, 0x2114d2c4, 0x36c63ed4, 0x211a338e,
0x36c2fe9d, 0x211f9407, 0x36bfbdde, 0x2124f42e,
0x36bc7c98, 0x212a5403, 0x36b93acc, 0x212fb386,
0x36b5f878, 0x213512b8, 0x36b2b59d, 0x213a7197,
0x36af723b, 0x213fd025, 0x36ac2e53, 0x21452e60,
0x36a8e9e3, 0x214a8c49, 0x36a5a4ed, 0x214fe9e1,
0x36a25f70, 0x21554726, 0x369f196b, 0x215aa418,
0x369bd2e1, 0x216000b9, 0x36988bcf, 0x21655d07,
0x36954437, 0x216ab903, 0x3691fc18, 0x217014ac,
0x368eb372, 0x21757003, 0x368b6a46, 0x217acb07,
0x36882093, 0x218025b8, 0x3684d65a, 0x21858017,
0x36818b9a, 0x218ada24, 0x367e4054, 0x219033dd,
0x367af487, 0x21958d44, 0x3677a833, 0x219ae657,
0x36745b5a, 0x21a03f18, 0x36710dfa, 0x21a59786,
0x366dc013, 0x21aaefa1, 0x366a71a7, 0x21b04769,
0x366722b4, 0x21b59ede, 0x3663d33b, 0x21baf5ff,
0x3660833b, 0x21c04ccd, 0x365d32b6, 0x21c5a348,
0x3659e1aa, 0x21caf970, 0x36569019, 0x21d04f44,
0x36533e01, 0x21d5a4c5, 0x364feb63, 0x21daf9f2,
0x364c983f, 0x21e04ecc, 0x36494495, 0x21e5a353,
0x3645f065, 0x21eaf785, 0x36429bb0, 0x21f04b64,
0x363f4674, 0x21f59eef, 0x363bf0b3, 0x21faf227,
0x36389a6b, 0x2200450a, 0x3635439e, 0x2205979a,
0x3631ec4c, 0x220ae9d6, 0x362e9473, 0x22103bbd,
0x362b3c15, 0x22158d51, 0x3627e331, 0x221ade91,
0x362489c7, 0x22202f7c, 0x36212fd8, 0x22258013,
0x361dd564, 0x222ad056, 0x361a7a6a, 0x22302045,
0x36171eea, 0x22356fdf, 0x3613c2e5, 0x223abf25,
0x3610665a, 0x22400e16, 0x360d094a, 0x22455cb3,
0x3609abb5, 0x224aaafc, 0x36064d9a, 0x224ff8ef,
0x3602eefa, 0x2255468e, 0x35ff8fd5, 0x225a93d9,
0x35fc302b, 0x225fe0ce, 0x35f8cffb, 0x22652d6f,
0x35f56f46, 0x226a79bb, 0x35f20e0c, 0x226fc5b2,
0x35eeac4d, 0x22751154, 0x35eb4a09, 0x227a5ca1,
0x35e7e740, 0x227fa799, 0x35e483f2, 0x2284f23c,
0x35e1201e, 0x228a3c8a, 0x35ddbbc6, 0x228f8682,
0x35da56e9, 0x2294d025, 0x35d6f187, 0x229a1973,
0x35d38ba1, 0x229f626c, 0x35d02535, 0x22a4ab0f,
0x35ccbe45, 0x22a9f35c, 0x35c956d0, 0x22af3b54,
0x35c5eed6, 0x22b482f7, 0x35c28658, 0x22b9ca43,
0x35bf1d54, 0x22bf113b, 0x35bbb3cd, 0x22c457dc,
0x35b849c0, 0x22c99e28, 0x35b4df30, 0x22cee41d,
0x35b1741a, 0x22d429bd, 0x35ae0880, 0x22d96f07,
0x35aa9c62, 0x22deb3fb, 0x35a72fbf, 0x22e3f899,
0x35a3c298, 0x22e93ce1, 0x35a054ed, 0x22ee80d3,
0x359ce6bd, 0x22f3c46e, 0x35997809, 0x22f907b3,
0x359608d1, 0x22fe4aa2, 0x35929914, 0x23038d3b,
0x358f28d3, 0x2308cf7d, 0x358bb80e, 0x230e1169,
0x358846c5, 0x231352fe, 0x3584d4f8, 0x2318943d,
0x358162a7, 0x231dd525, 0x357defd2, 0x232315b7,
0x357a7c79, 0x232855f2, 0x3577089c, 0x232d95d6,
0x3573943b, 0x2332d563, 0x35701f56, 0x23381499,
0x356ca9ed, 0x233d5379, 0x35693401, 0x23429201,
0x3565bd90, 0x2347d033, 0x3562469c, 0x234d0e0d,
0x355ecf25, 0x23524b91, 0x355b5729, 0x235788bd,
0x3557deaa, 0x235cc592, 0x355465a7, 0x23620210,
0x3550ec21, 0x23673e36, 0x354d7217, 0x236c7a06,
0x3549f789, 0x2371b57d, 0x35467c78, 0x2376f09e,
0x354300e4, 0x237c2b66, 0x353f84cc, 0x238165d8,
0x353c0831, 0x23869ff1, 0x35388b13, 0x238bd9b3,
0x35350d71, 0x2391131e, 0x35318f4c, 0x23964c30,
0x352e10a3, 0x239b84eb, 0x352a9178, 0x23a0bd4e,
0x352711c9, 0x23a5f558, 0x35239197, 0x23ab2d0b,
0x352010e2, 0x23b06466, 0x351c8faa, 0x23b59b69,
0x35190def, 0x23bad214, 0x35158bb1, 0x23c00867,
0x351208ef, 0x23c53e61, 0x350e85ab, 0x23ca7403,
0x350b01e4, 0x23cfa94d, 0x35077d9a, 0x23d4de3f,
0x3503f8ce, 0x23da12d8, 0x3500737e, 0x23df4718,
0x34fcedac, 0x23e47b00, 0x34f96757, 0x23e9ae90,
0x34f5e07f, 0x23eee1c7, 0x34f25924, 0x23f414a5,
0x34eed147, 0x23f9472b, 0x34eb48e8, 0x23fe7958,
0x34e7c005, 0x2403ab2c, 0x34e436a1, 0x2408dca7,
0x34e0acb9, 0x240e0dc9, 0x34dd224f, 0x24133e92,
0x34d99763, 0x24186f02, 0x34d60bf5, 0x241d9f1a,
0x34d28004, 0x2422ced8, 0x34cef390, 0x2427fe3d,
0x34cb669b, 0x242d2d48, 0x34c7d923, 0x24325bfb,
0x34c44b29, 0x24378a54, 0x34c0bcac, 0x243cb854,
0x34bd2dae, 0x2441e5fa, 0x34b99e2d, 0x24471347,
0x34b60e2b, 0x244c403a, 0x34b27da6, 0x24516cd4,
0x34aeec9f, 0x24569914, 0x34ab5b16, 0x245bc4fb,
0x34a7c90c, 0x2460f088, 0x34a4367f, 0x24661bbb,
0x34a0a370, 0x246b4694, 0x349d0fe0, 0x24707113,
0x34997bce, 0x24759b39, 0x3495e73a, 0x247ac504,
0x34925224, 0x247fee76, 0x348ebc8d, 0x2485178d,
0x348b2673, 0x248a404b, 0x34878fd9, 0x248f68ae,
0x3483f8bc, 0x249490b7, 0x3480611e, 0x2499b865,
0x347cc8ff, 0x249edfba, 0x3479305e, 0x24a406b4,
0x3475973b, 0x24a92d54, 0x3471fd97, 0x24ae5399,
0x346e6372, 0x24b37983, 0x346ac8cb, 0x24b89f14,
0x34672da3, 0x24bdc449, 0x346391fa, 0x24c2e924,
0x345ff5cf, 0x24c80da4, 0x345c5923, 0x24cd31ca,
0x3458bbf6, 0x24d25594, 0x34551e48, 0x24d77904,
0x34518019, 0x24dc9c19, 0x344de168, 0x24e1bed3,
0x344a4237, 0x24e6e132, 0x3446a284, 0x24ec0335,
0x34430251, 0x24f124de, 0x343f619c, 0x24f6462c,
0x343bc067, 0x24fb671e, 0x34381eb1, 0x250087b5,
0x34347c7a, 0x2505a7f1, 0x3430d9c2, 0x250ac7d2,
0x342d3689, 0x250fe757, 0x342992d0, 0x25150680,
0x3425ee96, 0x251a254e, 0x342249db, 0x251f43c1,
0x341ea4a0, 0x252461d8, 0x341afee4, 0x25297f93,
0x341758a7, 0x252e9cf3, 0x3413b1ea, 0x2533b9f7,
0x34100aac, 0x2538d69f, 0x340c62ee, 0x253df2eb,
0x3408bab0, 0x25430edc, 0x340511f1, 0x25482a70,
0x340168b2, 0x254d45a9, 0x33fdbef2, 0x25526085,
0x33fa14b2, 0x25577b06, 0x33f669f2, 0x255c952a,
0x33f2beb2, 0x2561aef2, 0x33ef12f2, 0x2566c85e,
0x33eb66b1, 0x256be16d, 0x33e7b9f0, 0x2570fa20,
0x33e40cb0, 0x25761277, 0x33e05eef, 0x257b2a71,
0x33dcb0ae, 0x2580420f, 0x33d901ed, 0x25855951,
0x33d552ac, 0x258a7035, 0x33d1a2ec, 0x258f86be,
0x33cdf2ab, 0x25949ce9, 0x33ca41eb, 0x2599b2b8,
0x33c690ab, 0x259ec82a, 0x33c2deeb, 0x25a3dd3f,
0x33bf2cac, 0x25a8f1f7, 0x33bb79ec, 0x25ae0652,
0x33b7c6ae, 0x25b31a51, 0x33b412ef, 0x25b82df2,
0x33b05eb1, 0x25bd4136, 0x33aca9f4, 0x25c2541e,
0x33a8f4b6, 0x25c766a8, 0x33a53efa, 0x25cc78d4,
0x33a188be, 0x25d18aa4, 0x339dd203, 0x25d69c16,
0x339a1ac8, 0x25dbad2b, 0x3396630e, 0x25e0bde2,
0x3392aad4, 0x25e5ce3c, 0x338ef21c, 0x25eade39,
0x338b38e4, 0x25efedd8, 0x33877f2d, 0x25f4fd19,
0x3383c4f7, 0x25fa0bfd, 0x33800a42, 0x25ff1a83,
0x337c4f0d, 0x260428ab, 0x3378935a, 0x26093675,
0x3374d728, 0x260e43e2, 0x33711a76, 0x261350f0,
0x336d5d46, 0x26185da1, 0x33699f97, 0x261d69f4,
0x3365e169, 0x262275e8, 0x336222bc, 0x2627817f,
0x335e6391, 0x262c8cb7, 0x335aa3e6, 0x26319792,
0x3356e3bd, 0x2636a20d, 0x33532316, 0x263bac2b,
0x334f61ef, 0x2640b5eb, 0x334ba04a, 0x2645bf4b,
0x3347de27, 0x264ac84e, 0x33441b85, 0x264fd0f2,
0x33405864, 0x2654d938, 0x333c94c5, 0x2659e11f,
0x3338d0a8, 0x265ee8a7, 0x33350c0c, 0x2663efd1,
0x333146f2, 0x2668f69b, 0x332d8159, 0x266dfd08,
0x3329bb43, 0x26730315, 0x3325f4ae, 0x267808c3,
0x33222d9a, 0x267d0e13, 0x331e6609, 0x26821303,
0x331a9dfa, 0x26871795, 0x3316d56c, 0x268c1bc8,
0x33130c60, 0x26911f9b, 0x330f42d7, 0x2696230f,
0x330b78cf, 0x269b2624, 0x3307ae49, 0x26a028da,
0x3303e346, 0x26a52b30, 0x330017c4, 0x26aa2d27,
0x32fc4bc5, 0x26af2ebf, 0x32f87f48, 0x26b42ff7,
0x32f4b24d, 0x26b930d0, 0x32f0e4d5, 0x26be3149,
0x32ed16df, 0x26c33163, 0x32e9486b, 0x26c8311d,
0x32e57979, 0x26cd3077, 0x32e1aa0a, 0x26d22f72,
0x32ddda1e, 0x26d72e0c, 0x32da09b4, 0x26dc2c47,
0x32d638cc, 0x26e12a22, 0x32d26767, 0x26e6279d,
0x32ce9585, 0x26eb24b9, 0x32cac325, 0x26f02174,
0x32c6f048, 0x26f51dcf, 0x32c31ced, 0x26fa19ca,
0x32bf4916, 0x26ff1564, 0x32bb74c1, 0x2704109f,
0x32b79fef, 0x27090b79, 0x32b3caa0, 0x270e05f3,
0x32aff4d3, 0x2713000c, 0x32ac1e8a, 0x2717f9c6,
0x32a847c4, 0x271cf31e, 0x32a47080, 0x2721ec16,
0x32a098c0, 0x2726e4ae, 0x329cc083, 0x272bdce5,
0x3298e7c9, 0x2730d4bb, 0x32950e92, 0x2735cc31,
0x329134de, 0x273ac346, 0x328d5aad, 0x273fb9fa,
0x32898000, 0x2744b04d, 0x3285a4d6, 0x2749a640,
0x3281c92f, 0x274e9bd1, 0x327ded0c, 0x27539102,
0x327a106c, 0x275885d1, 0x32763350, 0x275d7a40,
0x327255b7, 0x27626e4d, 0x326e77a2, 0x276761f9,
0x326a9910, 0x276c5544, 0x3266ba02, 0x2771482d,
0x3262da77, 0x27763ab5, 0x325efa70, 0x277b2cdc,
0x325b19ed, 0x27801ea2, 0x325738ee, 0x27851006,
0x32535772, 0x278a0108, 0x324f757a, 0x278ef1a9,
0x324b9306, 0x2793e1e8, 0x3247b016, 0x2798d1c6,
0x3243ccaa, 0x279dc142, 0x323fe8c2, 0x27a2b05c,
0x323c045e, 0x27a79f14, 0x32381f7e, 0x27ac8d6b,
0x32343a22, 0x27b17b60, 0x3230544a, 0x27b668f2,
0x322c6df7, 0x27bb5623, 0x32288727, 0x27c042f2,
0x32249fdc, 0x27c52f5e, 0x3220b815, 0x27ca1b69,
0x321ccfd2, 0x27cf0711, 0x3218e714, 0x27d3f257,
0x3214fdda, 0x27d8dd3b, 0x32111425, 0x27ddc7bd,
0x320d29f4, 0x27e2b1dc, 0x32093f47, 0x27e79b98,
0x3205541f, 0x27ec84f3, 0x3201687c, 0x27f16dea,
0x31fd7c5d, 0x27f65680, 0x31f98fc3, 0x27fb3eb2,
0x31f5a2ae, 0x28002682, 0x31f1b51d, 0x28050def,
0x31edc711, 0x2809f4fa, 0x31e9d88a, 0x280edba2,
0x31e5e988, 0x2813c1e6, 0x31e1fa0a, 0x2818a7c8,
0x31de0a12, 0x281d8d48, 0x31da199e, 0x28227264,
0x31d628b0, 0x2827571d, 0x31d23746, 0x282c3b73,
0x31ce4562, 0x28311f65, 0x31ca5303, 0x283602f5,
0x31c66029, 0x283ae622, 0x31c26cd4, 0x283fc8eb,
0x31be7904, 0x2844ab51, 0x31ba84b9, 0x28498d53,
0x31b68ff4, 0x284e6ef2, 0x31b29ab4, 0x2853502e,
0x31aea4fa, 0x28583106, 0x31aaaec5, 0x285d117b,
0x31a6b815, 0x2861f18c, 0x31a2c0eb, 0x2866d139,
0x319ec947, 0x286bb083, 0x319ad128, 0x28708f69,
0x3196d88e, 0x28756deb, 0x3192df7a, 0x287a4c09,
0x318ee5ec, 0x287f29c4, 0x318aebe4, 0x2884071a,
0x3186f161, 0x2888e40d, 0x3182f665, 0x288dc09c,
0x317efaee, 0x28929cc6, 0x317afefc, 0x2897788c,
0x31770291, 0x289c53ef, 0x317305ac, 0x28a12eed,
0x316f084d, 0x28a60987, 0x316b0a74, 0x28aae3bc,
0x31670c20, 0x28afbd8d, 0x31630d53, 0x28b496fa,
0x315f0e0c, 0x28b97002, 0x315b0e4c, 0x28be48a6,
0x31570e11, 0x28c320e5, 0x31530d5d, 0x28c7f8c0,
0x314f0c2f, 0x28ccd036, 0x314b0a87, 0x28d1a748,
0x31470866, 0x28d67df4, 0x314305cb, 0x28db543c,
0x313f02b7, 0x28e02a20, 0x313aff29, 0x28e4ff9e,
0x3136fb22, 0x28e9d4b7, 0x3132f6a1, 0x28eea96c,
0x312ef1a7, 0x28f37dbb, 0x312aec33, 0x28f851a6,
0x3126e646, 0x28fd252b, 0x3122dfe0, 0x2901f84b,
0x311ed901, 0x2906cb06, 0x311ad1a8, 0x290b9d5c,
0x3116c9d7, 0x29106f4c, 0x3112c18c, 0x291540d8,
0x310eb8c8, 0x291a11fd, 0x310aaf8b, 0x291ee2be,
0x3106a5d5, 0x2923b319, 0x31029ba6, 0x2928830e,
0x30fe90fe, 0x292d529e, 0x30fa85dd, 0x293221c8,
0x30f67a44, 0x2936f08d, 0x30f26e31, 0x293bbeec,
0x30ee61a6, 0x29408ce5, 0x30ea54a2, 0x29455a78,
0x30e64725, 0x294a27a6, 0x30e23930, 0x294ef46e,
0x30de2ac2, 0x2953c0cf, 0x30da1bdc, 0x29588ccb,
0x30d60c7d, 0x295d5861, 0x30d1fca5, 0x29622391,
0x30cdec55, 0x2966ee5a, 0x30c9db8d, 0x296bb8be,
0x30c5ca4c, 0x297082bb, 0x30c1b893, 0x29754c52,
0x30bda661, 0x297a1583, 0x30b993b8, 0x297ede4d,
0x30b58096, 0x2983a6b1, 0x30b16cfc, 0x29886eaf,
0x30ad58ea, 0x298d3646, 0x30a9445f, 0x2991fd76,
0x30a52f5d, 0x2996c440, 0x30a119e2, 0x299b8aa4,
0x309d03f0, 0x29a050a0, 0x3098ed86, 0x29a51636,
0x3094d6a3, 0x29a9db65, 0x3090bf49, 0x29aea02e,
0x308ca777, 0x29b3648f, 0x30888f2d, 0x29b8288a,
0x3084766c, 0x29bcec1e, 0x30805d33, 0x29c1af4b,
0x307c4382, 0x29c67210, 0x30782959, 0x29cb346f,
0x30740eb9, 0x29cff667, 0x306ff3a1, 0x29d4b7f7,
0x306bd812, 0x29d97920, 0x3067bc0b, 0x29de39e2,
0x30639f8d, 0x29e2fa3d, 0x305f8298, 0x29e7ba30,
0x305b652b, 0x29ec79bc, 0x30574747, 0x29f138e0,
0x305328eb, 0x29f5f79d, 0x304f0a19, 0x29fab5f3,
0x304aeacf, 0x29ff73e0, 0x3046cb0e, 0x2a043166,
0x3042aad5, 0x2a08ee85, 0x303e8a26, 0x2a0dab3c,
0x303a6900, 0x2a12678b, 0x30364763, 0x2a172372,
0x3032254e, 0x2a1bdef1, 0x302e02c3, 0x2a209a09,
0x3029dfc1, 0x2a2554b8, 0x3025bc48, 0x2a2a0f00,
0x30219859, 0x2a2ec8df, 0x301d73f2, 0x2a338257,
0x30194f15, 0x2a383b66, 0x301529c1, 0x2a3cf40d,
0x301103f7, 0x2a41ac4c, 0x300cddb6, 0x2a466423,
0x3008b6fe, 0x2a4b1b91, 0x30048fd0, 0x2a4fd297,
0x3000682b, 0x2a548935, 0x2ffc4010, 0x2a593f6a,
0x2ff8177f, 0x2a5df536, 0x2ff3ee77, 0x2a62aa9a,
0x2fefc4f9, 0x2a675f96, 0x2feb9b04, 0x2a6c1429,
0x2fe7709a, 0x2a70c853, 0x2fe345b9, 0x2a757c15,
0x2fdf1a62, 0x2a7a2f6d, 0x2fdaee95, 0x2a7ee25d,
0x2fd6c252, 0x2a8394e4, 0x2fd29598, 0x2a884702,
0x2fce6869, 0x2a8cf8b8, 0x2fca3ac4, 0x2a91aa04,
0x2fc60ca9, 0x2a965ae7, 0x2fc1de18, 0x2a9b0b61,
0x2fbdaf11, 0x2a9fbb72, 0x2fb97f94, 0x2aa46b1a,
0x2fb54fa2, 0x2aa91a59, 0x2fb11f3a, 0x2aadc92e,
0x2facee5c, 0x2ab2779a, 0x2fa8bd09, 0x2ab7259d,
0x2fa48b40, 0x2abbd336, 0x2fa05901, 0x2ac08066,
0x2f9c264d, 0x2ac52d2c, 0x2f97f323, 0x2ac9d989,
0x2f93bf84, 0x2ace857c, 0x2f8f8b70, 0x2ad33106,
0x2f8b56e6, 0x2ad7dc26, 0x2f8721e7, 0x2adc86dc,
0x2f82ec73, 0x2ae13129, 0x2f7eb689, 0x2ae5db0b,
0x2f7a802b, 0x2aea8484, 0x2f764957, 0x2aef2d93,
0x2f72120e, 0x2af3d638, 0x2f6dda50, 0x2af87e73,
0x2f69a21d, 0x2afd2644, 0x2f656975, 0x2b01cdab,
0x2f613058, 0x2b0674a8, 0x2f5cf6c6, 0x2b0b1b3b,
0x2f58bcbf, 0x2b0fc163, 0x2f548243, 0x2b146722,
0x2f504753, 0x2b190c75, 0x2f4c0bee, 0x2b1db15f,
0x2f47d014, 0x2b2255de, 0x2f4393c6, 0x2b26f9f3,
0x2f3f5702, 0x2b2b9d9d, 0x2f3b19cb, 0x2b3040dd,
0x2f36dc1f, 0x2b34e3b2, 0x2f329dfe, 0x2b39861d,
0x2f2e5f69, 0x2b3e281d, 0x2f2a205f, 0x2b42c9b2,
0x2f25e0e1, 0x2b476add, 0x2f21a0ef, 0x2b4c0b9c,
0x2f1d6088, 0x2b50abf1, 0x2f191fad, 0x2b554bdb,
0x2f14de5e, 0x2b59eb5a, 0x2f109c9b, 0x2b5e8a6f,
0x2f0c5a64, 0x2b632918, 0x2f0817b8, 0x2b67c756,
0x2f03d499, 0x2b6c6529, 0x2eff9105, 0x2b710291,
0x2efb4cfe, 0x2b759f8d, 0x2ef70883, 0x2b7a3c1f,
0x2ef2c393, 0x2b7ed845, 0x2eee7e30, 0x2b837400,
0x2eea3859, 0x2b880f4f, 0x2ee5f20f, 0x2b8caa33,
0x2ee1ab50, 0x2b9144ac, 0x2edd641e, 0x2b95deb9,
0x2ed91c79, 0x2b9a785a, 0x2ed4d45f, 0x2b9f1190,
0x2ed08bd3, 0x2ba3aa5b, 0x2ecc42d2, 0x2ba842b9,
0x2ec7f95e, 0x2bacdaac, 0x2ec3af77, 0x2bb17233,
0x2ebf651d, 0x2bb6094f, 0x2ebb1a4f, 0x2bba9ffe,
0x2eb6cf0d, 0x2bbf3642, 0x2eb28359, 0x2bc3cc19,
0x2eae3731, 0x2bc86185, 0x2ea9ea96, 0x2bccf685,
0x2ea59d88, 0x2bd18b18, 0x2ea15007, 0x2bd61f40,
0x2e9d0213, 0x2bdab2fb, 0x2e98b3ac, 0x2bdf464a,
0x2e9464d1, 0x2be3d92d, 0x2e901584, 0x2be86ba4,
0x2e8bc5c4, 0x2becfdae, 0x2e877591, 0x2bf18f4c,
0x2e8324ec, 0x2bf6207d, 0x2e7ed3d3, 0x2bfab142,
0x2e7a8248, 0x2bff419a, 0x2e76304a, 0x2c03d186,
0x2e71ddda, 0x2c086106, 0x2e6d8af7, 0x2c0cf018,
0x2e6937a1, 0x2c117ebe, 0x2e64e3d9, 0x2c160cf7,
0x2e608f9e, 0x2c1a9ac4, 0x2e5c3af1, 0x2c1f2823,
0x2e57e5d2, 0x2c23b516, 0x2e539040, 0x2c28419c,
0x2e4f3a3c, 0x2c2ccdb5, 0x2e4ae3c6, 0x2c315961,
0x2e468cdd, 0x2c35e49f, 0x2e423582, 0x2c3a6f71,
0x2e3dddb5, 0x2c3ef9d6, 0x2e398576, 0x2c4383cd,
0x2e352cc5, 0x2c480d57, 0x2e30d3a2, 0x2c4c9674,
0x2e2c7a0d, 0x2c511f24, 0x2e282006, 0x2c55a766,
0x2e23c58d, 0x2c5a2f3b, 0x2e1f6aa3, 0x2c5eb6a3,
0x2e1b0f46, 0x2c633d9d, 0x2e16b378, 0x2c67c429,
0x2e125738, 0x2c6c4a48, 0x2e0dfa86, 0x2c70cff9,
0x2e099d63, 0x2c75553d, 0x2e053fce, 0x2c79da13,
0x2e00e1c8, 0x2c7e5e7b, 0x2dfc8350, 0x2c82e276,
0x2df82466, 0x2c876602, 0x2df3c50c, 0x2c8be921,
0x2def653f, 0x2c906bd2, 0x2deb0502, 0x2c94ee15,
0x2de6a453, 0x2c996fe9, 0x2de24333, 0x2c9df150,
0x2ddde1a1, 0x2ca27249, 0x2dd97f9f, 0x2ca6f2d4,
0x2dd51d2b, 0x2cab72f0, 0x2dd0ba47, 0x2caff29e,
0x2dcc56f1, 0x2cb471de, 0x2dc7f32a, 0x2cb8f0b0,
0x2dc38ef2, 0x2cbd6f13, 0x2dbf2a4a, 0x2cc1ed08,
0x2dbac530, 0x2cc66a8e, 0x2db65fa6, 0x2ccae7a6,
0x2db1f9ab, 0x2ccf6450, 0x2dad933f, 0x2cd3e08b,
0x2da92c62, 0x2cd85c57, 0x2da4c515, 0x2cdcd7b5,
0x2da05d57, 0x2ce152a4, 0x2d9bf529, 0x2ce5cd24,
0x2d978c8a, 0x2cea4735, 0x2d93237a, 0x2ceec0d8,
0x2d8eb9fa, 0x2cf33a0c, 0x2d8a500a, 0x2cf7b2d0,
0x2d85e5a9, 0x2cfc2b26, 0x2d817ad8, 0x2d00a30d,
0x2d7d0f97, 0x2d051a85, 0x2d78a3e5, 0x2d09918e,
0x2d7437c3, 0x2d0e0827, 0x2d6fcb32, 0x2d127e52,
0x2d6b5e30, 0x2d16f40d, 0x2d66f0bd, 0x2d1b6959,
0x2d6282db, 0x2d1fde36, 0x2d5e1489, 0x2d2452a3,
0x2d59a5c7, 0x2d28c6a1, 0x2d553695, 0x2d2d3a30,
0x2d50c6f3, 0x2d31ad4f, 0x2d4c56e2, 0x2d361ffe,
0x2d47e661, 0x2d3a923e, 0x2d43756f, 0x2d3f040f,
0x1fffff62, 0xfff9b781, 0x1ffffa73, 0xffed2685,
0x1ffff094, 0xffe0958b, 0x1fffe1c6, 0xffd40496,
0x1fffce09, 0xffc773a8, 0x1fffb55d, 0xffbae2c3,
0x1fff97c1, 0xffae51e8, 0x1fff7536, 0xffa1c11a,
0x1fff4dbc, 0xff95305a, 0x1fff2152, 0xff889fab,
0x1ffeeffa, 0xff7c0f0e, 0x1ffeb9b2, 0xff6f7e86,
0x1ffe7e7b, 0xff62ee14, 0x1ffe3e55, 0xff565dba,
0x1ffdf940, 0xff49cd7a, 0x1ffdaf3c, 0xff3d3d57,
0x1ffd6049, 0xff30ad51, 0x1ffd0c67, 0xff241d6c,
0x1ffcb397, 0xff178da8, 0x1ffc55d7, 0xff0afe08,
0x1ffbf329, 0xfefe6e8e, 0x1ffb8b8c, 0xfef1df3c,
0x1ffb1f01, 0xfee55013, 0x1ffaad86, 0xfed8c116,
0x1ffa371e, 0xfecc3247, 0x1ff9bbc7, 0xfebfa3a7,
0x1ff93b82, 0xfeb31538, 0x1ff8b64e, 0xfea686fd,
0x1ff82c2c, 0xfe99f8f7, 0x1ff79d1c, 0xfe8d6b28,
0x1ff7091e, 0xfe80dd92, 0x1ff67033, 0xfe745037,
0x1ff5d259, 0xfe67c31a, 0x1ff52f92, 0xfe5b363b,
0x1ff487dc, 0xfe4ea99e, 0x1ff3db3a, 0xfe421d43,
0x1ff329aa, 0xfe35912c, 0x1ff2732d, 0xfe29055d,
0x1ff1b7c2, 0xfe1c79d6, 0x1ff0f76a, 0xfe0fee9a,
0x1ff03226, 0xfe0363aa, 0x1fef67f4, 0xfdf6d909,
0x1fee98d6, 0xfdea4eb8, 0x1fedc4cb, 0xfdddc4b9,
0x1fecebd3, 0xfdd13b0f, 0x1fec0df0, 0xfdc4b1bb,
0x1feb2b20, 0xfdb828be, 0x1fea4364, 0xfdaba01c,
0x1fe956bb, 0xfd9f17d6, 0x1fe86528, 0xfd928fee,
0x1fe76ea8, 0xfd860866, 0x1fe6733d, 0xfd79813f,
0x1fe572e7, 0xfd6cfa7c, 0x1fe46da5, 0xfd60741f,
0x1fe36378, 0xfd53ee29, 0x1fe25461, 0xfd47689d,
0x1fe1405e, 0xfd3ae37c, 0x1fe02771, 0xfd2e5ec8,
0x1fdf099a, 0xfd21da84, 0x1fdde6d8, 0xfd1556b1,
0x1fdcbf2d, 0xfd08d351, 0x1fdb9297, 0xfcfc5067,
0x1fda6118, 0xfcefcdf3, 0x1fd92ab0, 0xfce34bf8,
0x1fd7ef5e, 0xfcd6ca78, 0x1fd6af23, 0xfcca4975,
0x1fd569ff, 0xfcbdc8f0, 0x1fd41ff2, 0xfcb148ed,
0x1fd2d0fc, 0xfca4c96b, 0x1fd17d1f, 0xfc984a6f,
0x1fd02459, 0xfc8bcbf8, 0x1fcec6ab, 0xfc7f4e0a,
0x1fcd6416, 0xfc72d0a7, 0x1fcbfc99, 0xfc6653cf,
0x1fca9035, 0xfc59d786, 0x1fc91ee9, 0xfc4d5bcd,
0x1fc7a8b7, 0xfc40e0a5, 0x1fc62d9e, 0xfc346612,
0x1fc4ad9f, 0xfc27ec14, 0x1fc328ba, 0xfc1b72af,
0x1fc19eef, 0xfc0ef9e2, 0x1fc0103e, 0xfc0281b2,
0x1fbe7ca7, 0xfbf60a1f, 0x1fbce42c, 0xfbe9932b,
0x1fbb46cb, 0xfbdd1cd9, 0x1fb9a486, 0xfbd0a72a,
0x1fb7fd5c, 0xfbc43221, 0x1fb6514e, 0xfbb7bdbe,
0x1fb4a05c, 0xfbab4a05, 0x1fb2ea87, 0xfb9ed6f6,
0x1fb12fce, 0xfb926495, 0x1faf7031, 0xfb85f2e2,
0x1fadabb2, 0xfb7981e0, 0x1fabe251, 0xfb6d1191,
0x1faa140d, 0xfb60a1f6, 0x1fa840e7, 0xfb543311,
0x1fa668df, 0xfb47c4e6, 0x1fa48bf6, 0xfb3b5774,
0x1fa2aa2b, 0xfb2eeabf, 0x1fa0c380, 0xfb227ec7,
0x1f9ed7f4, 0xfb161390, 0x1f9ce787, 0xfb09a91b,
0x1f9af23b, 0xfafd3f6a, 0x1f98f80f, 0xfaf0d67f,
0x1f96f903, 0xfae46e5b, 0x1f94f518, 0xfad80701,
0x1f92ec4f, 0xfacba072, 0x1f90dea7, 0xfabf3ab1,
0x1f8ecc21, 0xfab2d5c0, 0x1f8cb4bd, 0xfaa671a0,
0x1f8a987b, 0xfa9a0e52, 0x1f88775d, 0xfa8dabda,
0x1f865161, 0xfa814a39, 0x1f842689, 0xfa74e971,
0x1f81f6d5, 0xfa688984, 0x1f7fc244, 0xfa5c2a74,
0x1f7d88d9, 0xfa4fcc42, 0x1f7b4a92, 0xfa436ef1,
0x1f790770, 0xfa371282, 0x1f76bf74, 0xfa2ab6f7,
0x1f74729d, 0xfa1e5c53, 0x1f7220ed, 0xfa120297,
0x1f6fca63, 0xfa05a9c6, 0x1f6d6f01, 0xf9f951e0,
0x1f6b0ec5, 0xf9ecfae8, 0x1f68a9b1, 0xf9e0a4e0,
0x1f663fc6, 0xf9d44fc9, 0x1f63d102, 0xf9c7fba6,
0x1f615d68, 0xf9bba879, 0x1f5ee4f6, 0xf9af5643,
0x1f5c67af, 0xf9a30507, 0x1f59e591, 0xf996b4c5,
0x1f575e9d, 0xf98a6581, 0x1f54d2d4, 0xf97e173c,
0x1f524236, 0xf971c9f7, 0x1f4facc4, 0xf9657db6,
0x1f4d127d, 0xf9593279, 0x1f4a7363, 0xf94ce843,
0x1f47cf76, 0xf9409f15, 0x1f4526b5, 0xf93456f1,
0x1f427922, 0xf9280fda, 0x1f3fc6bd, 0xf91bc9d1,
0x1f3d0f87, 0xf90f84d8, 0x1f3a537f, 0xf90340f2,
0x1f3792a6, 0xf8f6fe1e, 0x1f34ccfd, 0xf8eabc61,
0x1f320284, 0xf8de7bbb, 0x1f2f333b, 0xf8d23c2f,
0x1f2c5f23, 0xf8c5fdbe, 0x1f29863d, 0xf8b9c06b,
0x1f26a888, 0xf8ad8437, 0x1f23c606, 0xf8a14923,
0x1f20deb6, 0xf8950f33, 0x1f1df299, 0xf888d668,
0x1f1b01b0, 0xf87c9ec3, 0x1f180bfb, 0xf8706847,
0x1f15117a, 0xf86432f5, 0x1f12122e, 0xf857fed0,
0x1f0f0e18, 0xf84bcbd9, 0x1f0c0538, 0xf83f9a12,
0x1f08f78d, 0xf833697d, 0x1f05e51a, 0xf8273a1c,
0x1f02cdde, 0xf81b0bf1, 0x1effb1d9, 0xf80edefe,
0x1efc910d, 0xf802b344, 0x1ef96b79, 0xf7f688c5,
0x1ef6411f, 0xf7ea5f84, 0x1ef311fe, 0xf7de3782,
0x1eefde18, 0xf7d210c1, 0x1eeca56c, 0xf7c5eb42,
0x1ee967fb, 0xf7b9c709, 0x1ee625c6, 0xf7ada416,
0x1ee2decd, 0xf7a1826c, 0x1edf9311, 0xf795620c,
0x1edc4292, 0xf78942f9, 0x1ed8ed51, 0xf77d2533,
0x1ed5934e, 0xf77108be, 0x1ed23489, 0xf764ed9b,
0x1eced104, 0xf758d3cb, 0x1ecb68be, 0xf74cbb51,
0x1ec7fbb9, 0xf740a42e, 0x1ec489f5, 0xf7348e65,
0x1ec11372, 0xf72879f6, 0x1ebd9831, 0xf71c66e5,
0x1eba1832, 0xf7105533, 0x1eb69376, 0xf70444e2,
0x1eb309fe, 0xf6f835f3, 0x1eaf7bc9, 0xf6ec2869,
0x1eabe8da, 0xf6e01c45, 0x1ea8512f, 0xf6d41189,
0x1ea4b4ca, 0xf6c80838, 0x1ea113ac, 0xf6bc0052,
0x1e9d6dd4, 0xf6aff9db, 0x1e99c343, 0xf6a3f4d2,
0x1e9613fb, 0xf697f13c, 0x1e925ffb, 0xf68bef18,
0x1e8ea744, 0xf67fee6a, 0x1e8ae9d7, 0xf673ef33,
0x1e8727b3, 0xf667f175, 0x1e8360db, 0xf65bf532,
0x1e7f954e, 0xf64ffa6b, 0x1e7bc50d, 0xf6440123,
0x1e77f019, 0xf638095a, 0x1e741672, 0xf62c1315,
0x1e703818, 0xf6201e53, 0x1e6c550d, 0xf6142b17,
0x1e686d51, 0xf6083962, 0x1e6480e5, 0xf5fc4937,
0x1e608fc8, 0xf5f05a98, 0x1e5c99fc, 0xf5e46d85,
0x1e589f82, 0xf5d88202, 0x1e54a05a, 0xf5cc9810,
0x1e509c84, 0xf5c0afb0, 0x1e4c9401, 0xf5b4c8e5,
0x1e4886d3, 0xf5a8e3b0, 0x1e4474f8, 0xf59d0013,
0x1e405e73, 0xf5911e11, 0x1e3c4344, 0xf5853daa,
0x1e38236b, 0xf5795ee1, 0x1e33fee9, 0xf56d81b8,
0x1e2fd5be, 0xf561a630, 0x1e2ba7ec, 0xf555cc4b,
0x1e277573, 0xf549f40b, 0x1e233e53, 0xf53e1d72,
0x1e1f028e, 0xf5324882, 0x1e1ac223, 0xf526753d,
0x1e167d14, 0xf51aa3a3, 0x1e123361, 0xf50ed3b8,
0x1e0de50b, 0xf503057d, 0x1e099212, 0xf4f738f3,
0x1e053a78, 0xf4eb6e1d, 0x1e00de3c, 0xf4dfa4fd,
0x1dfc7d60, 0xf4d3dd94, 0x1df817e4, 0xf4c817e4,
0x1df3adc9, 0xf4bc53ef, 0x1def3f10, 0xf4b091b6,
0x1deacbb9, 0xf4a4d13c, 0x1de653c4, 0xf4991282,
0x1de1d734, 0xf48d558b, 0x1ddd5607, 0xf4819a57,
0x1dd8d040, 0xf475e0e9, 0x1dd445de, 0xf46a2943,
0x1dcfb6e3, 0xf45e7366, 0x1dcb234e, 0xf452bf55,
0x1dc68b22, 0xf4470d10, 0x1dc1ee5e, 0xf43b5c9a,
0x1dbd4d03, 0xf42fadf4, 0x1db8a713, 0xf4240121,
0x1db3fc8d, 0xf4185623, 0x1daf4d72, 0xf40cacfa,
0x1daa99c3, 0xf40105a9, 0x1da5e181, 0xf3f56031,
0x1da124ad, 0xf3e9bc95, 0x1d9c6347, 0xf3de1ad6,
0x1d979d50, 0xf3d27af7, 0x1d92d2c9, 0xf3c6dcf7,
0x1d8e03b2, 0xf3bb40db, 0x1d89300c, 0xf3afa6a3,
0x1d8457d9, 0xf3a40e50, 0x1d7f7b18, 0xf39877e6,
0x1d7a99cb, 0xf38ce366, 0x1d75b3f1, 0xf38150d1,
0x1d70c98d, 0xf375c029, 0x1d6bda9f, 0xf36a3170,
0x1d66e727, 0xf35ea4a8, 0x1d61ef26, 0xf35319d3,
0x1d5cf29d, 0xf34790f2, 0x1d57f18d, 0xf33c0a08,
0x1d52ebf7, 0xf3308515, 0x1d4de1db, 0xf325021c,
0x1d48d33a, 0xf319811f, 0x1d43c015, 0xf30e021f,
0x1d3ea86d, 0xf302851e, 0x1d398c42, 0xf2f70a1d,
0x1d346b95, 0xf2eb9120, 0x1d2f4668, 0xf2e01a27,
0x1d2a1cba, 0xf2d4a533, 0x1d24ee8d, 0xf2c93248,
0x1d1fbbe1, 0xf2bdc167, 0x1d1a84b8, 0xf2b25291,
0x1d154911, 0xf2a6e5c8, 0x1d1008ef, 0xf29b7b0e,
0x1d0ac451, 0xf2901264, 0x1d057b39, 0xf284abce,
0x1d002da6, 0xf279474b, 0x1cfadb9b, 0xf26de4df,
0x1cf58518, 0xf262848a, 0x1cf02a1e, 0xf257264f,
0x1ceacaad, 0xf24bca2f, 0x1ce566c7, 0xf240702c,
0x1cdffe6b, 0xf2351847, 0x1cda919c, 0xf229c284,
0x1cd5205a, 0xf21e6ee2, 0x1ccfaaa6, 0xf2131d65,
0x1cca3080, 0xf207ce0d, 0x1cc4b1e9, 0xf1fc80dd,
0x1cbf2ee3, 0xf1f135d6, 0x1cb9a76e, 0xf1e5ecfa,
0x1cb41b8b, 0xf1daa64a, 0x1cae8b3a, 0xf1cf61ca,
0x1ca8f67e, 0xf1c41f79, 0x1ca35d56, 0xf1b8df5a,
0x1c9dbfc3, 0xf1ada16f, 0x1c981dc7, 0xf1a265ba,
0x1c927762, 0xf1972c3b, 0x1c8ccc94, 0xf18bf4f6,
0x1c871d60, 0xf180bfea, 0x1c8169c5, 0xf1758d1c,
0x1c7bb1c6, 0xf16a5c8b, 0x1c75f561, 0xf15f2e3a,
0x1c703499, 0xf154022b, 0x1c6a6f6f, 0xf148d85f,
0x1c64a5e2, 0xf13db0d7, 0x1c5ed7f5, 0xf1328b97,
0x1c5905a7, 0xf127689f, 0x1c532efb, 0xf11c47f0,
0x1c4d53f0, 0xf111298e, 0x1c477488, 0xf1060d79,
0x1c4190c4, 0xf0faf3b4, 0x1c3ba8a4, 0xf0efdc3f,
0x1c35bc29, 0xf0e4c71d, 0x1c2fcb55, 0xf0d9b450,
0x1c29d628, 0xf0cea3d9, 0x1c23dca3, 0xf0c395b9,
0x1c1ddec7, 0xf0b889f3, 0x1c17dc95, 0xf0ad8088,
0x1c11d60e, 0xf0a2797a, 0x1c0bcb33, 0xf09774ca,
0x1c05bc05, 0xf08c727b, 0x1bffa884, 0xf081728e,
0x1bf990b3, 0xf0767504, 0x1bf37490, 0xf06b79e0,
0x1bed541f, 0xf0608123, 0x1be72f5e, 0xf0558acf,
0x1be10651, 0xf04a96e5, 0x1bdad8f6, 0xf03fa568,
0x1bd4a750, 0xf034b658, 0x1bce715f, 0xf029c9b8,
0x1bc83725, 0xf01edf89, 0x1bc1f8a1, 0xf013f7cd,
0x1bbbb5d6, 0xf0091285, 0x1bb56ec4, 0xeffe2fb4,
0x1baf236c, 0xeff34f5a, 0x1ba8d3cf, 0xefe8717a,
0x1ba27fee, 0xefdd9616, 0x1b9c27cb, 0xefd2bd2e,
0x1b95cb65, 0xefc7e6c6, 0x1b8f6abe, 0xefbd12dd,
0x1b8905d7, 0xefb24176, 0x1b829cb1, 0xefa77293,
0x1b7c2f4d, 0xef9ca636, 0x1b75bdac, 0xef91dc5f,
0x1b6f47cf, 0xef871511, 0x1b68cdb7, 0xef7c504d,
0x1b624f65, 0xef718e16, 0x1b5bccd9, 0xef66ce6b,
0x1b554616, 0xef5c1150, 0x1b4ebb1b, 0xef5156c7,
0x1b482beb, 0xef469ecf, 0x1b419885, 0xef3be96c,
0x1b3b00ec, 0xef31369f, 0x1b34651f, 0xef268669,
0x1b2dc520, 0xef1bd8cd, 0x1b2720f1, 0xef112dcb,
0x1b207891, 0xef068566, 0x1b19cc03, 0xeefbdf9f,
0x1b131b46, 0xeef13c78, 0x1b0c665d, 0xeee69bf2,
0x1b05ad48, 0xeedbfe0f, 0x1afef008, 0xeed162d1,
0x1af82e9f, 0xeec6ca39, 0x1af1690c, 0xeebc3449,
0x1aea9f52, 0xeeb1a103, 0x1ae3d172, 0xeea71068,
0x1adcff6c, 0xee9c827a, 0x1ad62941, 0xee91f73a,
0x1acf4ef3, 0xee876eaa, 0x1ac87082, 0xee7ce8cd,
0x1ac18df0, 0xee7265a2, 0x1abaa73e, 0xee67e52c,
0x1ab3bc6d, 0xee5d676d, 0x1aaccd7d, 0xee52ec67,
0x1aa5da70, 0xee48741a, 0x1a9ee348, 0xee3dfe88,
0x1a97e804, 0xee338bb4, 0x1a90e8a6, 0xee291b9e,
0x1a89e530, 0xee1eae49, 0x1a82dda2, 0xee1443b5,
0x1a7bd1fe, 0xee09dbe5, 0x1a74c243, 0xedff76da,
0x1a6dae75, 0xedf51495, 0x1a669693, 0xedeab519,
0x1a5f7a9f, 0xede05867, 0x1a585a99, 0xedd5fe80,
0x1a513684, 0xedcba767, 0x1a4a0e60, 0xedc1531c,
0x1a42e22d, 0xedb701a1, 0x1a3bb1ee, 0xedacb2f8,
0x1a347da4, 0xeda26723, 0x1a2d454e, 0xed981e23,
0x1a2608f0, 0xed8dd7f9, 0x1a1ec889, 0xed8394a8,
0x1a17841b, 0xed795430, 0x1a103ba7, 0xed6f1694,
0x1a08ef2e, 0xed64dbd5, 0x1a019eb1, 0xed5aa3f4,
0x19fa4a31, 0xed506ef3, 0x19f2f1b0, 0xed463cd4,
0x19eb952e, 0xed3c0d99, 0x19e434ae, 0xed31e142,
0x19dcd02e, 0xed27b7d1, 0x19d567b2, 0xed1d9149,
0x19cdfb3b, 0xed136daa, 0x19c68ac8, 0xed094cf6,
0x19bf165c, 0xecff2f2f, 0x19b79df7, 0xecf51456,
0x19b0219b, 0xeceafc6d, 0x19a8a149, 0xece0e775,
0x19a11d02, 0xecd6d570, 0x199994c7, 0xecccc65f,
0x1992089a, 0xecc2ba45, 0x198a787b, 0xecb8b121,
0x1982e46c, 0xecaeaaf7, 0x197b4c6d, 0xeca4a7c8,
0x1973b081, 0xec9aa795, 0x196c10a8, 0xec90aa60,
0x19646ce3, 0xec86b029, 0x195cc534, 0xec7cb8f4,
0x1955199b, 0xec72c4c1, 0x194d6a1b, 0xec68d392,
0x1945b6b3, 0xec5ee568, 0x193dff66, 0xec54fa45,
0x19364434, 0xec4b122b, 0x192e851f, 0xec412d1a,
0x1926c228, 0xec374b16, 0x191efb50, 0xec2d6c1e,
0x19173098, 0xec239035, 0x190f6202, 0xec19b75b,
0x19078f8e, 0xec0fe194, 0x18ffb93e, 0xec060edf,
0x18f7df13, 0xebfc3f3f, 0x18f0010f, 0xebf272b6,
0x18e81f32, 0xebe8a944, 0x18e0397e, 0xebdee2eb,
0x18d84ff3, 0xebd51fad, 0x18d06294, 0xebcb5f8b,
0x18c87161, 0xebc1a286, 0x18c07c5c, 0xebb7e8a1,
0x18b88386, 0xebae31dd, 0x18b086e0, 0xeba47e3b,
0x18a8866b, 0xeb9acdbc, 0x18a08228, 0xeb912063,
0x18987a1a, 0xeb877630, 0x18906e40, 0xeb7dcf25,
0x18885e9c, 0xeb742b44, 0x18804b30, 0xeb6a8a8f,
0x187833fd, 0xeb60ed05, 0x18701904, 0xeb5752aa,
0x1867fa46, 0xeb4dbb7f, 0x185fd7c5, 0xeb442784,
0x1857b181, 0xeb3a96bd, 0x184f877c, 0xeb310929,
0x184759b8, 0xeb277eca, 0x183f2835, 0xeb1df7a3,
0x1836f2f4, 0xeb1473b4, 0x182eb9f8, 0xeb0af2ff,
0x18267d41, 0xeb017585, 0x181e3cd1, 0xeaf7fb48,
0x1815f8a9, 0xeaee8449, 0x180db0c9, 0xeae5108a,
0x18056534, 0xeadba00d, 0x17fd15eb, 0xead232d1,
0x17f4c2ef, 0xeac8c8da, 0x17ec6c41, 0xeabf6229,
0x17e411e2, 0xeab5febf, 0x17dbb3d5, 0xeaac9e9d,
0x17d35219, 0xeaa341c5, 0x17caecb1, 0xea99e838,
0x17c2839e, 0xea9091f8, 0x17ba16e0, 0xea873f06,
0x17b1a67a, 0xea7def65, 0x17a9326d, 0xea74a314,
0x17a0bab9, 0xea6b5a15, 0x17983f61, 0xea62146b,
0x178fc065, 0xea58d216, 0x17873dc7, 0xea4f9318,
0x177eb788, 0xea465772, 0x17762daa, 0xea3d1f26,
0x176da02d, 0xea33ea35, 0x17650f13, 0xea2ab8a0,
0x175c7a5e, 0xea218a69, 0x1753e20f, 0xea185f92,
0x174b4626, 0xea0f381b, 0x1742a6a6, 0xea061407,
0x173a0390, 0xe9fcf356, 0x17315ce5, 0xe9f3d60a,
0x1728b2a6, 0xe9eabc25, 0x172004d5, 0xe9e1a5a8,
0x17175373, 0xe9d89293, 0x170e9e81, 0xe9cf82e9,
0x1705e601, 0xe9c676ac, 0x16fd29f5, 0xe9bd6ddb,
0x16f46a5c, 0xe9b4687a, 0x16eba73a, 0xe9ab6688,
0x16e2e08e, 0xe9a26808, 0x16da165b, 0xe9996cfc,
0x16d148a2, 0xe9907563, 0x16c87764, 0xe9878140,
0x16bfa2a3, 0xe97e9095, 0x16b6ca5f, 0xe975a361,
0x16adee9b, 0xe96cb9a8, 0x16a50f58, 0xe963d36a,
0x169c2c96, 0xe95af0a8, 0x16934658, 0xe9521165,
0x168a5c9f, 0xe94935a1, 0x16816f6b, 0xe9405d5d,
0x16787ec0, 0xe937889c, 0x166f8a9d, 0xe92eb75e,
0x16669304, 0xe925e9a5, 0x165d97f8, 0xe91d1f72,
0x16549978, 0xe91458c6, 0x164b9786, 0xe90b95a4,
0x16429225, 0xe902d60b, 0x16398954, 0xe8fa19ff,
0x16307d17, 0xe8f1617f, 0x16276d6d, 0xe8e8ac8d,
0x161e5a58, 0xe8dffb2b, 0x161543db, 0xe8d74d5a,
0x160c29f6, 0xe8cea31b, 0x16030caa, 0xe8c5fc70,
0x15f9ebf9, 0xe8bd595a, 0x15f0c7e5, 0xe8b4b9da,
0x15e7a06e, 0xe8ac1df1, 0x15de7597, 0xe8a385a2,
0x15d54760, 0xe89af0ed, 0x15cc15cb, 0xe8925fd3,
0x15c2e0da, 0xe889d256, 0x15b9a88e, 0xe8814878,
0x15b06ce8, 0xe878c239, 0x15a72dea, 0xe8703f9b,
0x159deb95, 0xe867c09f, 0x1594a5eb, 0xe85f4547,
0x158b5cec, 0xe856cd93, 0x1582109b, 0xe84e5986,
0x1578c0fa, 0xe845e920, 0x156f6e08, 0xe83d7c62,
0x156617c8, 0xe835134f, 0x155cbe3b, 0xe82cade7,
0x15536163, 0xe8244c2b, 0x154a0141, 0xe81bee1e,
0x15409dd7, 0xe81393bf, 0x15373726, 0xe80b3d11,
0x152dcd2f, 0xe802ea15, 0x15245ff3, 0xe7fa9acc,
0x151aef76, 0xe7f24f37, 0x15117bb7, 0xe7ea0757,
0x150804b8, 0xe7e1c32f, 0x14fe8a7b, 0xe7d982bf,
0x14f50d01, 0xe7d14608, 0x14eb8c4c, 0xe7c90d0c,
0x14e2085d, 0xe7c0d7cb, 0x14d88136, 0xe7b8a648,
0x14cef6d7, 0xe7b07884, 0x14c56943, 0xe7a84e7f,
0x14bbd87c, 0xe7a0283b, 0x14b24481, 0xe79805ba,
0x14a8ad56, 0xe78fe6fc, 0x149f12fb, 0xe787cc03,
0x14957571, 0xe77fb4d0, 0x148bd4bc, 0xe777a164,
0x148230db, 0xe76f91c0, 0x147889d0, 0xe76785e6,
0x146edf9d, 0xe75f7dd8, 0x14653244, 0xe7577995,
0x145b81c5, 0xe74f7920, 0x1451ce23, 0xe7477c7a,
0x1448175f, 0xe73f83a4, 0x143e5d7a, 0xe7378e9f,
0x1434a075, 0xe72f9d6c, 0x142ae053, 0xe727b00d,
0x14211d15, 0xe71fc682, 0x141756bc, 0xe717e0ce,
0x140d8d4a, 0xe70ffef1, 0x1403c0c1, 0xe70820ed,
0x13f9f121, 0xe70046c2, 0x13f01e6c, 0xe6f87072,
0x13e648a5, 0xe6f09dfe, 0x13dc6fcb, 0xe6e8cf68,
0x13d293e2, 0xe6e104b0, 0x13c8b4ea, 0xe6d93dd8,
0x13bed2e6, 0xe6d17ae1, 0x13b4edd5, 0xe6c9bbcc,
0x13ab05bb, 0xe6c2009a, 0x13a11a98, 0xe6ba494d,
0x13972c6e, 0xe6b295e5, 0x138d3b3f, 0xe6aae665,
0x1383470c, 0xe6a33acc, 0x13794fd7, 0xe69b931d,
0x136f55a0, 0xe693ef58, 0x1365586b, 0xe68c4f7f,
0x135b5838, 0xe684b393, 0x13515509, 0xe67d1b94,
0x13474edf, 0xe6758785, 0x133d45bb, 0xe66df766,
0x133339a1, 0xe6666b39, 0x13292a90, 0xe65ee2fe,
0x131f188b, 0xe6575eb7, 0x13150393, 0xe64fde65,
0x130aebaa, 0xe6486209, 0x1300d0d1, 0xe640e9a4,
0x12f6b30a, 0xe6397538, 0x12ec9256, 0xe63204c5,
0x12e26eb7, 0xe62a984e, 0x12d8482f, 0xe6232fd2,
0x12ce1ebe, 0xe61bcb52, 0x12c3f267, 0xe6146ad2,
0x12b9c32c, 0xe60d0e50, 0x12af910d, 0xe605b5cf,
0x12a55c0c, 0xe5fe614f, 0x129b242b, 0xe5f710d2,
0x1290e96c, 0xe5efc459, 0x1286abd0, 0xe5e87be5,
0x127c6b58, 0xe5e13777, 0x12722807, 0xe5d9f710,
0x1267e1dd, 0xe5d2bab2, 0x125d98dd, 0xe5cb825c,
0x12534d08, 0xe5c44e12, 0x1248fe5f, 0xe5bd1dd3,
0x123eace4, 0xe5b5f1a0, 0x12345899, 0xe5aec97c,
0x122a0180, 0xe5a7a567, 0x121fa799, 0xe5a08561,
0x12154ae7, 0xe599696d, 0x120aeb6b, 0xe592518b,
0x12008926, 0xe58b3dbd, 0x11f6241b, 0xe5842e02,
0x11ebbc4b, 0xe57d225e, 0x11e151b7, 0xe5761ad0,
0x11d6e462, 0xe56f175a, 0x11cc744c, 0xe56817fc,
0x11c20178, 0xe5611cb8, 0x11b78be6, 0xe55a2590,
0x11ad1399, 0xe5533283, 0x11a29893, 0xe54c4393,
0x11981ad4, 0xe54558c2, 0x118d9a5e, 0xe53e7210,
0x11831733, 0xe5378f7e, 0x11789156, 0xe530b10d,
0x116e08c6, 0xe529d6bf, 0x11637d86, 0xe5230094,
0x1158ef98, 0xe51c2e8e, 0x114e5efd, 0xe51560ae,
0x1143cbb7, 0xe50e96f4, 0x113935c7, 0xe507d161,
0x112e9d2f, 0xe5010ff8, 0x112401f1, 0xe4fa52b8,
0x1119640e, 0xe4f399a3, 0x110ec388, 0xe4ece4ba,
0x11042061, 0xe4e633fd, 0x10f97a9a, 0xe4df876f,
0x10eed235, 0xe4d8df0f, 0x10e42733, 0xe4d23ae0,
0x10d97997, 0xe4cb9ae1, 0x10cec961, 0xe4c4ff14,
0x10c41694, 0xe4be677b, 0x10b96131, 0xe4b7d415,
0x10aea939, 0xe4b144e5, 0x10a3eeb0, 0xe4aab9ea,
0x10993195, 0xe4a43327, 0x108e71ea, 0xe49db09b,
0x1083afb3, 0xe4973249, 0x1078eaef, 0xe490b831,
0x106e23a1, 0xe48a4254, 0x106359ca, 0xe483d0b3,
0x10588d6d, 0xe47d634f, 0x104dbe8a, 0xe476fa29,
0x1042ed23, 0xe4709542, 0x1038193a, 0xe46a349b,
0x102d42d2, 0xe463d835, 0x102269ea, 0xe45d8012,
0x10178e86, 0xe4572c31, 0x100cb0a6, 0xe450dc94,
0x1001d04c, 0xe44a913c, 0x0ff6ed7b, 0xe4444a2a,
0x0fec0833, 0xe43e075f, 0x0fe12077, 0xe437c8db,
0x0fd63648, 0xe4318ea1, 0x0fcb49a8, 0xe42b58b0,
0x0fc05a98, 0xe425270a, 0x0fb5691b, 0xe41ef9af,
0x0faa7531, 0xe418d0a2, 0x0f9f7edd, 0xe412abe1,
0x0f948620, 0xe40c8b70, 0x0f898afc, 0xe4066f4d,
0x0f7e8d72, 0xe400577c, 0x0f738d85, 0xe3fa43fb,
0x0f688b36, 0xe3f434cd, 0x0f5d8686, 0xe3ee29f2,
0x0f527f78, 0xe3e8236b, 0x0f47760d, 0xe3e22139,
0x0f3c6a47, 0xe3dc235d, 0x0f315c27, 0xe3d629d8,
0x0f264bb0, 0xe3d034ab, 0x0f1b38e3, 0xe3ca43d7,
0x0f1023c1, 0xe3c4575c, 0x0f050c4c, 0xe3be6f3c,
0x0ef9f287, 0xe3b88b78, 0x0eeed672, 0xe3b2ac10,
0x0ee3b810, 0xe3acd105, 0x0ed89761, 0xe3a6fa59,
0x0ecd7469, 0xe3a1280b, 0x0ec24f29, 0xe39b5a1e,
0x0eb727a1, 0xe3959091, 0x0eabfdd5, 0xe38fcb67,
0x0ea0d1c6, 0xe38a0a9f, 0x0e95a375, 0xe3844e3a,
0x0e8a72e4, 0xe37e963b, 0x0e7f4016, 0xe378e2a0,
0x0e740b0a, 0xe373336c, 0x0e68d3c5, 0xe36d889e,
0x0e5d9a46, 0xe367e239, 0x0e525e91, 0xe362403d,
0x0e4720a6, 0xe35ca2aa, 0x0e3be087, 0xe3570982,
0x0e309e36, 0xe35174c6, 0x0e2559b6, 0xe34be475,
0x0e1a1306, 0xe3465892, 0x0e0eca2a, 0xe340d11d,
0x0e037f23, 0xe33b4e17, 0x0df831f3, 0xe335cf80,
0x0dece29b, 0xe330555a, 0x0de1911e, 0xe32adfa6,
0x0dd63d7c, 0xe3256e64, 0x0dcae7b9, 0xe3200195,
0x0dbf8fd4, 0xe31a9939, 0x0db435d1, 0xe3153553,
0x0da8d9b1, 0xe30fd5e2, 0x0d9d7b76, 0xe30a7ae8,
0x0d921b21, 0xe3052465, 0x0d86b8b5, 0xe2ffd25a,
0x0d7b5432, 0xe2fa84c7, 0x0d6fed9c, 0xe2f53baf,
0x0d6484f2, 0xe2eff711, 0x0d591a38, 0xe2eab6ef,
0x0d4dad6f, 0xe2e57b48, 0x0d423e99, 0xe2e0441f,
0x0d36cdb8, 0xe2db1173, 0x0d2b5acd, 0xe2d5e346,
0x0d1fe5d9, 0xe2d0b998, 0x0d146ee0, 0xe2cb946b,
0x0d08f5e3, 0xe2c673be, 0x0cfd7ae2, 0xe2c15793,
0x0cf1fde1, 0xe2bc3feb, 0x0ce67ee1, 0xe2b72cc6,
0x0cdafde4, 0xe2b21e25, 0x0ccf7aeb, 0xe2ad1409,
0x0cc3f5f8, 0xe2a80e73, 0x0cb86f0e, 0xe2a30d63,
0x0cace62d, 0xe29e10da, 0x0ca15b58, 0xe29918d9,
0x0c95ce90, 0xe2942561, 0x0c8a3fd7, 0xe28f3673,
0x0c7eaf2f, 0xe28a4c0f, 0x0c731c9a, 0xe2856635,
0x0c67881a, 0xe28084e8, 0x0c5bf1b0, 0xe27ba827,
0x0c50595d, 0xe276cff4, 0x0c44bf25, 0xe271fc4e,
0x0c392309, 0xe26d2d37, 0x0c2d8509, 0xe26862b0,
0x0c21e52a, 0xe2639cb9, 0x0c16436b, 0xe25edb53,
0x0c0a9fcf, 0xe25a1e7f, 0x0bfefa57, 0xe255663d,
0x0bf35306, 0xe250b28e, 0x0be7a9dd, 0xe24c0373,
0x0bdbfedf, 0xe24758ed, 0x0bd0520c, 0xe242b2fd,
0x0bc4a366, 0xe23e11a2, 0x0bb8f2f0, 0xe23974de,
0x0bad40ab, 0xe234dcb2, 0x0ba18c9a, 0xe230491d,
0x0b95d6bd, 0xe22bba22, 0x0b8a1f17, 0xe2272fc0,
0x0b7e65a9, 0xe222a9f9, 0x0b72aa75, 0xe21e28cc,
0x0b66ed7e, 0xe219ac3c, 0x0b5b2ec4, 0xe2153447,
0x0b4f6e4a, 0xe210c0f0, 0x0b43ac11, 0xe20c5237,
0x0b37e81c, 0xe207e81c, 0x0b2c226c, 0xe20382a0,
0x0b205b03, 0xe1ff21c4, 0x0b1491e3, 0xe1fac588,
0x0b08c70d, 0xe1f66dee, 0x0afcfa83, 0xe1f21af5,
0x0af12c48, 0xe1edcc9f, 0x0ae55c5d, 0xe1e982ec,
0x0ad98ac3, 0xe1e53ddd, 0x0acdb77e, 0xe1e0fd72,
0x0ac1e28e, 0xe1dcc1ad, 0x0ab60bf5, 0xe1d88a8d,
0x0aaa33b5, 0xe1d45814, 0x0a9e59d0, 0xe1d02a42,
0x0a927e48, 0xe1cc0117, 0x0a86a11f, 0xe1c7dc95,
0x0a7ac256, 0xe1c3bcbc, 0x0a6ee1ef, 0xe1bfa18d,
0x0a62ffed, 0xe1bb8b08, 0x0a571c50, 0xe1b7792d,
0x0a4b371b, 0xe1b36bff, 0x0a3f5050, 0xe1af637c,
0x0a3367f0, 0xe1ab5fa6, 0x0a277dfe, 0xe1a7607e,
0x0a1b927b, 0xe1a36604, 0x0a0fa568, 0xe19f7038,
0x0a03b6c9, 0xe19b7f1b, 0x09f7c69e, 0xe19792af,
0x09ebd4e9, 0xe193aaf3, 0x09dfe1ad, 0xe18fc7e8,
0x09d3eceb, 0xe18be98e, 0x09c7f6a6, 0xe1880fe7,
0x09bbfedd, 0xe1843af3, 0x09b00595, 0xe1806ab2,
0x09a40ace, 0xe17c9f25, 0x09980e8b, 0xe178d84d,
0x098c10cd, 0xe1751629, 0x09801196, 0xe17158bc,
0x097410e8, 0xe16da005, 0x09680ec4, 0xe169ec05,
0x095c0b2e, 0xe1663cbd, 0x09500625, 0xe162922c,
0x0943ffae, 0xe15eec54, 0x0937f7c8, 0xe15b4b36,
0x092bee77, 0xe157aed1, 0x091fe3bb, 0xe1541726,
0x0913d797, 0xe1508437, 0x0907ca0d, 0xe14cf602,
0x08fbbb1e, 0xe1496c8a, 0x08efaacd, 0xe145e7ce,
0x08e3991b, 0xe14267cf, 0x08d7860a, 0xe13eec8e,
0x08cb719b, 0xe13b760b, 0x08bf5bd2, 0xe1380447,
0x08b344af, 0xe1349742, 0x08a72c35, 0xe1312efc,
0x089b1265, 0xe12dcb77, 0x088ef742, 0xe12a6cb2,
0x0882dacd, 0xe12712af, 0x0876bd07, 0xe123bd6e,
0x086a9df4, 0xe1206cef, 0x085e7d94, 0xe11d2133,
0x08525bea, 0xe119da3a, 0x084638f7, 0xe1169805,
0x083a14be, 0xe1135a94, 0x082def3f, 0xe11021e8,
0x0821c87e, 0xe10cee02, 0x0815a07c, 0xe109bee1,
0x0809773b, 0xe1069487, 0x07fd4cbc, 0xe1036ef3,
0x07f12102, 0xe1004e27, 0x07e4f40f, 0xe0fd3222,
0x07d8c5e4, 0xe0fa1ae6, 0x07cc9683, 0xe0f70873,
0x07c065ee, 0xe0f3fac8, 0x07b43427, 0xe0f0f1e8,
0x07a80130, 0xe0ededd2, 0x079bcd0b, 0xe0eaee86,
0x078f97b9, 0xe0e7f405, 0x0783613d, 0xe0e4fe50,
0x07772998, 0xe0e20d67, 0x076af0cd, 0xe0df214a,
0x075eb6dd, 0xe0dc39fa, 0x07527bc9, 0xe0d95778,
0x07463f95, 0xe0d679c3, 0x073a0242, 0xe0d3a0dd,
0x072dc3d1, 0xe0d0ccc5, 0x07218445, 0xe0cdfd7c,
0x0715439f, 0xe0cb3303, 0x070901e2, 0xe0c86d5a,
0x06fcbf0e, 0xe0c5ac81, 0x06f07b28, 0xe0c2f079,
0x06e4362f, 0xe0c03943, 0x06d7f026, 0xe0bd86de,
0x06cba90f, 0xe0bad94b, 0x06bf60eb, 0xe0b8308a,
0x06b317bd, 0xe0b58c9d, 0x06a6cd87, 0xe0b2ed83,
0x069a824a, 0xe0b0533c, 0x068e3609, 0xe0adbdca,
0x0681e8c4, 0xe0ab2d2c, 0x06759a7f, 0xe0a8a163,
0x06694b3b, 0xe0a61a6f, 0x065cfaf9, 0xe0a39851,
0x0650a9bd, 0xe0a11b0a, 0x06445787, 0xe09ea298,
0x0638045a, 0xe09c2efe, 0x062bb037, 0xe099c03a,
0x061f5b20, 0xe097564f, 0x06130518, 0xe094f13b,
0x0606ae20, 0xe09290ff, 0x05fa563a, 0xe090359d,
0x05edfd69, 0xe08ddf13, 0x05e1a3ad, 0xe08b8d63,
0x05d54909, 0xe089408c, 0x05c8ed7e, 0xe086f890,
0x05bc910f, 0xe084b56e, 0x05b033be, 0xe0827727,
0x05a3d58c, 0xe0803dbc, 0x0597767c, 0xe07e092b,
0x058b168f, 0xe07bd977, 0x057eb5c7, 0xe079ae9f,
0x05725426, 0xe07788a3, 0x0565f1ae, 0xe0756785,
0x05598e60, 0xe0734b43, 0x054d2a40, 0xe07133df,
0x0540c54f, 0xe06f2159, 0x05345f8e, 0xe06d13b1,
0x0527f8ff, 0xe06b0ae8, 0x051b91a5, 0xe06906fd,
0x050f2981, 0xe06707f1, 0x0502c096, 0xe0650dc5,
0x04f656e5, 0xe0631879, 0x04e9ec70, 0xe061280c,
0x04dd8139, 0xe05f3c80, 0x04d11541, 0xe05d55d5,
0x04c4a88c, 0xe05b740a, 0x04b83b1a, 0xe0599721,
0x04abccef, 0xe057bf19, 0x049f5e0a, 0xe055ebf3,
0x0492ee6f, 0xe0541daf, 0x04867e20, 0xe052544e,
0x047a0d1e, 0xe0508fcf, 0x046d9b6b, 0xe04ed032,
0x0461290a, 0xe04d1579, 0x0454b5fb, 0xe04b5fa4,
0x04484242, 0xe049aeb2, 0x043bcddf, 0xe04802a4,
0x042f58d6, 0xe0465b7a, 0x0422e327, 0xe044b935,
0x04166cd5, 0xe0431bd4, 0x0409f5e1, 0xe0418359,
0x03fd7e4e, 0xe03fefc2, 0x03f1061e, 0xe03e6111,
0x03e48d51, 0xe03cd746, 0x03d813ec, 0xe03b5261,
0x03cb99ee, 0xe039d262, 0x03bf1f5b, 0xe0385749,
0x03b2a433, 0xe036e117, 0x03a6287a, 0xe0356fcb,
0x0399ac31, 0xe0340367, 0x038d2f59, 0xe0329bea,
0x0380b1f6, 0xe0313955, 0x03743408, 0xe02fdba7,
0x0367b591, 0xe02e82e1, 0x035b3695, 0xe02d2f04,
0x034eb713, 0xe02be00e, 0x03423710, 0xe02a9601,
0x0335b68b, 0xe02950dd, 0x03293588, 0xe02810a2,
0x031cb408, 0xe026d550, 0x0310320d, 0xe0259ee8,
0x0303af99, 0xe0246d69, 0x02f72caf, 0xe02340d3,
0x02eaa94f, 0xe0221928, 0x02de257c, 0xe020f666,
0x02d1a138, 0xe01fd88f, 0x02c51c84, 0xe01ebfa2,
0x02b89763, 0xe01dab9f, 0x02ac11d7, 0xe01c9c88,
0x029f8be1, 0xe01b925b, 0x02930584, 0xe01a8d19,
0x02867ec1, 0xe0198cc3, 0x0279f79a, 0xe0189158,
0x026d7012, 0xe0179ad8, 0x0260e82a, 0xe016a945,
0x02545fe4, 0xe015bc9c, 0x0247d742, 0xe014d4e0,
0x023b4e45, 0xe013f210, 0x022ec4f1, 0xe013142d,
0x02223b47, 0xe0123b35, 0x0215b148, 0xe011672a,
0x020926f7, 0xe010980c, 0x01fc9c56, 0xe00fcdda,
0x01f01166, 0xe00f0896, 0x01e3862a, 0xe00e483e,
0x01d6faa3, 0xe00d8cd3, 0x01ca6ed4, 0xe00cd656,
0x01bde2bd, 0xe00c24c6, 0x01b15662, 0xe00b7824,
0x01a4c9c5, 0xe00ad06e, 0x01983ce6, 0xe00a2da7,
0x018bafc9, 0xe0098fcd, 0x017f226e, 0xe008f6e2,
0x017294d8, 0xe00862e4, 0x01660709, 0xe007d3d4,
0x01597903, 0xe00749b2, 0x014ceac8, 0xe006c47e,
0x01405c59, 0xe0064439, 0x0133cdb9, 0xe005c8e2,
0x01273eea, 0xe005527a, 0x011aafed, 0xe004e0ff,
0x010e20c4, 0xe0047474, 0x01019172, 0xe0040cd7,
0x00f501f8, 0xe003aa29, 0x00e87258, 0xe0034c69,
0x00dbe294, 0xe002f399, 0x00cf52af, 0xe0029fb7,
0x00c2c2a9, 0xe00250c4, 0x00b63286, 0xe00206c0,
0x00a9a246, 0xe001c1ab, 0x009d11ec, 0xe0018185,
0x0090817a, 0xe001464e, 0x0083f0f2, 0xe0011006,
0x00776055, 0xe000deae, 0x006acfa6, 0xe000b244,
0x005e3ee6, 0xe0008aca, 0x0051ae18, 0xe000683f,
0x00451d3d, 0xe0004aa3, 0x00388c58, 0xe00031f7,
0x002bfb6a, 0xe0001e3a, 0x001f6a75, 0xe0000f6c,
0x0012d97b, 0xe000058d, 0x0006487f, 0xe000009e,
};
tatic ogg_int16_t bitrevlook_8192[2048]={
0x0ffe, 0x0000, 0x07fe, 0x0800,
0x0bfe, 0x0400, 0x03fe, 0x0c00,
0x0dfe, 0x0200, 0x05fe, 0x0a00,
0x09fe, 0x0600, 0x01fe, 0x0e00,
0x0efe, 0x0100, 0x06fe, 0x0900,
0x0afe, 0x0500, 0x02fe, 0x0d00,
0x0cfe, 0x0300, 0x04fe, 0x0b00,
0x08fe, 0x0700, 0x00fe, 0x0f00,
0x0f7e, 0x0080, 0x077e, 0x0880,
0x0b7e, 0x0480, 0x037e, 0x0c80,
0x0d7e, 0x0280, 0x057e, 0x0a80,
0x097e, 0x0680, 0x017e, 0x0e80,
0x0e7e, 0x0180, 0x067e, 0x0980,
0x0a7e, 0x0580, 0x027e, 0x0d80,
0x0c7e, 0x0380, 0x047e, 0x0b80,
0x087e, 0x0780, 0x007e, 0x0f80,
0x0fbe, 0x0040, 0x07be, 0x0840,
0x0bbe, 0x0440, 0x03be, 0x0c40,
0x0dbe, 0x0240, 0x05be, 0x0a40,
0x09be, 0x0640, 0x01be, 0x0e40,
0x0ebe, 0x0140, 0x06be, 0x0940,
0x0abe, 0x0540, 0x02be, 0x0d40,
0x0cbe, 0x0340, 0x04be, 0x0b40,
0x08be, 0x0740, 0x00be, 0x0f40,
0x0f3e, 0x00c0, 0x073e, 0x08c0,
0x0b3e, 0x04c0, 0x033e, 0x0cc0,
0x0d3e, 0x02c0, 0x053e, 0x0ac0,
0x093e, 0x06c0, 0x013e, 0x0ec0,
0x0e3e, 0x01c0, 0x063e, 0x09c0,
0x0a3e, 0x05c0, 0x023e, 0x0dc0,
0x0c3e, 0x03c0, 0x043e, 0x0bc0,
0x083e, 0x07c0, 0x003e, 0x0fc0,
0x0fde, 0x0020, 0x07de, 0x0820,
0x0bde, 0x0420, 0x03de, 0x0c20,
0x0dde, 0x0220, 0x05de, 0x0a20,
0x09de, 0x0620, 0x01de, 0x0e20,
0x0ede, 0x0120, 0x06de, 0x0920,
0x0ade, 0x0520, 0x02de, 0x0d20,
0x0cde, 0x0320, 0x04de, 0x0b20,
0x08de, 0x0720, 0x00de, 0x0f20,
0x0f5e, 0x00a0, 0x075e, 0x08a0,
0x0b5e, 0x04a0, 0x035e, 0x0ca0,
0x0d5e, 0x02a0, 0x055e, 0x0aa0,
0x095e, 0x06a0, 0x015e, 0x0ea0,
0x0e5e, 0x01a0, 0x065e, 0x09a0,
0x0a5e, 0x05a0, 0x025e, 0x0da0,
0x0c5e, 0x03a0, 0x045e, 0x0ba0,
0x085e, 0x07a0, 0x005e, 0x0fa0,
0x0f9e, 0x0060, 0x079e, 0x0860,
0x0b9e, 0x0460, 0x039e, 0x0c60,
0x0d9e, 0x0260, 0x059e, 0x0a60,
0x099e, 0x0660, 0x019e, 0x0e60,
0x0e9e, 0x0160, 0x069e, 0x0960,
0x0a9e, 0x0560, 0x029e, 0x0d60,
0x0c9e, 0x0360, 0x049e, 0x0b60,
0x089e, 0x0760, 0x009e, 0x0f60,
0x0f1e, 0x00e0, 0x071e, 0x08e0,
0x0b1e, 0x04e0, 0x031e, 0x0ce0,
0x0d1e, 0x02e0, 0x051e, 0x0ae0,
0x091e, 0x06e0, 0x011e, 0x0ee0,
0x0e1e, 0x01e0, 0x061e, 0x09e0,
0x0a1e, 0x05e0, 0x021e, 0x0de0,
0x0c1e, 0x03e0, 0x041e, 0x0be0,
0x081e, 0x07e0, 0x001e, 0x0fe0,
0x0fee, 0x0010, 0x07ee, 0x0810,
0x0bee, 0x0410, 0x03ee, 0x0c10,
0x0dee, 0x0210, 0x05ee, 0x0a10,
0x09ee, 0x0610, 0x01ee, 0x0e10,
0x0eee, 0x0110, 0x06ee, 0x0910,
0x0aee, 0x0510, 0x02ee, 0x0d10,
0x0cee, 0x0310, 0x04ee, 0x0b10,
0x08ee, 0x0710, 0x00ee, 0x0f10,
0x0f6e, 0x0090, 0x076e, 0x0890,
0x0b6e, 0x0490, 0x036e, 0x0c90,
0x0d6e, 0x0290, 0x056e, 0x0a90,
0x096e, 0x0690, 0x016e, 0x0e90,
0x0e6e, 0x0190, 0x066e, 0x0990,
0x0a6e, 0x0590, 0x026e, 0x0d90,
0x0c6e, 0x0390, 0x046e, 0x0b90,
0x086e, 0x0790, 0x006e, 0x0f90,
0x0fae, 0x0050, 0x07ae, 0x0850,
0x0bae, 0x0450, 0x03ae, 0x0c50,
0x0dae, 0x0250, 0x05ae, 0x0a50,
0x09ae, 0x0650, 0x01ae, 0x0e50,
0x0eae, 0x0150, 0x06ae, 0x0950,
0x0aae, 0x0550, 0x02ae, 0x0d50,
0x0cae, 0x0350, 0x04ae, 0x0b50,
0x08ae, 0x0750, 0x00ae, 0x0f50,
0x0f2e, 0x00d0, 0x072e, 0x08d0,
0x0b2e, 0x04d0, 0x032e, 0x0cd0,
0x0d2e, 0x02d0, 0x052e, 0x0ad0,
0x092e, 0x06d0, 0x012e, 0x0ed0,
0x0e2e, 0x01d0, 0x062e, 0x09d0,
0x0a2e, 0x05d0, 0x022e, 0x0dd0,
0x0c2e, 0x03d0, 0x042e, 0x0bd0,
0x082e, 0x07d0, 0x002e, 0x0fd0,
0x0fce, 0x0030, 0x07ce, 0x0830,
0x0bce, 0x0430, 0x03ce, 0x0c30,
0x0dce, 0x0230, 0x05ce, 0x0a30,
0x09ce, 0x0630, 0x01ce, 0x0e30,
0x0ece, 0x0130, 0x06ce, 0x0930,
0x0ace, 0x0530, 0x02ce, 0x0d30,
0x0cce, 0x0330, 0x04ce, 0x0b30,
0x08ce, 0x0730, 0x00ce, 0x0f30,
0x0f4e, 0x00b0, 0x074e, 0x08b0,
0x0b4e, 0x04b0, 0x034e, 0x0cb0,
0x0d4e, 0x02b0, 0x054e, 0x0ab0,
0x094e, 0x06b0, 0x014e, 0x0eb0,
0x0e4e, 0x01b0, 0x064e, 0x09b0,
0x0a4e, 0x05b0, 0x024e, 0x0db0,
0x0c4e, 0x03b0, 0x044e, 0x0bb0,
0x084e, 0x07b0, 0x004e, 0x0fb0,
0x0f8e, 0x0070, 0x078e, 0x0870,
0x0b8e, 0x0470, 0x038e, 0x0c70,
0x0d8e, 0x0270, 0x058e, 0x0a70,
0x098e, 0x0670, 0x018e, 0x0e70,
0x0e8e, 0x0170, 0x068e, 0x0970,
0x0a8e, 0x0570, 0x028e, 0x0d70,
0x0c8e, 0x0370, 0x048e, 0x0b70,
0x088e, 0x0770, 0x008e, 0x0f70,
0x0f0e, 0x00f0, 0x070e, 0x08f0,
0x0b0e, 0x04f0, 0x030e, 0x0cf0,
0x0d0e, 0x02f0, 0x050e, 0x0af0,
0x090e, 0x06f0, 0x010e, 0x0ef0,
0x0e0e, 0x01f0, 0x060e, 0x09f0,
0x0a0e, 0x05f0, 0x020e, 0x0df0,
0x0c0e, 0x03f0, 0x040e, 0x0bf0,
0x080e, 0x07f0, 0x000e, 0x0ff0,
0x0ff6, 0x0008, 0x07f6, 0x0808,
0x0bf6, 0x0408, 0x03f6, 0x0c08,
0x0df6, 0x0208, 0x05f6, 0x0a08,
0x09f6, 0x0608, 0x01f6, 0x0e08,
0x0ef6, 0x0108, 0x06f6, 0x0908,
0x0af6, 0x0508, 0x02f6, 0x0d08,
0x0cf6, 0x0308, 0x04f6, 0x0b08,
0x08f6, 0x0708, 0x00f6, 0x0f08,
0x0f76, 0x0088, 0x0776, 0x0888,
0x0b76, 0x0488, 0x0376, 0x0c88,
0x0d76, 0x0288, 0x0576, 0x0a88,
0x0976, 0x0688, 0x0176, 0x0e88,
0x0e76, 0x0188, 0x0676, 0x0988,
0x0a76, 0x0588, 0x0276, 0x0d88,
0x0c76, 0x0388, 0x0476, 0x0b88,
0x0876, 0x0788, 0x0076, 0x0f88,
0x0fb6, 0x0048, 0x07b6, 0x0848,
0x0bb6, 0x0448, 0x03b6, 0x0c48,
0x0db6, 0x0248, 0x05b6, 0x0a48,
0x09b6, 0x0648, 0x01b6, 0x0e48,
0x0eb6, 0x0148, 0x06b6, 0x0948,
0x0ab6, 0x0548, 0x02b6, 0x0d48,
0x0cb6, 0x0348, 0x04b6, 0x0b48,
0x08b6, 0x0748, 0x00b6, 0x0f48,
0x0f36, 0x00c8, 0x0736, 0x08c8,
0x0b36, 0x04c8, 0x0336, 0x0cc8,
0x0d36, 0x02c8, 0x0536, 0x0ac8,
0x0936, 0x06c8, 0x0136, 0x0ec8,
0x0e36, 0x01c8, 0x0636, 0x09c8,
0x0a36, 0x05c8, 0x0236, 0x0dc8,
0x0c36, 0x03c8, 0x0436, 0x0bc8,
0x0836, 0x07c8, 0x0036, 0x0fc8,
0x0fd6, 0x0028, 0x07d6, 0x0828,
0x0bd6, 0x0428, 0x03d6, 0x0c28,
0x0dd6, 0x0228, 0x05d6, 0x0a28,
0x09d6, 0x0628, 0x01d6, 0x0e28,
0x0ed6, 0x0128, 0x06d6, 0x0928,
0x0ad6, 0x0528, 0x02d6, 0x0d28,
0x0cd6, 0x0328, 0x04d6, 0x0b28,
0x08d6, 0x0728, 0x00d6, 0x0f28,
0x0f56, 0x00a8, 0x0756, 0x08a8,
0x0b56, 0x04a8, 0x0356, 0x0ca8,
0x0d56, 0x02a8, 0x0556, 0x0aa8,
0x0956, 0x06a8, 0x0156, 0x0ea8,
0x0e56, 0x01a8, 0x0656, 0x09a8,
0x0a56, 0x05a8, 0x0256, 0x0da8,
0x0c56, 0x03a8, 0x0456, 0x0ba8,
0x0856, 0x07a8, 0x0056, 0x0fa8,
0x0f96, 0x0068, 0x0796, 0x0868,
0x0b96, 0x0468, 0x0396, 0x0c68,
0x0d96, 0x0268, 0x0596, 0x0a68,
0x0996, 0x0668, 0x0196, 0x0e68,
0x0e96, 0x0168, 0x0696, 0x0968,
0x0a96, 0x0568, 0x0296, 0x0d68,
0x0c96, 0x0368, 0x0496, 0x0b68,
0x0896, 0x0768, 0x0096, 0x0f68,
0x0f16, 0x00e8, 0x0716, 0x08e8,
0x0b16, 0x04e8, 0x0316, 0x0ce8,
0x0d16, 0x02e8, 0x0516, 0x0ae8,
0x0916, 0x06e8, 0x0116, 0x0ee8,
0x0e16, 0x01e8, 0x0616, 0x09e8,
0x0a16, 0x05e8, 0x0216, 0x0de8,
0x0c16, 0x03e8, 0x0416, 0x0be8,
0x0816, 0x07e8, 0x0016, 0x0fe8,
0x0fe6, 0x0018, 0x07e6, 0x0818,
0x0be6, 0x0418, 0x03e6, 0x0c18,
0x0de6, 0x0218, 0x05e6, 0x0a18,
0x09e6, 0x0618, 0x01e6, 0x0e18,
0x0ee6, 0x0118, 0x06e6, 0x0918,
0x0ae6, 0x0518, 0x02e6, 0x0d18,
0x0ce6, 0x0318, 0x04e6, 0x0b18,
0x08e6, 0x0718, 0x00e6, 0x0f18,
0x0f66, 0x0098, 0x0766, 0x0898,
0x0b66, 0x0498, 0x0366, 0x0c98,
0x0d66, 0x0298, 0x0566, 0x0a98,
0x0966, 0x0698, 0x0166, 0x0e98,
0x0e66, 0x0198, 0x0666, 0x0998,
0x0a66, 0x0598, 0x0266, 0x0d98,
0x0c66, 0x0398, 0x0466, 0x0b98,
0x0866, 0x0798, 0x0066, 0x0f98,
0x0fa6, 0x0058, 0x07a6, 0x0858,
0x0ba6, 0x0458, 0x03a6, 0x0c58,
0x0da6, 0x0258, 0x05a6, 0x0a58,
0x09a6, 0x0658, 0x01a6, 0x0e58,
0x0ea6, 0x0158, 0x06a6, 0x0958,
0x0aa6, 0x0558, 0x02a6, 0x0d58,
0x0ca6, 0x0358, 0x04a6, 0x0b58,
0x08a6, 0x0758, 0x00a6, 0x0f58,
0x0f26, 0x00d8, 0x0726, 0x08d8,
0x0b26, 0x04d8, 0x0326, 0x0cd8,
0x0d26, 0x02d8, 0x0526, 0x0ad8,
0x0926, 0x06d8, 0x0126, 0x0ed8,
0x0e26, 0x01d8, 0x0626, 0x09d8,
0x0a26, 0x05d8, 0x0226, 0x0dd8,
0x0c26, 0x03d8, 0x0426, 0x0bd8,
0x0826, 0x07d8, 0x0026, 0x0fd8,
0x0fc6, 0x0038, 0x07c6, 0x0838,
0x0bc6, 0x0438, 0x03c6, 0x0c38,
0x0dc6, 0x0238, 0x05c6, 0x0a38,
0x09c6, 0x0638, 0x01c6, 0x0e38,
0x0ec6, 0x0138, 0x06c6, 0x0938,
0x0ac6, 0x0538, 0x02c6, 0x0d38,
0x0cc6, 0x0338, 0x04c6, 0x0b38,
0x08c6, 0x0738, 0x00c6, 0x0f38,
0x0f46, 0x00b8, 0x0746, 0x08b8,
0x0b46, 0x04b8, 0x0346, 0x0cb8,
0x0d46, 0x02b8, 0x0546, 0x0ab8,
0x0946, 0x06b8, 0x0146, 0x0eb8,
0x0e46, 0x01b8, 0x0646, 0x09b8,
0x0a46, 0x05b8, 0x0246, 0x0db8,
0x0c46, 0x03b8, 0x0446, 0x0bb8,
0x0846, 0x07b8, 0x0046, 0x0fb8,
0x0f86, 0x0078, 0x0786, 0x0878,
0x0b86, 0x0478, 0x0386, 0x0c78,
0x0d86, 0x0278, 0x0586, 0x0a78,
0x0986, 0x0678, 0x0186, 0x0e78,
0x0e86, 0x0178, 0x0686, 0x0978,
0x0a86, 0x0578, 0x0286, 0x0d78,
0x0c86, 0x0378, 0x0486, 0x0b78,
0x0886, 0x0778, 0x0086, 0x0f78,
0x0f06, 0x00f8, 0x0706, 0x08f8,
0x0b06, 0x04f8, 0x0306, 0x0cf8,
0x0d06, 0x02f8, 0x0506, 0x0af8,
0x0906, 0x06f8, 0x0106, 0x0ef8,
0x0e06, 0x01f8, 0x0606, 0x09f8,
0x0a06, 0x05f8, 0x0206, 0x0df8,
0x0c06, 0x03f8, 0x0406, 0x0bf8,
0x0806, 0x07f8, 0x0006, 0x0ff8,
0x0ffa, 0x0004, 0x07fa, 0x0804,
0x0bfa, 0x0404, 0x03fa, 0x0c04,
0x0dfa, 0x0204, 0x05fa, 0x0a04,
0x09fa, 0x0604, 0x01fa, 0x0e04,
0x0efa, 0x0104, 0x06fa, 0x0904,
0x0afa, 0x0504, 0x02fa, 0x0d04,
0x0cfa, 0x0304, 0x04fa, 0x0b04,
0x08fa, 0x0704, 0x00fa, 0x0f04,
0x0f7a, 0x0084, 0x077a, 0x0884,
0x0b7a, 0x0484, 0x037a, 0x0c84,
0x0d7a, 0x0284, 0x057a, 0x0a84,
0x097a, 0x0684, 0x017a, 0x0e84,
0x0e7a, 0x0184, 0x067a, 0x0984,
0x0a7a, 0x0584, 0x027a, 0x0d84,
0x0c7a, 0x0384, 0x047a, 0x0b84,
0x087a, 0x0784, 0x007a, 0x0f84,
0x0fba, 0x0044, 0x07ba, 0x0844,
0x0bba, 0x0444, 0x03ba, 0x0c44,
0x0dba, 0x0244, 0x05ba, 0x0a44,
0x09ba, 0x0644, 0x01ba, 0x0e44,
0x0eba, 0x0144, 0x06ba, 0x0944,
0x0aba, 0x0544, 0x02ba, 0x0d44,
0x0cba, 0x0344, 0x04ba, 0x0b44,
0x08ba, 0x0744, 0x00ba, 0x0f44,
0x0f3a, 0x00c4, 0x073a, 0x08c4,
0x0b3a, 0x04c4, 0x033a, 0x0cc4,
0x0d3a, 0x02c4, 0x053a, 0x0ac4,
0x093a, 0x06c4, 0x013a, 0x0ec4,
0x0e3a, 0x01c4, 0x063a, 0x09c4,
0x0a3a, 0x05c4, 0x023a, 0x0dc4,
0x0c3a, 0x03c4, 0x043a, 0x0bc4,
0x083a, 0x07c4, 0x003a, 0x0fc4,
0x0fda, 0x0024, 0x07da, 0x0824,
0x0bda, 0x0424, 0x03da, 0x0c24,
0x0dda, 0x0224, 0x05da, 0x0a24,
0x09da, 0x0624, 0x01da, 0x0e24,
0x0eda, 0x0124, 0x06da, 0x0924,
0x0ada, 0x0524, 0x02da, 0x0d24,
0x0cda, 0x0324, 0x04da, 0x0b24,
0x08da, 0x0724, 0x00da, 0x0f24,
0x0f5a, 0x00a4, 0x075a, 0x08a4,
0x0b5a, 0x04a4, 0x035a, 0x0ca4,
0x0d5a, 0x02a4, 0x055a, 0x0aa4,
0x095a, 0x06a4, 0x015a, 0x0ea4,
0x0e5a, 0x01a4, 0x065a, 0x09a4,
0x0a5a, 0x05a4, 0x025a, 0x0da4,
0x0c5a, 0x03a4, 0x045a, 0x0ba4,
0x085a, 0x07a4, 0x005a, 0x0fa4,
0x0f9a, 0x0064, 0x079a, 0x0864,
0x0b9a, 0x0464, 0x039a, 0x0c64,
0x0d9a, 0x0264, 0x059a, 0x0a64,
0x099a, 0x0664, 0x019a, 0x0e64,
0x0e9a, 0x0164, 0x069a, 0x0964,
0x0a9a, 0x0564, 0x029a, 0x0d64,
0x0c9a, 0x0364, 0x049a, 0x0b64,
0x089a, 0x0764, 0x009a, 0x0f64,
0x0f1a, 0x00e4, 0x071a, 0x08e4,
0x0b1a, 0x04e4, 0x031a, 0x0ce4,
0x0d1a, 0x02e4, 0x051a, 0x0ae4,
0x091a, 0x06e4, 0x011a, 0x0ee4,
0x0e1a, 0x01e4, 0x061a, 0x09e4,
0x0a1a, 0x05e4, 0x021a, 0x0de4,
0x0c1a, 0x03e4, 0x041a, 0x0be4,
0x081a, 0x07e4, 0x001a, 0x0fe4,
0x0fea, 0x0014, 0x07ea, 0x0814,
0x0bea, 0x0414, 0x03ea, 0x0c14,
0x0dea, 0x0214, 0x05ea, 0x0a14,
0x09ea, 0x0614, 0x01ea, 0x0e14,
0x0eea, 0x0114, 0x06ea, 0x0914,
0x0aea, 0x0514, 0x02ea, 0x0d14,
0x0cea, 0x0314, 0x04ea, 0x0b14,
0x08ea, 0x0714, 0x00ea, 0x0f14,
0x0f6a, 0x0094, 0x076a, 0x0894,
0x0b6a, 0x0494, 0x036a, 0x0c94,
0x0d6a, 0x0294, 0x056a, 0x0a94,
0x096a, 0x0694, 0x016a, 0x0e94,
0x0e6a, 0x0194, 0x066a, 0x0994,
0x0a6a, 0x0594, 0x026a, 0x0d94,
0x0c6a, 0x0394, 0x046a, 0x0b94,
0x086a, 0x0794, 0x006a, 0x0f94,
0x0faa, 0x0054, 0x07aa, 0x0854,
0x0baa, 0x0454, 0x03aa, 0x0c54,
0x0daa, 0x0254, 0x05aa, 0x0a54,
0x09aa, 0x0654, 0x01aa, 0x0e54,
0x0eaa, 0x0154, 0x06aa, 0x0954,
0x0aaa, 0x0554, 0x02aa, 0x0d54,
0x0caa, 0x0354, 0x04aa, 0x0b54,
0x08aa, 0x0754, 0x00aa, 0x0f54,
0x0f2a, 0x00d4, 0x072a, 0x08d4,
0x0b2a, 0x04d4, 0x032a, 0x0cd4,
0x0d2a, 0x02d4, 0x052a, 0x0ad4,
0x092a, 0x06d4, 0x012a, 0x0ed4,
0x0e2a, 0x01d4, 0x062a, 0x09d4,
0x0a2a, 0x05d4, 0x022a, 0x0dd4,
0x0c2a, 0x03d4, 0x042a, 0x0bd4,
0x082a, 0x07d4, 0x002a, 0x0fd4,
0x0fca, 0x0034, 0x07ca, 0x0834,
0x0bca, 0x0434, 0x03ca, 0x0c34,
0x0dca, 0x0234, 0x05ca, 0x0a34,
0x09ca, 0x0634, 0x01ca, 0x0e34,
0x0eca, 0x0134, 0x06ca, 0x0934,
0x0aca, 0x0534, 0x02ca, 0x0d34,
0x0cca, 0x0334, 0x04ca, 0x0b34,
0x08ca, 0x0734, 0x00ca, 0x0f34,
0x0f4a, 0x00b4, 0x074a, 0x08b4,
0x0b4a, 0x04b4, 0x034a, 0x0cb4,
0x0d4a, 0x02b4, 0x054a, 0x0ab4,
0x094a, 0x06b4, 0x014a, 0x0eb4,
0x0e4a, 0x01b4, 0x064a, 0x09b4,
0x0a4a, 0x05b4, 0x024a, 0x0db4,
0x0c4a, 0x03b4, 0x044a, 0x0bb4,
0x084a, 0x07b4, 0x004a, 0x0fb4,
0x0f8a, 0x0074, 0x078a, 0x0874,
0x0b8a, 0x0474, 0x038a, 0x0c74,
0x0d8a, 0x0274, 0x058a, 0x0a74,
0x098a, 0x0674, 0x018a, 0x0e74,
0x0e8a, 0x0174, 0x068a, 0x0974,
0x0a8a, 0x0574, 0x028a, 0x0d74,
0x0c8a, 0x0374, 0x048a, 0x0b74,
0x088a, 0x0774, 0x008a, 0x0f74,
0x0f0a, 0x00f4, 0x070a, 0x08f4,
0x0b0a, 0x04f4, 0x030a, 0x0cf4,
0x0d0a, 0x02f4, 0x050a, 0x0af4,
0x090a, 0x06f4, 0x010a, 0x0ef4,
0x0e0a, 0x01f4, 0x060a, 0x09f4,
0x0a0a, 0x05f4, 0x020a, 0x0df4,
0x0c0a, 0x03f4, 0x040a, 0x0bf4,
0x080a, 0x07f4, 0x000a, 0x0ff4,
0x0ff2, 0x000c, 0x07f2, 0x080c,
0x0bf2, 0x040c, 0x03f2, 0x0c0c,
0x0df2, 0x020c, 0x05f2, 0x0a0c,
0x09f2, 0x060c, 0x01f2, 0x0e0c,
0x0ef2, 0x010c, 0x06f2, 0x090c,
0x0af2, 0x050c, 0x02f2, 0x0d0c,
0x0cf2, 0x030c, 0x04f2, 0x0b0c,
0x08f2, 0x070c, 0x00f2, 0x0f0c,
0x0f72, 0x008c, 0x0772, 0x088c,
0x0b72, 0x048c, 0x0372, 0x0c8c,
0x0d72, 0x028c, 0x0572, 0x0a8c,
0x0972, 0x068c, 0x0172, 0x0e8c,
0x0e72, 0x018c, 0x0672, 0x098c,
0x0a72, 0x058c, 0x0272, 0x0d8c,
0x0c72, 0x038c, 0x0472, 0x0b8c,
0x0872, 0x078c, 0x0072, 0x0f8c,
0x0fb2, 0x004c, 0x07b2, 0x084c,
0x0bb2, 0x044c, 0x03b2, 0x0c4c,
0x0db2, 0x024c, 0x05b2, 0x0a4c,
0x09b2, 0x064c, 0x01b2, 0x0e4c,
0x0eb2, 0x014c, 0x06b2, 0x094c,
0x0ab2, 0x054c, 0x02b2, 0x0d4c,
0x0cb2, 0x034c, 0x04b2, 0x0b4c,
0x08b2, 0x074c, 0x00b2, 0x0f4c,
0x0f32, 0x00cc, 0x0732, 0x08cc,
0x0b32, 0x04cc, 0x0332, 0x0ccc,
0x0d32, 0x02cc, 0x0532, 0x0acc,
0x0932, 0x06cc, 0x0132, 0x0ecc,
0x0e32, 0x01cc, 0x0632, 0x09cc,
0x0a32, 0x05cc, 0x0232, 0x0dcc,
0x0c32, 0x03cc, 0x0432, 0x0bcc,
0x0832, 0x07cc, 0x0032, 0x0fcc,
0x0fd2, 0x002c, 0x07d2, 0x082c,
0x0bd2, 0x042c, 0x03d2, 0x0c2c,
0x0dd2, 0x022c, 0x05d2, 0x0a2c,
0x09d2, 0x062c, 0x01d2, 0x0e2c,
0x0ed2, 0x012c, 0x06d2, 0x092c,
0x0ad2, 0x052c, 0x02d2, 0x0d2c,
0x0cd2, 0x032c, 0x04d2, 0x0b2c,
0x08d2, 0x072c, 0x00d2, 0x0f2c,
0x0f52, 0x00ac, 0x0752, 0x08ac,
0x0b52, 0x04ac, 0x0352, 0x0cac,
0x0d52, 0x02ac, 0x0552, 0x0aac,
0x0952, 0x06ac, 0x0152, 0x0eac,
0x0e52, 0x01ac, 0x0652, 0x09ac,
0x0a52, 0x05ac, 0x0252, 0x0dac,
0x0c52, 0x03ac, 0x0452, 0x0bac,
0x0852, 0x07ac, 0x0052, 0x0fac,
0x0f92, 0x006c, 0x0792, 0x086c,
0x0b92, 0x046c, 0x0392, 0x0c6c,
0x0d92, 0x026c, 0x0592, 0x0a6c,
0x0992, 0x066c, 0x0192, 0x0e6c,
0x0e92, 0x016c, 0x0692, 0x096c,
0x0a92, 0x056c, 0x0292, 0x0d6c,
0x0c92, 0x036c, 0x0492, 0x0b6c,
0x0892, 0x076c, 0x0092, 0x0f6c,
0x0f12, 0x00ec, 0x0712, 0x08ec,
0x0b12, 0x04ec, 0x0312, 0x0cec,
0x0d12, 0x02ec, 0x0512, 0x0aec,
0x0912, 0x06ec, 0x0112, 0x0eec,
0x0e12, 0x01ec, 0x0612, 0x09ec,
0x0a12, 0x05ec, 0x0212, 0x0dec,
0x0c12, 0x03ec, 0x0412, 0x0bec,
0x0812, 0x07ec, 0x0012, 0x0fec,
0x0fe2, 0x001c, 0x07e2, 0x081c,
0x0be2, 0x041c, 0x03e2, 0x0c1c,
0x0de2, 0x021c, 0x05e2, 0x0a1c,
0x09e2, 0x061c, 0x01e2, 0x0e1c,
0x0ee2, 0x011c, 0x06e2, 0x091c,
0x0ae2, 0x051c, 0x02e2, 0x0d1c,
0x0ce2, 0x031c, 0x04e2, 0x0b1c,
0x08e2, 0x071c, 0x00e2, 0x0f1c,
0x0f62, 0x009c, 0x0762, 0x089c,
0x0b62, 0x049c, 0x0362, 0x0c9c,
0x0d62, 0x029c, 0x0562, 0x0a9c,
0x0962, 0x069c, 0x0162, 0x0e9c,
0x0e62, 0x019c, 0x0662, 0x099c,
0x0a62, 0x059c, 0x0262, 0x0d9c,
0x0c62, 0x039c, 0x0462, 0x0b9c,
0x0862, 0x079c, 0x0062, 0x0f9c,
0x0fa2, 0x005c, 0x07a2, 0x085c,
0x0ba2, 0x045c, 0x03a2, 0x0c5c,
0x0da2, 0x025c, 0x05a2, 0x0a5c,
0x09a2, 0x065c, 0x01a2, 0x0e5c,
0x0ea2, 0x015c, 0x06a2, 0x095c,
0x0aa2, 0x055c, 0x02a2, 0x0d5c,
0x0ca2, 0x035c, 0x04a2, 0x0b5c,
0x08a2, 0x075c, 0x00a2, 0x0f5c,
0x0f22, 0x00dc, 0x0722, 0x08dc,
0x0b22, 0x04dc, 0x0322, 0x0cdc,
0x0d22, 0x02dc, 0x0522, 0x0adc,
0x0922, 0x06dc, 0x0122, 0x0edc,
0x0e22, 0x01dc, 0x0622, 0x09dc,
0x0a22, 0x05dc, 0x0222, 0x0ddc,
0x0c22, 0x03dc, 0x0422, 0x0bdc,
0x0822, 0x07dc, 0x0022, 0x0fdc,
0x0fc2, 0x003c, 0x07c2, 0x083c,
0x0bc2, 0x043c, 0x03c2, 0x0c3c,
0x0dc2, 0x023c, 0x05c2, 0x0a3c,
0x09c2, 0x063c, 0x01c2, 0x0e3c,
0x0ec2, 0x013c, 0x06c2, 0x093c,
0x0ac2, 0x053c, 0x02c2, 0x0d3c,
0x0cc2, 0x033c, 0x04c2, 0x0b3c,
0x08c2, 0x073c, 0x00c2, 0x0f3c,
0x0f42, 0x00bc, 0x0742, 0x08bc,
0x0b42, 0x04bc, 0x0342, 0x0cbc,
0x0d42, 0x02bc, 0x0542, 0x0abc,
0x0942, 0x06bc, 0x0142, 0x0ebc,
0x0e42, 0x01bc, 0x0642, 0x09bc,
0x0a42, 0x05bc, 0x0242, 0x0dbc,
0x0c42, 0x03bc, 0x0442, 0x0bbc,
0x0842, 0x07bc, 0x0042, 0x0fbc,
0x0f82, 0x007c, 0x0782, 0x087c,
0x0b82, 0x047c, 0x0382, 0x0c7c,
0x0d82, 0x027c, 0x0582, 0x0a7c,
0x0982, 0x067c, 0x0182, 0x0e7c,
0x0e82, 0x017c, 0x0682, 0x097c,
0x0a82, 0x057c, 0x0282, 0x0d7c,
0x0c82, 0x037c, 0x0482, 0x0b7c,
0x0882, 0x077c, 0x0082, 0x0f7c,
0x0f02, 0x00fc, 0x0702, 0x08fc,
0x0b02, 0x04fc, 0x0302, 0x0cfc,
0x0d02, 0x02fc, 0x0502, 0x0afc,
0x0902, 0x06fc, 0x0102, 0x0efc,
0x0e02, 0x01fc, 0x0602, 0x09fc,
0x0a02, 0x05fc, 0x0202, 0x0dfc,
0x0c02, 0x03fc, 0x0402, 0x0bfc,
0x0802, 0x07fc, 0x0002, 0x0ffc,
};
<p><p><p>1.1 Tremor/misc.h
Index: misc.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: miscellaneous math and prototypes
********************************************************************/
#ifndef _V_RANDOM_H_
#define _V_RANDOM_H_
#include "ivorbiscodec.h"
#include "os_types.h"
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,ogg_int32_t *v,int point,
int n,int bark,int dB);
#include "asm_arm.h"
#ifndef _V_WIDE_MATH
#define _V_WIDE_MATH
#include <endian.h>
#if BYTE_ORDER==LITTLE_ENDIAN
union magic {
struct {
ogg_int32_t lo;
ogg_int32_t hi;
} halves;
ogg_int64_t whole;
};
#endif
#if BYTE_ORDER==BIG_ENDIAN
union magic {
struct {
ogg_int32_t hi;
ogg_int32_t lo;
} halves;
ogg_int64_t whole;
};
#endif
tatic inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) {
union magic magic;
magic.whole = (ogg_int64_t)x * y;
return magic.halves.hi;
}
tatic inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) {
return MULT32(x,y)<<1;
}
tatic inline ogg_int32_t MULT30(ogg_int32_t x, ogg_int32_t y) {
return MULT32(x,y)<<2;
}
tatic inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) {
union magic magic;
magic.whole = (ogg_int64_t)x * y;
return ((ogg_uint32_t)(magic.halves.lo)>>15) | ((magic.halves.hi)<<17);
}
tatic inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) {
int ret=x;
ret-= ((x<=32767)-1)&(x-32767);
ret-= ((x>=-32768)-1)&(x+32768);
return(ret);
}
#endif
tatic inline ogg_int32_t VFLOAT_MULT(ogg_int32_t a,ogg_int32_t ap,
ogg_int32_t b,ogg_int32_t bp,
ogg_int32_t *p){
if(a && b){
*p=ap+bp+32;
return MULT32(a,b);
}else
return 0;
}
tatic inline ogg_int32_t VFLOAT_MULTI(ogg_int32_t a,ogg_int32_t ap,
ogg_int32_t i,
ogg_int32_t *p){
int ip=_ilog(abs(i))-31;
return VFLOAT_MULT(a,ap,i<<-ip,ip,p);
}
tatic inline ogg_int32_t VFLOAT_ADD(ogg_int32_t a,ogg_int32_t ap,
ogg_int32_t b,ogg_int32_t bp,
ogg_int32_t *p){
if(!a){
*p=bp;
return b;
}else if(!b){
*p=ap;
return a;
}
/* yes, this can leak a bit. */
if(ap>bp){
int shift=ap-bp+1;
*p=ap+1;
a>>=1;
if(shift<32){
b=(b+(1<<(shift-1)))>>shift;
}else{
b=0;
}
}else{
int shift=bp-ap+1;
*p=bp+1;
b>>=1;
if(shift<32){
a=(a+(1<<(shift-1)))>>shift;
}else{
a=0;
}
}
a+=b;
if((a&0xc0000000)==0xc0000000 ||
(a&0xc0000000)==0){
a<<=1;
(*p)--;
}
return(a);
}
#endif
<p><p><p><p><p><p>1.1 Tremor/ogg.h
Index: ogg.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: subsumed libogg includes
********************************************************************/
#ifndef _OGG_H
#define _OGG_H
#ifdef __cplusplus
extern "C" {
#endif
#include "os_types.h"
typedef struct {
long endbyte;
int endbit;
unsigned char *buffer;
unsigned char *ptr;
long storage;
} oggpack_buffer;
/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
typedef struct {
unsigned char *header;
long header_len;
unsigned char *body;
long body_len;
} ogg_page;
/* ogg_stream_state contains the current encode/decode state of a logical
Ogg bitstream **********************************************************/
typedef struct {
unsigned char *body_data; /* bytes from packet bodies */
long body_storage; /* storage elements allocated */
long body_fill; /* elements stored; fill mark */
long body_returned; /* elements of fill returned */
<p> int *lacing_vals; /* The values that will go to the segment table */
ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
this way, but it is simple coupled to the
lacing fifo */
long lacing_storage;
long lacing_fill;
long lacing_packet;
long lacing_returned;
unsigned char header[282]; /* working space for header encode */
int header_fill;
int e_o_s; /* set when we have buffered the last packet in the
logical bitstream */
int b_o_s; /* set after we've written the initial page
of a logical bitstream */
long serialno;
long pageno;
ogg_int64_t packetno; /* sequence number for decode; the framing
knows where there's a hole in the data,
but we need coupling so that the codec
(which is in a seperate abstraction
layer) also knows about the gap */
ogg_int64_t granulepos;
} ogg_stream_state;
/* ogg_packet is used to encapsulate the data and metadata belonging
to a single raw Ogg/Vorbis packet *************************************/
typedef struct {
unsigned char *packet;
long bytes;
long b_o_s;
long e_o_s;
ogg_int64_t granulepos;
ogg_int64_t packetno; /* sequence number for decode; the framing
knows where there's a hole in the data,
but we need coupling so that the codec
(which is in a seperate abstraction
layer) also knows about the gap */
} ogg_packet;
typedef struct {
unsigned char *data;
int storage;
int fill;
int returned;
int unsynced;
int headerbytes;
int bodybytes;
} ogg_sync_state;
/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
extern void oggpack_writeinit(oggpack_buffer *b);
extern void oggpack_reset(oggpack_buffer *b);
extern void oggpack_writeclear(oggpack_buffer *b);
extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
extern long oggpack_look(oggpack_buffer *b,int bits);
extern long oggpack_look_huff(oggpack_buffer *b,int bits);
extern long oggpack_look1(oggpack_buffer *b);
extern void oggpack_adv(oggpack_buffer *b,int bits);
extern int oggpack_adv_huff(oggpack_buffer *b,int bits);
extern void oggpack_adv1(oggpack_buffer *b);
extern long oggpack_read(oggpack_buffer *b,int bits);
extern long oggpack_read1(oggpack_buffer *b);
extern long oggpack_bytes(oggpack_buffer *b);
extern long oggpack_bits(oggpack_buffer *b);
extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
extern int ogg_sync_init(ogg_sync_state *oy);
extern int ogg_sync_clear(ogg_sync_state *oy);
extern int ogg_sync_reset(ogg_sync_state *oy);
extern int ogg_sync_destroy(ogg_sync_state *oy);
extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
/* Ogg BITSTREAM PRIMITIVES: general ***************************/
extern int ogg_stream_init(ogg_stream_state *os,int serialno);
extern int ogg_stream_clear(ogg_stream_state *os);
extern int ogg_stream_reset(ogg_stream_state *os);
extern int ogg_stream_destroy(ogg_stream_state *os);
extern int ogg_stream_eos(ogg_stream_state *os);
extern void ogg_page_checksum_set(ogg_page *og);
extern int ogg_page_version(ogg_page *og);
extern int ogg_page_continued(ogg_page *og);
extern int ogg_page_bos(ogg_page *og);
extern int ogg_page_eos(ogg_page *og);
extern ogg_int64_t ogg_page_granulepos(ogg_page *og);
extern int ogg_page_serialno(ogg_page *og);
extern long ogg_page_pageno(ogg_page *og);
extern int ogg_page_packets(ogg_page *og);
extern void ogg_packet_clear(ogg_packet *op);
<p>#ifdef __cplusplus
}
#endif
#endif /* _OGG_H */
<p><p>1.1 Tremor/os.h
Index: os.h
===================================================================
#ifndef _OS_H
#define _OS_H
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: #ifdef jail to whip a few platforms into the UNIX ideal.
********************************************************************/
#include <math.h>
#include "os_types.h"
#ifndef _V_IFDEFJAIL_H_
# define _V_IFDEFJAIL_H_
# ifdef __GNUC__
# define STIN static __inline__
# elif _WIN32
# define STIN static __inline
# endif
#else
# define STIN static
#endif
#ifndef M_PI
# define M_PI (3.1415926536f)
#endif
#ifdef _WIN32
# 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
#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
#endif /* _OS_H */
<p><p>1.1 Tremor/os_types.h
Index: os_types.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: #ifdef jail to whip a few platforms into the UNIX ideal.
********************************************************************/
#ifndef _OS_TYPES_H
#define _OS_TYPES_H
/* make it easy on the folks that want to compile the libs with a
different malloc than stdlib */
#define _ogg_malloc malloc
#define _ogg_calloc calloc
#define _ogg_realloc realloc
#define _ogg_free free
#ifdef _WIN32
# ifndef __GNUC__
/* MSVC/Borland */
typedef __int64 ogg_int64_t;
typedef __int32 ogg_int32_t;
typedef unsigned __int32 ogg_uint32_t;
typedef __int16 ogg_int16_t;
# else
/* Cygwin */
#include <_G_config.h>
typedef _G_int64_t ogg_int64_t;
typedef _G_int32_t ogg_int32_t;
typedef _G_uint32_t ogg_uint32_t;
typedef _G_int16_t ogg_int16_t;
# endif
#elif defined(__MACOS__)
# include <sys/types.h>
typedef SInt16 ogg_int16_t;
typedef SInt32 ogg_int32_t;
typedef UInt32 ogg_uint32_t;
typedef SInt64 ogg_int64_t;
#elif defined(__MACOSX__) /* MacOS X Framework build */
# include <sys/types.h>
typedef int16_t ogg_int16_t;
typedef int32_t ogg_int32_t;
typedef u_int32_t ogg_uint32_t;
typedef int64_t ogg_int64_t;
#elif defined(__BEOS__)
/* Be */
# include <inttypes.h>
#elif defined (__EMX__)
/* OS/2 GCC */
typedef short ogg_int16_t;
typedef int ogg_int32_t;
typedef unsigned int ogg_uint32_t;
typedef long long ogg_int64_t;
#else
# include <sys/types.h>
# include "config_types.h"
#endif
#endif /* _OS_TYPES_H */
<p><p>1.1 Tremor/registry.c
Index: registry.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: registry for floor, res backends and channel mappings
********************************************************************/
#include "ivorbiscodec.h"
#include "codec_internal.h"
#include "registry.h"
#include "misc.h"
<p>/* 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,
};
<p><p><p><p><p>1.1 Tremor/registry.h
Index: registry.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: registry for time, floor, res backends and channel mappings
********************************************************************/
#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
#include "backends.h"
#if defined(_WIN32) && defined(VORBISDLL_IMPORT)
# define EXTERN __declspec(dllimport) extern
#else
# define EXTERN extern
#endif
EXTERN vorbis_func_floor *_floor_P[];
EXTERN vorbis_func_residue *_residue_P[];
EXTERN vorbis_func_mapping *_mapping_P[];
#endif
<p><p>1.1 Tremor/res012.c
Index: res012.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: residue backend 0, 1 and 2 implementation
********************************************************************/
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "ogg.h"
#include "ivorbiscodec.h"
#include "codec_internal.h"
#include "registry.h"
#include "codebook.h"
#include "misc.h"
#include "os.h"
typedef struct {
vorbis_info_residue0 *info;
int map;
int parts;
int stages;
codebook *fullbooks;
codebook *phrasebook;
codebook ***partbooks;
int partvals;
int **decodemap;
} 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;
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);
}
}
tatic int ilog(unsigned int v){
int ret=0;
while(v){
ret++;
v>>=1;
}
return(ret);
}
tatic int icount(unsigned int v){
int ret=0;
while(v){
ret+=v&1;
v>>=1;
}
return(ret);
}
/* 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=(vorbis_info_residue0 *)_ogg_calloc(1,sizeof(*info));
codec_setup_info *ci=(codec_setup_info *)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_mode *vm,
vorbis_info_residue *vr){
vorbis_info_residue0 *info=(vorbis_info_residue0 *)vr;
vorbis_look_residue0 *look=(vorbis_look_residue0 *)_ogg_calloc(1,sizeof(*look));
codec_setup_info *ci=(codec_setup_info *)vd->vi->codec_setup;
int j,k,acc=0;
int dim;
int maxstage=0;
look->info=info;
look->map=vm->mapping;
look->parts=info->partitions;
look->fullbooks=ci->fullbooks;
look->phrasebook=ci->fullbooks+info->groupbook;
dim=look->phrasebook->dim;
look->partbooks=(codebook ***)_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]=(codebook **)_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]=calloc(look->partbooks[j][k]->entries,
sizeof(***look->training_data));
#endif
}
}
}
look->partvals=look->parts;
for(j=1;j<dim;j++)look->partvals*=look->parts;
look->stages=maxstage;
look->decodemap=(int **)_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]=(int *)_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;
}
}
return(look);
}
<p>/* a truncated packet here just means 'stop working'; it's not an error */
static int _01inverse(vorbis_block *vb,vorbis_look_residue *vl,
ogg_int32_t **in,int ch,
long (*decodepart)(codebook *, ogg_int32_t *,
oggpack_buffer *,int,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 n=info->end-info->begin;
int partvals=n/samples_per_partition;
int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
int ***partword=(int ***)alloca(ch*sizeof(*partword));
for(j=0;j<ch;j++)
partword[j]=(int **)_vorbis_block_alloc(vb,partwords*sizeof(*partword[j]));
for(s=0;s<look->stages;s++){
/* each loop decodes on partition codeword containing
partitions_pre_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,-8)==-1)goto eopbreak;
}
}
}
}
}
errout:
eopbreak:
return(0);
}
int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl,
ogg_int32_t **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_inverse(vorbis_block *vb,vorbis_look_residue *vl,
ogg_int32_t **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);
}
/* duplicate code here as speed is somewhat more important */
int res2_inverse(vorbis_block *vb,vorbis_look_residue *vl,
ogg_int32_t **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 n=info->end-info->begin;
int partvals=n/samples_per_partition;
int partwords=(partvals+partitions_per_word-1)/partitions_per_word;
int **partword=(int **)_vorbis_block_alloc(vb,partwords*sizeof(*partword));
int beginoff=info->begin/ch;
for(i=0;i<ch;i++)if(nonzero[i])break;
if(i==ch)return(0); /* no nonzero vectors */
samples_per_partition/=ch;
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+beginoff,ch,
&vb->opb,
samples_per_partition,-8)==-1)
goto eopbreak;
}
}
}
}
errout:
eopbreak:
return(0);
}
<p>vorbis_func_residue residue0_exportbundle={
&res0_unpack,
&res0_look,
&res0_free_info,
&res0_free_look,
&res0_inverse
};
vorbis_func_residue residue1_exportbundle={
&res0_unpack,
&res0_look,
&res0_free_info,
&res0_free_look,
&res1_inverse
};
vorbis_func_residue residue2_exportbundle={
&res0_unpack,
&res0_look,
&res0_free_info,
&res0_free_look,
&res2_inverse
};
<p><p>1.1 Tremor/sharedbook.c
Index: sharedbook.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: basic shared codebook operations
********************************************************************/
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "ogg.h"
#include "os.h"
#include "misc.h"
#include "ivorbiscodec.h"
#include "codebook.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. */
tatic ogg_int32_t _float32_unpack(long val,int *point){
long mant=val&0x1fffff;
int sign=val&0x80000000;
long exp =(val&0x7fe00000L)>>VQ_FMAN;
exp-=(VQ_FMAN-1)+VQ_FEXP_BIAS;
if(mant){
while(!(mant&0x40000000)){
mant<<=1;
exp-=1;
}
if(sign)mant= -mant;
}else{
sign=0;
exp=-9999;
}
*point=exp;
return mant;
}
/* 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_uint32_t *)_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){
/* get us a starting hint, we'll polish it below */
int bits=_ilog(b->entries);
int vals=b->entries>>((bits-1)*(b->dim-1)/b->dim);
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++;
}
}
}
}
/* different than what _book_unquantize does for mainline:
we repack the book in a fixed point format that shares the same
binary point. Upon first use, we can shift point if needed */
/* 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 */
ogg_int32_t *_book_unquantize(const static_codebook *b,int n,int *sparsemap,
int *maxpoint){
long j,k,count=0;
if(b->maptype==1 || b->maptype==2){
int quantvals;
int minpoint,delpoint;
ogg_int32_t mindel=_float32_unpack(b->q_min,&minpoint);
ogg_int32_t delta=_float32_unpack(b->q_delta,&delpoint);
ogg_int32_t *r=(ogg_int32_t *)_ogg_calloc(n*b->dim,sizeof(*r));
int *rp=(int *)_ogg_calloc(n*b->dim,sizeof(*rp));
*maxpoint=minpoint;
/* 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){
ogg_int32_t last=0;
int lastpoint=0;
int indexdiv=1;
for(k=0;k<b->dim;k++){
int index= (j/indexdiv)%quantvals;
int point;
int val=VFLOAT_MULTI(delta,delpoint,
abs(b->quantlist[index]),&point);
val=VFLOAT_ADD(mindel,minpoint,val,point,&point);
val=VFLOAT_ADD(last,lastpoint,val,point,&point);
if(b->q_sequencep){
last=val;
lastpoint=point;
}
if(sparsemap){
r[sparsemap[count]*b->dim+k]=val;
rp[sparsemap[count]*b->dim+k]=point;
}else{
r[count*b->dim+k]=val;
rp[count*b->dim+k]=point;
}
if(*maxpoint<point)*maxpoint=point;
indexdiv*=quantvals;
}
count++;
}
}
break;
case 2:
for(j=0;j<b->entries;j++){
if((sparsemap && b->lengthlist[j]) || !sparsemap){
ogg_int32_t last=0;
int lastpoint=0;
for(k=0;k<b->dim;k++){
int point;
int val=VFLOAT_MULTI(delta,delpoint,
abs(b->quantlist[j*b->dim+k]),&point);
val=VFLOAT_ADD(mindel,minpoint,val,point,&point);
val=VFLOAT_ADD(last,lastpoint,val,point,&point);
if(b->q_sequencep){
last=val;
lastpoint=point;
}
if(sparsemap){
r[sparsemap[count]*b->dim+k]=val;
rp[sparsemap[count]*b->dim+k]=point;
}else{
r[count*b->dim+k]=val;
rp[count*b->dim+k]=point;
}
if(*maxpoint<point)*maxpoint=point;
}
count++;
}
}
break;
}
for(j=0;j<n*b->dim;j++)
if(rp[j]<*maxpoint)
r[j]>>=*maxpoint-rp[j];
_ogg_free(rp);
return(r);
}
return(NULL);
}
void vorbis_staticbook_clear(static_codebook *b){
if(b->quantlist)_ogg_free(b->quantlist);
if(b->lengthlist)_ogg_free(b->lengthlist);
memset(b,0,sizeof(*b));
}
void vorbis_staticbook_destroy(static_codebook *b){
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));
}
tatic 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);
}
tatic int sort32a(const void *a,const void *b){
return ( (**(ogg_uint32_t **)a>**(ogg_uint32_t **)b)<<1)-1;
}
/* 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;
c->q_min=s->q_min;
c->q_delta=s->q_delta;
/* 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=(ogg_uint32_t **)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=(int *)alloca(n*sizeof(*sortindex));
c->codelist=(ogg_uint32_t *)_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->binarypoint);
c->dec_index=(int *)_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=(char *)_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_uint32_t *)_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);
}
<p><p><p>1.1 Tremor/synthesis.c
Index: synthesis.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: single-block PCM synthesis
last mod: $Id: synthesis.c,v 1.1 2002/09/02 22:13:55 xiphmont Exp $
********************************************************************/
#include <stdio.h>
#include "ogg.h"
#include "ivorbiscodec.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;
backend_lookup_state *b=(backend_lookup_state *)vd->backend_state;
vorbis_info *vi=vd->vi;
codec_setup_info *ci=(codec_setup_info *)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){
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-3; /* first block is third packet */
vb->eofflag=op->e_o_s;
/* alloc pcm passback storage */
vb->pcmend=ci->blocksizes[vb->W];
vb->pcm=(ogg_int32_t **)_vorbis_block_alloc(vb,sizeof(*vb->pcm)*vi->channels);
for(i=0;i<vi->channels;i++)
vb->pcm[i]=(ogg_int32_t *)_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,b->mode[mode]));
}
long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){
codec_setup_info *ci=(codec_setup_info *)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]);
}
<p><p><p><p>1.1 Tremor/vorbisfile.c
Index: vorbisfile.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: stdio-based convenience library for opening/seeking/decoding
********************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <math.h>
#include "ivorbiscodec.h"
#include "ivorbisfile.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
*/
static long _get_data(OggVorbis_File *vf){
errno=0;
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 void _seek_helper(OggVorbis_File *vf,long offset){
if(vf->datasource){
(vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET);
vf->offset=offset;
ogg_sync_reset(&vf->oy);
}else{
/* shouldn't happen unless someone writes a broken callback */
return;
}
}
/* 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 */
tatic long _get_next_page(OggVorbis_File *vf,ogg_page *og,int 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 */
long 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 long _get_prev_page(OggVorbis_File *vf,ogg_page *og){
long begin=vf->offset;
long ret;
int offset=-1;
while(offset==-1){
begin-=CHUNKSIZE;
if(begin<0)
begin=0;
_seek_helper(vf,begin);
while(vf->offset<begin+CHUNKSIZE){
ret=_get_next_page(vf,og,begin+CHUNKSIZE-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 */
_seek_helper(vf,offset);
ret=_get_next_page(vf,og,CHUNKSIZE);
if(ret<0)
/* this shouldn't be possible */
return(OV_EFAULT);
return(offset);
}
/* 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,
long begin,
long searched,
long end,
long currentno,
long m){
long endsearched=end;
long next=end;
ogg_page og;
long ret;
/* the below guards against garbage seperating the last and
first pages of two links. */
while(searched<endsearched){
long bisect;
if(endsearched-searched<CHUNKSIZE){
bisect=searched;
}else{
bisect=(searched+endsearched)/2;
}
_seek_helper(vf,bisect);
ret=_get_next_page(vf,&og,-1);
if(ret==OV_EREAD)return(OV_EREAD);
if(ret<0 || ogg_page_serialno(&og)!=currentno){
endsearched=bisect;
if(ret>=0)next=ret;
}else{
searched=ret+og.header_len+og.body_len;
}
}
_seek_helper(vf,next);
ret=_get_next_page(vf,&og,-1);
if(ret==OV_EREAD)return(OV_EREAD);
if(searched>=end || ret<0){
vf->links=m+1;
vf->offsets=(ogg_int64_t *)_ogg_malloc((m+2)*sizeof(*vf->offsets));
vf->offsets[m+1]=searched;
}else{
ret=_bisect_forward_serialno(vf,next,vf->offset,
end,ogg_page_serialno(&og),m+1);
if(ret==OV_EREAD)return(OV_EREAD);
}
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=0;
if(!og_ptr){
ret=_get_next_page(vf,&og,CHUNKSIZE);
if(ret==OV_EREAD)return(OV_EREAD);
if(ret<0)return OV_ENOTVORBIS;
og_ptr=&og;
}
if(serialno)*serialno=ogg_page_serialno(og_ptr);
ogg_stream_init(&vf->os,ogg_page_serialno(og_ptr));
vf->ready_state=STREAMSET;
/* extract the initial header from the first page and verify that the
Ogg bitstream is in fact Vorbis data */
vorbis_info_init(vi);
vorbis_comment_init(vc);
i=0;
while(i<3){
ogg_stream_pagein(&vf->os,og_ptr);
while(i<3){
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++;
}
if(i<3)
if(_get_next_page(vf,og_ptr,CHUNKSIZE)<0){
ret=OV_EBADHEADER;
goto bail_header;
}
}
return 0;
bail_header:
vorbis_info_clear(vi);
vorbis_comment_clear(vc);
ogg_stream_clear(&vf->os);
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, long dataoffset){
ogg_page og;
int i,ret;
vf->vi=(vorbis_info *)_ogg_realloc(vf->vi,vf->links*sizeof(*vf->vi));
vf->vc=(vorbis_comment *)_ogg_realloc(vf->vc,vf->links*sizeof(*vf->vc));
vf->dataoffsets=(ogg_int64_t *)_ogg_malloc(vf->links*sizeof(*vf->dataoffsets));
vf->pcmlengths=(ogg_int64_t *)_ogg_malloc(vf->links*sizeof(*vf->pcmlengths));
vf->serialnos=(long *)_ogg_malloc(vf->links*sizeof(*vf->serialnos));
for(i=0;i<vf->links;i++){
if(i==0){
/* we already grabbed the initial header earlier. Just set the offset */
vf->dataoffsets[i]=dataoffset;
}else{
/* seek to the location of the initial header */
_seek_helper(vf,vf->offsets[i]);
if(_fetch_headers(vf,vf->vi+i,vf->vc+i,NULL,NULL)<0){
vf->dataoffsets[i]=-1;
}else{
vf->dataoffsets[i]=vf->offset;
ogg_stream_clear(&vf->os);
}
}
/* get the serial number and PCM length of this link. To do this,
get the last page of the stream */
{
long end=vf->offsets[i+1];
_seek_helper(vf,end);
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_granulepos(&og)!=-1){
vf->serialnos[i]=ogg_page_serialno(&og);
vf->pcmlengths[i]=ogg_page_granulepos(&og);
break;
}
vf->offset=ret;
}
}
}
}
tatic void _make_decode_ready(OggVorbis_File *vf){
if(vf->ready_state!=STREAMSET)return;
if(vf->seekable){
vorbis_synthesis_init(&vf->vd,vf->vi+vf->current_link);
}else{
vorbis_synthesis_init(&vf->vd,vf->vi);
}
vorbis_block_init(&vf->vd,&vf->vb);
vf->ready_state=INITSET;
return;
}
tatic int _open_seekable2(OggVorbis_File *vf){
long serialno=vf->current_serialno,end;
long dataoffset=vf->offset;
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 */
(vf->callbacks.seek_func)(vf->datasource,0,SEEK_END);
vf->offset=vf->end=(vf->callbacks.tell_func)(vf->datasource);
/* 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){
ov_clear(vf);
return(end);
}
/* more than one logical bitstream? */
if(ogg_page_serialno(&og)!=serialno){
/* Chained bitstream. Bisect-search each logical bitstream
section. Do so based on serial number only */
if(_bisect_forward_serialno(vf,0,0,end+1,serialno,0)<0){
ov_clear(vf);
return(OV_EREAD);
}
}else{
/* Only one logical bitstream */
if(_bisect_forward_serialno(vf,0,end,end+1,serialno,0)){
ov_clear(vf);
return(OV_EREAD);
}
}
/* 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){
ogg_stream_clear(&vf->os);
vorbis_dsp_clear(&vf->vd);
vorbis_block_clear(&vf->vb);
vf->ready_state=OPENED;
vf->bittrack=0;
vf->samptrack=0;
}
/* 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
*/
tatic int _process_packet(OggVorbis_File *vf,int readp){
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;
int result=ogg_stream_packetout(&vf->os,&op);
ogg_int64_t granulepos;
if(result==-1)return(OV_HOLE); /* hole in the data. */
if(result>0){
/* got a packet. process it */
granulepos=op.granulepos;
if(!vorbis_synthesis(&vf->vb,&op)){ /* 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);
vorbis_synthesis_blockin(&vf->vd,&vf->vb);
vf->samptrack+=vorbis_synthesis_pcmout(&vf->vd,NULL)-oldsamples;
vf->bittrack+=op.bytes*8;
}
/* update the pcm offset. */
if(granulepos!=-1 && !op.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.e_o_s clause
above */
samples=vorbis_synthesis_pcmout(&vf->vd,NULL);
granulepos-=samples;
for(i=0;i<link;i++)
granulepos+=vf->pcmlengths[i];
vf->pcm_offset=granulepos;
}
return(1);
}
}
else
break;
}
}
if(vf->ready_state>=OPENED){
if(!readp)return(0);
if(_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;
/* has our decoding just traversed a bitstream boundary? */
if(vf->ready_state==INITSET){
if(vf->current_serialno!=ogg_page_serialno(&og)){
_decode_clear(vf);
if(!vf->seekable){
vorbis_info_clear(vf->vi);
vorbis_comment_clear(vf->vc);
}
}
}
}
/* 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){
vf->current_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]==vf->current_serialno)break;
if(link==vf->links)return(OV_EBADLINK); /* sign of a bogus
stream. error out,
leave machine
uninitialized */
vf->current_link=link;
ogg_stream_init(&vf->os,vf->current_serialno);
ogg_stream_reset(&vf->os);
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;
}
}
_make_decode_ready(vf);
}
ogg_stream_pagein(&vf->os,&og);
}
}
tatic int _fseek64_wrap(FILE *f,ogg_int64_t off,int whence){
if(f==NULL)return(-1);
return fseek(f,(int)off,whence);
}
tatic int _ov_open1(void *f,OggVorbis_File *vf,char *initial,
long ibytes, ov_callbacks callbacks){
long offset=(f?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(offset!=-1)vf->seekable=1;
/* No seeking yet; Set up a 'single' (current) logical bitstream
entry for partial open */
vf->links=1;
vf->vi=(vorbis_info *)_ogg_calloc(vf->links,sizeof(*vf->vi));
vf->vc=(vorbis_comment *)_ogg_calloc(vf->links,sizeof(*vf->vc));
/* 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 if(vf->ready_state < PARTOPEN)
vf->ready_state=PARTOPEN;
return(ret);
}
tatic int _ov_open2(OggVorbis_File *vf){
if(vf->ready_state < OPENED)
vf->ready_state=OPENED;
if(vf->seekable){
int ret=_open_seekable2(vf);
if(ret){
vf->datasource=NULL;
ov_clear(vf);
}
return(ret);
}
return 0;
}
<p>/* 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->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);
}
/* 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;
for(i=0;i<vf->links;i++)
bits+=(vf->offsets[i+1]-vf->dataoffsets[i])*8;
return(bits*1000/ov_time_total(vf,-1));
}else{
if(vf->seekable){
/* return the actual bitrate */
return((vf->offsets[i+1]-vf->dataoffsets[i])*8000/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;
vf->bittrack=0;
vf->samptrack=0;
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){
long 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]);
}
}
/* returns: total milliseconds 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
*/
ogg_int64_t 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){
ogg_int64_t acc=0;
int i;
for(i=0;i<vf->links;i++)
acc+=ov_time_total(vf,i);
return(acc);
}else{
return(((ogg_int64_t)vf->pcmlengths[i])*1000/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,long pos){
ogg_stream_state work_os;
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->offsets[vf->links])return(OV_EINVAL);
/* clear out decoding machine state */
vf->pcm_offset=-1;
_decode_clear(vf);
_seek_helper(vf,pos);
/* 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
a 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=-1;
int eosflag=0;
memset(&work_os,0,sizeof(work_os));/* so that it's safe to clear
it later even if we don't
init it */
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(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;
for(i=0;i<link;i++)
granulepos+=vf->pcmlengths[i];
vf->pcm_offset=granulepos-accblock;
break;
}
lastblock=thisblock;
continue;
}
}
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)){
_decode_clear(vf); /* clear out stream state */
ogg_stream_clear(&work_os);
}
if(vf->ready_state<STREAMSET){
int link;
vf->current_serialno=ogg_page_serialno(&og);
for(link=0;link<vf->links;link++)
if(vf->serialnos[link]==vf->current_serialno)break;
if(link==vf->links)goto seek_error; /* sign of a bogus stream.
error out, leave
machine uninitialized */
vf->current_link=link;
ogg_stream_init(&vf->os,vf->current_serialno);
ogg_stream_reset(&vf->os);
ogg_stream_init(&work_os,vf->current_serialno);
ogg_stream_reset(&work_os);
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);
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;
long ret;
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];
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 target=pos-total;
long end=vf->offsets[link+1];
long begin=vf->offsets[link];
ogg_int64_t endtime = vf->pcmlengths[link];
ogg_int64_t begintime = 0;
long best=begin;
ogg_page og;
while(begin<end){
long 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;
}
_seek_helper(vf,bisect);
while(begin<end){
ret=_get_next_page(vf,&og,end-bisect);
if(ret==OV_EREAD) goto seek_error;
if(ret<0){
if(bisect<=begin+1)
end=begin; /* found it */
else{
if(bisect==0)goto seek_error;
bisect-=CHUNKSIZE;
if(bisect<=begin)bisect=begin+1;
_seek_helper(vf,bisect);
}
}else{
ogg_int64_t granulepos=ogg_page_granulepos(&og);
if(granulepos<target){
best=ret; /* raw offset of packet with granulepos */
begin=vf->offset; /* raw offset of next page */
begintime=granulepos;
if(target-begin>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=ret;
bisect-=CHUNKSIZE; /* an endless loop otherwise. */
if(bisect<=begin)bisect=begin+1;
_seek_helper(vf,bisect);
}else{
end=ret;
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;
/* clear out decoding machine state */
_decode_clear(vf);
/* seek */
_seek_helper(vf,best);
if(_get_next_page(vf,&og,-1)<0)return(OV_EOF); /* shouldn't happen */
vf->current_serialno=ogg_page_serialno(&og);
vf->current_link=link;
ogg_stream_init(&vf->os,vf->current_serialno);
ogg_stream_reset(&vf->os);
vf->ready_state=STREAMSET;
ogg_stream_pagein(&vf->os,&og);
/* pull out all but last packet; the one with granulepos */
while(1){
ret=ogg_stream_packetpeek(&vf->os,&op);
if(ret==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. */
while(1){
ret=_get_prev_page(vf,&og);
if(ret<0)goto seek_error;
if(ogg_page_granulepos(&og)>-1 ||
!ogg_page_continued(&og)){
return ov_raw_seek(vf,ret);
}
vf->offset=ret;
}
}
if(ret<0)goto seek_error;
if(op.granulepos!=-1){
vf->pcm_offset=op.granulepos+total;
break;
}else
ret=ogg_stream_packetout(&vf->os,NULL);
}
}
}
/* verify result */
if(vf->pcm_offset>pos || pos>ov_pcm_total(vf,-1)){
ret=OV_EFAULT;
goto seek_error;
}
return(0);
seek_error:
/* dump machine so we're in a known state */
vf->pcm_offset=-1;
_decode_clear(vf);
return ret;
}
/* 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);
/* 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(lastblock)vf->pcm_offset+=(lastblock+thisblock)>>2;
if(vf->pcm_offset+((thisblock+
vorbis_info_blocksize(vf->vi,1))>>2)>=pos)break;
ogg_stream_packetout(&vf->os,NULL);
/* 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;
for(i=0;i<vf->current_link;i++)
vf->pcm_offset+=vf->pcmlengths[i];
}
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(vf->current_serialno!=ogg_page_serialno(&og))_decode_clear(vf);
if(vf->ready_state<STREAMSET){
int link;
vf->current_serialno=ogg_page_serialno(&og);
for(link=0;link<vf->links;link++)
if(vf->serialnos[link]==vf->current_serialno)break;
if(link==vf->links)return(OV_EBADLINK);
vf->current_link=link;
ogg_stream_init(&vf->os,vf->current_serialno);
ogg_stream_reset(&vf->os);
vf->ready_state=STREAMSET;
lastblock=0;
}
ogg_stream_pagein(&vf->os,&og);
}
}
/* discard samples until we reach the desired position. Crossing a
logical bitstream boundary with abandon is OK. */
_make_decode_ready(vf);
while(vf->pcm_offset<pos){
ogg_int32_t **pcm;
long target=pos-vf->pcm_offset;
long samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
if(samples>target)samples=target;
vorbis_synthesis_read(&vf->vd,samples);
vf->pcm_offset+=samples;
if(samples<target)
if(_process_packet(vf,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,ogg_int64_t milliseconds){
/* translate time to PCM position and call ov_pcm_seek */
int link=-1;
ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
ogg_int64_t time_total=ov_time_total(vf,-1);
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable)return(OV_ENOSEEK);
if(milliseconds<0 || milliseconds>time_total)return(OV_EINVAL);
/* which bitstream section does this time offset occur in? */
for(link=vf->links-1;link>=0;link--){
pcm_total-=vf->pcmlengths[link];
time_total-=ov_time_total(vf,link);
if(milliseconds>=time_total)break;
}
/* enough information to convert time offset to pcm offset */
{
ogg_int64_t target=pcm_total+(milliseconds-time_total)*vf->vi[link].rate/1000;
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,ogg_int64_t milliseconds){
/* translate time to PCM position and call ov_pcm_seek */
int link=-1;
ogg_int64_t pcm_total=ov_pcm_total(vf,-1);
ogg_int64_t time_total=ov_time_total(vf,-1);
if(vf->ready_state<OPENED)return(OV_EINVAL);
if(!vf->seekable)return(OV_ENOSEEK);
if(milliseconds<0 || milliseconds>time_total)return(OV_EINVAL);
/* which bitstream section does this time offset occur in? */
for(link=vf->links-1;link>=0;link--){
pcm_total-=vf->pcmlengths[link];
time_total-=ov_time_total(vf,link);
if(milliseconds>=time_total)break;
}
/* enough information to convert time offset to pcm offset */
{
ogg_int64_t target=pcm_total+(milliseconds-time_total)*vf->vi[link].rate/1000;
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 (milliseconds) of next PCM sample to be read */
ogg_int64_t ov_time_tell(OggVorbis_File *vf){
/* translate time to PCM position and call ov_pcm_seek */
int link=-1;
ogg_int64_t pcm_total=0;
ogg_int64_t time_total=0;
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];
time_total-=ov_time_total(vf,link);
if(vf->pcm_offset>=pcm_total)break;
}
}
return(time_total+(vf->pcm_offset-pcm_total)/vf->vi[link].rate*1000);
}
/* 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;
}
}
/* 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
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 bytes_req,int *bitstream){
int i,j;
ogg_int32_t **pcm;
long samples;
if(vf->ready_state<OPENED)return(OV_EINVAL);
while(1){
if(vf->ready_state>=STREAMSET){
samples=vorbis_synthesis_pcmout(&vf->vd,&pcm);
if(samples)break;
}
/* suck in another packet */
{
int ret=_process_packet(vf,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;
if(channels==1){
if(samples>(bytes_req/2))
samples=bytes_req/2;
}else{
if(samples>(bytes_req/4))
samples=bytes_req/4;
}
for(i=0;i<channels;i++) { /* It's faster in this order */
ogg_int32_t *src=pcm[i];
short *dest=((short *)buffer)+i;
for(j=0;j<samples;j++) {
*dest=CLIP_TO_15(src[j]>>9);
dest+=channels;
}
}
vorbis_synthesis_read(&vf->vd,samples);
vf->pcm_offset+=samples;
if(bitstream)*bitstream=vf->current_link;
return(samples*2*channels);
}else{
return(samples);
}
}
<p><p><p><p><p><p>1.1 Tremor/window.c
Index: window.c
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: window functions
********************************************************************/
#include <stdlib.h>
#include <math.h>
#include "os.h"
#include "misc.h"
tatic ogg_int32_t vwin64[32]={
0x001f0003, 0x01168c98, 0x030333c8, 0x05dfe3a4,
0x09a49562, 0x0e45df18, 0x13b47ef2, 0x19dcf676,
0x20a74d83, 0x27f7137c, 0x2fabb05a, 0x37a11059,
0x3fb0ab28, 0x47b2dcd0, 0x4f807bc6, 0x56f48e6f,
0x5dedfc78, 0x64511652, 0x6a08cffe, 0x6f079327,
0x734796f3, 0x76cab7f1, 0x7999d6e7, 0x7bc3cf9e,
0x7d5c20c0, 0x7e7961de, 0x7f33a566, 0x7fa2e1cf,
0x7fdd78a4, 0x7ff6ec6c, 0x7ffed0e8, 0x7ffffc3e,
};
tatic ogg_int32_t vwin128[64]={
0x0007c04d, 0x0045bb89, 0x00c18b87, 0x017ae294,
0x02714a4e, 0x03a4217a, 0x05129952, 0x06bbb24f,
0x089e38a1, 0x0ab8c073, 0x0d09a228, 0x0f8ef6bd,
0x12469488, 0x152e0c7a, 0x1842a81b, 0x1b81686d,
0x1ee705d9, 0x226ff15d, 0x26185704, 0x29dc21cc,
0x2db700fd, 0x31a46f08, 0x359fb9c1, 0x39a40c0b,
0x3dac78b6, 0x41b40674, 0x45b5bcb0, 0x49acb109,
0x4d94152a, 0x516744bc, 0x5521d320, 0x58bf98a5,
0x5c3cbef3, 0x5f95cc5c, 0x62c7add6, 0x65cfbf63,
0x68abd2b9, 0x6b5a3404, 0x6dd9acaa, 0x7029840c,
0x72497e37, 0x7439d8ab, 0x75fb4531, 0x778ee309,
0x78f6367d, 0x7a331f19, 0x7b47cccc, 0x7c36b415,
0x7d028191, 0x7dae0d18, 0x7e3c4ca9, 0x7eb04762,
0x7f0d08a6, 0x7f5593b6, 0x7f8cd7d4, 0x7fb5a512,
0x7fd2a1fb, 0x7fe64211, 0x7ff2bd4b, 0x7ffa088f,
0x7ffdcf38, 0x7fff6dab, 0x7fffed00, 0x7fffffc3,
};
tatic ogg_int32_t vwin256[128]={
0x0001f018, 0x00117066, 0x00306e9e, 0x005ee5f1,
0x009ccf26, 0x00ea208b, 0x0146cdea, 0x01b2c87f,
0x022dfedf, 0x02b85ced, 0x0351cbbd, 0x03fa317f,
0x04b17167, 0x05776b8f, 0x064bfcdc, 0x072efedd,
0x082047b4, 0x091fa9f1, 0x0a2cf477, 0x0b47f25d,
0x0c706ad2, 0x0da620ff, 0x0ee8d3ef, 0x10383e75,
0x11941715, 0x12fc0ff6, 0x146fd6c8, 0x15ef14c1,
0x17796e8e, 0x190e844f, 0x1aadf196, 0x1c574d6e,
0x1e0a2a61, 0x1fc61688, 0x218a9b9b, 0x23573f12,
0x252b823c, 0x2706e269, 0x28e8d913, 0x2ad0dc0d,
0x2cbe5dc0, 0x2eb0cd60, 0x30a79732, 0x32a224d4,
0x349fdd8a, 0x36a0268f, 0x38a2636e, 0x3aa5f65d,
0x3caa409e, 0x3eaea2df, 0x40b27da6, 0x42b531b8,
0x44b62085, 0x46b4ac99, 0x48b03a05, 0x4aa82ed5,
0x4c9bf37d, 0x4e8af348, 0x50749cca, 0x52586245,
0x5435ba1b, 0x560c1f31, 0x57db1151, 0x59a21591,
0x5b60b6a3, 0x5d168534, 0x5ec31839, 0x60660d35,
0x61ff0885, 0x638db594, 0x6511c716, 0x668af733,
0x67f907af, 0x695bc206, 0x6ab2f786, 0x6bfe815a,
0x6d3e408f, 0x6e721e15, 0x6f9a0ab4, 0x70b5fef8,
0x71c5fb15, 0x72ca06cc, 0x73c2313c, 0x74ae90b2,
0x758f4274, 0x76646a85, 0x772e335b, 0x77eccd9f,
0x78a06fd6, 0x79495612, 0x79e7c19b, 0x7a7bf893,
0x7b064595, 0x7b86f756, 0x7bfe6043, 0x7c6cd614,
0x7cd2b16d, 0x7d304d70, 0x7d860755, 0x7dd43e05,
0x7e1b51ac, 0x7e5ba354, 0x7e95947d, 0x7ec986ba,
0x7ef7db49, 0x7f20f2b8, 0x7f452c7e, 0x7f64e6a6,
0x7f807d70, 0x7f984afe, 0x7faca6ff, 0x7fbde661,
0x7fcc5b03, 0x7fd85371, 0x7fe21a98, 0x7fe9f790,
0x7ff02d57, 0x7ff4fa9d, 0x7ff8998f, 0x7ffb3fa9,
0x7ffd1d8a, 0x7ffe5ecb, 0x7fff29df, 0x7fff9ff2,
0x7fffdcd1, 0x7ffff6d5, 0x7ffffecf, 0x7ffffffb,
};
tatic ogg_int32_t vwin512[256]={
0x00007c06, 0x00045c32, 0x000c1c62, 0x0017bc4c,
0x00273b7a, 0x003a9955, 0x0051d51c, 0x006cede7,
0x008be2a9, 0x00aeb22a, 0x00d55b0d, 0x00ffdbcc,
0x012e32b6, 0x01605df5, 0x01965b85, 0x01d02939,
0x020dc4ba, 0x024f2b83, 0x02945ae6, 0x02dd5004,
0x032a07d3, 0x037a7f19, 0x03ceb26e, 0x04269e37,
0x04823eab, 0x04e18fcc, 0x05448d6d, 0x05ab3329,
0x06157c68, 0x0683645e, 0x06f4e607, 0x0769fc25,
0x07e2a146, 0x085ecfbc, 0x08de819f, 0x0961b0cc,
0x09e856e2, 0x0a726d46, 0x0affed1d, 0x0b90cf4c,
0x0c250c79, 0x0cbc9d0b, 0x0d577926, 0x0df598aa,
0x0e96f337, 0x0f3b8026, 0x0fe3368f, 0x108e0d42,
0x113bfac9, 0x11ecf56b, 0x12a0f324, 0x1357e9ac,
0x1411ce70, 0x14ce9698, 0x158e3702, 0x1650a444,
0x1715d2a9, 0x17ddb638, 0x18a842aa, 0x19756b72,
0x1a4523b9, 0x1b175e61, 0x1bec0e03, 0x1cc324f0,
0x1d9c9531, 0x1e78508a, 0x1f564876, 0x20366e2d,
0x2118b2a1, 0x21fd0681, 0x22e35a37, 0x23cb9dee,
0x24b5c18d, 0x25a1b4c0, 0x268f66f1, 0x277ec74e,
0x286fc4cb, 0x29624e23, 0x2a5651d7, 0x2b4bbe33,
0x2c428150, 0x2d3a8913, 0x2e33c332, 0x2f2e1d35,
0x30298477, 0x3125e62d, 0x32232f61, 0x33214cfb,
0x34202bc1, 0x351fb85a, 0x361fdf4e, 0x37208d0f,
0x3821adf6, 0x39232e49, 0x3a24fa3b, 0x3b26fdf5,
0x3c292593, 0x3d2b5d29, 0x3e2d90c7, 0x3f2fac7e,
0x40319c5f, 0x41334c81, 0x4234a904, 0x43359e16,
0x443617f3, 0x453602eb, 0x46354b64, 0x4733dde1,
0x4831a6fe, 0x492e937e, 0x4a2a9045, 0x4b258a5f,
0x4c1f6f06, 0x4d182ba2, 0x4e0fadce, 0x4f05e35a,
0x4ffaba52, 0x50ee20fc, 0x51e005e1, 0x52d057ca,
0x53bf05c9, 0x54abff3b, 0x559733c7, 0x56809365,
0x57680e61, 0x584d955d, 0x59311952, 0x5a128b95,
0x5af1dddc, 0x5bcf023a, 0x5ca9eb27, 0x5d828b80,
0x5e58d68d, 0x5f2cbffb, 0x5ffe3be8, 0x60cd3edf,
0x6199bdd9, 0x6263ae44, 0x632b0601, 0x63efbb66,
0x64b1c53e, 0x65711acf, 0x662db3d6, 0x66e7888c,
0x679e91a4, 0x6852c84d, 0x69042634, 0x69b2a581,
0x6a5e40dd, 0x6b06f36b, 0x6bacb8d1, 0x6c4f8d2f,
0x6cef6d26, 0x6d8c55d3, 0x6e2644d3, 0x6ebd383f,
0x6f512eac, 0x6fe2272d, 0x7070214e, 0x70fb1d16,
0x71831b05, 0x72081c15, 0x728a21b4, 0x73092dc7,
0x738542a5, 0x73fe631a, 0x74749260, 0x74e7d420,
0x75582c71, 0x75c59fd4, 0x76303332, 0x7697ebdc,
0x76fccf84, 0x775ee442, 0x77be3089, 0x781abb2d,
0x78748b58, 0x78cba88d, 0x79201aa6, 0x7971e9cc,
0x79c11e78, 0x7a0dc16f, 0x7a57dbc1, 0x7a9f76c0,
0x7ae49c06, 0x7b27556a, 0x7b67ad01, 0x7ba5ad1a,
0x7be16039, 0x7c1ad117, 0x7c520a9d, 0x7c8717e0,
0x7cba0420, 0x7ceadac2, 0x7d19a74e, 0x7d46756d,
0x7d7150e4, 0x7d9a4591, 0x7dc15f68, 0x7de6aa70,
0x7e0a32bf, 0x7e2c0478, 0x7e4c2bc6, 0x7e6ab4da,
0x7e87abe8, 0x7ea31d23, 0x7ebd14bd, 0x7ed59edc,
0x7eecc7a2, 0x7f029b20, 0x7f172559, 0x7f2a723e,
0x7f3c8da9, 0x7f4d835c, 0x7f5d5eff, 0x7f6c2c1a,
0x7f79f616, 0x7f86c839, 0x7f92ada1, 0x7f9db145,
0x7fa7ddf2, 0x7fb13e45, 0x7fb9dcaf, 0x7fc1c36b,
0x7fc8fc82, 0x7fcf91c6, 0x7fd58cd1, 0x7fdaf701,
0x7fdfd978, 0x7fe43d1b, 0x7fe82a8a, 0x7febaa28,
0x7feec411, 0x7ff1801b, 0x7ff3e5d5, 0x7ff5fc85,
0x7ff7cb28, 0x7ff9586e, 0x7ffaaab9, 0x7ffbc81d,
0x7ffcb65f, 0x7ffd7af2, 0x7ffe1af9, 0x7ffe9b41,
0x7fff0046, 0x7fff4e2e, 0x7fff88c8, 0x7fffb38f,
0x7fffd1a5, 0x7fffe5d6, 0x7ffff295, 0x7ffff9fc,
0x7ffffdcc, 0x7fffff6c, 0x7fffffec, 0x7fffffff,
};
tatic ogg_int32_t vwin1024[512]={
0x00001f02, 0x0001170e, 0x00030724, 0x0005ef40,
0x0009cf59, 0x000ea767, 0x0014775e, 0x001b3f2e,
0x0022fec8, 0x002bb618, 0x00356508, 0x00400b81,
0x004ba968, 0x00583ea0, 0x0065cb0a, 0x00744e84,
0x0083c8ea, 0x00943a14, 0x00a5a1da, 0x00b80010,
0x00cb5488, 0x00df9f10, 0x00f4df76, 0x010b1584,
0x01224101, 0x013a61b2, 0x01537759, 0x016d81b6,
0x01888087, 0x01a47385, 0x01c15a69, 0x01df34e6,
0x01fe02b1, 0x021dc377, 0x023e76e7, 0x02601ca9,
0x0282b466, 0x02a63dc1, 0x02cab85c, 0x02f023d6,
0x03167fcb, 0x033dcbd3, 0x03660783, 0x038f3270,
0x03b94c29, 0x03e4543a, 0x04104a2e, 0x043d2d8b,
0x046afdd5, 0x0499ba8c, 0x04c9632d, 0x04f9f733,
0x052b7615, 0x055ddf46, 0x05913237, 0x05c56e53,
0x05fa9306, 0x06309fb6, 0x066793c5, 0x069f6e93,
0x06d82f7c, 0x0711d5d9, 0x074c60fe, 0x0787d03d,
0x07c422e4, 0x0801583e, 0x083f6f91, 0x087e681f,
0x08be4129, 0x08fef9ea, 0x0940919a, 0x0983076d,
0x09c65a92, 0x0a0a8a38, 0x0a4f9585, 0x0a957b9f,
0x0adc3ba7, 0x0b23d4b9, 0x0b6c45ed, 0x0bb58e5a,
0x0bffad0f, 0x0c4aa11a, 0x0c966982, 0x0ce3054d,
0x0d30737b, 0x0d7eb307, 0x0dcdc2eb, 0x0e1da21a,
0x0e6e4f82, 0x0ebfca11, 0x0f1210ad, 0x0f652238,
0x0fb8fd91, 0x100da192, 0x10630d11, 0x10b93ee0,
0x111035ca, 0x1167f09a, 0x11c06e13, 0x1219acf5,
0x1273abfb, 0x12ce69db, 0x1329e549, 0x13861cf2,
0x13e30f80, 0x1440bb97, 0x149f1fd8, 0x14fe3add,
0x155e0b40, 0x15be8f92, 0x161fc662, 0x1681ae38,
0x16e4459b, 0x17478b0b, 0x17ab7d03, 0x181019fb,
0x18756066, 0x18db4eb3, 0x1941e34a, 0x19a91c91,
0x1a10f8ea, 0x1a7976af, 0x1ae29439, 0x1b4c4fda,
0x1bb6a7e2, 0x1c219a9a, 0x1c8d2648, 0x1cf9492e,
0x1d660187, 0x1dd34d8d, 0x1e412b74, 0x1eaf996a,
0x1f1e959b, 0x1f8e1e2e, 0x1ffe3146, 0x206ecd01,
0x20dfef78, 0x215196c2, 0x21c3c0f0, 0x22366c0f,
0x22a9962a, 0x231d3d44, 0x23915f60, 0x2405fa7a,
0x247b0c8b, 0x24f09389, 0x25668d65, 0x25dcf80c,
0x2653d167, 0x26cb175d, 0x2742c7d0, 0x27bae09e,
0x28335fa2, 0x28ac42b3, 0x292587a5, 0x299f2c48,
0x2a192e68, 0x2a938bd1, 0x2b0e4246, 0x2b894f8d,
0x2c04b163, 0x2c806587, 0x2cfc69b2, 0x2d78bb9a,
0x2df558f3, 0x2e723f6f, 0x2eef6cbb, 0x2f6cde83,
0x2fea926f, 0x30688627, 0x30e6b74d, 0x31652384,
0x31e3c86b, 0x3262a39e, 0x32e1b2b8, 0x3360f352,
0x33e06302, 0x345fff5e, 0x34dfc5f8, 0x355fb462,
0x35dfc82a, 0x365ffee0, 0x36e0560f, 0x3760cb42,
0x37e15c05, 0x386205de, 0x38e2c657, 0x39639af5,
0x39e4813d, 0x3a6576b6, 0x3ae678e2, 0x3b678547,
0x3be89965, 0x3c69b2c0, 0x3ceacedb, 0x3d6beb37,
0x3ded0556, 0x3e6e1aba, 0x3eef28e5, 0x3f702d5a,
0x3ff1259a, 0x40720f28, 0x40f2e788, 0x4173ac3f,
0x41f45ad0, 0x4274f0c1, 0x42f56b99, 0x4375c8df,
0x43f6061d, 0x447620db, 0x44f616a5, 0x4575e508,
0x45f58993, 0x467501d5, 0x46f44b61, 0x477363ca,
0x47f248a6, 0x4870f78d, 0x48ef6e19, 0x496da9e7,
0x49eba896, 0x4a6967c8, 0x4ae6e520, 0x4b641e46,
0x4be110e4, 0x4c5dbaa7, 0x4cda193e, 0x4d562a5e,
0x4dd1ebbd, 0x4e4d5b14, 0x4ec87622, 0x4f433aa8,
0x4fbda66b, 0x5037b734, 0x50b16acf, 0x512abf0d,
0x51a3b1c4, 0x521c40cd, 0x52946a05, 0x530c2b4f,
0x53838292, 0x53fa6db8, 0x5470eab2, 0x54e6f775,
0x555c91fb, 0x55d1b843, 0x56466851, 0x56baa02e,
0x572e5dea, 0x57a19f98, 0x58146352, 0x5886a737,
0x58f8696c, 0x5969a81c, 0x59da6177, 0x5a4a93b4,
0x5aba3d0f, 0x5b295bca, 0x5b97ee2f, 0x5c05f28d,
0x5c736738, 0x5ce04a8c, 0x5d4c9aec, 0x5db856c0,
0x5e237c77, 0x5e8e0a88, 0x5ef7ff6f, 0x5f6159af,
0x5fca17d4, 0x6032386d, 0x6099ba15, 0x61009b69,
0x6166db10, 0x61cc77b9, 0x62317017, 0x6295c2e7,
0x62f96eec, 0x635c72f1, 0x63becdc8, 0x64207e4a,
0x64818359, 0x64e1dbdd, 0x654186c7, 0x65a0830e,
0x65fecfb0, 0x665c6bb7, 0x66b9562f, 0x67158e2f,
0x677112d7, 0x67cbe34a, 0x6825feb8, 0x687f6456,
0x68d81360, 0x69300b1d, 0x69874ad9, 0x69ddd1e9,
0x6a339faa, 0x6a88b381, 0x6add0cda, 0x6b30ab29,
0x6b838deb, 0x6bd5b4a5, 0x6c271ee1, 0x6c77cc35,
0x6cc7bc3c, 0x6d16ee9a, 0x6d6562fa, 0x6db31911,
0x6e001098, 0x6e4c4954, 0x6e97c310, 0x6ee27d9e,
0x6f2c78d8, 0x6f75b4a1, 0x6fbe30e3, 0x7005ed90,
0x704ceaa0, 0x70932815, 0x70d8a5f7, 0x711d6456,
0x7161634a, 0x71a4a2f2, 0x71e72374, 0x7228e4ff,
0x7269e7c7, 0x72aa2c09, 0x72e9b209, 0x73287a11,
0x73668476, 0x73a3d18e, 0x73e061bb, 0x741c3565,
0x74574cf9, 0x7491a8ed, 0x74cb49bd, 0x75042feb,
0x753c5c02, 0x7573ce91, 0x75aa882f, 0x75e08979,
0x7615d312, 0x764a65a6, 0x767e41e4, 0x76b16883,
0x76e3da3f, 0x771597db, 0x7746a220, 0x7776f9dc,
0x77a69fe5, 0x77d59514, 0x7803da48, 0x78317069,
0x785e5861, 0x788a931f, 0x78b6219b, 0x78e104ce,
0x790b3dba, 0x7934cd63, 0x795db4d4, 0x7985f51c,
0x79ad8f4f, 0x79d48485, 0x79fad5dd, 0x7a208477,
0x7a45917a, 0x7a69fe11, 0x7a8dcb6b, 0x7ab0faba,
0x7ad38d35, 0x7af58419, 0x7b16e0a2, 0x7b37a415,
0x7b57cfb7, 0x7b7764d3, 0x7b9664b5, 0x7bb4d0af,
0x7bd2aa13, 0x7beff23a, 0x7c0caa7e, 0x7c28d43b,
0x7c4470d2, 0x7c5f81a4, 0x7c7a0819, 0x7c940597,
0x7cad7b8a, 0x7cc66b5d, 0x7cded67f, 0x7cf6be63,
0x7d0e247a, 0x7d250a3b, 0x7d3b711b, 0x7d515a94,
0x7d66c821, 0x7d7bbb3b, 0x7d903562, 0x7da43813,
0x7db7c4cf, 0x7dcadd15, 0x7ddd8269, 0x7defb64c,
0x7e017a43, 0x7e12cfd2, 0x7e23b87e, 0x7e3435cc,
0x7e444942, 0x7e53f466, 0x7e6338bf, 0x7e7217d4,
0x7e80932a, 0x7e8eac48, 0x7e9c64b6, 0x7ea9bdf7,
0x7eb6b993, 0x7ec3590f, 0x7ecf9dee, 0x7edb89b5,
0x7ee71de8, 0x7ef25c08, 0x7efd4597, 0x7f07dc15,
0x7f122102, 0x7f1c15db, 0x7f25bc1e, 0x7f2f1546,
0x7f3822cc, 0x7f40e62a, 0x7f4960d5, 0x7f519442,
0x7f5981e6, 0x7f612b30, 0x7f689190, 0x7f6fb673,
0x7f769b44, 0x7f7d416b, 0x7f83aa50, 0x7f89d756,
0x7f8fc9de, 0x7f958347, 0x7f9b04ee, 0x7fa0502d,
0x7fa56658, 0x7faa48c6, 0x7faef8c6, 0x7fb377a6,
0x7fb7c6b2, 0x7fbbe731, 0x7fbfda66, 0x7fc3a195,
0x7fc73df9, 0x7fcab0cd, 0x7fcdfb49, 0x7fd11e9f,
0x7fd41bff, 0x7fd6f495, 0x7fd9a988, 0x7fdc3bfe,
0x7fdead16, 0x7fe0fded, 0x7fe32f9c, 0x7fe54336,
0x7fe739cd, 0x7fe9146b, 0x7fead41a, 0x7fec79dc,
0x7fee06b1, 0x7fef7b93, 0x7ff0d97a, 0x7ff22157,
0x7ff35416, 0x7ff472a2, 0x7ff57ddf, 0x7ff676ab,
0x7ff75de2, 0x7ff83459, 0x7ff8fae3, 0x7ff9b24a,
0x7ffa5b57, 0x7ffaf6cc, 0x7ffb8567, 0x7ffc07e1,
0x7ffc7eec, 0x7ffceb37, 0x7ffd4d6c, 0x7ffda630,
0x7ffdf620, 0x7ffe3dd7, 0x7ffe7de9, 0x7ffeb6e6,
0x7ffee958, 0x7fff15c3, 0x7fff3ca8, 0x7fff5e7f,
0x7fff7bbf, 0x7fff94d5, 0x7fffaa2c, 0x7fffbc28,
0x7fffcb28, 0x7fffd785, 0x7fffe194, 0x7fffe9a2,
0x7fffeff9, 0x7ffff4dc, 0x7ffff888, 0x7ffffb36,
0x7ffffd19, 0x7ffffe5c, 0x7fffff28, 0x7fffff9f,
0x7fffffdc, 0x7ffffff6, 0x7ffffffe, 0x7fffffff,
};
tatic ogg_int32_t vwin2048[1024]={
0x000007c0, 0x000045c4, 0x0000c1ca, 0x00017bd3,
0x000273de, 0x0003a9eb, 0x00051df9, 0x0006d007,
0x0008c014, 0x000aee1e, 0x000d5a25, 0x00100428,
0x0012ec23, 0x00161216, 0x001975fe, 0x001d17da,
0x0020f7a8, 0x00251564, 0x0029710c, 0x002e0a9e,
0x0032e217, 0x0037f773, 0x003d4ab0, 0x0042dbca,
0x0048aabe, 0x004eb788, 0x00550224, 0x005b8a8f,
0x006250c5, 0x006954c1, 0x0070967e, 0x007815f9,
0x007fd32c, 0x0087ce13, 0x009006a9, 0x00987ce9,
0x00a130cc, 0x00aa224f, 0x00b3516b, 0x00bcbe1a,
0x00c66856, 0x00d0501a, 0x00da755f, 0x00e4d81f,
0x00ef7853, 0x00fa55f4, 0x010570fc, 0x0110c963,
0x011c5f22, 0x01283232, 0x0134428c, 0x01409027,
0x014d1afb, 0x0159e302, 0x0166e831, 0x01742a82,
0x0181a9ec, 0x018f6665, 0x019d5fe5, 0x01ab9663,
0x01ba09d6, 0x01c8ba34, 0x01d7a775, 0x01e6d18d,
0x01f63873, 0x0205dc1e, 0x0215bc82, 0x0225d997,
0x02363350, 0x0246c9a3, 0x02579c86, 0x0268abed,
0x0279f7cc, 0x028b801a, 0x029d44c9, 0x02af45ce,
0x02c1831d, 0x02d3fcaa, 0x02e6b269, 0x02f9a44c,
0x030cd248, 0x03203c4f, 0x0333e255, 0x0347c44b,
0x035be225, 0x03703bd5, 0x0384d14d, 0x0399a280,
0x03aeaf5e, 0x03c3f7d9, 0x03d97be4, 0x03ef3b6e,
0x0405366a, 0x041b6cc8, 0x0431de78, 0x04488b6c,
0x045f7393, 0x047696dd, 0x048df53b, 0x04a58e9b,
0x04bd62ee, 0x04d57223, 0x04edbc28, 0x050640ed,
0x051f0060, 0x0537fa70, 0x05512f0a, 0x056a9e1e,
0x05844798, 0x059e2b67, 0x05b84978, 0x05d2a1b8,
0x05ed3414, 0x06080079, 0x062306d3, 0x063e470f,
0x0659c119, 0x067574dd, 0x06916247, 0x06ad8941,
0x06c9e9b8, 0x06e68397, 0x070356c8, 0x07206336,
0x073da8cb, 0x075b2772, 0x0778df15, 0x0796cf9c,
0x07b4f8f3, 0x07d35b01, 0x07f1f5b1, 0x0810c8eb,
0x082fd497, 0x084f189e, 0x086e94e8, 0x088e495e,
0x08ae35e6, 0x08ce5a68, 0x08eeb6cc, 0x090f4af8,
0x093016d3, 0x09511a43, 0x09725530, 0x0993c77f,
0x09b57115, 0x09d751d8, 0x09f969ae, 0x0a1bb87c,
0x0a3e3e26, 0x0a60fa91, 0x0a83eda2, 0x0aa7173c,
0x0aca7743, 0x0aee0d9b, 0x0b11da28, 0x0b35dccc,
0x0b5a156a, 0x0b7e83e5, 0x0ba3281f, 0x0bc801fa,
0x0bed1158, 0x0c12561c, 0x0c37d025, 0x0c5d7f55,
0x0c83638d, 0x0ca97cae, 0x0ccfca97, 0x0cf64d29,
0x0d1d0444, 0x0d43efc7, 0x0d6b0f92, 0x0d926383,
0x0db9eb79, 0x0de1a752, 0x0e0996ee, 0x0e31ba29,
0x0e5a10e2, 0x0e829af5, 0x0eab5841, 0x0ed448a2,
0x0efd6bf4, 0x0f26c214, 0x0f504ade, 0x0f7a062e,
0x0fa3f3df, 0x0fce13cd, 0x0ff865d2, 0x1022e9ca,
0x104d9f8e, 0x107886f9, 0x10a39fe5, 0x10ceea2c,
0x10fa65a6, 0x1126122d, 0x1151ef9a, 0x117dfdc5,
0x11aa3c86, 0x11d6abb6, 0x12034b2c, 0x12301ac0,
0x125d1a48, 0x128a499b, 0x12b7a891, 0x12e536ff,
0x1312f4bb, 0x1340e19b, 0x136efd75, 0x139d481e,
0x13cbc16a, 0x13fa692f, 0x14293f40, 0x14584371,
0x14877597, 0x14b6d585, 0x14e6630d, 0x15161e04,
0x1546063b, 0x15761b84, 0x15a65db3, 0x15d6cc99,
0x16076806, 0x16382fcd, 0x166923be, 0x169a43ab,
0x16cb8f62, 0x16fd06b5, 0x172ea973, 0x1760776b,
0x1792706d, 0x17c49448, 0x17f6e2cb, 0x18295bc3,
0x185bfeff, 0x188ecc4c, 0x18c1c379, 0x18f4e451,
0x19282ea4, 0x195ba23c, 0x198f3ee6, 0x19c3046e,
0x19f6f2a1, 0x1a2b0949, 0x1a5f4833, 0x1a93af28,
0x1ac83df3, 0x1afcf460, 0x1b31d237, 0x1b66d744,
0x1b9c034e, 0x1bd15621, 0x1c06cf84, 0x1c3c6f40,
0x1c72351e, 0x1ca820e6, 0x1cde3260, 0x1d146953,
0x1d4ac587, 0x1d8146c3, 0x1db7eccd, 0x1deeb76c,
0x1e25a666, 0x1e5cb982, 0x1e93f084, 0x1ecb4b33,
0x1f02c953, 0x1f3a6aa9, 0x1f722efa, 0x1faa160b,
0x1fe21f9e, 0x201a4b78, 0x2052995d, 0x208b0910,
0x20c39a53, 0x20fc4cea, 0x21352097, 0x216e151b,
0x21a72a3a, 0x21e05fb5, 0x2219b54c, 0x22532ac2,
0x228cbfd7, 0x22c6744c, 0x230047e2, 0x233a3a57,
0x23744b6d, 0x23ae7ae3, 0x23e8c878, 0x242333ec,
0x245dbcfc, 0x24986369, 0x24d326f0, 0x250e0750,
0x25490446, 0x25841d90, 0x25bf52ec, 0x25faa416,
0x263610cd, 0x267198cb, 0x26ad3bcf, 0x26e8f994,
0x2724d1d6, 0x2760c450, 0x279cd0c0, 0x27d8f6e0,
0x2815366a, 0x28518f1b, 0x288e00ac, 0x28ca8ad8,
0x29072d5a, 0x2943e7eb, 0x2980ba45, 0x29bda422,
0x29faa53b, 0x2a37bd4a, 0x2a74ec07, 0x2ab2312b,
0x2aef8c6f, 0x2b2cfd8b, 0x2b6a8437, 0x2ba8202b,
0x2be5d120, 0x2c2396cc, 0x2c6170e7, 0x2c9f5f28,
0x2cdd6147, 0x2d1b76f9, 0x2d599ff6, 0x2d97dbf5,
0x2dd62aab, 0x2e148bce, 0x2e52ff15, 0x2e918436,
0x2ed01ae5, 0x2f0ec2d9, 0x2f4d7bc6, 0x2f8c4562,
0x2fcb1f62, 0x300a097a, 0x3049035f, 0x30880cc6,
0x30c72563, 0x31064ce9, 0x3145830e, 0x3184c785,
0x31c41a02, 0x32037a38, 0x3242e7db, 0x3282629f,
0x32c1ea35, 0x33017e52, 0x33411ea9, 0x3380caec,
0x33c082ce, 0x34004601, 0x34401439, 0x347fed27,
0x34bfd07e, 0x34ffbdef, 0x353fb52e, 0x357fb5eb,
0x35bfbfd9, 0x35ffd2aa, 0x363fee0e, 0x368011b8,
0x36c03d5a, 0x370070a4, 0x3740ab47, 0x3780ecf6,
0x37c13561, 0x3801843a, 0x3841d930, 0x388233f6,
0x38c2943c, 0x3902f9b3, 0x3943640c, 0x3983d2f7,
0x39c44626, 0x3a04bd48, 0x3a45380e, 0x3a85b629,
0x3ac63749, 0x3b06bb1f, 0x3b47415b, 0x3b87c9ae,
0x3bc853c7, 0x3c08df57, 0x3c496c0f, 0x3c89f99e,
0x3cca87b5, 0x3d0b1605, 0x3d4ba43d, 0x3d8c320d,
0x3dccbf27, 0x3e0d4b3a, 0x3e4dd5f6, 0x3e8e5f0b,
0x3ecee62b, 0x3f0f6b04, 0x3f4fed48, 0x3f906ca7,
0x3fd0e8d1, 0x40116177, 0x4051d648, 0x409246f5,
0x40d2b32f, 0x41131aa7, 0x41537d0c, 0x4193da0f,
0x41d43162, 0x421482b4, 0x4254cdb6, 0x4295121a,
0x42d54f90, 0x431585c9, 0x4355b476, 0x4395db48,
0x43d5f9f1, 0x44161021, 0x44561d89, 0x449621dd,
0x44d61ccc, 0x45160e08, 0x4555f543, 0x4595d230,
0x45d5a47f, 0x46156be3, 0x4655280e, 0x4694d8b2,
0x46d47d81, 0x4714162f, 0x4753a26d, 0x479321ee,
0x47d29466, 0x4811f987, 0x48515104, 0x48909a90,
0x48cfd5e0, 0x490f02a6, 0x494e2097, 0x498d2f66,
0x49cc2ec7, 0x4a0b1e6e, 0x4a49fe10, 0x4a88cd62,
0x4ac78c17, 0x4b0639e6, 0x4b44d682, 0x4b8361a2,
0x4bc1dafa, 0x4c004240, 0x4c3e972b, 0x4c7cd970,
0x4cbb08c5, 0x4cf924e0, 0x4d372d79, 0x4d752247,
0x4db302ff, 0x4df0cf5a, 0x4e2e870f, 0x4e6c29d5,
0x4ea9b765, 0x4ee72f77, 0x4f2491c3, 0x4f61de02,
0x4f9f13ec, 0x4fdc333b, 0x50193ba8, 0x50562ced,
0x509306c3, 0x50cfc8e5, 0x510c730d, 0x514904f5,
0x51857e59, 0x51c1def4, 0x51fe2681, 0x523a54bc,
0x52766960, 0x52b2642b, 0x52ee44d9, 0x532a0b25,
0x5365b6cf, 0x53a14793, 0x53dcbd2e, 0x5418175f,
0x545355e4, 0x548e787c, 0x54c97ee6, 0x550468e0,
0x553f362b, 0x5579e687, 0x55b479b3, 0x55eeef6f,
0x5629477e, 0x566381a0, 0x569d9d97, 0x56d79b24,
0x57117a09, 0x574b3a0a, 0x5784dae8, 0x57be5c68,
0x57f7be4c, 0x5831005a, 0x586a2254, 0x58a323ff,
0x58dc0521, 0x5914c57f, 0x594d64de, 0x5985e304,
0x59be3fb9, 0x59f67ac3, 0x5a2e93e8, 0x5a668af1,
0x5a9e5fa5, 0x5ad611ce, 0x5b0da132, 0x5b450d9d,
0x5b7c56d6, 0x5bb37ca8, 0x5bea7edd, 0x5c215d41,
0x5c58179d, 0x5c8eadbd, 0x5cc51f6e, 0x5cfb6c7b,
0x5d3194b1, 0x5d6797de, 0x5d9d75ce, 0x5dd32e50,
0x5e08c132, 0x5e3e2e42, 0x5e737551, 0x5ea8962d,
0x5edd90a6, 0x5f12648d, 0x5f4711b3, 0x5f7b97e9,
0x5faff701, 0x5fe42ecd, 0x60183f20, 0x604c27cc,
0x607fe8a5, 0x60b3817f, 0x60e6f22e, 0x611a3a88,
0x614d5a61, 0x6180518f, 0x61b31fe9, 0x61e5c544,
0x62184178, 0x624a945c, 0x627cbdc9, 0x62aebd97,
0x62e0939e, 0x63123fb9, 0x6343c1c0, 0x6375198e,
0x63a646fe, 0x63d749ec, 0x64082231, 0x6438cfac,
0x64695238, 0x6499a9b2, 0x64c9d5f8, 0x64f9d6e9,
0x6529ac62, 0x65595642, 0x6588d469, 0x65b826b7,
0x65e74d0d, 0x6616474a, 0x66451551, 0x6673b703,
0x66a22c43, 0x66d074f3, 0x66fe90f7, 0x672c8032,
0x675a4289, 0x6787d7e1, 0x67b5401e, 0x67e27b26,
0x680f88e0, 0x683c6933, 0x68691c05, 0x6895a13e,
0x68c1f8c6, 0x68ee2286, 0x691a1e67, 0x6945ec53,
0x69718c34, 0x699cfdf4, 0x69c8417e, 0x69f356bf,
0x6a1e3da2, 0x6a48f614, 0x6a738002, 0x6a9ddb59,
0x6ac80807, 0x6af205fc, 0x6b1bd526, 0x6b457574,
0x6b6ee6d7, 0x6b98293f, 0x6bc13c9e, 0x6bea20e4,
0x6c12d604, 0x6c3b5bf0, 0x6c63b29c, 0x6c8bd9fa,
0x6cb3d1ff, 0x6cdb9a9f, 0x6d0333cf, 0x6d2a9d85,
0x6d51d7b6, 0x6d78e25a, 0x6d9fbd66, 0x6dc668d2,
0x6dece497, 0x6e1330ad, 0x6e394d0c, 0x6e5f39ad,
0x6e84f68c, 0x6eaa83a1, 0x6ecfe0e9, 0x6ef50e5d,
0x6f1a0bfb, 0x6f3ed9be, 0x6f6377a3, 0x6f87e5a7,
0x6fac23c9, 0x6fd03205, 0x6ff4105b, 0x7017becb,
0x703b3d53, 0x705e8bf4, 0x7081aaae, 0x70a49983,
0x70c75874, 0x70e9e782, 0x710c46b2, 0x712e7604,
0x7150757e, 0x71724522, 0x7193e4f5, 0x71b554fd,
0x71d6953d, 0x71f7a5bc, 0x72188681, 0x72393791,
0x7259b8f4, 0x727a0ab1, 0x729a2cd1, 0x72ba1f5c,
0x72d9e25b, 0x72f975d7, 0x7318d9da, 0x73380e6f,
0x7357139f, 0x7375e977, 0x73949002, 0x73b3074b,
0x73d14f61, 0x73ef684e, 0x740d5221, 0x742b0ce8,
0x744898b0, 0x7465f588, 0x74832381, 0x74a022a8,
0x74bcf30d, 0x74d994c2, 0x74f607d8, 0x75124c5e,
0x752e6267, 0x754a4a05, 0x7566034a, 0x75818e49,
0x759ceb15, 0x75b819c3, 0x75d31a65, 0x75eded11,
0x760891db, 0x762308d9, 0x763d5220, 0x76576dc7,
0x76715be3, 0x768b1c8b, 0x76a4afd8, 0x76be15df,
0x76d74eba, 0x76f05a81, 0x7709394c, 0x7721eb34,
0x773a7053, 0x7752c8c3, 0x776af49e, 0x7782f3ff,
0x779ac700, 0x77b26dbc, 0x77c9e850, 0x77e136d7,
0x77f8596e, 0x780f5031, 0x78261b3e, 0x783cbab2,
0x78532ea9, 0x78697744, 0x787f949f, 0x789586db,
0x78ab4e14, 0x78c0ea6c, 0x78d65c02, 0x78eba2f6,
0x7900bf67, 0x7915b178, 0x792a7949, 0x793f16fa,
0x79538aae, 0x7967d487, 0x797bf4a7, 0x798feb30,
0x79a3b845, 0x79b75c09, 0x79cad6a0, 0x79de282d,
0x79f150d4, 0x7a0450ba, 0x7a172802, 0x7a29d6d3,
0x7a3c5d4f, 0x7a4ebb9f, 0x7a60f1e5, 0x7a73004a,
0x7a84e6f1, 0x7a96a603, 0x7aa83da6, 0x7ab9ae00,
0x7acaf739, 0x7adc1978, 0x7aed14e5, 0x7afde9a7,
0x7b0e97e7, 0x7b1f1fcc, 0x7b2f8181, 0x7b3fbd2c,
0x7b4fd2f8, 0x7b5fc30e, 0x7b6f8d97, 0x7b7f32bc,
0x7b8eb2a8, 0x7b9e0d84, 0x7bad437c, 0x7bbc54b8,
0x7bcb4165, 0x7bda09ad, 0x7be8adbb, 0x7bf72dbb,
0x7c0589d7, 0x7c13c23c, 0x7c21d715, 0x7c2fc88e,
0x7c3d96d4, 0x7c4b4213, 0x7c58ca77, 0x7c66302c,
0x7c737361, 0x7c809442, 0x7c8d92fb, 0x7c9a6fbb,
0x7ca72aae, 0x7cb3c403, 0x7cc03be7, 0x7ccc9287,
0x7cd8c813, 0x7ce4dcb8, 0x7cf0d0a4, 0x7cfca405,
0x7d08570b, 0x7d13e9e4, 0x7d1f5cbe, 0x7d2aafc9,
0x7d35e334, 0x7d40f72d, 0x7d4bebe3, 0x7d56c187,
0x7d617847, 0x7d6c1053, 0x7d7689da, 0x7d80e50d,
0x7d8b221a, 0x7d954132, 0x7d9f4285, 0x7da92642,
0x7db2ec9a, 0x7dbc95bc, 0x7dc621d9, 0x7dcf9122,
0x7dd8e3c5, 0x7de219f5, 0x7deb33e1, 0x7df431b9,
0x7dfd13ae, 0x7e05d9f1, 0x7e0e84b3, 0x7e171423,
0x7e1f8873, 0x7e27e1d3, 0x7e302074, 0x7e384486,
0x7e404e3b, 0x7e483dc3, 0x7e50134f, 0x7e57cf10,
0x7e5f7137, 0x7e66f9f3, 0x7e6e6978, 0x7e75bff4,
0x7e7cfd99, 0x7e842297, 0x7e8b2f21, 0x7e922365,
0x7e98ff96, 0x7e9fc3e3, 0x7ea6707e, 0x7ead0597,
0x7eb3835f, 0x7eb9ea06, 0x7ec039be, 0x7ec672b6,
0x7ecc9520, 0x7ed2a12b, 0x7ed89709, 0x7ede76e9,
0x7ee440fc, 0x7ee9f572, 0x7eef947c, 0x7ef51e4a,
0x7efa930c, 0x7efff2f1, 0x7f053e2a, 0x7f0a74e7,
0x7f0f9757, 0x7f14a5ab, 0x7f19a012, 0x7f1e86bb,
0x7f2359d7, 0x7f281994, 0x7f2cc622, 0x7f315fb0,
0x7f35e66d, 0x7f3a5a89, 0x7f3ebc32, 0x7f430b97,
0x7f4748e6, 0x7f4b744f, 0x7f4f8e00, 0x7f539628,
0x7f578cf4, 0x7f5b7292, 0x7f5f4731, 0x7f630aff,
0x7f66be2a, 0x7f6a60de, 0x7f6df34a, 0x7f71759a,
0x7f74e7fd, 0x7f784a9f, 0x7f7b9dae, 0x7f7ee155,
0x7f8215c2, 0x7f853b21, 0x7f88519e, 0x7f8b5966,
0x7f8e52a5, 0x7f913d86, 0x7f941a35, 0x7f96e8de,
0x7f99a9ac, 0x7f9c5cca, 0x7f9f0264, 0x7fa19aa4,
0x7fa425b4, 0x7fa6a3c0, 0x7fa914f2, 0x7fab7973,
0x7fadd16e, 0x7fb01d0c, 0x7fb25c77, 0x7fb48fd8,
0x7fb6b759, 0x7fb8d322, 0x7fbae35c, 0x7fbce830,
0x7fbee1c6, 0x7fc0d046, 0x7fc2b3d8, 0x7fc48ca4,
0x7fc65ad2, 0x7fc81e87, 0x7fc9d7ed, 0x7fcb8729,
0x7fcd2c62, 0x7fcec7be, 0x7fd05965, 0x7fd1e17b,
0x7fd36026, 0x7fd4d58c, 0x7fd641d2, 0x7fd7a51d,
0x7fd8ff93, 0x7fda5156, 0x7fdb9a8d, 0x7fdcdb5a,
0x7fde13e1, 0x7fdf4447, 0x7fe06cae, 0x7fe18d3a,
0x7fe2a60d, 0x7fe3b74a, 0x7fe4c113, 0x7fe5c38a,
0x7fe6bed1, 0x7fe7b309, 0x7fe8a054, 0x7fe986d3,
0x7fea66a6, 0x7feb3fef, 0x7fec12cc, 0x7fecdf5e,
0x7feda5c4, 0x7fee661f, 0x7fef208c, 0x7fefd52b,
0x7ff0841b, 0x7ff12d79, 0x7ff1d163, 0x7ff26ff8,
0x7ff30954, 0x7ff39d95, 0x7ff42cd8, 0x7ff4b738,
0x7ff53cd3, 0x7ff5bdc4, 0x7ff63a27, 0x7ff6b216,
0x7ff725ae, 0x7ff79509, 0x7ff80042, 0x7ff86772,
0x7ff8cab3, 0x7ff92a20, 0x7ff985d0, 0x7ff9ddde,
0x7ffa3261, 0x7ffa8373, 0x7ffad12b, 0x7ffb1ba0,
0x7ffb62eb, 0x7ffba722, 0x7ffbe85b, 0x7ffc26af,
0x7ffc6232, 0x7ffc9afa, 0x7ffcd11d, 0x7ffd04b0,
0x7ffd35c8, 0x7ffd647a, 0x7ffd90d9, 0x7ffdbaf9,
0x7ffde2ef, 0x7ffe08cd, 0x7ffe2ca6, 0x7ffe4e8d,
0x7ffe6e94, 0x7ffe8ccd, 0x7ffea949, 0x7ffec41a,
0x7ffedd51, 0x7ffef4fe, 0x7fff0b32, 0x7fff1ffc,
0x7fff336d, 0x7fff4592, 0x7fff567c, 0x7fff6639,
0x7fff74d7, 0x7fff8264, 0x7fff8eed, 0x7fff9a80,
0x7fffa52a, 0x7fffaef7, 0x7fffb7f4, 0x7fffc02c,
0x7fffc7aa, 0x7fffce7b, 0x7fffd4a8, 0x7fffda3d,
0x7fffdf43, 0x7fffe3c5, 0x7fffe7cb, 0x7fffeb5f,
0x7fffee89, 0x7ffff152, 0x7ffff3c3, 0x7ffff5e2,
0x7ffff7b7, 0x7ffff94a, 0x7ffffaa0, 0x7ffffbc0,
0x7ffffcb1, 0x7ffffd77, 0x7ffffe18, 0x7ffffe99,
0x7ffffefe, 0x7fffff4d, 0x7fffff88, 0x7fffffb2,
0x7fffffd1, 0x7fffffe5, 0x7ffffff2, 0x7ffffff9,
0x7ffffffd, 0x7ffffffe, 0x7fffffff, 0x7fffffff,
};
tatic ogg_int32_t vwin4096[2048]={
0x000001f0, 0x00001171, 0x00003072, 0x00005ef5,
0x00009cf8, 0x0000ea7c, 0x00014780, 0x0001b405,
0x0002300b, 0x0002bb91, 0x00035698, 0x0004011e,
0x0004bb25, 0x000584ac, 0x00065db3, 0x0007463a,
0x00083e41, 0x000945c7, 0x000a5ccc, 0x000b8350,
0x000cb954, 0x000dfed7, 0x000f53d8, 0x0010b857,
0x00122c55, 0x0013afd1, 0x001542ca, 0x0016e541,
0x00189735, 0x001a58a7, 0x001c2995, 0x001e09ff,
0x001ff9e6, 0x0021f948, 0x00240826, 0x00262680,
0x00285454, 0x002a91a3, 0x002cde6c, 0x002f3aaf,
0x0031a66b, 0x003421a0, 0x0036ac4f, 0x00394675,
0x003bf014, 0x003ea92a, 0x004171b7, 0x004449bb,
0x00473135, 0x004a2824, 0x004d2e8a, 0x00504463,
0x005369b2, 0x00569e74, 0x0059e2aa, 0x005d3652,
0x0060996d, 0x00640bf9, 0x00678df7, 0x006b1f66,
0x006ec045, 0x00727093, 0x00763051, 0x0079ff7d,
0x007dde16, 0x0081cc1d, 0x0085c991, 0x0089d671,
0x008df2bc, 0x00921e71, 0x00965991, 0x009aa41a,
0x009efe0c, 0x00a36766, 0x00a7e028, 0x00ac6850,
0x00b0ffde, 0x00b5a6d1, 0x00ba5d28, 0x00bf22e4,
0x00c3f802, 0x00c8dc83, 0x00cdd065, 0x00d2d3a8,
0x00d7e64a, 0x00dd084c, 0x00e239ac, 0x00e77a69,
0x00ecca83, 0x00f229f9, 0x00f798ca, 0x00fd16f5,
0x0102a479, 0x01084155, 0x010ded89, 0x0113a913,
0x011973f3, 0x011f4e27, 0x012537af, 0x012b308a,
0x013138b7, 0x01375035, 0x013d7702, 0x0143ad1f,
0x0149f289, 0x01504741, 0x0156ab44, 0x015d1e92,
0x0163a12a, 0x016a330b, 0x0170d433, 0x017784a3,
0x017e4458, 0x01851351, 0x018bf18e, 0x0192df0d,
0x0199dbcd, 0x01a0e7cd, 0x01a8030c, 0x01af2d89,
0x01b66743, 0x01bdb038, 0x01c50867, 0x01cc6fd0,
0x01d3e670, 0x01db6c47, 0x01e30153, 0x01eaa593,
0x01f25907, 0x01fa1bac, 0x0201ed81, 0x0209ce86,
0x0211beb8, 0x0219be17, 0x0221cca2, 0x0229ea56,
0x02321733, 0x023a5337, 0x02429e60, 0x024af8af,
0x02536220, 0x025bdab3, 0x02646267, 0x026cf93a,
0x02759f2a, 0x027e5436, 0x0287185d, 0x028feb9d,
0x0298cdf4, 0x02a1bf62, 0x02aabfe5, 0x02b3cf7b,
0x02bcee23, 0x02c61bdb, 0x02cf58a2, 0x02d8a475,
0x02e1ff55, 0x02eb693e, 0x02f4e230, 0x02fe6a29,
0x03080127, 0x0311a729, 0x031b5c2d, 0x03252031,
0x032ef334, 0x0338d534, 0x0342c630, 0x034cc625,
0x0356d512, 0x0360f2f6, 0x036b1fce, 0x03755b99,
0x037fa655, 0x038a0001, 0x0394689a, 0x039ee020,
0x03a9668f, 0x03b3fbe6, 0x03bea024, 0x03c95347,
0x03d4154d, 0x03dee633, 0x03e9c5f9, 0x03f4b49b,
0x03ffb219, 0x040abe71, 0x0415d9a0, 0x042103a5,
0x042c3c7d, 0x04378428, 0x0442daa2, 0x044e3fea,
0x0459b3fd, 0x046536db, 0x0470c880, 0x047c68eb,
0x0488181a, 0x0493d60b, 0x049fa2bc, 0x04ab7e2a,
0x04b76854, 0x04c36137, 0x04cf68d1, 0x04db7f21,
0x04e7a424, 0x04f3d7d8, 0x05001a3b, 0x050c6b4a,
0x0518cb04, 0x05253966, 0x0531b66e, 0x053e421a,
0x054adc68, 0x05578555, 0x05643cdf, 0x05710304,
0x057dd7c1, 0x058abb15, 0x0597acfd, 0x05a4ad76,
0x05b1bc7f, 0x05beda14, 0x05cc0635, 0x05d940dd,
0x05e68a0b, 0x05f3e1bd, 0x060147f0, 0x060ebca1,
0x061c3fcf, 0x0629d176, 0x06377194, 0x06452027,
0x0652dd2c, 0x0660a8a1, 0x066e8284, 0x067c6ad1,
0x068a6186, 0x069866a0, 0x06a67a1e, 0x06b49bfc,
0x06c2cc38, 0x06d10acf, 0x06df57bf, 0x06edb304,
0x06fc1c9d, 0x070a9487, 0x07191abe, 0x0727af40,
0x0736520b, 0x0745031c, 0x0753c270, 0x07629004,
0x07716bd6, 0x078055e2, 0x078f4e26, 0x079e549f,
0x07ad694b, 0x07bc8c26, 0x07cbbd2e, 0x07dafc5f,
0x07ea49b7, 0x07f9a533, 0x08090ed1, 0x0818868c,
0x08280c62, 0x0837a051, 0x08474255, 0x0856f26b,
0x0866b091, 0x08767cc3, 0x088656fe, 0x08963f3f,
0x08a63583, 0x08b639c8, 0x08c64c09, 0x08d66c45,
0x08e69a77, 0x08f6d69d, 0x090720b3, 0x091778b7,
0x0927dea5, 0x0938527a, 0x0948d433, 0x095963cc,
0x096a0143, 0x097aac93, 0x098b65bb, 0x099c2cb6,
0x09ad0182, 0x09bde41a, 0x09ced47c, 0x09dfd2a5,
0x09f0de90, 0x0a01f83b, 0x0a131fa3, 0x0a2454c3,
0x0a359798, 0x0a46e820, 0x0a584656, 0x0a69b237,
0x0a7b2bbf, 0x0a8cb2ec, 0x0a9e47ba, 0x0aafea24,
0x0ac19a28, 0x0ad357c3, 0x0ae522ef, 0x0af6fbab,
0x0b08e1f1, 0x0b1ad5c0, 0x0b2cd712, 0x0b3ee5e5,
0x0b510234, 0x0b632bfd, 0x0b75633b, 0x0b87a7ea,
0x0b99fa08, 0x0bac5990, 0x0bbec67e, 0x0bd140cf,
0x0be3c87e, 0x0bf65d89, 0x0c08ffeb, 0x0c1bafa1,
0x0c2e6ca6, 0x0c4136f6, 0x0c540e8f, 0x0c66f36c,
0x0c79e588, 0x0c8ce4e1, 0x0c9ff172, 0x0cb30b37,
0x0cc6322c, 0x0cd9664d, 0x0ceca797, 0x0cfff605,
0x0d135193, 0x0d26ba3d, 0x0d3a2fff, 0x0d4db2d5,
0x0d6142ba, 0x0d74dfac, 0x0d8889a5, 0x0d9c40a1,
0x0db0049c, 0x0dc3d593, 0x0dd7b380, 0x0deb9e60,
0x0dff962f, 0x0e139ae7, 0x0e27ac85, 0x0e3bcb05,
0x0e4ff662, 0x0e642e98, 0x0e7873a2, 0x0e8cc57d,
0x0ea12423, 0x0eb58f91, 0x0eca07c2, 0x0ede8cb1,
0x0ef31e5b, 0x0f07bcba, 0x0f1c67cb, 0x0f311f88,
0x0f45e3ee, 0x0f5ab4f7, 0x0f6f929f, 0x0f847ce3,
0x0f9973bc, 0x0fae7726, 0x0fc3871e, 0x0fd8a39d,
0x0fedcca1, 0x10030223, 0x1018441f, 0x102d9291,
0x1042ed74, 0x105854c3, 0x106dc879, 0x10834892,
0x1098d508, 0x10ae6dd8, 0x10c412fc, 0x10d9c46f,
0x10ef822d, 0x11054c30, 0x111b2274, 0x113104f4,
0x1146f3ab, 0x115cee95, 0x1172f5ab, 0x118908e9,
0x119f284a, 0x11b553ca, 0x11cb8b62, 0x11e1cf0f,
0x11f81eca, 0x120e7a90, 0x1224e25a, 0x123b5624,
0x1251d5e9, 0x126861a3, 0x127ef94e, 0x12959ce3,
0x12ac4c5e, 0x12c307bb, 0x12d9cef2, 0x12f0a200,
0x130780df, 0x131e6b89, 0x133561fa, 0x134c642c,
0x1363721a, 0x137a8bbe, 0x1391b113, 0x13a8e213,
0x13c01eba, 0x13d76702, 0x13eebae5, 0x14061a5d,
0x141d8567, 0x1434fbfb, 0x144c7e14, 0x14640bad,
0x147ba4c1, 0x14934949, 0x14aaf941, 0x14c2b4a2,
0x14da7b67, 0x14f24d8a, 0x150a2b06, 0x152213d5,
0x153a07f1, 0x15520755, 0x156a11fb, 0x158227dd,
0x159a48f5, 0x15b2753d, 0x15caacb1, 0x15e2ef49,
0x15fb3d01, 0x161395d1, 0x162bf9b6, 0x164468a7,
0x165ce2a1, 0x1675679c, 0x168df793, 0x16a6927f,
0x16bf385c, 0x16d7e922, 0x16f0a4cc, 0x17096b54,
0x17223cb4, 0x173b18e5, 0x1753ffe2, 0x176cf1a5,
0x1785ee27, 0x179ef562, 0x17b80750, 0x17d123eb,
0x17ea4b2d, 0x18037d10, 0x181cb98c, 0x1836009d,
0x184f523c, 0x1868ae62, 0x1882150a, 0x189b862c,
0x18b501c3, 0x18ce87c9, 0x18e81836, 0x1901b305,
0x191b582e, 0x193507ad, 0x194ec17a, 0x1968858e,
0x198253e4, 0x199c2c75, 0x19b60f3a, 0x19cffc2d,
0x19e9f347, 0x1a03f482, 0x1a1dffd7, 0x1a381540,
0x1a5234b5, 0x1a6c5e31, 0x1a8691ac, 0x1aa0cf21,
0x1abb1687, 0x1ad567d9, 0x1aefc310, 0x1b0a2826,
0x1b249712, 0x1b3f0fcf, 0x1b599256, 0x1b741ea0,
0x1b8eb4a7, 0x1ba95462, 0x1bc3fdcc, 0x1bdeb0de,
0x1bf96d90, 0x1c1433dc, 0x1c2f03bc, 0x1c49dd26,
0x1c64c016, 0x1c7fac84, 0x1c9aa269, 0x1cb5a1be,
0x1cd0aa7c, 0x1cebbc9b, 0x1d06d816, 0x1d21fce4,
0x1d3d2aff, 0x1d58625f, 0x1d73a2fe, 0x1d8eecd4,
0x1daa3fda, 0x1dc59c09, 0x1de10159, 0x1dfc6fc4,
0x1e17e742, 0x1e3367cc, 0x1e4ef15b, 0x1e6a83e7,
0x1e861f69, 0x1ea1c3da, 0x1ebd7132, 0x1ed9276b,
0x1ef4e67c, 0x1f10ae5e, 0x1f2c7f0a, 0x1f485878,
0x1f643aa2, 0x1f80257f, 0x1f9c1908, 0x1fb81536,
0x1fd41a00, 0x1ff02760, 0x200c3d4e, 0x20285bc3,
0x204482b6, 0x2060b221, 0x207ce9fb, 0x20992a3d,
0x20b572e0, 0x20d1c3db, 0x20ee1d28, 0x210a7ebd,
0x2126e895, 0x21435aa6, 0x215fd4e9, 0x217c5757,
0x2198e1e7, 0x21b57493, 0x21d20f51, 0x21eeb21a,
0x220b5ce7, 0x22280faf, 0x2244ca6b, 0x22618d13,
0x227e579f, 0x229b2a06, 0x22b80442, 0x22d4e649,
0x22f1d015, 0x230ec19d, 0x232bbad8, 0x2348bbc0,
0x2365c44c, 0x2382d474, 0x239fec30, 0x23bd0b78,
0x23da3243, 0x23f7608b, 0x24149645, 0x2431d36c,
0x244f17f5, 0x246c63d9, 0x2489b711, 0x24a71193,
0x24c47358, 0x24e1dc56, 0x24ff4c87, 0x251cc3e2,
0x253a425e, 0x2557c7f3, 0x25755499, 0x2592e848,
0x25b082f7, 0x25ce249e, 0x25ebcd34, 0x26097cb2,
0x2627330e, 0x2644f040, 0x2662b441, 0x26807f06,
0x269e5089, 0x26bc28c1, 0x26da07a4, 0x26f7ed2b,
0x2715d94d, 0x2733cc02, 0x2751c540, 0x276fc500,
0x278dcb39, 0x27abd7e2, 0x27c9eaf3, 0x27e80463,
0x28062429, 0x28244a3d, 0x28427697, 0x2860a92d,
0x287ee1f6, 0x289d20eb, 0x28bb6602, 0x28d9b133,
0x28f80275, 0x291659bf, 0x2934b709, 0x29531a49,
0x29718377, 0x298ff28b, 0x29ae677a, 0x29cce23d,
0x29eb62cb, 0x2a09e91b, 0x2a287523, 0x2a4706dc,
0x2a659e3b, 0x2a843b39, 0x2aa2ddcc, 0x2ac185ec,
0x2ae0338f, 0x2afee6ac, 0x2b1d9f3b, 0x2b3c5d33,
0x2b5b208a, 0x2b79e938, 0x2b98b734, 0x2bb78a73,
0x2bd662ef, 0x2bf5409d, 0x2c142374, 0x2c330b6b,
0x2c51f87a, 0x2c70ea97, 0x2c8fe1b8, 0x2caeddd6,
0x2ccddee6, 0x2cece4e0, 0x2d0befbb, 0x2d2aff6c,
0x2d4a13ec, 0x2d692d31, 0x2d884b31, 0x2da76de4,
0x2dc69540, 0x2de5c13c, 0x2e04f1cf, 0x2e2426f0,
0x2e436094, 0x2e629eb4, 0x2e81e145, 0x2ea1283f,
0x2ec07398, 0x2edfc346, 0x2eff1741, 0x2f1e6f7f,
0x2f3dcbf7, 0x2f5d2c9f, 0x2f7c916f, 0x2f9bfa5b,
0x2fbb675c, 0x2fdad868, 0x2ffa4d75, 0x3019c67b,
0x3039436f, 0x3058c447, 0x307848fc, 0x3097d183,
0x30b75dd2, 0x30d6ede1, 0x30f681a6, 0x31161917,
0x3135b42a, 0x315552d7, 0x3174f514, 0x31949ad7,
0x31b44417, 0x31d3f0c9, 0x31f3a0e6, 0x32135462,
0x32330b35, 0x3252c554, 0x327282b7, 0x32924353,
0x32b20720, 0x32d1ce13, 0x32f19823, 0x33116546,
0x33313572, 0x3351089f, 0x3370dec1, 0x3390b7d1,
0x33b093c3, 0x33d0728e, 0x33f05429, 0x3410388a,
0x34301fa7, 0x34500976, 0x346ff5ef, 0x348fe506,
0x34afd6b2, 0x34cfcaeb, 0x34efc1a5, 0x350fbad7,
0x352fb677, 0x354fb47c, 0x356fb4dc, 0x358fb78d,
0x35afbc85, 0x35cfc3bb, 0x35efcd25, 0x360fd8b8,
0x362fe66b, 0x364ff635, 0x3670080c, 0x36901be5,
0x36b031b7, 0x36d04978, 0x36f0631e, 0x37107e9f,
0x37309bf2, 0x3750bb0d, 0x3770dbe6, 0x3790fe72,
0x37b122a9, 0x37d14880, 0x37f16fee, 0x381198e8,
0x3831c364, 0x3851ef5a, 0x38721cbe, 0x38924b87,
0x38b27bab, 0x38d2ad21, 0x38f2dfdd, 0x391313d8,
0x39334905, 0x39537f5c, 0x3973b6d3, 0x3993ef60,
0x39b428f8, 0x39d46393, 0x39f49f25, 0x3a14dba5,
0x3a351909, 0x3a555748, 0x3a759657, 0x3a95d62c,
0x3ab616bd, 0x3ad65801, 0x3af699ed, 0x3b16dc78,
0x3b371f97, 0x3b576341, 0x3b77a76b, 0x3b97ec0c,
0x3bb8311a, 0x3bd8768b, 0x3bf8bc54, 0x3c19026c,
0x3c3948c9, 0x3c598f61, 0x3c79d62a, 0x3c9a1d1a,
0x3cba6427, 0x3cdaab47, 0x3cfaf270, 0x3d1b3998,
0x3d3b80b5, 0x3d5bc7be, 0x3d7c0ea7, 0x3d9c5568,
0x3dbc9bf6, 0x3ddce247, 0x3dfd2852, 0x3e1d6e0c,
0x3e3db36b, 0x3e5df866, 0x3e7e3cf2, 0x3e9e8105,
0x3ebec496, 0x3edf079b, 0x3eff4a09, 0x3f1f8bd7,
0x3f3fccfa, 0x3f600d69, 0x3f804d19, 0x3fa08c02,
0x3fc0ca18, 0x3fe10752, 0x400143a6, 0x40217f0a,
0x4041b974, 0x4061f2da, 0x40822b32, 0x40a26272,
0x40c29890, 0x40e2cd83, 0x41030140, 0x412333bd,
0x414364f1, 0x416394d1, 0x4183c354, 0x41a3f070,
0x41c41c1a, 0x41e44649, 0x42046ef4, 0x4224960f,
0x4244bb92, 0x4264df71, 0x428501a5, 0x42a52221,
0x42c540dd, 0x42e55dcf, 0x430578ed, 0x4325922c,
0x4345a984, 0x4365beea, 0x4385d254, 0x43a5e3b9,
0x43c5f30f, 0x43e6004b, 0x44060b64, 0x44261451,
0x44461b06, 0x44661f7b, 0x448621a6, 0x44a6217d,
0x44c61ef5, 0x44e61a06, 0x450612a6, 0x452608ca,
0x4545fc69, 0x4565ed79, 0x4585dbf0, 0x45a5c7c5,
0x45c5b0ee, 0x45e59761, 0x46057b14, 0x46255bfe,
0x46453a14, 0x4665154e, 0x4684eda2, 0x46a4c304,
0x46c4956d, 0x46e464d3, 0x4704312b, 0x4723fa6c,
0x4743c08c, 0x47638382, 0x47834344, 0x47a2ffc8,
0x47c2b905, 0x47e26ef1, 0x48022183, 0x4821d0b0,
0x48417c70, 0x486124b8, 0x4880c980, 0x48a06abd,
0x48c00866, 0x48dfa272, 0x48ff38d6, 0x491ecb8a,
0x493e5a83, 0x495de5b9, 0x497d6d21, 0x499cf0b3,
0x49bc7065, 0x49dbec2d, 0x49fb6402, 0x4a1ad7da,
0x4a3a47ac, 0x4a59b36f, 0x4a791b19, 0x4a987ea1,
0x4ab7ddfd, 0x4ad73923, 0x4af6900c, 0x4b15e2ac,
0x4b3530fc, 0x4b547af1, 0x4b73c082, 0x4b9301a5,
0x4bb23e53, 0x4bd17680, 0x4bf0aa24, 0x4c0fd937,
0x4c2f03ad, 0x4c4e297f, 0x4c6d4aa2, 0x4c8c670e,
0x4cab7eba, 0x4cca919c, 0x4ce99fab, 0x4d08a8de,
0x4d27ad2b, 0x4d46ac8b, 0x4d65a6f2, 0x4d849c59,
0x4da38cb7, 0x4dc27801, 0x4de15e30, 0x4e003f39,
0x4e1f1b15, 0x4e3df1b9, 0x4e5cc31e, 0x4e7b8f39,
0x4e9a5602, 0x4eb91770, 0x4ed7d37a, 0x4ef68a17,
0x4f153b3e, 0x4f33e6e7, 0x4f528d07, 0x4f712d97,
0x4f8fc88d, 0x4fae5de1, 0x4fcced89, 0x4feb777e,
0x5009fbb6, 0x50287a28, 0x5046f2cb, 0x50656597,
0x5083d283, 0x50a23987, 0x50c09a99, 0x50def5b1,
0x50fd4ac6, 0x511b99cf, 0x5139e2c5, 0x5158259d,
0x51766250, 0x519498d6, 0x51b2c924, 0x51d0f333,
0x51ef16fb, 0x520d3472, 0x522b4b91, 0x52495c4e,
0x526766a1, 0x52856a82, 0x52a367e9, 0x52c15ecc,
0x52df4f24, 0x52fd38e7, 0x531b1c0f, 0x5338f892,
0x5356ce68, 0x53749d88, 0x539265eb, 0x53b02788,
0x53cde256, 0x53eb964f, 0x54094368, 0x5426e99b,
0x544488df, 0x5462212b, 0x547fb278, 0x549d3cbd,
0x54babff3, 0x54d83c11, 0x54f5b110, 0x55131ee6,
0x5530858d, 0x554de4fb, 0x556b3d2a, 0x55888e11,
0x55a5d7a8, 0x55c319e7, 0x55e054c6, 0x55fd883e,
0x561ab446, 0x5637d8d7, 0x5654f5e9, 0x56720b74,
0x568f1971, 0x56ac1fd6, 0x56c91e9e, 0x56e615bf,
0x57030533, 0x571fecf1, 0x573cccf2, 0x5759a52f,
0x5776759f, 0x57933e3b, 0x57affefc, 0x57ccb7da,
0x57e968cd, 0x580611ce, 0x5822b2d6, 0x583f4bdc,
0x585bdcda, 0x587865c8, 0x5894e69f, 0x58b15f57,
0x58cdcfe8, 0x58ea384d, 0x5906987d, 0x5922f070,
0x593f4021, 0x595b8787, 0x5977c69b, 0x5993fd56,
0x59b02bb2, 0x59cc51a6, 0x59e86f2b, 0x5a04843c,
0x5a2090cf, 0x5a3c94df, 0x5a589065, 0x5a748358,
0x5a906db3, 0x5aac4f6f, 0x5ac82884, 0x5ae3f8eb,
0x5affc09e, 0x5b1b7f97, 0x5b3735cc, 0x5b52e33a,
0x5b6e87d7, 0x5b8a239e, 0x5ba5b688, 0x5bc1408e,
0x5bdcc1aa, 0x5bf839d4, 0x5c13a906, 0x5c2f0f3a,
0x5c4a6c69, 0x5c65c08c, 0x5c810b9d, 0x5c9c4d96,
0x5cb7866f, 0x5cd2b622, 0x5ceddcaa, 0x5d08f9ff,
0x5d240e1b, 0x5d3f18f7, 0x5d5a1a8e, 0x5d7512d9,
0x5d9001d2, 0x5daae773, 0x5dc5c3b4, 0x5de09691,
0x5dfb6003, 0x5e162003, 0x5e30d68c, 0x5e4b8398,
0x5e662720, 0x5e80c11e, 0x5e9b518d, 0x5eb5d866,
0x5ed055a3, 0x5eeac93f, 0x5f053334, 0x5f1f937b,
0x5f39ea0e, 0x5f5436e9, 0x5f6e7a05, 0x5f88b35c,
0x5fa2e2e9, 0x5fbd08a5, 0x5fd7248c, 0x5ff13697,
0x600b3ec1, 0x60253d04, 0x603f315b, 0x60591bbf,
0x6072fc2d, 0x608cd29d, 0x60a69f0b, 0x60c06171,
0x60da19c9, 0x60f3c80f, 0x610d6c3c, 0x6127064c,
0x61409639, 0x615a1bfe, 0x61739796, 0x618d08fb,
0x61a67028, 0x61bfcd19, 0x61d91fc7, 0x61f2682e,
0x620ba649, 0x6224da12, 0x623e0385, 0x6257229c,
0x62703754, 0x628941a5, 0x62a2418d, 0x62bb3705,
0x62d42209, 0x62ed0295, 0x6305d8a3, 0x631ea42e,
0x63376532, 0x63501baa, 0x6368c792, 0x638168e5,
0x6399ff9d, 0x63b28bb7, 0x63cb0d2f, 0x63e383fe,
0x63fbf021, 0x64145194, 0x642ca852, 0x6444f456,
0x645d359d, 0x64756c21, 0x648d97df, 0x64a5b8d2,
0x64bdcef6, 0x64d5da46, 0x64eddabf, 0x6505d05c,
0x651dbb19, 0x65359af1, 0x654d6fe2, 0x656539e7,
0x657cf8fb, 0x6594ad1a, 0x65ac5642, 0x65c3f46d,
0x65db8798, 0x65f30fc0, 0x660a8cdf, 0x6621fef2,
0x663965f6, 0x6650c1e7, 0x666812c0, 0x667f587f,
0x6696931f, 0x66adc29e, 0x66c4e6f6, 0x66dc0025,
0x66f30e28, 0x670a10fa, 0x67210898, 0x6737f4fe,
0x674ed62a, 0x6765ac18, 0x677c76c4, 0x6793362b,
0x67a9ea4a, 0x67c0931e, 0x67d730a2, 0x67edc2d5,
0x680449b3, 0x681ac538, 0x68313561, 0x68479a2c,
0x685df396, 0x6874419a, 0x688a8437, 0x68a0bb69,
0x68b6e72e, 0x68cd0781, 0x68e31c62, 0x68f925cc,
0x690f23bd, 0x69251632, 0x693afd28, 0x6950d89d,
0x6966a88e, 0x697c6cf8, 0x699225d8, 0x69a7d32c,
0x69bd74f2, 0x69d30b26, 0x69e895c7, 0x69fe14d2,
0x6a138843, 0x6a28f01a, 0x6a3e4c53, 0x6a539ced,
0x6a68e1e4, 0x6a7e1b36, 0x6a9348e2, 0x6aa86ae5,
0x6abd813c, 0x6ad28be7, 0x6ae78ae1, 0x6afc7e2a,
0x6b1165bf, 0x6b26419e, 0x6b3b11c6, 0x6b4fd633,
0x6b648ee5, 0x6b793bd9, 0x6b8ddd0e, 0x6ba27280,
0x6bb6fc30, 0x6bcb7a1a, 0x6bdfec3d, 0x6bf45298,
0x6c08ad28, 0x6c1cfbec, 0x6c313ee3, 0x6c45760a,
0x6c59a160, 0x6c6dc0e3, 0x6c81d492, 0x6c95dc6c,
0x6ca9d86e, 0x6cbdc899, 0x6cd1ace9, 0x6ce5855e,
0x6cf951f6, 0x6d0d12b0, 0x6d20c78b, 0x6d347086,
0x6d480d9f, 0x6d5b9ed5, 0x6d6f2427, 0x6d829d93,
0x6d960b19, 0x6da96cb8, 0x6dbcc26f, 0x6dd00c3c,
0x6de34a1e, 0x6df67c15, 0x6e09a220, 0x6e1cbc3e,
0x6e2fca6d, 0x6e42ccae, 0x6e55c2ff, 0x6e68ad5f,
0x6e7b8bcf, 0x6e8e5e4c, 0x6ea124d7, 0x6eb3df6f,
0x6ec68e13, 0x6ed930c2, 0x6eebc77c, 0x6efe5241,
0x6f10d110, 0x6f2343e9, 0x6f35aaca, 0x6f4805b4,
0x6f5a54a7, 0x6f6c97a1, 0x6f7ecea3, 0x6f90f9ad,
0x6fa318be, 0x6fb52bd5, 0x6fc732f3, 0x6fd92e18,
0x6feb1d43, 0x6ffd0075, 0x700ed7ad, 0x7020a2ea,
0x7032622f, 0x70441579, 0x7055bcc9, 0x70675820,
0x7078e77d, 0x708a6ae1, 0x709be24b, 0x70ad4dbc,
0x70bead35, 0x70d000b4, 0x70e1483c, 0x70f283cb,
0x7103b363, 0x7114d703, 0x7125eeac, 0x7136fa5f,
0x7147fa1c, 0x7158ede3, 0x7169d5b5, 0x717ab192,
0x718b817c, 0x719c4572, 0x71acfd76, 0x71bda987,
0x71ce49a7, 0x71deddd7, 0x71ef6616, 0x71ffe267,
0x721052c9, 0x7220b73d, 0x72310fc5, 0x72415c61,
0x72519d13, 0x7261d1da, 0x7271fab9, 0x728217b0,
0x729228bf, 0x72a22dea, 0x72b2272f, 0x72c21491,
0x72d1f610, 0x72e1cbae, 0x72f1956c, 0x7301534b,
0x7311054c, 0x7320ab71, 0x733045bb, 0x733fd42c,
0x734f56c4, 0x735ecd85, 0x736e3871, 0x737d9789,
0x738ceace, 0x739c3242, 0x73ab6de6, 0x73ba9dbd,
0x73c9c1c8, 0x73d8da07, 0x73e7e67e, 0x73f6e72d,
0x7405dc16, 0x7414c53b, 0x7423a29e, 0x74327441,
0x74413a25, 0x744ff44c, 0x745ea2b8, 0x746d456b,
0x747bdc67, 0x748a67ad, 0x7498e741, 0x74a75b22,
0x74b5c355, 0x74c41fdb, 0x74d270b5, 0x74e0b5e6,
0x74eeef70, 0x74fd1d56, 0x750b3f99, 0x7519563b,
0x7527613f, 0x753560a8, 0x75435476, 0x75513cad,
0x755f1950, 0x756cea5f, 0x757aafde, 0x758869d0,
0x75961836, 0x75a3bb13, 0x75b15269, 0x75bede3b,
0x75cc5e8c, 0x75d9d35e, 0x75e73cb4, 0x75f49a90,
0x7601ecf5, 0x760f33e5, 0x761c6f64, 0x76299f73,
0x7636c416, 0x7643dd50, 0x7650eb23, 0x765ded92,
0x766ae49f, 0x7677d04f, 0x7684b0a3, 0x7691859e,
0x769e4f44, 0x76ab0d97, 0x76b7c09b, 0x76c46851,
0x76d104be, 0x76dd95e5, 0x76ea1bc8, 0x76f6966a,
0x770305cf, 0x770f69fa, 0x771bc2ee, 0x772810ae,
0x7734533d, 0x77408a9f, 0x774cb6d6, 0x7758d7e7,
0x7764edd4, 0x7770f8a1, 0x777cf851, 0x7788ece7,
0x7794d667, 0x77a0b4d4, 0x77ac8832, 0x77b85084,
0x77c40dcd, 0x77cfc012, 0x77db6755, 0x77e7039a,
0x77f294e5, 0x77fe1b3a, 0x7809969b, 0x7815070d,
0x78206c92, 0x782bc730, 0x783716e9, 0x78425bc2,
0x784d95bd, 0x7858c4e0, 0x7863e92c, 0x786f02a8,
0x787a1155, 0x78851538, 0x78900e55, 0x789afcb0,
0x78a5e04c, 0x78b0b92e, 0x78bb875a, 0x78c64ad3,
0x78d1039d, 0x78dbb1bd, 0x78e65536, 0x78f0ee0d,
0x78fb7c45, 0x7905ffe3, 0x791078eb, 0x791ae761,
0x79254b49, 0x792fa4a7, 0x7939f37f, 0x794437d6,
0x794e71af, 0x7958a110, 0x7962c5fc, 0x796ce077,
0x7976f087, 0x7980f62e, 0x798af172, 0x7994e257,
0x799ec8e1, 0x79a8a514, 0x79b276f6, 0x79bc3e8a,
0x79c5fbd5, 0x79cfaedb, 0x79d957a1, 0x79e2f62b,
0x79ec8a7e, 0x79f6149e, 0x79ff9491, 0x7a090a59,
0x7a1275fd, 0x7a1bd780, 0x7a252ee8, 0x7a2e7c38,
0x7a37bf76, 0x7a40f8a6, 0x7a4a27cd, 0x7a534cf0,
0x7a5c6812, 0x7a65793a, 0x7a6e806c, 0x7a777dac,
0x7a8070ff, 0x7a895a6a, 0x7a9239f3, 0x7a9b0f9d,
0x7aa3db6e, 0x7aac9d6a, 0x7ab55596, 0x7abe03f8,
0x7ac6a894, 0x7acf436f, 0x7ad7d48e, 0x7ae05bf5,
0x7ae8d9ab, 0x7af14db4, 0x7af9b814, 0x7b0218d1,
0x7b0a6ff1, 0x7b12bd77, 0x7b1b0169, 0x7b233bcd,
0x7b2b6ca6, 0x7b3393fb, 0x7b3bb1d0, 0x7b43c62b,
0x7b4bd110, 0x7b53d285, 0x7b5bca8f, 0x7b63b934,
0x7b6b9e77, 0x7b737a60, 0x7b7b4cf2, 0x7b831633,
0x7b8ad628, 0x7b928cd7, 0x7b9a3a44, 0x7ba1de76,
0x7ba97971, 0x7bb10b3b, 0x7bb893d8, 0x7bc0134f,
0x7bc789a5, 0x7bcef6df, 0x7bd65b02, 0x7bddb615,
0x7be5081b, 0x7bec511b, 0x7bf3911a, 0x7bfac81e,
0x7c01f62b, 0x7c091b48, 0x7c10377a, 0x7c174ac6,
0x7c1e5531, 0x7c2556c3, 0x7c2c4f7f, 0x7c333f6b,
0x7c3a268d, 0x7c4104eb, 0x7c47da89, 0x7c4ea76e,
0x7c556ba0, 0x7c5c2723, 0x7c62d9fd, 0x7c698434,
0x7c7025ce, 0x7c76becf, 0x7c7d4f3f, 0x7c83d722,
0x7c8a567e, 0x7c90cd59, 0x7c973bb8, 0x7c9da1a1,
0x7ca3ff1a, 0x7caa5429, 0x7cb0a0d2, 0x7cb6e51d,
0x7cbd210e, 0x7cc354ab, 0x7cc97ffb, 0x7ccfa303,
0x7cd5bdc8, 0x7cdbd050, 0x7ce1daa2, 0x7ce7dcc2,
0x7cedd6b7, 0x7cf3c887, 0x7cf9b237, 0x7cff93ce,
0x7d056d50, 0x7d0b3ec4, 0x7d11082f, 0x7d16c999,
0x7d1c8305, 0x7d22347b, 0x7d27ddff, 0x7d2d7f99,
0x7d33194e, 0x7d38ab23, 0x7d3e351e, 0x7d43b747,
0x7d4931a1, 0x7d4ea434, 0x7d540f05, 0x7d59721a,
0x7d5ecd7a, 0x7d642129, 0x7d696d2e, 0x7d6eb18f,
0x7d73ee52, 0x7d79237d, 0x7d7e5116, 0x7d837722,
0x7d8895a8, 0x7d8dacad, 0x7d92bc39, 0x7d97c450,
0x7d9cc4f8, 0x7da1be38, 0x7da6b016, 0x7dab9a98,
0x7db07dc3, 0x7db5599d, 0x7dba2e2e, 0x7dbefb7a,
0x7dc3c188, 0x7dc8805d, 0x7dcd3801, 0x7dd1e878,
0x7dd691c9, 0x7ddb33fa, 0x7ddfcf11, 0x7de46314,
0x7de8f009, 0x7ded75f7, 0x7df1f4e2, 0x7df66cd2,
0x7dfaddcc, 0x7dff47d6, 0x7e03aaf7, 0x7e080734,
0x7e0c5c94, 0x7e10ab1d, 0x7e14f2d4, 0x7e1933c0,
0x7e1d6de7, 0x7e21a14f, 0x7e25cdfe, 0x7e29f3fb,
0x7e2e134b, 0x7e322bf4, 0x7e363dfc, 0x7e3a496a,
0x7e3e4e44, 0x7e424c8f, 0x7e464453, 0x7e4a3594,
0x7e4e2059, 0x7e5204a9, 0x7e55e288, 0x7e59b9fe,
0x7e5d8b11, 0x7e6155c6, 0x7e651a23, 0x7e68d830,
0x7e6c8ff1, 0x7e70416d, 0x7e73ecab, 0x7e7791af,
0x7e7b3081, 0x7e7ec926, 0x7e825ba5, 0x7e85e803,
0x7e896e47, 0x7e8cee76, 0x7e906898, 0x7e93dcb1,
0x7e974ac9, 0x7e9ab2e4, 0x7e9e150a, 0x7ea17140,
0x7ea4c78d, 0x7ea817f6, 0x7eab6282, 0x7eaea736,
0x7eb1e619, 0x7eb51f32, 0x7eb85284, 0x7ebb8018,
0x7ebea7f3, 0x7ec1ca1c, 0x7ec4e697, 0x7ec7fd6c,
0x7ecb0ea0, 0x7ece1a39, 0x7ed1203e, 0x7ed420b5,
0x7ed71ba3, 0x7eda110e, 0x7edd00fe, 0x7edfeb77,
0x7ee2d080, 0x7ee5b01e, 0x7ee88a59, 0x7eeb5f35,
0x7eee2eb9, 0x7ef0f8ec, 0x7ef3bdd2, 0x7ef67d72,
0x7ef937d2, 0x7efbecf8, 0x7efe9cea, 0x7f0147ad,
0x7f03ed49, 0x7f068dc3, 0x7f092921, 0x7f0bbf68,
0x7f0e50a0, 0x7f10dccd, 0x7f1363f6, 0x7f15e621,
0x7f186354, 0x7f1adb94, 0x7f1d4ee8, 0x7f1fbd56,
0x7f2226e3, 0x7f248b95, 0x7f26eb73, 0x7f294682,
0x7f2b9cc8, 0x7f2dee4c, 0x7f303b12, 0x7f328321,
0x7f34c67f, 0x7f370532, 0x7f393f3f, 0x7f3b74ac,
0x7f3da580, 0x7f3fd1c0, 0x7f41f971, 0x7f441c9b,
0x7f463b42, 0x7f48556c, 0x7f4a6b20, 0x7f4c7c63,
0x7f4e893b, 0x7f5091ad, 0x7f5295c0, 0x7f549579,
0x7f5690df, 0x7f5887f6, 0x7f5a7ac4, 0x7f5c6950,
0x7f5e539f, 0x7f6039b7, 0x7f621b9d, 0x7f63f957,
0x7f65d2ec, 0x7f67a860, 0x7f6979b9, 0x7f6b46fe,
0x7f6d1033, 0x7f6ed55f, 0x7f709686, 0x7f7253b0,
0x7f740ce0, 0x7f75c21e, 0x7f77736f, 0x7f7920d7,
0x7f7aca5e, 0x7f7c7007, 0x7f7e11da, 0x7f7fafdc,
0x7f814a12, 0x7f82e081, 0x7f847330, 0x7f860223,
0x7f878d61, 0x7f8914ef, 0x7f8a98d3, 0x7f8c1911,
0x7f8d95af, 0x7f8f0eb4, 0x7f908424, 0x7f91f604,
0x7f93645b, 0x7f94cf2e, 0x7f963682, 0x7f979a5c,
0x7f98fac3, 0x7f9a57ba, 0x7f9bb149, 0x7f9d0774,
0x7f9e5a40, 0x7f9fa9b3, 0x7fa0f5d2, 0x7fa23ea3,
0x7fa3842a, 0x7fa4c66e, 0x7fa60574, 0x7fa74140,
0x7fa879d8, 0x7fa9af41, 0x7faae181, 0x7fac109d,
0x7fad3c99, 0x7fae657c, 0x7faf8b4b, 0x7fb0ae0a,
0x7fb1cdbf, 0x7fb2ea6f, 0x7fb4041f, 0x7fb51ad4,
0x7fb62e94, 0x7fb73f63, 0x7fb84d47, 0x7fb95845,
0x7fba6061, 0x7fbb65a1, 0x7fbc680b, 0x7fbd67a2,
0x7fbe646c, 0x7fbf5e6f, 0x7fc055ae, 0x7fc14a30,
0x7fc23bf8, 0x7fc32b0c, 0x7fc41772, 0x7fc5012d,
0x7fc5e843, 0x7fc6ccb9, 0x7fc7ae93, 0x7fc88dd7,
0x7fc96a89, 0x7fca44ae, 0x7fcb1c4b, 0x7fcbf166,
0x7fccc402, 0x7fcd9424, 0x7fce61d2, 0x7fcf2d10,
0x7fcff5e2, 0x7fd0bc4e, 0x7fd18059, 0x7fd24206,
0x7fd3015b, 0x7fd3be5c, 0x7fd4790f, 0x7fd53177,
0x7fd5e79a, 0x7fd69b7b, 0x7fd74d20, 0x7fd7fc8d,
0x7fd8a9c7, 0x7fd954d3, 0x7fd9fdb4, 0x7fdaa470,
0x7fdb490a, 0x7fdbeb88, 0x7fdc8bee, 0x7fdd2a41,
0x7fddc684, 0x7fde60bd, 0x7fdef8ef, 0x7fdf8f1f,
0x7fe02352, 0x7fe0b58c, 0x7fe145d2, 0x7fe1d427,
0x7fe26090, 0x7fe2eb11, 0x7fe373af, 0x7fe3fa6e,
0x7fe47f52, 0x7fe5025f, 0x7fe5839a, 0x7fe60307,
0x7fe680aa, 0x7fe6fc87, 0x7fe776a3, 0x7fe7ef01,
0x7fe865a6, 0x7fe8da96, 0x7fe94dd5, 0x7fe9bf67,
0x7fea2f50, 0x7fea9d94, 0x7feb0a38, 0x7feb753f,
0x7febdead, 0x7fec4686, 0x7fecacce, 0x7fed118a,
0x7fed74bd, 0x7fedd66b, 0x7fee3697, 0x7fee9547,
0x7feef27d, 0x7fef4e3e, 0x7fefa88d, 0x7ff0016e,
0x7ff058e6, 0x7ff0aef7, 0x7ff103a5, 0x7ff156f5,
0x7ff1a8ea, 0x7ff1f987, 0x7ff248d1, 0x7ff296cb,
0x7ff2e379, 0x7ff32ede, 0x7ff378fe, 0x7ff3c1dd,
0x7ff4097d, 0x7ff44fe4, 0x7ff49514, 0x7ff4d910,
0x7ff51bdd, 0x7ff55d7e, 0x7ff59df6, 0x7ff5dd49,
0x7ff61b7a, 0x7ff6588c, 0x7ff69484, 0x7ff6cf64,
0x7ff7092f, 0x7ff741ea, 0x7ff77997, 0x7ff7b03a,
0x7ff7e5d6, 0x7ff81a6e, 0x7ff84e05, 0x7ff880a0,
0x7ff8b240, 0x7ff8e2e9, 0x7ff9129f, 0x7ff94164,
0x7ff96f3c, 0x7ff99c2a, 0x7ff9c830, 0x7ff9f353,
0x7ffa1d94, 0x7ffa46f8, 0x7ffa6f80, 0x7ffa9730,
0x7ffabe0c, 0x7ffae415, 0x7ffb0950, 0x7ffb2dbe,
0x7ffb5163, 0x7ffb7441, 0x7ffb965c, 0x7ffbb7b7,
0x7ffbd853, 0x7ffbf835, 0x7ffc175e, 0x7ffc35d2,
0x7ffc5393, 0x7ffc70a4, 0x7ffc8d08, 0x7ffca8c1,
0x7ffcc3d3, 0x7ffcde3e, 0x7ffcf808, 0x7ffd1131,
0x7ffd29bd, 0x7ffd41ad, 0x7ffd5906, 0x7ffd6fc8,
0x7ffd85f8, 0x7ffd9b96, 0x7ffdb0a6, 0x7ffdc52a,
0x7ffdd925, 0x7ffdec98, 0x7ffdff87, 0x7ffe11f3,
0x7ffe23df, 0x7ffe354e, 0x7ffe4641, 0x7ffe56bb,
0x7ffe66be, 0x7ffe764d, 0x7ffe8569, 0x7ffe9415,
0x7ffea253, 0x7ffeb025, 0x7ffebd8d, 0x7ffeca8e,
0x7ffed729, 0x7ffee361, 0x7ffeef37, 0x7ffefaae,
0x7fff05c8, 0x7fff1086, 0x7fff1aeb, 0x7fff24f8,
0x7fff2eb0, 0x7fff3815, 0x7fff4127, 0x7fff49ea,
0x7fff525f, 0x7fff5a87, 0x7fff6265, 0x7fff69fb,
0x7fff714a, 0x7fff7853, 0x7fff7f19, 0x7fff859e,
0x7fff8be2, 0x7fff91e9, 0x7fff97b2, 0x7fff9d40,
0x7fffa295, 0x7fffa7b2, 0x7fffac98, 0x7fffb14a,
0x7fffb5c8, 0x7fffba14, 0x7fffbe30, 0x7fffc21c,
0x7fffc5db, 0x7fffc96e, 0x7fffccd7, 0x7fffd015,
0x7fffd32c, 0x7fffd61b, 0x7fffd8e6, 0x7fffdb8c,
0x7fffde0e, 0x7fffe070, 0x7fffe2b0, 0x7fffe4d1,
0x7fffe6d4, 0x7fffe8ba, 0x7fffea84, 0x7fffec33,
0x7fffedc8, 0x7fffef44, 0x7ffff0a9, 0x7ffff1f6,
0x7ffff32f, 0x7ffff452, 0x7ffff561, 0x7ffff65e,
0x7ffff748, 0x7ffff822, 0x7ffff8eb, 0x7ffff9a5,
0x7ffffa50, 0x7ffffaed, 0x7ffffb7d, 0x7ffffc01,
0x7ffffc79, 0x7ffffce6, 0x7ffffd49, 0x7ffffda2,
0x7ffffdf3, 0x7ffffe3b, 0x7ffffe7b, 0x7ffffeb5,
0x7ffffee7, 0x7fffff14, 0x7fffff3b, 0x7fffff5d,
0x7fffff7a, 0x7fffff94, 0x7fffffa9, 0x7fffffbb,
0x7fffffca, 0x7fffffd6, 0x7fffffe1, 0x7fffffe9,
0x7fffffef, 0x7ffffff4, 0x7ffffff8, 0x7ffffffa,
0x7ffffffc, 0x7ffffffd, 0x7ffffffe, 0x7fffffff,
0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
};
tatic ogg_int32_t vwin8192[4096]={
0x0000007c, 0x0000045c, 0x00000c1d, 0x000017bd,
0x0000273e, 0x00003a9f, 0x000051e0, 0x00006d02,
0x00008c03, 0x0000aee5, 0x0000d5a7, 0x00010049,
0x00012ecb, 0x0001612d, 0x00019770, 0x0001d193,
0x00020f96, 0x00025178, 0x0002973c, 0x0002e0df,
0x00032e62, 0x00037fc5, 0x0003d509, 0x00042e2c,
0x00048b30, 0x0004ec13, 0x000550d7, 0x0005b97a,
0x000625fe, 0x00069661, 0x00070aa4, 0x000782c8,
0x0007fecb, 0x00087eae, 0x00090271, 0x00098a14,
0x000a1597, 0x000aa4f9, 0x000b383b, 0x000bcf5d,
0x000c6a5f, 0x000d0941, 0x000dac02, 0x000e52a3,
0x000efd23, 0x000fab84, 0x00105dc3, 0x001113e3,
0x0011cde2, 0x00128bc0, 0x00134d7e, 0x0014131b,
0x0014dc98, 0x0015a9f4, 0x00167b30, 0x0017504a,
0x00182945, 0x0019061e, 0x0019e6d7, 0x001acb6f,
0x001bb3e6, 0x001ca03c, 0x001d9071, 0x001e8485,
0x001f7c79, 0x0020784b, 0x002177fc, 0x00227b8c,
0x002382fb, 0x00248e49, 0x00259d76, 0x0026b081,
0x0027c76b, 0x0028e234, 0x002a00dc, 0x002b2361,
0x002c49c6, 0x002d7409, 0x002ea22a, 0x002fd42a,
0x00310a08, 0x003243c5, 0x00338160, 0x0034c2d9,
0x00360830, 0x00375165, 0x00389e78, 0x0039ef6a,
0x003b4439, 0x003c9ce6, 0x003df971, 0x003f59da,
0x0040be20, 0x00422645, 0x00439247, 0x00450226,
0x004675e3, 0x0047ed7e, 0x004968f5, 0x004ae84b,
0x004c6b7d, 0x004df28d, 0x004f7d7a, 0x00510c44,
0x00529eeb, 0x00543570, 0x0055cfd1, 0x00576e0f,
0x00591029, 0x005ab621, 0x005c5ff5, 0x005e0da6,
0x005fbf33, 0x0061749d, 0x00632de4, 0x0064eb06,
0x0066ac05, 0x006870e0, 0x006a3998, 0x006c062b,
0x006dd69b, 0x006faae6, 0x0071830d, 0x00735f10,
0x00753eef, 0x007722a9, 0x00790a3f, 0x007af5b1,
0x007ce4fe, 0x007ed826, 0x0080cf29, 0x0082ca08,
0x0084c8c2, 0x0086cb57, 0x0088d1c7, 0x008adc11,
0x008cea37, 0x008efc37, 0x00911212, 0x00932bc7,
0x00954957, 0x00976ac2, 0x00999006, 0x009bb925,
0x009de61e, 0x00a016f1, 0x00a24b9e, 0x00a48425,
0x00a6c086, 0x00a900c0, 0x00ab44d4, 0x00ad8cc2,
0x00afd889, 0x00b22829, 0x00b47ba2, 0x00b6d2f5,
0x00b92e21, 0x00bb8d26, 0x00bdf004, 0x00c056ba,
0x00c2c149, 0x00c52fb1, 0x00c7a1f1, 0x00ca180a,
0x00cc91fb, 0x00cf0fc5, 0x00d19166, 0x00d416df,
0x00d6a031, 0x00d92d5a, 0x00dbbe5b, 0x00de5333,
0x00e0ebe3, 0x00e3886b, 0x00e628c9, 0x00e8ccff,
0x00eb750c, 0x00ee20f0, 0x00f0d0ab, 0x00f3843d,
0x00f63ba5, 0x00f8f6e4, 0x00fbb5fa, 0x00fe78e5,
0x01013fa7, 0x01040a3f, 0x0106d8ae, 0x0109aaf2,
0x010c810c, 0x010f5afb, 0x011238c0, 0x01151a5b,
0x0117ffcb, 0x011ae910, 0x011dd62a, 0x0120c719,
0x0123bbdd, 0x0126b476, 0x0129b0e4, 0x012cb126,
0x012fb53c, 0x0132bd27, 0x0135c8e6, 0x0138d879,
0x013bebdf, 0x013f031a, 0x01421e28, 0x01453d0a,
0x01485fbf, 0x014b8648, 0x014eb0a4, 0x0151ded2,
0x015510d4, 0x015846a8, 0x015b8050, 0x015ebdc9,
0x0161ff15, 0x01654434, 0x01688d24, 0x016bd9e6,
0x016f2a7b, 0x01727ee1, 0x0175d718, 0x01793321,
0x017c92fc, 0x017ff6a7, 0x01835e24, 0x0186c972,
0x018a3890, 0x018dab7f, 0x0191223f, 0x01949ccf,
0x01981b2f, 0x019b9d5f, 0x019f235f, 0x01a2ad2f,
0x01a63acf, 0x01a9cc3e, 0x01ad617c, 0x01b0fa8a,
0x01b49767, 0x01b83813, 0x01bbdc8d, 0x01bf84d6,
0x01c330ee, 0x01c6e0d4, 0x01ca9488, 0x01ce4c0b,
0x01d2075b, 0x01d5c679, 0x01d98964, 0x01dd501d,
0x01e11aa3, 0x01e4e8f6, 0x01e8bb17, 0x01ec9104,
0x01f06abd, 0x01f44844, 0x01f82996, 0x01fc0eb5,
0x01fff7a0, 0x0203e456, 0x0207d4d9, 0x020bc926,
0x020fc140, 0x0213bd24, 0x0217bcd4, 0x021bc04e,
0x021fc793, 0x0223d2a3, 0x0227e17d, 0x022bf421,
0x02300a90, 0x023424c8, 0x023842ca, 0x023c6495,
0x02408a2a, 0x0244b389, 0x0248e0b0, 0x024d11a0,
0x02514659, 0x02557eda, 0x0259bb24, 0x025dfb35,
0x02623f0f, 0x026686b1, 0x026ad21a, 0x026f214b,
0x02737443, 0x0277cb02, 0x027c2588, 0x028083d5,
0x0284e5e9, 0x02894bc2, 0x028db562, 0x029222c8,
0x029693f4, 0x029b08e6, 0x029f819d, 0x02a3fe19,
0x02a87e5b, 0x02ad0261, 0x02b18a2c, 0x02b615bb,
0x02baa50f, 0x02bf3827, 0x02c3cf03, 0x02c869a3,
0x02cd0807, 0x02d1aa2d, 0x02d65017, 0x02daf9c4,
0x02dfa734, 0x02e45866, 0x02e90d5b, 0x02edc612,
0x02f2828b, 0x02f742c6, 0x02fc06c2, 0x0300ce80,
0x030599ff, 0x030a6940, 0x030f3c40, 0x03141302,
0x0318ed84, 0x031dcbc6, 0x0322adc8, 0x0327938a,
0x032c7d0c, 0x03316a4c, 0x03365b4c, 0x033b500c,
0x03404889, 0x034544c6, 0x034a44c0, 0x034f4879,
0x03544ff0, 0x03595b24, 0x035e6a16, 0x03637cc5,
0x03689331, 0x036dad5a, 0x0372cb40, 0x0377ece2,
0x037d1240, 0x03823b5a, 0x03876830, 0x038c98c1,
0x0391cd0e, 0x03970516, 0x039c40d8, 0x03a18055,
0x03a6c38d, 0x03ac0a7f, 0x03b1552b, 0x03b6a390,
0x03bbf5af, 0x03c14b88, 0x03c6a519, 0x03cc0263,
0x03d16366, 0x03d6c821, 0x03dc3094, 0x03e19cc0,
0x03e70ca2, 0x03ec803d, 0x03f1f78e, 0x03f77296,
0x03fcf155, 0x040273cb, 0x0407f9f7, 0x040d83d9,
0x04131170, 0x0418a2bd, 0x041e37c0, 0x0423d077,
0x04296ce4, 0x042f0d04, 0x0434b0da, 0x043a5863,
0x044003a0, 0x0445b290, 0x044b6534, 0x04511b8b,
0x0456d595, 0x045c9352, 0x046254c1, 0x046819e1,
0x046de2b4, 0x0473af38, 0x04797f6e, 0x047f5355,
0x04852aec, 0x048b0635, 0x0490e52d, 0x0496c7d5,
0x049cae2e, 0x04a29836, 0x04a885ed, 0x04ae7753,
0x04b46c68, 0x04ba652b, 0x04c0619d, 0x04c661bc,
0x04cc658a, 0x04d26d04, 0x04d8782c, 0x04de8701,
0x04e49983, 0x04eaafb0, 0x04f0c98a, 0x04f6e710,
0x04fd0842, 0x05032d1e, 0x050955a6, 0x050f81d8,
0x0515b1b5, 0x051be53d, 0x05221c6e, 0x05285748,
0x052e95cc, 0x0534d7fa, 0x053b1dd0, 0x0541674e,
0x0547b475, 0x054e0544, 0x055459bb, 0x055ab1d8,
0x05610d9e, 0x05676d0a, 0x056dd01c, 0x057436d5,
0x057aa134, 0x05810f38, 0x058780e2, 0x058df631,
0x05946f25, 0x059aebbe, 0x05a16bfa, 0x05a7efdb,
0x05ae775f, 0x05b50287, 0x05bb9152, 0x05c223c0,
0x05c8b9d0, 0x05cf5382, 0x05d5f0d6, 0x05dc91cc,
0x05e33663, 0x05e9de9c, 0x05f08a74, 0x05f739ee,
0x05fded07, 0x0604a3c0, 0x060b5e19, 0x06121c11,
0x0618dda8, 0x061fa2dd, 0x06266bb1, 0x062d3822,
0x06340831, 0x063adbde, 0x0641b327, 0x06488e0e,
0x064f6c90, 0x06564eaf, 0x065d346a, 0x06641dc0,
0x066b0ab1, 0x0671fb3d, 0x0678ef64, 0x067fe724,
0x0686e27f, 0x068de173, 0x0694e400, 0x069bea27,
0x06a2f3e6, 0x06aa013d, 0x06b1122c, 0x06b826b3,
0x06bf3ed1, 0x06c65a85, 0x06cd79d1, 0x06d49cb3,
0x06dbc32b, 0x06e2ed38, 0x06ea1adb, 0x06f14c13,
0x06f880df, 0x06ffb940, 0x0706f535, 0x070e34bd,
0x071577d9, 0x071cbe88, 0x072408c9, 0x072b569c,
0x0732a802, 0x0739fcf9, 0x07415582, 0x0748b19b,
0x07501145, 0x0757747f, 0x075edb49, 0x076645a3,
0x076db38c, 0x07752503, 0x077c9a09, 0x0784129e,
0x078b8ec0, 0x07930e6f, 0x079a91ac, 0x07a21876,
0x07a9a2cb, 0x07b130ad, 0x07b8c21b, 0x07c05714,
0x07c7ef98, 0x07cf8ba6, 0x07d72b3f, 0x07dece61,
0x07e6750e, 0x07ee1f43, 0x07f5cd01, 0x07fd7e48,
0x08053316, 0x080ceb6d, 0x0814a74a, 0x081c66af,
0x0824299a, 0x082bf00c, 0x0833ba03, 0x083b8780,
0x08435882, 0x084b2d09, 0x08530514, 0x085ae0a3,
0x0862bfb6, 0x086aa24c, 0x08728865, 0x087a7201,
0x08825f1e, 0x088a4fbe, 0x089243de, 0x089a3b80,
0x08a236a2, 0x08aa3545, 0x08b23767, 0x08ba3d09,
0x08c2462a, 0x08ca52c9, 0x08d262e7, 0x08da7682,
0x08e28d9c, 0x08eaa832, 0x08f2c645, 0x08fae7d4,
0x09030cdf, 0x090b3566, 0x09136168, 0x091b90e5,
0x0923c3dc, 0x092bfa4d, 0x09343437, 0x093c719b,
0x0944b277, 0x094cf6cc, 0x09553e99, 0x095d89dd,
0x0965d898, 0x096e2acb, 0x09768073, 0x097ed991,
0x09873625, 0x098f962e, 0x0997f9ac, 0x09a0609e,
0x09a8cb04, 0x09b138dd, 0x09b9aa29, 0x09c21ee8,
0x09ca9719, 0x09d312bc, 0x09db91d0, 0x09e41456,
0x09ec9a4b, 0x09f523b1, 0x09fdb087, 0x0a0640cc,
0x0a0ed47f, 0x0a176ba1, 0x0a200632, 0x0a28a42f,
0x0a31459a, 0x0a39ea72, 0x0a4292b5, 0x0a4b3e65,
0x0a53ed80, 0x0a5ca006, 0x0a6555f7, 0x0a6e0f51,
0x0a76cc16, 0x0a7f8c43, 0x0a884fda, 0x0a9116d9,
0x0a99e140, 0x0aa2af0e, 0x0aab8043, 0x0ab454df,
0x0abd2ce1, 0x0ac60849, 0x0acee716, 0x0ad7c948,
0x0ae0aede, 0x0ae997d9, 0x0af28437, 0x0afb73f7,
0x0b04671b, 0x0b0d5da0, 0x0b165788, 0x0b1f54d0,
0x0b285579, 0x0b315983, 0x0b3a60ec, 0x0b436bb5,
0x0b4c79dd, 0x0b558b63, 0x0b5ea048, 0x0b67b88a,
0x0b70d429, 0x0b79f324, 0x0b83157c, 0x0b8c3b30,
0x0b95643e, 0x0b9e90a8, 0x0ba7c06c, 0x0bb0f38a,
0x0bba2a01, 0x0bc363d1, 0x0bcca0f9, 0x0bd5e17a,
0x0bdf2552, 0x0be86c81, 0x0bf1b706, 0x0bfb04e2,
0x0c045613, 0x0c0daa99, 0x0c170274, 0x0c205da2,
0x0c29bc25, 0x0c331dfb, 0x0c3c8323, 0x0c45eb9e,
0x0c4f576a, 0x0c58c688, 0x0c6238f6, 0x0c6baeb5,
0x0c7527c3, 0x0c7ea421, 0x0c8823cd, 0x0c91a6c8,
0x0c9b2d10, 0x0ca4b6a6, 0x0cae4389, 0x0cb7d3b8,
0x0cc16732, 0x0ccafdf8, 0x0cd49809, 0x0cde3564,
0x0ce7d609, 0x0cf179f7, 0x0cfb212e, 0x0d04cbad,
0x0d0e7974, 0x0d182a83, 0x0d21ded8, 0x0d2b9673,
0x0d355154, 0x0d3f0f7a, 0x0d48d0e5, 0x0d529595,
0x0d5c5d88, 0x0d6628be, 0x0d6ff736, 0x0d79c8f1,
0x0d839dee, 0x0d8d762c, 0x0d9751aa, 0x0da13068,
0x0dab1266, 0x0db4f7a3, 0x0dbee01e, 0x0dc8cbd7,
0x0dd2bace, 0x0ddcad02, 0x0de6a272, 0x0df09b1e,
0x0dfa9705, 0x0e049627, 0x0e0e9883, 0x0e189e19,
0x0e22a6e8, 0x0e2cb2f0, 0x0e36c230, 0x0e40d4a7,
0x0e4aea56, 0x0e55033b, 0x0e5f1f56, 0x0e693ea6,
0x0e73612c, 0x0e7d86e5, 0x0e87afd3, 0x0e91dbf3,
0x0e9c0b46, 0x0ea63dcc, 0x0eb07383, 0x0ebaac6b,
0x0ec4e883, 0x0ecf27cc, 0x0ed96a44, 0x0ee3afea,
0x0eedf8bf, 0x0ef844c2, 0x0f0293f1, 0x0f0ce64e,
0x0f173bd6, 0x0f21948a, 0x0f2bf069, 0x0f364f72,
0x0f40b1a5, 0x0f4b1701, 0x0f557f86, 0x0f5feb32,
0x0f6a5a07, 0x0f74cc02, 0x0f7f4124, 0x0f89b96b,
0x0f9434d8, 0x0f9eb369, 0x0fa9351e, 0x0fb3b9f7,
0x0fbe41f3, 0x0fc8cd11, 0x0fd35b51, 0x0fddecb2,
0x0fe88134, 0x0ff318d5, 0x0ffdb397, 0x10085177,
0x1012f275, 0x101d9691, 0x10283dca, 0x1032e81f,
0x103d9591, 0x1048461e, 0x1052f9c5, 0x105db087,
0x10686a62, 0x10732756, 0x107de762, 0x1088aa87,
0x109370c2, 0x109e3a14, 0x10a9067c, 0x10b3d5f9,
0x10bea88b, 0x10c97e31, 0x10d456eb, 0x10df32b8,
0x10ea1197, 0x10f4f387, 0x10ffd889, 0x110ac09b,
0x1115abbe, 0x112099ef, 0x112b8b2f, 0x11367f7d,
0x114176d9, 0x114c7141, 0x11576eb6, 0x11626f36,
0x116d72c1, 0x11787957, 0x118382f6, 0x118e8f9e,
0x11999f4f, 0x11a4b207, 0x11afc7c7, 0x11bae08e,
0x11c5fc5a, 0x11d11b2c, 0x11dc3d02, 0x11e761dc,
0x11f289ba, 0x11fdb49b, 0x1208e27e, 0x12141362,
0x121f4747, 0x122a7e2d, 0x1235b812, 0x1240f4f6,
0x124c34d9, 0x125777b9, 0x1262bd96, 0x126e066f,
0x12795245, 0x1284a115, 0x128ff2e0, 0x129b47a5,
0x12a69f62, 0x12b1fa19, 0x12bd57c7, 0x12c8b86c,
0x12d41c08, 0x12df829a, 0x12eaec21, 0x12f6589c,
0x1301c80c, 0x130d3a6f, 0x1318afc4, 0x1324280b,
0x132fa344, 0x133b216d, 0x1346a286, 0x1352268e,
0x135dad85, 0x1369376a, 0x1374c43c, 0x138053fb,
0x138be6a5, 0x13977c3b, 0x13a314bb, 0x13aeb026,
0x13ba4e79, 0x13c5efb5, 0x13d193d9, 0x13dd3ae4,
0x13e8e4d6, 0x13f491ad, 0x14004169, 0x140bf40a,
0x1417a98f, 0x142361f7, 0x142f1d41, 0x143adb6d,
0x14469c79, 0x14526067, 0x145e2733, 0x1469f0df,
0x1475bd69, 0x14818cd0, 0x148d5f15, 0x14993435,
0x14a50c31, 0x14b0e707, 0x14bcc4b8, 0x14c8a542,
0x14d488a5, 0x14e06edf, 0x14ec57f1, 0x14f843d9,
0x15043297, 0x1510242a, 0x151c1892, 0x15280fcd,
0x153409db, 0x154006bc, 0x154c066e, 0x155808f1,
0x15640e43, 0x15701666, 0x157c2157, 0x15882f16,
0x15943fa2, 0x15a052fa, 0x15ac691f, 0x15b8820e,
0x15c49dc8, 0x15d0bc4c, 0x15dcdd98, 0x15e901ac,
0x15f52888, 0x1601522b, 0x160d7e93, 0x1619adc1,
0x1625dfb3, 0x16321469, 0x163e4be2, 0x164a861d,
0x1656c31a, 0x166302d8, 0x166f4555, 0x167b8a92,
0x1687d28e, 0x16941d47, 0x16a06abd, 0x16acbaf0,
0x16b90ddf, 0x16c56388, 0x16d1bbeb, 0x16de1707,
0x16ea74dd, 0x16f6d56a, 0x170338ae, 0x170f9ea8,
0x171c0758, 0x172872bd, 0x1734e0d6, 0x174151a2,
0x174dc520, 0x175a3b51, 0x1766b432, 0x17732fc3,
0x177fae04, 0x178c2ef4, 0x1798b292, 0x17a538dd,
0x17b1c1d4, 0x17be4d77, 0x17cadbc5, 0x17d76cbc,
0x17e4005d, 0x17f096a7, 0x17fd2f98, 0x1809cb31,
0x1816696f, 0x18230a53, 0x182faddc, 0x183c5408,
0x1848fcd7, 0x1855a849, 0x1862565c, 0x186f0710,
0x187bba64, 0x18887057, 0x189528e9, 0x18a1e417,
0x18aea1e3, 0x18bb624b, 0x18c8254d, 0x18d4eaea,
0x18e1b321, 0x18ee7df1, 0x18fb4b58, 0x19081b57,
0x1914edec, 0x1921c316, 0x192e9ad6, 0x193b7529,
0x19485210, 0x19553188, 0x19621393, 0x196ef82e,
0x197bdf59, 0x1988c913, 0x1995b55c, 0x19a2a432,
0x19af9594, 0x19bc8983, 0x19c97ffc, 0x19d67900,
0x19e3748d, 0x19f072a3, 0x19fd7341, 0x1a0a7665,
0x1a177c10, 0x1a248440, 0x1a318ef4, 0x1a3e9c2c,
0x1a4babe7, 0x1a58be24, 0x1a65d2e2, 0x1a72ea20,
0x1a8003de, 0x1a8d201a, 0x1a9a3ed4, 0x1aa7600c,
0x1ab483bf, 0x1ac1a9ee, 0x1aced297, 0x1adbfdba,
0x1ae92b56, 0x1af65b69, 0x1b038df4, 0x1b10c2f5,
0x1b1dfa6b, 0x1b2b3456, 0x1b3870b5, 0x1b45af87,
0x1b52f0ca, 0x1b60347f, 0x1b6d7aa4, 0x1b7ac339,
0x1b880e3c, 0x1b955bad, 0x1ba2ab8b, 0x1baffdd5,
0x1bbd528a, 0x1bcaa9a9, 0x1bd80332, 0x1be55f24,
0x1bf2bd7d, 0x1c001e3d, 0x1c0d8163, 0x1c1ae6ef,
0x1c284ede, 0x1c35b931, 0x1c4325e7, 0x1c5094fe,
0x1c5e0676, 0x1c6b7a4e, 0x1c78f085, 0x1c86691b,
0x1c93e40d, 0x1ca1615c, 0x1caee107, 0x1cbc630c,
0x1cc9e76b, 0x1cd76e23, 0x1ce4f733, 0x1cf2829a,
0x1d001057, 0x1d0da06a, 0x1d1b32d1, 0x1d28c78c,
0x1d365e9a, 0x1d43f7f9, 0x1d5193a9, 0x1d5f31aa,
0x1d6cd1f9, 0x1d7a7497, 0x1d881982, 0x1d95c0b9,
0x1da36a3c, 0x1db1160a, 0x1dbec422, 0x1dcc7482,
0x1dda272a, 0x1de7dc1a, 0x1df5934f, 0x1e034cca,
0x1e110889, 0x1e1ec68c, 0x1e2c86d1, 0x1e3a4958,
0x1e480e1f, 0x1e55d527, 0x1e639e6d, 0x1e7169f1,
0x1e7f37b2, 0x1e8d07af, 0x1e9ad9e8, 0x1ea8ae5b,
0x1eb68507, 0x1ec45dec, 0x1ed23908, 0x1ee0165b,
0x1eedf5e4, 0x1efbd7a1, 0x1f09bb92, 0x1f17a1b6,
0x1f258a0c, 0x1f337494, 0x1f41614b, 0x1f4f5032,
0x1f5d4146, 0x1f6b3489, 0x1f7929f7, 0x1f872191,
0x1f951b56, 0x1fa31744, 0x1fb1155b, 0x1fbf159a,
0x1fcd17ff, 0x1fdb1c8a, 0x1fe9233b, 0x1ff72c0f,
0x20053706, 0x2013441f, 0x2021535a, 0x202f64b4,
0x203d782e, 0x204b8dc6, 0x2059a57c, 0x2067bf4d,
0x2075db3b, 0x2083f942, 0x20921964, 0x20a03b9d,
0x20ae5fef, 0x20bc8657, 0x20caaed5, 0x20d8d967,
0x20e7060e, 0x20f534c7, 0x21036592, 0x2111986d,
0x211fcd59, 0x212e0454, 0x213c3d5d, 0x214a7872,
0x2158b594, 0x2166f4c1, 0x217535f8, 0x21837938,
0x2191be81, 0x21a005d0, 0x21ae4f26, 0x21bc9a81,
0x21cae7e0, 0x21d93742, 0x21e788a7, 0x21f5dc0e,
0x22043174, 0x221288da, 0x2220e23e, 0x222f3da0,
0x223d9afe, 0x224bfa58, 0x225a5bac, 0x2268bef9,
0x2277243f, 0x22858b7c, 0x2293f4b0, 0x22a25fda,
0x22b0ccf7, 0x22bf3c09, 0x22cdad0d, 0x22dc2002,
0x22ea94e8, 0x22f90bbd, 0x23078481, 0x2315ff33,
0x23247bd1, 0x2332fa5b, 0x23417acf, 0x234ffd2c,
0x235e8172, 0x236d07a0, 0x237b8fb4, 0x238a19ae,
0x2398a58c, 0x23a7334d, 0x23b5c2f1, 0x23c45477,
0x23d2e7dd, 0x23e17d22, 0x23f01446, 0x23fead47,
0x240d4824, 0x241be4dd, 0x242a8370, 0x243923dd,
0x2447c622, 0x24566a3e, 0x24651030, 0x2473b7f8,
0x24826194, 0x24910d03, 0x249fba44, 0x24ae6956,
0x24bd1a39, 0x24cbccea, 0x24da816a, 0x24e937b6,
0x24f7efcf, 0x2506a9b2, 0x25156560, 0x252422d6,
0x2532e214, 0x2541a319, 0x255065e4, 0x255f2a74,
0x256df0c7, 0x257cb8dd, 0x258b82b4, 0x259a4e4c,
0x25a91ba4, 0x25b7eaba, 0x25c6bb8d, 0x25d58e1d,
0x25e46269, 0x25f3386e, 0x2602102d, 0x2610e9a4,
0x261fc4d2, 0x262ea1b7, 0x263d8050, 0x264c609d,
0x265b429e, 0x266a2650, 0x26790bb3, 0x2687f2c6,
0x2696db87, 0x26a5c5f6, 0x26b4b212, 0x26c39fda,
0x26d28f4b, 0x26e18067, 0x26f0732a, 0x26ff6795,
0x270e5da6, 0x271d555d, 0x272c4eb7, 0x273b49b5,
0x274a4654, 0x27594494, 0x27684474, 0x277745f3,
0x27864910, 0x27954dc9, 0x27a4541e, 0x27b35c0d,
0x27c26595, 0x27d170b6, 0x27e07d6e, 0x27ef8bbd,
0x27fe9ba0, 0x280dad17, 0x281cc021, 0x282bd4be,
0x283aeaea, 0x284a02a7, 0x28591bf2, 0x286836ca,
0x2877532f, 0x28867120, 0x2895909a, 0x28a4b19e,
0x28b3d42a, 0x28c2f83c, 0x28d21dd5, 0x28e144f2,
0x28f06d94, 0x28ff97b7, 0x290ec35c, 0x291df082,
0x292d1f27, 0x293c4f4a, 0x294b80ea, 0x295ab407,
0x2969e89e, 0x29791eaf, 0x29885639, 0x29978f3a,
0x29a6c9b2, 0x29b605a0, 0x29c54301, 0x29d481d6,
0x29e3c21d, 0x29f303d5, 0x2a0246fd, 0x2a118b94,
0x2a20d198, 0x2a301909, 0x2a3f61e5, 0x2a4eac2c,
0x2a5df7dc, 0x2a6d44f4, 0x2a7c9373, 0x2a8be358,
0x2a9b34a2, 0x2aaa874f, 0x2ab9db5f, 0x2ac930d1,
0x2ad887a2, 0x2ae7dfd3, 0x2af73962, 0x2b06944e,
0x2b15f096, 0x2b254e38, 0x2b34ad34, 0x2b440d88,
0x2b536f34, 0x2b62d236, 0x2b72368d, 0x2b819c38,
0x2b910336, 0x2ba06b85, 0x2bafd525, 0x2bbf4015,
0x2bceac53, 0x2bde19de, 0x2bed88b5, 0x2bfcf8d7,
0x2c0c6a42, 0x2c1bdcf7, 0x2c2b50f3, 0x2c3ac635,
0x2c4a3cbc, 0x2c59b488, 0x2c692d97, 0x2c78a7e7,
0x2c882378, 0x2c97a048, 0x2ca71e57, 0x2cb69da4,
0x2cc61e2c, 0x2cd59fef, 0x2ce522ec, 0x2cf4a722,
0x2d042c90, 0x2d13b333, 0x2d233b0c, 0x2d32c419,
0x2d424e59, 0x2d51d9cb, 0x2d61666e, 0x2d70f440,
0x2d808340, 0x2d90136d, 0x2d9fa4c7, 0x2daf374c,
0x2dbecafa, 0x2dce5fd1, 0x2dddf5cf, 0x2ded8cf3,
0x2dfd253d, 0x2e0cbeaa, 0x2e1c593b, 0x2e2bf4ed,
0x2e3b91bf, 0x2e4b2fb1, 0x2e5acec1, 0x2e6a6eee,
0x2e7a1037, 0x2e89b29a, 0x2e995617, 0x2ea8faad,
0x2eb8a059, 0x2ec8471c, 0x2ed7eef3, 0x2ee797de,
0x2ef741dc, 0x2f06eceb, 0x2f16990a, 0x2f264638,
0x2f35f474, 0x2f45a3bd, 0x2f555411, 0x2f650570,
0x2f74b7d8, 0x2f846b47, 0x2f941fbe, 0x2fa3d53a,
0x2fb38bbb, 0x2fc3433f, 0x2fd2fbc5, 0x2fe2b54c,
0x2ff26fd3, 0x30022b58, 0x3011e7db, 0x3021a55a,
0x303163d4, 0x30412348, 0x3050e3b4, 0x3060a518,
0x30706773, 0x30802ac2, 0x308fef06, 0x309fb43c,
0x30af7a64, 0x30bf417d, 0x30cf0984, 0x30ded27a,
0x30ee9c5c, 0x30fe672a, 0x310e32e3, 0x311dff85,
0x312dcd0f, 0x313d9b80, 0x314d6ad6, 0x315d3b11,
0x316d0c30, 0x317cde31, 0x318cb112, 0x319c84d4,
0x31ac5974, 0x31bc2ef1, 0x31cc054a, 0x31dbdc7f,
0x31ebb48d, 0x31fb8d74, 0x320b6732, 0x321b41c7,
0x322b1d30, 0x323af96e, 0x324ad67e, 0x325ab45f,
0x326a9310, 0x327a7291, 0x328a52df, 0x329a33fa,
0x32aa15e1, 0x32b9f892, 0x32c9dc0b, 0x32d9c04d,
0x32e9a555, 0x32f98b22, 0x330971b4, 0x33195908,
0x3329411f, 0x333929f6, 0x3349138c, 0x3358fde1,
0x3368e8f2, 0x3378d4bf, 0x3388c147, 0x3398ae88,
0x33a89c81, 0x33b88b32, 0x33c87a97, 0x33d86ab2,
0x33e85b7f, 0x33f84cff, 0x34083f30, 0x34183210,
0x3428259f, 0x343819da, 0x34480ec2, 0x34580455,
0x3467fa91, 0x3477f176, 0x3487e902, 0x3497e133,
0x34a7da0a, 0x34b7d384, 0x34c7cda0, 0x34d7c85d,
0x34e7c3bb, 0x34f7bfb6, 0x3507bc50, 0x3517b985,
0x3527b755, 0x3537b5bf, 0x3547b4c2, 0x3557b45c,
0x3567b48c, 0x3577b551, 0x3587b6aa, 0x3597b895,
0x35a7bb11, 0x35b7be1d, 0x35c7c1b8, 0x35d7c5e1,
0x35e7ca96, 0x35f7cfd6, 0x3607d5a0, 0x3617dbf2,
0x3627e2cc, 0x3637ea2c, 0x3647f211, 0x3657fa7a,
0x36680365, 0x36780cd2, 0x368816bf, 0x3698212a,
0x36a82c13, 0x36b83779, 0x36c84359, 0x36d84fb4,
0x36e85c87, 0x36f869d2, 0x37087793, 0x371885c9,
0x37289473, 0x3738a38f, 0x3748b31c, 0x3758c31a,
0x3768d386, 0x3778e461, 0x3788f5a7, 0x37990759,
0x37a91974, 0x37b92bf8, 0x37c93ee4, 0x37d95236,
0x37e965ed, 0x37f97a07, 0x38098e84, 0x3819a363,
0x3829b8a1, 0x3839ce3f, 0x3849e439, 0x3859fa91,
0x386a1143, 0x387a284f, 0x388a3fb4, 0x389a5770,
0x38aa6f82, 0x38ba87e9, 0x38caa0a4, 0x38dab9b2,
0x38ead310, 0x38faecbf, 0x390b06bc, 0x391b2107,
0x392b3b9e, 0x393b5680, 0x394b71ab, 0x395b8d20,
0x396ba8db, 0x397bc4dd, 0x398be123, 0x399bfdad,
0x39ac1a7a, 0x39bc3787, 0x39cc54d4, 0x39dc7260,
0x39ec902a, 0x39fcae2f, 0x3a0ccc6f, 0x3a1ceae9,
0x3a2d099c, 0x3a3d2885, 0x3a4d47a4, 0x3a5d66f9,
0x3a6d8680, 0x3a7da63a, 0x3a8dc624, 0x3a9de63f,
0x3aae0688, 0x3abe26fe, 0x3ace47a0, 0x3ade686c,
0x3aee8963, 0x3afeaa81, 0x3b0ecbc7, 0x3b1eed32,
0x3b2f0ec2, 0x3b3f3075, 0x3b4f524a, 0x3b5f7440,
0x3b6f9655, 0x3b7fb889, 0x3b8fdad9, 0x3b9ffd46,
0x3bb01fcd, 0x3bc0426d, 0x3bd06526, 0x3be087f5,
0x3bf0aada, 0x3c00cdd3, 0x3c10f0df, 0x3c2113fe,
0x3c31372c, 0x3c415a6a, 0x3c517db6, 0x3c61a10f,
0x3c71c474, 0x3c81e7e3, 0x3c920b5b, 0x3ca22edb,
0x3cb25262, 0x3cc275ee, 0x3cd2997e, 0x3ce2bd11,
0x3cf2e0a6, 0x3d03043b, 0x3d1327cf, 0x3d234b61,
0x3d336ef0, 0x3d43927a, 0x3d53b5fe, 0x3d63d97b,
0x3d73fcf0, 0x3d84205c, 0x3d9443bc, 0x3da46711,
0x3db48a58, 0x3dc4ad90, 0x3dd4d0b9, 0x3de4f3d1,
0x3df516d6, 0x3e0539c8, 0x3e155ca5, 0x3e257f6c,
0x3e35a21c, 0x3e45c4b4, 0x3e55e731, 0x3e660993,
0x3e762bda, 0x3e864e02, 0x3e96700c, 0x3ea691f6,
0x3eb6b3bf, 0x3ec6d565, 0x3ed6f6e7, 0x3ee71845,
0x3ef7397c, 0x3f075a8c, 0x3f177b73, 0x3f279c30,
0x3f37bcc2, 0x3f47dd27, 0x3f57fd5f, 0x3f681d67,
0x3f783d40, 0x3f885ce7, 0x3f987c5b, 0x3fa89b9c,
0x3fb8baa7, 0x3fc8d97c, 0x3fd8f819, 0x3fe9167d,
0x3ff934a7, 0x40095296, 0x40197048, 0x40298dbc,
0x4039aaf1, 0x4049c7e6, 0x4059e499, 0x406a0109,
0x407a1d36, 0x408a391c, 0x409a54bd, 0x40aa7015,
0x40ba8b24, 0x40caa5e9, 0x40dac063, 0x40eada8f,
0x40faf46e, 0x410b0dfd, 0x411b273c, 0x412b4029,
0x413b58c3, 0x414b7109, 0x415b88f9, 0x416ba093,
0x417bb7d5, 0x418bcebd, 0x419be54b, 0x41abfb7d,
0x41bc1153, 0x41cc26ca, 0x41dc3be2, 0x41ec5099,
0x41fc64ee, 0x420c78e0, 0x421c8c6e, 0x422c9f96,
0x423cb258, 0x424cc4b1, 0x425cd6a1, 0x426ce827,
0x427cf940, 0x428d09ed, 0x429d1a2c, 0x42ad29fb,
0x42bd3959, 0x42cd4845, 0x42dd56be, 0x42ed64c3,
0x42fd7252, 0x430d7f6a, 0x431d8c0a, 0x432d9831,
0x433da3dd, 0x434daf0d, 0x435db9c0, 0x436dc3f5,
0x437dcdaa, 0x438dd6df, 0x439ddf91, 0x43ade7c0,
0x43bdef6b, 0x43cdf690, 0x43ddfd2f, 0x43ee0345,
0x43fe08d2, 0x440e0dd4, 0x441e124a, 0x442e1633,
0x443e198e, 0x444e1c5a, 0x445e1e95, 0x446e203d,
0x447e2153, 0x448e21d4, 0x449e21c0, 0x44ae2114,
0x44be1fd1, 0x44ce1df4, 0x44de1b7c, 0x44ee1869,
0x44fe14b9, 0x450e106b, 0x451e0b7d, 0x452e05ee,
0x453dffbe, 0x454df8eb, 0x455df173, 0x456de955,
0x457de091, 0x458dd725, 0x459dcd10, 0x45adc250,
0x45bdb6e5, 0x45cdaacc, 0x45dd9e06, 0x45ed9090,
0x45fd826a, 0x460d7392, 0x461d6407, 0x462d53c8,
0x463d42d3, 0x464d3128, 0x465d1ec5, 0x466d0ba9,
0x467cf7d3, 0x468ce341, 0x469ccdf3, 0x46acb7e7,
0x46bca11b, 0x46cc898f, 0x46dc7142, 0x46ec5832,
0x46fc3e5f, 0x470c23c6, 0x471c0866, 0x472bec3f,
0x473bcf4f, 0x474bb196, 0x475b9311, 0x476b73c0,
0x477b53a1, 0x478b32b3, 0x479b10f5, 0x47aaee66,
0x47bacb05, 0x47caa6d0, 0x47da81c6, 0x47ea5be6,
0x47fa352f, 0x480a0da0, 0x4819e537, 0x4829bbf3,
0x483991d3, 0x484966d6, 0x48593afa, 0x48690e3f,
0x4878e0a3, 0x4888b225, 0x489882c3, 0x48a8527e,
0x48b82152, 0x48c7ef40, 0x48d7bc46, 0x48e78863,
0x48f75395, 0x49071ddc, 0x4916e736, 0x4926afa2,
0x4936771f, 0x49463dab, 0x49560346, 0x4965c7ef,
0x49758ba3, 0x49854e62, 0x4995102b, 0x49a4d0fd,
0x49b490d6, 0x49c44fb5, 0x49d40d99, 0x49e3ca81,
0x49f3866c, 0x4a034158, 0x4a12fb44, 0x4a22b430,
0x4a326c19, 0x4a4222ff, 0x4a51d8e0, 0x4a618dbc,
0x4a714191, 0x4a80f45f, 0x4a90a623, 0x4aa056dc,
0x4ab0068a, 0x4abfb52c, 0x4acf62bf, 0x4adf0f44,
0x4aeebab8, 0x4afe651b, 0x4b0e0e6b, 0x4b1db6a8,
0x4b2d5dd0, 0x4b3d03e2, 0x4b4ca8dc, 0x4b5c4cbf,
0x4b6bef87, 0x4b7b9135, 0x4b8b31c7, 0x4b9ad13c,
0x4baa6f93, 0x4bba0cca, 0x4bc9a8e1, 0x4bd943d6,
0x4be8dda9, 0x4bf87657, 0x4c080de0, 0x4c17a443,
0x4c27397e, 0x4c36cd91, 0x4c46607a, 0x4c55f238,
0x4c6582ca, 0x4c75122f, 0x4c84a065, 0x4c942d6c,
0x4ca3b942, 0x4cb343e6, 0x4cc2cd57, 0x4cd25594,
0x4ce1dc9b, 0x4cf1626d, 0x4d00e706, 0x4d106a67,
0x4d1fec8e, 0x4d2f6d7a, 0x4d3eed2a, 0x4d4e6b9c,
0x4d5de8d0, 0x4d6d64c5, 0x4d7cdf78, 0x4d8c58ea,
0x4d9bd119, 0x4dab4804, 0x4dbabda9, 0x4dca3208,
0x4dd9a51f, 0x4de916ee, 0x4df88773, 0x4e07f6ad,
0x4e17649b, 0x4e26d13c, 0x4e363c8e, 0x4e45a691,
0x4e550f43, 0x4e6476a4, 0x4e73dcb2, 0x4e83416b,
0x4e92a4d0, 0x4ea206df, 0x4eb16796, 0x4ec0c6f5,
0x4ed024fa, 0x4edf81a4, 0x4eeedcf3, 0x4efe36e4,
0x4f0d8f78, 0x4f1ce6ad, 0x4f2c3c81, 0x4f3b90f4,
0x4f4ae404, 0x4f5a35b1, 0x4f6985f9, 0x4f78d4db,
0x4f882256, 0x4f976e6a, 0x4fa6b914, 0x4fb60253,
0x4fc54a28, 0x4fd49090, 0x4fe3d58a, 0x4ff31916,
0x50025b32, 0x50119bdd, 0x5020db16, 0x503018dc,
0x503f552e, 0x504e900b, 0x505dc971, 0x506d0160,
0x507c37d6, 0x508b6cd2, 0x509aa054, 0x50a9d25a,
0x50b902e4, 0x50c831ef, 0x50d75f7b, 0x50e68b87,
0x50f5b611, 0x5104df1a, 0x5114069f, 0x51232c9f,
0x5132511a, 0x5141740e, 0x5150957a, 0x515fb55e,
0x516ed3b8, 0x517df086, 0x518d0bc9, 0x519c257f,
0x51ab3da6, 0x51ba543e, 0x51c96946, 0x51d87cbc,
0x51e78ea0, 0x51f69ef1, 0x5205adac, 0x5214bad2,
0x5223c662, 0x5232d059, 0x5241d8b8, 0x5250df7d,
0x525fe4a7, 0x526ee834, 0x527dea25, 0x528cea78,
0x529be92b, 0x52aae63e, 0x52b9e1b0, 0x52c8db7f,
0x52d7d3ab, 0x52e6ca33, 0x52f5bf15, 0x5304b250,
0x5313a3e4, 0x532293cf, 0x53318211, 0x53406ea8,
0x534f5993, 0x535e42d1, 0x536d2a61, 0x537c1043,
0x538af474, 0x5399d6f5, 0x53a8b7c4, 0x53b796df,
0x53c67447, 0x53d54ff9, 0x53e429f5, 0x53f3023a,
0x5401d8c7, 0x5410ad9b, 0x541f80b4, 0x542e5213,
0x543d21b5, 0x544bef99, 0x545abbc0, 0x54698627,
0x54784ecd, 0x548715b2, 0x5495dad5, 0x54a49e35,
0x54b35fd0, 0x54c21fa5, 0x54d0ddb5, 0x54df99fc,
0x54ee547b, 0x54fd0d31, 0x550bc41d, 0x551a793c,
0x55292c90, 0x5537de16, 0x55468dcd, 0x55553bb5,
0x5563e7cd, 0x55729213, 0x55813a86, 0x558fe126,
0x559e85f2, 0x55ad28e8, 0x55bbca08, 0x55ca6950,
0x55d906c0, 0x55e7a256, 0x55f63c12, 0x5604d3f3,
0x561369f7, 0x5621fe1e, 0x56309067, 0x563f20d0,
0x564daf59, 0x565c3c01, 0x566ac6c7, 0x56794fa9,
0x5687d6a7, 0x56965bc0, 0x56a4def3, 0x56b3603f,
0x56c1dfa3, 0x56d05d1e, 0x56ded8af, 0x56ed5255,
0x56fbca0f, 0x570a3fdc, 0x5718b3bb, 0x572725ab,
0x573595ac, 0x574403bc, 0x57526fdb, 0x5760da06,
0x576f423f, 0x577da882, 0x578c0cd1, 0x579a6f29,
0x57a8cf89, 0x57b72df1, 0x57c58a60, 0x57d3e4d5,
0x57e23d4f, 0x57f093cc, 0x57fee84d, 0x580d3ad0,
0x581b8b54, 0x5829d9d8, 0x5838265b, 0x584670dd,
0x5854b95c, 0x5862ffd7, 0x5871444e, 0x587f86c0,
0x588dc72c, 0x589c0590, 0x58aa41ec, 0x58b87c3f,
0x58c6b488, 0x58d4eac6, 0x58e31ef8, 0x58f1511e,
0x58ff8136, 0x590daf40, 0x591bdb3a, 0x592a0523,
0x59382cfb, 0x594652c2, 0x59547675, 0x59629814,
0x5970b79e, 0x597ed513, 0x598cf070, 0x599b09b7,
0x59a920e4, 0x59b735f9, 0x59c548f3, 0x59d359d2,
0x59e16895, 0x59ef753b, 0x59fd7fc3, 0x5a0b882c,
0x5a198e76, 0x5a2792a0, 0x5a3594a8, 0x5a43948e,
0x5a519251, 0x5a5f8def, 0x5a6d8769, 0x5a7b7ebe,
0x5a8973eb, 0x5a9766f1, 0x5aa557cf, 0x5ab34684,
0x5ac1330f, 0x5acf1d6e, 0x5add05a2, 0x5aeaeba9,
0x5af8cf83, 0x5b06b12e, 0x5b1490aa, 0x5b226df6,
0x5b304912, 0x5b3e21fb, 0x5b4bf8b2, 0x5b59cd35,
0x5b679f84, 0x5b756f9d, 0x5b833d81, 0x5b91092e,
0x5b9ed2a3, 0x5bac99df, 0x5bba5ee2, 0x5bc821ab,
0x5bd5e239, 0x5be3a08b, 0x5bf15ca0, 0x5bff1678,
0x5c0cce11, 0x5c1a836c, 0x5c283686, 0x5c35e75f,
0x5c4395f6, 0x5c51424b, 0x5c5eec5d, 0x5c6c942b,
0x5c7a39b3, 0x5c87dcf6, 0x5c957df2, 0x5ca31ca7,
0x5cb0b914, 0x5cbe5338, 0x5ccbeb11, 0x5cd980a1,
0x5ce713e4, 0x5cf4a4dc, 0x5d023386, 0x5d0fbfe3,
0x5d1d49f1, 0x5d2ad1b0, 0x5d38571e, 0x5d45da3c,
0x5d535b07, 0x5d60d980, 0x5d6e55a6, 0x5d7bcf78,
0x5d8946f4, 0x5d96bc1b, 0x5da42eeb, 0x5db19f64,
0x5dbf0d85, 0x5dcc794d, 0x5dd9e2bc, 0x5de749d0,
0x5df4ae89, 0x5e0210e6, 0x5e0f70e6, 0x5e1cce89,
0x5e2a29ce, 0x5e3782b3, 0x5e44d939, 0x5e522d5e,
0x5e5f7f23, 0x5e6cce85, 0x5e7a1b84, 0x5e876620,
0x5e94ae57, 0x5ea1f429, 0x5eaf3796, 0x5ebc789c,
0x5ec9b73b, 0x5ed6f372, 0x5ee42d40, 0x5ef164a4,
0x5efe999f, 0x5f0bcc2e, 0x5f18fc51, 0x5f262a09,
0x5f335553, 0x5f407e2f, 0x5f4da49c, 0x5f5ac89a,
0x5f67ea28, 0x5f750945, 0x5f8225f1, 0x5f8f402a,
0x5f9c57f1, 0x5fa96d44, 0x5fb68022, 0x5fc3908b,
0x5fd09e7f, 0x5fdda9fb, 0x5feab301, 0x5ff7b98f,
0x6004bda4, 0x6011bf40, 0x601ebe61, 0x602bbb08,
0x6038b534, 0x6045ace3, 0x6052a215, 0x605f94ca,
0x606c8501, 0x607972b9, 0x60865df1, 0x609346a9,
0x60a02ce0, 0x60ad1095, 0x60b9f1c8, 0x60c6d078,
0x60d3aca4, 0x60e0864c, 0x60ed5d6f, 0x60fa320c,
0x61070423, 0x6113d3b3, 0x6120a0bb, 0x612d6b3b,
0x613a3331, 0x6146f89e, 0x6153bb81, 0x61607bd9,
0x616d39a5, 0x6179f4e4, 0x6186ad97, 0x619363bc,
0x61a01753, 0x61acc85a, 0x61b976d3, 0x61c622bb,
0x61d2cc12, 0x61df72d8, 0x61ec170b, 0x61f8b8ac,
0x620557ba, 0x6211f433, 0x621e8e18, 0x622b2567,
0x6237ba21, 0x62444c44, 0x6250dbcf, 0x625d68c3,
0x6269f31f, 0x62767ae2, 0x6283000b, 0x628f8299,
0x629c028d, 0x62a87fe5, 0x62b4faa2, 0x62c172c1,
0x62cde843, 0x62da5b28, 0x62e6cb6e, 0x62f33914,
0x62ffa41b, 0x630c0c82, 0x63187248, 0x6324d56c,
0x633135ee, 0x633d93ce, 0x6349ef0a, 0x635647a2,
0x63629d96, 0x636ef0e5, 0x637b418e, 0x63878f91,
0x6393daee, 0x63a023a3, 0x63ac69b0, 0x63b8ad15,
0x63c4edd0, 0x63d12be2, 0x63dd674a, 0x63e9a007,
0x63f5d619, 0x6402097f, 0x640e3a38, 0x641a6845,
0x642693a4, 0x6432bc55, 0x643ee257, 0x644b05aa,
0x6457264d, 0x64634440, 0x646f5f83, 0x647b7813,
0x64878df2, 0x6493a11f, 0x649fb198, 0x64abbf5e,
0x64b7ca70, 0x64c3d2ce, 0x64cfd876, 0x64dbdb68,
0x64e7dba5, 0x64f3d92b, 0x64ffd3f9, 0x650bcc10,
0x6517c16e, 0x6523b414, 0x652fa401, 0x653b9133,
0x65477bac, 0x65536369, 0x655f486c, 0x656b2ab2,
0x65770a3c, 0x6582e70a, 0x658ec11a, 0x659a986c,
0x65a66d00, 0x65b23ed5, 0x65be0dea, 0x65c9da40,
0x65d5a3d6, 0x65e16aab, 0x65ed2ebe, 0x65f8f010,
0x6604aea0, 0x66106a6d, 0x661c2377, 0x6627d9bd,
0x66338d3f, 0x663f3dfc, 0x664aebf5, 0x66569727,
0x66623f94, 0x666de53b, 0x6679881a, 0x66852832,
0x6690c582, 0x669c600a, 0x66a7f7c9, 0x66b38cbf,
0x66bf1eec, 0x66caae4e, 0x66d63ae6, 0x66e1c4b2,
0x66ed4bb3, 0x66f8cfe9, 0x67045152, 0x670fcfee,
0x671b4bbd, 0x6726c4bf, 0x67323af2, 0x673dae57,
0x67491eed, 0x67548cb4, 0x675ff7ab, 0x676b5fd1,
0x6776c527, 0x678227ad, 0x678d8760, 0x6798e442,
0x67a43e52, 0x67af958e, 0x67bae9f8, 0x67c63b8f,
0x67d18a51, 0x67dcd63f, 0x67e81f58, 0x67f3659d,
0x67fea90b, 0x6809e9a4, 0x68152767, 0x68206253,
0x682b9a68, 0x6836cfa5, 0x6842020b, 0x684d3198,
0x68585e4d, 0x68638828, 0x686eaf2b, 0x6879d353,
0x6884f4a2, 0x68901316, 0x689b2eaf, 0x68a6476d,
0x68b15d4f, 0x68bc7055, 0x68c7807f, 0x68d28dcc,
0x68dd983d, 0x68e89fd0, 0x68f3a485, 0x68fea65c,
0x6909a554, 0x6914a16e, 0x691f9aa8, 0x692a9104,
0x6935847f, 0x6940751a, 0x694b62d4, 0x69564dae,
0x696135a6, 0x696c1abd, 0x6976fcf2, 0x6981dc45,
0x698cb8b5, 0x69979242, 0x69a268ed, 0x69ad3cb3,
0x69b80d96, 0x69c2db95, 0x69cda6af, 0x69d86ee5,
0x69e33435, 0x69edf6a0, 0x69f8b625, 0x6a0372c4,
0x6a0e2c7d, 0x6a18e350, 0x6a23973b, 0x6a2e483f,
0x6a38f65c, 0x6a43a191, 0x6a4e49dd, 0x6a58ef42,
0x6a6391bd, 0x6a6e3150, 0x6a78cdf9, 0x6a8367b9,
0x6a8dfe8f, 0x6a98927b, 0x6aa3237c, 0x6aadb193,
0x6ab83cbf, 0x6ac2c4ff, 0x6acd4a54, 0x6ad7ccbe,
0x6ae24c3b, 0x6aecc8cc, 0x6af74271, 0x6b01b928,
0x6b0c2cf3, 0x6b169dd0, 0x6b210bc0, 0x6b2b76c2,
0x6b35ded5, 0x6b4043fb, 0x6b4aa632, 0x6b55057a,
0x6b5f61d2, 0x6b69bb3c, 0x6b7411b6, 0x6b7e6540,
0x6b88b5db, 0x6b930384, 0x6b9d4e3e, 0x6ba79607,
0x6bb1dade, 0x6bbc1cc5, 0x6bc65bba, 0x6bd097be,
0x6bdad0cf, 0x6be506ef, 0x6bef3a1c, 0x6bf96a57,
0x6c03979f, 0x6c0dc1f5, 0x6c17e957, 0x6c220dc5,
0x6c2c2f40, 0x6c364dc8, 0x6c40695b, 0x6c4a81fb,
0x6c5497a6, 0x6c5eaa5c, 0x6c68ba1e, 0x6c72c6eb,
0x6c7cd0c2, 0x6c86d7a5, 0x6c90db92, 0x6c9adc89,
0x6ca4da8a, 0x6caed595, 0x6cb8cdaa, 0x6cc2c2c9,
0x6cccb4f1, 0x6cd6a423, 0x6ce0905d, 0x6cea79a1,
0x6cf45fed, 0x6cfe4341, 0x6d08239f, 0x6d120104,
0x6d1bdb72, 0x6d25b2e7, 0x6d2f8764, 0x6d3958e9,
0x6d432776, 0x6d4cf30a, 0x6d56bba5, 0x6d608147,
0x6d6a43f0, 0x6d74039f, 0x6d7dc056, 0x6d877a12,
0x6d9130d5, 0x6d9ae49f, 0x6da4956e, 0x6dae4344,
0x6db7ee1f, 0x6dc19600, 0x6dcb3ae6, 0x6dd4dcd2,
0x6dde7bc4, 0x6de817ba, 0x6df1b0b6, 0x6dfb46b6,
0x6e04d9bc, 0x6e0e69c6, 0x6e17f6d5, 0x6e2180e8,
0x6e2b0800, 0x6e348c1c, 0x6e3e0d3c, 0x6e478b61,
0x6e510689, 0x6e5a7eb6, 0x6e63f3e6, 0x6e6d661a,
0x6e76d552, 0x6e80418d, 0x6e89aacc, 0x6e93110e,
0x6e9c7453, 0x6ea5d49c, 0x6eaf31e8, 0x6eb88c37,
0x6ec1e388, 0x6ecb37dd, 0x6ed48935, 0x6eddd790,
0x6ee722ed, 0x6ef06b4d, 0x6ef9b0af, 0x6f02f314,
0x6f0c327b, 0x6f156ee5, 0x6f1ea852, 0x6f27dec0,
0x6f311231, 0x6f3a42a4, 0x6f437019, 0x6f4c9a90,
0x6f55c209, 0x6f5ee685, 0x6f680802, 0x6f712681,
0x6f7a4202, 0x6f835a85, 0x6f8c700a, 0x6f958290,
0x6f9e9219, 0x6fa79ea3, 0x6fb0a82f, 0x6fb9aebc,
0x6fc2b24b, 0x6fcbb2dc, 0x6fd4b06e, 0x6fddab02,
0x6fe6a298, 0x6fef972f, 0x6ff888c8, 0x70017762,
0x700a62fe, 0x70134b9b, 0x701c313a, 0x702513db,
0x702df37d, 0x7036d021, 0x703fa9c6, 0x7048806c,
0x70515415, 0x705a24be, 0x7062f26a, 0x706bbd17,
0x707484c5, 0x707d4975, 0x70860b27, 0x708ec9db,
0x70978590, 0x70a03e47, 0x70a8f3ff, 0x70b1a6ba,
0x70ba5676, 0x70c30334, 0x70cbacf4, 0x70d453b5,
0x70dcf779, 0x70e5983f, 0x70ee3606, 0x70f6d0d0,
0x70ff689c, 0x7107fd6a, 0x71108f3a, 0x71191e0c,
0x7121a9e1, 0x712a32b8, 0x7132b891, 0x713b3b6d,
0x7143bb4b, 0x714c382c, 0x7154b210, 0x715d28f6,
0x71659cdf, 0x716e0dcb, 0x71767bba, 0x717ee6ab,
0x71874ea0, 0x718fb398, 0x71981593, 0x71a07492,
0x71a8d093, 0x71b12999, 0x71b97fa1, 0x71c1d2ae,
0x71ca22be, 0x71d26fd2, 0x71dab9e9, 0x71e30105,
0x71eb4525, 0x71f38649, 0x71fbc471, 0x7203ff9d,
0x720c37ce, 0x72146d04, 0x721c9f3e, 0x7224ce7d,
0x722cfac1, 0x7235240a, 0x723d4a58, 0x72456dac,
0x724d8e04, 0x7255ab63, 0x725dc5c6, 0x7265dd30,
0x726df19f, 0x72760314, 0x727e1190, 0x72861d11,
0x728e2599, 0x72962b27, 0x729e2dbc, 0x72a62d58,
0x72ae29fb, 0x72b623a5, 0x72be1a55, 0x72c60e0e,
0x72cdfecd, 0x72d5ec94, 0x72ddd763, 0x72e5bf3a,
0x72eda419, 0x72f58600, 0x72fd64f0, 0x730540e8,
0x730d19e8, 0x7314eff2, 0x731cc304, 0x73249320,
0x732c6045, 0x73342a74, 0x733bf1ac, 0x7343b5ee,
0x734b773a, 0x73533590, 0x735af0f1, 0x7362a95c,
0x736a5ed2, 0x73721153, 0x7379c0de, 0x73816d75,
0x73891718, 0x7390bdc6, 0x73986180, 0x73a00246,
0x73a7a019, 0x73af3af7, 0x73b6d2e3, 0x73be67db,
0x73c5f9e0, 0x73cd88f2, 0x73d51512, 0x73dc9e40,
0x73e4247b, 0x73eba7c4, 0x73f3281c, 0x73faa581,
0x74021ff6, 0x7409977a, 0x74110c0c, 0x74187dae,
0x741fec60, 0x74275821, 0x742ec0f2, 0x743626d4,
0x743d89c6, 0x7444e9c8, 0x744c46dc, 0x7453a100,
0x745af836, 0x74624c7e, 0x74699dd7, 0x7470ec43,
0x747837c1, 0x747f8051, 0x7486c5f5, 0x748e08ab,
0x74954874, 0x749c8552, 0x74a3bf42, 0x74aaf647,
0x74b22a61, 0x74b95b8f, 0x74c089d1, 0x74c7b529,
0x74cedd96, 0x74d60319, 0x74dd25b1, 0x74e44560,
0x74eb6225, 0x74f27c01, 0x74f992f4, 0x7500a6fe,
0x7507b81f, 0x750ec658, 0x7515d1a9, 0x751cda13,
0x7523df95, 0x752ae230, 0x7531e1e4, 0x7538deb2,
0x753fd899, 0x7546cf9a, 0x754dc3b6, 0x7554b4ec,
0x755ba33d, 0x75628ea9, 0x75697731, 0x75705cd4,
0x75773f94, 0x757e1f70, 0x7584fc69, 0x758bd67e,
0x7592adb1, 0x75998202, 0x75a05370, 0x75a721fd,
0x75adeda8, 0x75b4b672, 0x75bb7c5b, 0x75c23f64,
0x75c8ff8c, 0x75cfbcd5, 0x75d6773e, 0x75dd2ec7,
0x75e3e372, 0x75ea953e, 0x75f1442c, 0x75f7f03c,
0x75fe996f, 0x76053fc4, 0x760be33c, 0x761283d7,
0x76192197, 0x761fbc7a, 0x76265482, 0x762ce9ae,
0x76337c00, 0x763a0b77, 0x76409813, 0x764721d6,
0x764da8c0, 0x76542cd0, 0x765aae07, 0x76612c66,
0x7667a7ed, 0x766e209c, 0x76749674, 0x767b0974,
0x7681799e, 0x7687e6f2, 0x768e516f, 0x7694b918,
0x769b1dea, 0x76a17fe8, 0x76a7df12, 0x76ae3b67,
0x76b494e9, 0x76baeb97, 0x76c13f73, 0x76c7907b,
0x76cddeb2, 0x76d42a17, 0x76da72aa, 0x76e0b86c,
0x76e6fb5d, 0x76ed3b7e, 0x76f378d0, 0x76f9b351,
0x76ffeb04, 0x77061fe7, 0x770c51fd, 0x77128144,
0x7718adbe, 0x771ed76b, 0x7724fe4b, 0x772b225e,
0x773143a6, 0x77376222, 0x773d7dd3, 0x774396b9,
0x7749acd4, 0x774fc026, 0x7755d0ae, 0x775bde6e,
0x7761e964, 0x7767f192, 0x776df6f9, 0x7773f997,
0x7779f96f, 0x777ff681, 0x7785f0cc, 0x778be851,
0x7791dd11, 0x7797cf0c, 0x779dbe42, 0x77a3aab5,
0x77a99464, 0x77af7b4f, 0x77b55f78, 0x77bb40df,
0x77c11f84, 0x77c6fb67, 0x77ccd489, 0x77d2aaeb,
0x77d87e8c, 0x77de4f6e, 0x77e41d91, 0x77e9e8f5,
0x77efb19a, 0x77f57782, 0x77fb3aac, 0x7800fb19,
0x7806b8c9, 0x780c73be, 0x78122bf6, 0x7817e174,
0x781d9437, 0x78234440, 0x7828f18e, 0x782e9c24,
0x78344400, 0x7839e924, 0x783f8b91, 0x78452b45,
0x784ac843, 0x7850628a, 0x7855fa1b, 0x785b8ef7,
0x7861211d, 0x7866b08f, 0x786c3d4c, 0x7871c756,
0x78774ead, 0x787cd350, 0x78825542, 0x7887d482,
0x788d5110, 0x7892caee, 0x7898421b, 0x789db699,
0x78a32867, 0x78a89786, 0x78ae03f7, 0x78b36dba,
0x78b8d4d0, 0x78be3939, 0x78c39af5, 0x78c8fa05,
0x78ce566b, 0x78d3b025, 0x78d90735, 0x78de5b9b,
0x78e3ad57, 0x78e8fc6b, 0x78ee48d6, 0x78f3929a,
0x78f8d9b6, 0x78fe1e2b, 0x79035ffa, 0x79089f23,
0x790ddba7, 0x79131586, 0x79184cc1, 0x791d8158,
0x7922b34c, 0x7927e29d, 0x792d0f4c, 0x79323959,
0x793760c5, 0x793c8590, 0x7941a7bc, 0x7946c748,
0x794be434, 0x7950fe83, 0x79561633, 0x795b2b46,
0x79603dbb, 0x79654d95, 0x796a5ad3, 0x796f6575,
0x79746d7d, 0x797972ea, 0x797e75be, 0x798375f8,
0x7988739a, 0x798d6ea4, 0x79926716, 0x79975cf2,
0x799c5036, 0x79a140e5, 0x79a62eff, 0x79ab1a84,
0x79b00375, 0x79b4e9d2, 0x79b9cd9c, 0x79beaed3,
0x79c38d79, 0x79c8698c, 0x79cd430f, 0x79d21a02,
0x79d6ee65, 0x79dbc039, 0x79e08f7e, 0x79e55c35,
0x79ea265e, 0x79eeedfb, 0x79f3b30b, 0x79f8758f,
0x79fd3588, 0x7a01f2f6, 0x7a06addb, 0x7a0b6635,
0x7a101c07, 0x7a14cf51, 0x7a198012, 0x7a1e2e4c,
0x7a22da00, 0x7a27832e, 0x7a2c29d6, 0x7a30cdf9,
0x7a356f98, 0x7a3a0eb3, 0x7a3eab4b, 0x7a434560,
0x7a47dcf4, 0x7a4c7206, 0x7a510497, 0x7a5594a8,
0x7a5a2239, 0x7a5ead4c, 0x7a6335df, 0x7a67bbf5,
0x7a6c3f8e, 0x7a70c0aa, 0x7a753f4a, 0x7a79bb6f,
0x7a7e3518, 0x7a82ac47, 0x7a8720fd, 0x7a8b933a,
0x7a9002fe, 0x7a94704a, 0x7a98db1f, 0x7a9d437d,
0x7aa1a966, 0x7aa60cd8, 0x7aaa6dd6, 0x7aaecc60,
0x7ab32876, 0x7ab7821a, 0x7abbd94a, 0x7ac02e09,
0x7ac48057, 0x7ac8d034, 0x7acd1da2, 0x7ad168a0,
0x7ad5b12f, 0x7ad9f751, 0x7ade3b04, 0x7ae27c4b,
0x7ae6bb26, 0x7aeaf795, 0x7aef3199, 0x7af36933,
0x7af79e63, 0x7afbd12b, 0x7b000189, 0x7b042f80,
0x7b085b0f, 0x7b0c8438, 0x7b10aafc, 0x7b14cf59,
0x7b18f152, 0x7b1d10e7, 0x7b212e19, 0x7b2548e8,
0x7b296154, 0x7b2d7760, 0x7b318b0a, 0x7b359c54,
0x7b39ab3f, 0x7b3db7ca, 0x7b41c1f7, 0x7b45c9c7,
0x7b49cf3a, 0x7b4dd250, 0x7b51d30a, 0x7b55d16a,
0x7b59cd6f, 0x7b5dc71a, 0x7b61be6c, 0x7b65b366,
0x7b69a607, 0x7b6d9652, 0x7b718446, 0x7b756fe4,
0x7b79592d, 0x7b7d4021, 0x7b8124c2, 0x7b85070f,
0x7b88e709, 0x7b8cc4b2, 0x7b90a009, 0x7b947910,
0x7b984fc7, 0x7b9c242e, 0x7b9ff647, 0x7ba3c611,
0x7ba7938f, 0x7bab5ec0, 0x7baf27a4, 0x7bb2ee3e,
0x7bb6b28d, 0x7bba7492, 0x7bbe344d, 0x7bc1f1c0,
0x7bc5aceb, 0x7bc965ce, 0x7bcd1c6b, 0x7bd0d0c2,
0x7bd482d3, 0x7bd832a0, 0x7bdbe029, 0x7bdf8b6f,
0x7be33472, 0x7be6db33, 0x7bea7fb3, 0x7bee21f3,
0x7bf1c1f2, 0x7bf55fb2, 0x7bf8fb34, 0x7bfc9478,
0x7c002b7e, 0x7c03c049, 0x7c0752d7, 0x7c0ae32a,
0x7c0e7143, 0x7c11fd22, 0x7c1586c8, 0x7c190e35,
0x7c1c936b, 0x7c20166a, 0x7c239732, 0x7c2715c5,
0x7c2a9223, 0x7c2e0c4d, 0x7c318443, 0x7c34fa06,
0x7c386d97, 0x7c3bdef7, 0x7c3f4e25, 0x7c42bb24,
0x7c4625f3, 0x7c498e94, 0x7c4cf506, 0x7c50594b,
0x7c53bb64, 0x7c571b51, 0x7c5a7912, 0x7c5dd4a9,
0x7c612e16, 0x7c64855a, 0x7c67da75, 0x7c6b2d69,
0x7c6e7e36, 0x7c71ccdc, 0x7c75195d, 0x7c7863b9,
0x7c7babf0, 0x7c7ef205, 0x7c8235f6, 0x7c8577c5,
0x7c88b773, 0x7c8bf501, 0x7c8f306e, 0x7c9269bc,
0x7c95a0eb, 0x7c98d5fd, 0x7c9c08f2, 0x7c9f39ca,
0x7ca26886, 0x7ca59527, 0x7ca8bfaf, 0x7cabe81c,
0x7caf0e71, 0x7cb232ae, 0x7cb554d3, 0x7cb874e1,
0x7cbb92da, 0x7cbeaebd, 0x7cc1c88c, 0x7cc4e046,
0x7cc7f5ee, 0x7ccb0983, 0x7cce1b07, 0x7cd12a7a,
0x7cd437dc, 0x7cd7432f, 0x7cda4c73, 0x7cdd53a9,
0x7ce058d2, 0x7ce35bee, 0x7ce65cfe, 0x7ce95c03,
0x7cec58fe, 0x7cef53ef, 0x7cf24cd6, 0x7cf543b6,
0x7cf8388e, 0x7cfb2b5f, 0x7cfe1c2a, 0x7d010af0,
0x7d03f7b1, 0x7d06e26e, 0x7d09cb28, 0x7d0cb1df,
0x7d0f9695, 0x7d12794a, 0x7d1559fe, 0x7d1838b3,
0x7d1b1569, 0x7d1df021, 0x7d20c8dc, 0x7d239f9a,
0x7d26745d, 0x7d294724, 0x7d2c17f0, 0x7d2ee6c3,
0x7d31b39e, 0x7d347e80, 0x7d37476a, 0x7d3a0e5e,
0x7d3cd35c, 0x7d3f9664, 0x7d425778, 0x7d451698,
0x7d47d3c6, 0x7d4a8f00, 0x7d4d484a, 0x7d4fffa2,
0x7d52b50b, 0x7d556884, 0x7d581a0e, 0x7d5ac9ab,
0x7d5d775b, 0x7d60231e, 0x7d62ccf5, 0x7d6574e2,
0x7d681ae5, 0x7d6abefe, 0x7d6d612e, 0x7d700177,
0x7d729fd8, 0x7d753c53, 0x7d77d6e8, 0x7d7a6f99,
0x7d7d0665, 0x7d7f9b4e, 0x7d822e54, 0x7d84bf78,
0x7d874ebb, 0x7d89dc1d, 0x7d8c67a0, 0x7d8ef143,
0x7d917909, 0x7d93fef1, 0x7d9682fc, 0x7d99052c,
0x7d9b8580, 0x7d9e03fa, 0x7da0809a, 0x7da2fb61,
0x7da57450, 0x7da7eb67, 0x7daa60a8, 0x7dacd412,
0x7daf45a8, 0x7db1b569, 0x7db42356, 0x7db68f70,
0x7db8f9b8, 0x7dbb622f, 0x7dbdc8d5, 0x7dc02dab,
0x7dc290b2, 0x7dc4f1ea, 0x7dc75155, 0x7dc9aef3,
0x7dcc0ac4, 0x7dce64cb, 0x7dd0bd06, 0x7dd31378,
0x7dd56820, 0x7dd7bb00, 0x7dda0c19, 0x7ddc5b6a,
0x7ddea8f6, 0x7de0f4bc, 0x7de33ebd, 0x7de586fb,
0x7de7cd75, 0x7dea122d, 0x7dec5524, 0x7dee9659,
0x7df0d5cf, 0x7df31385, 0x7df54f7d, 0x7df789b7,
0x7df9c234, 0x7dfbf8f4, 0x7dfe2dfa, 0x7e006144,
0x7e0292d4, 0x7e04c2ab, 0x7e06f0ca, 0x7e091d31,
0x7e0b47e0, 0x7e0d70da, 0x7e0f981e, 0x7e11bdae,
0x7e13e189, 0x7e1603b2, 0x7e182428, 0x7e1a42ec,
0x7e1c6000, 0x7e1e7b63, 0x7e209517, 0x7e22ad1c,
0x7e24c374, 0x7e26d81e, 0x7e28eb1c, 0x7e2afc6f,
0x7e2d0c16, 0x7e2f1a14, 0x7e312669, 0x7e333115,
0x7e353a19, 0x7e374176, 0x7e39472d, 0x7e3b4b3e,
0x7e3d4dab, 0x7e3f4e74, 0x7e414d99, 0x7e434b1d,
0x7e4546fe, 0x7e47413f, 0x7e4939df, 0x7e4b30e1,
0x7e4d2643, 0x7e4f1a08, 0x7e510c2f, 0x7e52fcbb,
0x7e54ebaa, 0x7e56d8ff, 0x7e58c4ba, 0x7e5aaedc,
0x7e5c9765, 0x7e5e7e56, 0x7e6063b1, 0x7e624775,
0x7e6429a4, 0x7e660a3e, 0x7e67e944, 0x7e69c6b7,
0x7e6ba298, 0x7e6d7ce6, 0x7e6f55a4, 0x7e712cd2,
0x7e730271, 0x7e74d681, 0x7e76a903, 0x7e7879f8,
0x7e7a4961, 0x7e7c173e, 0x7e7de391, 0x7e7fae59,
0x7e817798, 0x7e833f4f, 0x7e85057e, 0x7e86ca26,
0x7e888d48, 0x7e8a4ee4, 0x7e8c0efc, 0x7e8dcd90,
0x7e8f8aa0, 0x7e91462f, 0x7e93003b, 0x7e94b8c7,
0x7e966fd3, 0x7e98255f, 0x7e99d96d, 0x7e9b8bfd,
0x7e9d3d0f, 0x7e9eeca6, 0x7ea09ac1, 0x7ea24761,
0x7ea3f287, 0x7ea59c34, 0x7ea74469, 0x7ea8eb26,
0x7eaa906b, 0x7eac343b, 0x7eadd695, 0x7eaf777a,
0x7eb116ec, 0x7eb2b4ea, 0x7eb45176, 0x7eb5ec90,
0x7eb7863a, 0x7eb91e73, 0x7ebab53d, 0x7ebc4a98,
0x7ebdde86, 0x7ebf7106, 0x7ec1021a, 0x7ec291c2,
0x7ec42000, 0x7ec5acd4, 0x7ec7383e, 0x7ec8c240,
0x7eca4ada, 0x7ecbd20c, 0x7ecd57d9, 0x7ecedc40,
0x7ed05f43, 0x7ed1e0e1, 0x7ed3611c, 0x7ed4dff5,
0x7ed65d6c, 0x7ed7d982, 0x7ed95437, 0x7edacd8e,
0x7edc4585, 0x7eddbc1f, 0x7edf315b, 0x7ee0a53b,
0x7ee217c0, 0x7ee388e9, 0x7ee4f8b8, 0x7ee6672e,
0x7ee7d44b, 0x7ee94011, 0x7eeaaa7f, 0x7eec1396,
0x7eed7b58, 0x7eeee1c5, 0x7ef046de, 0x7ef1aaa4,
0x7ef30d17, 0x7ef46e38, 0x7ef5ce08, 0x7ef72c87,
0x7ef889b7, 0x7ef9e598, 0x7efb402b, 0x7efc9971,
0x7efdf16a, 0x7eff4817, 0x7f009d78, 0x7f01f190,
0x7f03445e, 0x7f0495e3, 0x7f05e61f, 0x7f073515,
0x7f0882c4, 0x7f09cf2c, 0x7f0b1a50, 0x7f0c642f,
0x7f0daccb, 0x7f0ef424, 0x7f103a3a, 0x7f117f10,
0x7f12c2a4, 0x7f1404f9, 0x7f15460e, 0x7f1685e5,
0x7f17c47e, 0x7f1901da, 0x7f1a3dfb, 0x7f1b78df,
0x7f1cb289, 0x7f1deaf9, 0x7f1f2230, 0x7f20582e,
0x7f218cf4, 0x7f22c084, 0x7f23f2dd, 0x7f252400,
0x7f2653ef, 0x7f2782aa, 0x7f28b031, 0x7f29dc86,
0x7f2b07a9, 0x7f2c319b, 0x7f2d5a5d, 0x7f2e81ef,
0x7f2fa852, 0x7f30cd87, 0x7f31f18e, 0x7f331469,
0x7f343618, 0x7f35569b, 0x7f3675f5, 0x7f379424,
0x7f38b12b, 0x7f39cd09, 0x7f3ae7bf, 0x7f3c014f,
0x7f3d19b9, 0x7f3e30fd, 0x7f3f471d, 0x7f405c19,
0x7f416ff2, 0x7f4282a8, 0x7f43943d, 0x7f44a4b1,
0x7f45b404, 0x7f46c238, 0x7f47cf4d, 0x7f48db44,
0x7f49e61e, 0x7f4aefdb, 0x7f4bf87d, 0x7f4d0003,
0x7f4e066f, 0x7f4f0bc1, 0x7f500ffa, 0x7f51131b,
0x7f521524, 0x7f531617, 0x7f5415f3, 0x7f5514ba,
0x7f56126d, 0x7f570f0b, 0x7f580a97, 0x7f590510,
0x7f59fe77, 0x7f5af6cd, 0x7f5bee13, 0x7f5ce449,
0x7f5dd971, 0x7f5ecd8a, 0x7f5fc096, 0x7f60b295,
0x7f61a388, 0x7f62936f, 0x7f63824d, 0x7f647020,
0x7f655cea, 0x7f6648ac, 0x7f673366, 0x7f681d19,
0x7f6905c5, 0x7f69ed6c, 0x7f6ad40e, 0x7f6bb9ac,
0x7f6c9e47, 0x7f6d81df, 0x7f6e6474, 0x7f6f4609,
0x7f70269c, 0x7f710630, 0x7f71e4c5, 0x7f72c25b,
0x7f739ef3, 0x7f747a8e, 0x7f75552d, 0x7f762ed0,
0x7f770778, 0x7f77df26, 0x7f78b5da, 0x7f798b96,
0x7f7a6059, 0x7f7b3424, 0x7f7c06f9, 0x7f7cd8d8,
0x7f7da9c1, 0x7f7e79b6, 0x7f7f48b7, 0x7f8016c4,
0x7f80e3df, 0x7f81b008, 0x7f827b3f, 0x7f834587,
0x7f840ede, 0x7f84d746, 0x7f859ec0, 0x7f86654c,
0x7f872aeb, 0x7f87ef9d, 0x7f88b364, 0x7f897640,
0x7f8a3831, 0x7f8af939, 0x7f8bb958, 0x7f8c788f,
0x7f8d36de, 0x7f8df447, 0x7f8eb0c9, 0x7f8f6c66,
0x7f90271d, 0x7f90e0f1, 0x7f9199e1, 0x7f9251ef,
0x7f93091a, 0x7f93bf64, 0x7f9474cd, 0x7f952957,
0x7f95dd00, 0x7f968fcc, 0x7f9741b9, 0x7f97f2c9,
0x7f98a2fc, 0x7f995253, 0x7f9a00cf, 0x7f9aae70,
0x7f9b5b37, 0x7f9c0725, 0x7f9cb23a, 0x7f9d5c77,
0x7f9e05dd, 0x7f9eae6d, 0x7f9f5626, 0x7f9ffd0a,
0x7fa0a31a, 0x7fa14855, 0x7fa1ecbe, 0x7fa29053,
0x7fa33317, 0x7fa3d50a, 0x7fa4762b, 0x7fa5167d,
0x7fa5b600, 0x7fa654b4, 0x7fa6f29a, 0x7fa78fb2,
0x7fa82bfe, 0x7fa8c77e, 0x7fa96233, 0x7fa9fc1d,
0x7faa953d, 0x7fab2d93, 0x7fabc521, 0x7fac5be7,
0x7facf1e5, 0x7fad871c, 0x7fae1b8e, 0x7faeaf3a,
0x7faf4221, 0x7fafd444, 0x7fb065a3, 0x7fb0f640,
0x7fb1861a, 0x7fb21533, 0x7fb2a38b, 0x7fb33123,
0x7fb3bdfa, 0x7fb44a13, 0x7fb4d56e, 0x7fb5600b,
0x7fb5e9eb, 0x7fb6730e, 0x7fb6fb75, 0x7fb78322,
0x7fb80a14, 0x7fb8904c, 0x7fb915cb, 0x7fb99a91,
0x7fba1e9f, 0x7fbaa1f6, 0x7fbb2496, 0x7fbba680,
0x7fbc27b4, 0x7fbca834, 0x7fbd2800, 0x7fbda718,
0x7fbe257d, 0x7fbea330, 0x7fbf2031, 0x7fbf9c81,
0x7fc01820, 0x7fc09310, 0x7fc10d51, 0x7fc186e3,
0x7fc1ffc7, 0x7fc277fe, 0x7fc2ef88, 0x7fc36666,
0x7fc3dc99, 0x7fc45220, 0x7fc4c6fe, 0x7fc53b32,
0x7fc5aebd, 0x7fc6219f, 0x7fc693da, 0x7fc7056e,
0x7fc7765b, 0x7fc7e6a2, 0x7fc85644, 0x7fc8c541,
0x7fc9339a, 0x7fc9a14f, 0x7fca0e62, 0x7fca7ad2,
0x7fcae6a1, 0x7fcb51ce, 0x7fcbbc5b, 0x7fcc2648,
0x7fcc8f96, 0x7fccf845, 0x7fcd6057, 0x7fcdc7ca,
0x7fce2ea1, 0x7fce94dc, 0x7fcefa7a, 0x7fcf5f7e,
0x7fcfc3e7, 0x7fd027b6, 0x7fd08aec, 0x7fd0ed8a,
0x7fd14f8f, 0x7fd1b0fc, 0x7fd211d3, 0x7fd27213,
0x7fd2d1be, 0x7fd330d3, 0x7fd38f54, 0x7fd3ed40,
0x7fd44a99, 0x7fd4a760, 0x7fd50394, 0x7fd55f36,
0x7fd5ba47, 0x7fd614c8, 0x7fd66eb9, 0x7fd6c81a,
0x7fd720ec, 0x7fd77931, 0x7fd7d0e7, 0x7fd82811,
0x7fd87ead, 0x7fd8d4be, 0x7fd92a44, 0x7fd97f3f,
0x7fd9d3af, 0x7fda2796, 0x7fda7af4, 0x7fdacdc9,
0x7fdb2017, 0x7fdb71dc, 0x7fdbc31b, 0x7fdc13d4,
0x7fdc6407, 0x7fdcb3b5, 0x7fdd02de, 0x7fdd5183,
0x7fdd9fa4, 0x7fdded43, 0x7fde3a5f, 0x7fde86fa,
0x7fded313, 0x7fdf1eab, 0x7fdf69c3, 0x7fdfb45c,
0x7fdffe75, 0x7fe04810, 0x7fe0912d, 0x7fe0d9cd,
0x7fe121ef, 0x7fe16995, 0x7fe1b0c0, 0x7fe1f76f,
0x7fe23da3, 0x7fe2835e, 0x7fe2c89e, 0x7fe30d66,
0x7fe351b4, 0x7fe3958b, 0x7fe3d8eb, 0x7fe41bd3,
0x7fe45e45, 0x7fe4a041, 0x7fe4e1c7, 0x7fe522d9,
0x7fe56377, 0x7fe5a3a0, 0x7fe5e357, 0x7fe6229a,
0x7fe6616c, 0x7fe69fcb, 0x7fe6ddba, 0x7fe71b38,
0x7fe75846, 0x7fe794e4, 0x7fe7d113, 0x7fe80cd4,
0x7fe84826, 0x7fe8830b, 0x7fe8bd83, 0x7fe8f78e,
0x7fe9312e, 0x7fe96a61, 0x7fe9a32a, 0x7fe9db89,
0x7fea137d, 0x7fea4b08, 0x7fea822a, 0x7feab8e4,
0x7feaef36, 0x7feb2520, 0x7feb5aa3, 0x7feb8fc0,
0x7febc477, 0x7febf8c9, 0x7fec2cb5, 0x7fec603d,
0x7fec9362, 0x7fecc622, 0x7fecf880, 0x7fed2a7b,
0x7fed5c15, 0x7fed8d4d, 0x7fedbe23, 0x7fedee9a,
0x7fee1eb0, 0x7fee4e67, 0x7fee7dbf, 0x7feeacb8,
0x7feedb53, 0x7fef0990, 0x7fef3770, 0x7fef64f4,
0x7fef921c, 0x7fefbee7, 0x7fefeb58, 0x7ff0176e,
0x7ff04329, 0x7ff06e8b, 0x7ff09994, 0x7ff0c443,
0x7ff0ee9b, 0x7ff1189a, 0x7ff14242, 0x7ff16b93,
0x7ff1948d, 0x7ff1bd31, 0x7ff1e580, 0x7ff20d7a,
0x7ff2351e, 0x7ff25c6f, 0x7ff2836c, 0x7ff2aa16,
0x7ff2d06c, 0x7ff2f671, 0x7ff31c23, 0x7ff34184,
0x7ff36694, 0x7ff38b54, 0x7ff3afc3, 0x7ff3d3e3,
0x7ff3f7b3, 0x7ff41b34, 0x7ff43e68, 0x7ff4614d,
0x7ff483e5, 0x7ff4a630, 0x7ff4c82e, 0x7ff4e9e0,
0x7ff50b46, 0x7ff52c61, 0x7ff54d32, 0x7ff56db8,
0x7ff58df4, 0x7ff5ade6, 0x7ff5cd8f, 0x7ff5ecf0,
0x7ff60c08, 0x7ff62ad9, 0x7ff64962, 0x7ff667a4,
0x7ff685a0, 0x7ff6a356, 0x7ff6c0c6, 0x7ff6ddf0,
0x7ff6fad6, 0x7ff71777, 0x7ff733d5, 0x7ff74fee,
0x7ff76bc5, 0x7ff78758, 0x7ff7a2aa, 0x7ff7bdb9,
0x7ff7d887, 0x7ff7f314, 0x7ff80d60, 0x7ff8276b,
0x7ff84137, 0x7ff85ac3, 0x7ff87411, 0x7ff88d1f,
0x7ff8a5ef, 0x7ff8be81, 0x7ff8d6d6, 0x7ff8eeee,
0x7ff906c8, 0x7ff91e67, 0x7ff935ca, 0x7ff94cf1,
0x7ff963dc, 0x7ff97a8e, 0x7ff99104, 0x7ff9a741,
0x7ff9bd44, 0x7ff9d30e, 0x7ff9e89f, 0x7ff9fdf8,
0x7ffa1319, 0x7ffa2802, 0x7ffa3cb3, 0x7ffa512e,
0x7ffa6572, 0x7ffa7980, 0x7ffa8d58, 0x7ffaa0fb,
0x7ffab469, 0x7ffac7a2, 0x7ffadaa7, 0x7ffaed77,
0x7ffb0014, 0x7ffb127e, 0x7ffb24b5, 0x7ffb36ba,
0x7ffb488c, 0x7ffb5a2d, 0x7ffb6b9c, 0x7ffb7cda,
0x7ffb8de8, 0x7ffb9ec5, 0x7ffbaf72, 0x7ffbbff0,
0x7ffbd03e, 0x7ffbe05d, 0x7ffbf04e, 0x7ffc0011,
0x7ffc0fa5, 0x7ffc1f0c, 0x7ffc2e46, 0x7ffc3d53,
0x7ffc4c34, 0x7ffc5ae8, 0x7ffc6970, 0x7ffc77cd,
0x7ffc85ff, 0x7ffc9406, 0x7ffca1e3, 0x7ffcaf95,
0x7ffcbd1e, 0x7ffcca7d, 0x7ffcd7b3, 0x7ffce4c0,
0x7ffcf1a4, 0x7ffcfe61, 0x7ffd0af5, 0x7ffd1762,
0x7ffd23a8, 0x7ffd2fc7, 0x7ffd3bc0, 0x7ffd4792,
0x7ffd533e, 0x7ffd5ec4, 0x7ffd6a26, 0x7ffd7562,
0x7ffd8079, 0x7ffd8b6d, 0x7ffd963c, 0x7ffda0e7,
0x7ffdab6f, 0x7ffdb5d4, 0x7ffdc016, 0x7ffdca35,
0x7ffdd433, 0x7ffdde0e, 0x7ffde7c8, 0x7ffdf160,
0x7ffdfad7, 0x7ffe042e, 0x7ffe0d64, 0x7ffe167a,
0x7ffe1f70, 0x7ffe2847, 0x7ffe30fe, 0x7ffe3996,
0x7ffe4210, 0x7ffe4a6b, 0x7ffe52a8, 0x7ffe5ac7,
0x7ffe62c8, 0x7ffe6aad, 0x7ffe7274, 0x7ffe7a1e,
0x7ffe81ac, 0x7ffe891e, 0x7ffe9074, 0x7ffe97af,
0x7ffe9ecd, 0x7ffea5d1, 0x7ffeacba, 0x7ffeb389,
0x7ffeba3d, 0x7ffec0d7, 0x7ffec757, 0x7ffecdbe,
0x7ffed40c, 0x7ffeda40, 0x7ffee05c, 0x7ffee65f,
0x7ffeec4a, 0x7ffef21e, 0x7ffef7d9, 0x7ffefd7d,
0x7fff030a, 0x7fff0880, 0x7fff0ddf, 0x7fff1327,
0x7fff185a, 0x7fff1d76, 0x7fff227d, 0x7fff276e,
0x7fff2c4a, 0x7fff3111, 0x7fff35c3, 0x7fff3a61,
0x7fff3eea, 0x7fff435f, 0x7fff47c1, 0x7fff4c0e,
0x7fff5049, 0x7fff5470, 0x7fff5884, 0x7fff5c86,
0x7fff6075, 0x7fff6451, 0x7fff681c, 0x7fff6bd5,
0x7fff6f7c, 0x7fff7312, 0x7fff7697, 0x7fff7a0b,
0x7fff7d6e, 0x7fff80c1, 0x7fff8403, 0x7fff8735,
0x7fff8a57, 0x7fff8d6a, 0x7fff906d, 0x7fff9361,
0x7fff9645, 0x7fff991b, 0x7fff9be2, 0x7fff9e9b,
0x7fffa145, 0x7fffa3e1, 0x7fffa670, 0x7fffa8f0,
0x7fffab64, 0x7fffadc9, 0x7fffb022, 0x7fffb26e,
0x7fffb4ad, 0x7fffb6df, 0x7fffb905, 0x7fffbb1f,
0x7fffbd2d, 0x7fffbf2f, 0x7fffc125, 0x7fffc310,
0x7fffc4f0, 0x7fffc6c4, 0x7fffc88e, 0x7fffca4c,
0x7fffcc00, 0x7fffcdaa, 0x7fffcf49, 0x7fffd0df,
0x7fffd26a, 0x7fffd3eb, 0x7fffd563, 0x7fffd6d1,
0x7fffd837, 0x7fffd992, 0x7fffdae5, 0x7fffdc30,
0x7fffdd71, 0x7fffdeaa, 0x7fffdfda, 0x7fffe103,
0x7fffe223, 0x7fffe33b, 0x7fffe44c, 0x7fffe555,
0x7fffe656, 0x7fffe750, 0x7fffe843, 0x7fffe92f,
0x7fffea14, 0x7fffeaf2, 0x7fffebc9, 0x7fffec9a,
0x7fffed65, 0x7fffee29, 0x7fffeee7, 0x7fffef9f,
0x7ffff052, 0x7ffff0fe, 0x7ffff1a5, 0x7ffff246,
0x7ffff2e3, 0x7ffff379, 0x7ffff40b, 0x7ffff498,
0x7ffff51f, 0x7ffff5a2, 0x7ffff620, 0x7ffff69a,
0x7ffff70f, 0x7ffff780, 0x7ffff7ed, 0x7ffff856,
0x7ffff8ba, 0x7ffff91b, 0x7ffff978, 0x7ffff9d1,
0x7ffffa26, 0x7ffffa78, 0x7ffffac7, 0x7ffffb12,
0x7ffffb5a, 0x7ffffb9f, 0x7ffffbe1, 0x7ffffc20,
0x7ffffc5c, 0x7ffffc95, 0x7ffffccc, 0x7ffffd00,
0x7ffffd31, 0x7ffffd60, 0x7ffffd8d, 0x7ffffdb7,
0x7ffffddf, 0x7ffffe06, 0x7ffffe2a, 0x7ffffe4c,
0x7ffffe6c, 0x7ffffe8a, 0x7ffffea7, 0x7ffffec2,
0x7ffffedb, 0x7ffffef3, 0x7fffff09, 0x7fffff1e,
0x7fffff32, 0x7fffff44, 0x7fffff55, 0x7fffff65,
0x7fffff74, 0x7fffff81, 0x7fffff8e, 0x7fffff99,
0x7fffffa4, 0x7fffffae, 0x7fffffb7, 0x7fffffbf,
0x7fffffc7, 0x7fffffcd, 0x7fffffd4, 0x7fffffd9,
0x7fffffde, 0x7fffffe3, 0x7fffffe7, 0x7fffffea,
0x7fffffee, 0x7ffffff0, 0x7ffffff3, 0x7ffffff5,
0x7ffffff7, 0x7ffffff8, 0x7ffffffa, 0x7ffffffb,
0x7ffffffc, 0x7ffffffc, 0x7ffffffd, 0x7ffffffe,
0x7ffffffe, 0x7ffffffe, 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
};
ogg_int32_t *_vorbis_window(int type, int left){
switch(type){
case 0:
switch(left){
case 32:
return vwin64;
case 64:
return vwin128;
case 128:
return vwin256;
case 256:
return vwin512;
case 512:
return vwin1024;
case 1024:
return vwin2048;
case 2048:
return vwin4096;
case 4096:
return vwin8192;
default:
return(NULL);
}
break;
default:
return(NULL);
}
}
void _vorbis_apply_window(ogg_int32_t *d,ogg_int32_t *window[2],long *blocksizes,
int lW,int W,int 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;
for(p=0;i<leftend;i++,p++)
d[i]=MULT31(d[i],window[lW][p]);
for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)
d[i]=MULT31(d[i],window[nW][p]);
for(;i<n;i++)
d[i]=0;
}
<p><p>1.1 Tremor/window.h
Index: window.h
===================================================================
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
* *
* THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
* BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
* ALL REDISTRIBUTION RIGHTS RESERVED. *
* *
********************************************************************
function: window functions
********************************************************************/
#ifndef _V_WINDOW_
#define _V_WINDOW_
extern ogg_int32_t *_vorbis_window(int type,int left);
extern void _vorbis_apply_window(ogg_int32_t *d,ogg_int32_t *window[2],
long *blocksizes,
int lW,int W,int nW);
<p>#endif
<p><p>--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'cvs-request at xiph.org'
containing only the word 'unsubscribe' in the body. No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.
More information about the commits
mailing list