[Freeswitch-trunk] [commit] r13831 - in freeswitch/trunk/libs/spandsp: . spandsp spandsp-sim spandsp-sim/msvc spandsp-sim/spandsp src src/msvc src/spandsp src/spandsp/private tests
FreeSWITCH SVN
robertj at freeswitch.org
Wed Jun 17 23:13:59 PDT 2009
Author: robertj
Date: Thu Jun 18 01:13:59 2009
New Revision: 13831
Log:
Updated SpanDSP to snapshot on 2009-06-03 with some additions:
Fixed VS2005 version of make_modem_filter
Fixed a couple of places where declaration and definition of functions do not have the same calling conventions. Only relevant for Win32 compiles.
Added:
freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.2005.vcproj
freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.2008.vcproj
freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.dsp
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/make_line_models.2008.vcproj
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/msvcproj.foot
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/msvcproj.head
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc8proj.foot
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc8proj.head
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc9proj.foot
freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc9proj.head
freeswitch/trunk/libs/spandsp/spandsp/fax-tests.dtd
freeswitch/trunk/libs/spandsp/src/v17_v32bis_rx_constellation_maps.h
freeswitch/trunk/libs/spandsp/src/v17_v32bis_tx_constellation_maps.h
Modified:
freeswitch/trunk/libs/spandsp/Makefile.am
freeswitch/trunk/libs/spandsp/configure.ac
freeswitch/trunk/libs/spandsp/spandsp-sim/Makefile.am
freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c
freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c
freeswitch/trunk/libs/spandsp/spandsp-sim/rfc2198_sim.c
freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h
freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h
freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h
freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h
freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c
freeswitch/trunk/libs/spandsp/spandsp/tsb85.xml
freeswitch/trunk/libs/spandsp/src/Makefile.am
freeswitch/trunk/libs/spandsp/src/fax.c
freeswitch/trunk/libs/spandsp/src/fsk.c
freeswitch/trunk/libs/spandsp/src/hdlc.c
freeswitch/trunk/libs/spandsp/src/libspandsp.2005.sln
freeswitch/trunk/libs/spandsp/src/libspandsp.2008.sln
freeswitch/trunk/libs/spandsp/src/libspandsp.2008.vcproj
freeswitch/trunk/libs/spandsp/src/make_modem_filter.c
freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c
freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h
freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2005.vcproj
freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2008.vcproj
freeswitch/trunk/libs/spandsp/src/msvc/vc9proj.head
freeswitch/trunk/libs/spandsp/src/power_meter.c
freeswitch/trunk/libs/spandsp/src/silence_gen.c
freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h
freeswitch/trunk/libs/spandsp/src/spandsp/expose.h
freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h
freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h
freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h
freeswitch/trunk/libs/spandsp/src/spandsp/power_meter.h
freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h
freeswitch/trunk/libs/spandsp/src/spandsp/silence_gen.h
freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h
freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h
freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h
freeswitch/trunk/libs/spandsp/src/spandsp/v18.h
freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h
freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h
freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h
freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h
freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h
freeswitch/trunk/libs/spandsp/src/spandsp/v8.h
freeswitch/trunk/libs/spandsp/src/spandsp/version.h
freeswitch/trunk/libs/spandsp/src/t30.c
freeswitch/trunk/libs/spandsp/src/t35.c
freeswitch/trunk/libs/spandsp/src/t38_gateway.c
freeswitch/trunk/libs/spandsp/src/t4.c
freeswitch/trunk/libs/spandsp/src/tone_generate.c
freeswitch/trunk/libs/spandsp/src/v17rx.c
freeswitch/trunk/libs/spandsp/src/v17tx.c
freeswitch/trunk/libs/spandsp/src/v18.c
freeswitch/trunk/libs/spandsp/src/v22bis_rx.c
freeswitch/trunk/libs/spandsp/src/v22bis_tx.c
freeswitch/trunk/libs/spandsp/src/v27ter_rx.c
freeswitch/trunk/libs/spandsp/src/v27ter_tx.c
freeswitch/trunk/libs/spandsp/src/v29rx.c
freeswitch/trunk/libs/spandsp/src/v29tx.c
freeswitch/trunk/libs/spandsp/src/v8.c
freeswitch/trunk/libs/spandsp/tests/Makefile.am
freeswitch/trunk/libs/spandsp/tests/adsi_tests.c
freeswitch/trunk/libs/spandsp/tests/async_tests.c
freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c
freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c
freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c
freeswitch/trunk/libs/spandsp/tests/bert_tests.c
freeswitch/trunk/libs/spandsp/tests/dds_tests.c
freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c
freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c
freeswitch/trunk/libs/spandsp/tests/echo_tests.c
freeswitch/trunk/libs/spandsp/tests/fax_decode.c
freeswitch/trunk/libs/spandsp/tests/fax_tests.c
freeswitch/trunk/libs/spandsp/tests/fax_utils.c
freeswitch/trunk/libs/spandsp/tests/fsk_tests.c
freeswitch/trunk/libs/spandsp/tests/g1050_tests.c
freeswitch/trunk/libs/spandsp/tests/g168_tests.c
freeswitch/trunk/libs/spandsp/tests/g711_tests.c
freeswitch/trunk/libs/spandsp/tests/g722_tests.c
freeswitch/trunk/libs/spandsp/tests/g726_tests.c
freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c
freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c
freeswitch/trunk/libs/spandsp/tests/line_model_tests.c
freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c
freeswitch/trunk/libs/spandsp/tests/make_g168_css.c
freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c
freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c
freeswitch/trunk/libs/spandsp/tests/noise_tests.c
freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c
freeswitch/trunk/libs/spandsp/tests/playout_tests.c
freeswitch/trunk/libs/spandsp/tests/plc_tests.c
freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c
freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c
freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c
freeswitch/trunk/libs/spandsp/tests/regression_tests.sh
freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c
freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c
freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c
freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c
freeswitch/trunk/libs/spandsp/tests/t31_tests.c
freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c
freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c
freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c
freeswitch/trunk/libs/spandsp/tests/t4_tests.c
freeswitch/trunk/libs/spandsp/tests/testadsi.c
freeswitch/trunk/libs/spandsp/tests/testfax.c
freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c
freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c
freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c
freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c
freeswitch/trunk/libs/spandsp/tests/tsb85_tests.sh
freeswitch/trunk/libs/spandsp/tests/v17_tests.c
freeswitch/trunk/libs/spandsp/tests/v18_tests.c
freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c
freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c
freeswitch/trunk/libs/spandsp/tests/v29_tests.c
freeswitch/trunk/libs/spandsp/tests/v8_tests.c
Modified: freeswitch/trunk/libs/spandsp/Makefile.am
==============================================================================
--- freeswitch/trunk/libs/spandsp/Makefile.am (original)
+++ freeswitch/trunk/libs/spandsp/Makefile.am Thu Jun 18 01:13:59 2009
@@ -16,7 +16,7 @@
## License along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
-## $Id: Makefile.am,v 1.46 2009/03/19 14:13:12 steveu Exp $
+## $Id: Makefile.am,v 1.49 2009/05/30 05:55:22 steveu Exp $
AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
@@ -27,17 +27,6 @@
EXTRA_DIST = autogen.sh \
DueDiligence \
- README.testdata \
- spandsp.pc \
- spandsp.spec \
- wrapper.xsl \
- unpack_g722_data.sh \
- unpack_g726_data.sh \
- unpack_gsm0610_data.sh \
- unpack_v56ter_data.sh \
- spandsp/global-tones.xml \
- spandsp/tones.dtd \
- spandsp/tsb85.xml \
debian/changelog \
debian/compat \
debian/control \
@@ -46,20 +35,33 @@
debian/libspandsp-dev.install \
debian/libspandsp-doc.install \
debian/rules \
- debian/watch
+ debian/watch \
+ README.testdata \
+ spandsp.pc \
+ spandsp.spec \
+ spandsp/fax-tests.dtd \
+ spandsp/global-tones.xml \
+ spandsp/tones.dtd \
+ spandsp/tsb85.xml \
+ unpack_g722_data.sh \
+ unpack_g726_data.sh \
+ unpack_gsm0610_data.sh \
+ unpack_v56ter_data.sh \
+ wrapper.xsl
if COND_DOC
MAYBE_DOC=doc
endif
-if COND_TESTS
- MAYBE_TESTS=spandsp-sim tests
-endif
if COND_TESTDATA
MAYBE_TESTDATA=test-data
endif
-SUBDIRS = src $(MAYBE_DOC) $(MAYBE_TESTS) $(MAYBE_TESTDATA)
+if COND_TESTS
+ MAYBE_TESTDATA=test-data
+ MAYBE_TESTS=spandsp-sim tests
+endif
+SUBDIRS = src $(MAYBE_DOC) $(MAYBE_TESTDATA) $(MAYBE_TESTS)
-DIST_SUBDIRS = src doc spandsp-sim tests test-data
+DIST_SUBDIRS = src doc test-data spandsp-sim tests
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = spandsp.pc
Modified: freeswitch/trunk/libs/spandsp/configure.ac
==============================================================================
--- freeswitch/trunk/libs/spandsp/configure.ac (original)
+++ freeswitch/trunk/libs/spandsp/configure.ac Thu Jun 18 01:13:59 2009
@@ -16,7 +16,7 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-# $Id: configure.ac,v 1.67 2009/03/28 17:14:53 steveu Exp $
+# $Id: configure.ac,v 1.70 2009/06/02 11:51:57 steveu Exp $
# @start 1
@@ -162,6 +162,7 @@
AC_CHECK_FUNCS([strstr])
AC_CHECK_FUNCS([strtol])
AC_CHECK_FUNCS([gettimeofday])
+AC_CHECK_FUNCS([drand48])
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
@@ -184,7 +185,7 @@
AC_CHECK_HEADERS([sys/select.h])
AC_CHECK_HEADERS([sys/ioctl.h])
AC_CHECK_HEADERS([sys/fcntl.h])
-AC_CHECK_HEADERS([audiofile.h])
+AC_CHECK_HEADERS([sndfile.h])
AC_CHECK_HEADERS([fftw3.h], , [AC_CHECK_HEADERS([fftw.h])])
AC_CHECK_HEADERS([tiffio.h])
AC_CHECK_HEADERS([pthread.h])
@@ -266,12 +267,12 @@
# Checks for libraries.
AC_CHECK_LIB([tiff], [TIFFOpen], , AC_MSG_ERROR("Can't build without libtiff (does your system require a libtiff-devel package?)"), -lm)
-AC_CHECK_LIB([xml2], [xmlParseFile], [AC_DEFINE([HAVE_LIBXML2], [1], [Define to 1 if you have the 'libxml2' library (-lxml2).]) TESTLIBS="$TESTLIBS -lxml2"])
+AC_CHECK_LIB([xml2], [xmlParseFile], [AC_DEFINE([HAVE_LIBXML2], [1], [Define to 1 if you have the 'libxml2' library (-lxml2).]) SIMLIBS="$SIMLIBS -lxml2"])
if test -n "$enable_tests" ; then
AC_LANG([C])
- AC_CHECK_LIB([audiofile], [afOpenFile], TESTLIBS="$TESTLIBS -laudiofile", AC_MSG_ERROR("Can't make tests without libaudiofile (does your system require a libaudiofile-devel package?)"))
- AC_CHECK_LIB([fftw3], [fftw_plan_dft_1d], TESTLIBS="$TESTLIBS -lfftw3", [AC_CHECK_LIB([fftw], [fftw_create_plan], TESTLIBS="$TESTLIBS -lfftw", AC_MSG_ERROR("Can't make tests without FFTW 2 or 3 (does your system require an fftw?-devel package?)"))])
+ AC_CHECK_LIB([sndfile], [sf_open], SIMLIBS="$SIMLIBS -lsndfile", AC_MSG_ERROR("Can't make tests without libsndfile (does your system require a libsndfile-devel package?)"))
+ AC_CHECK_LIB([fftw3], [fftw_plan_dft_1d], SIMLIBS="$SIMLIBS -lfftw3", [AC_CHECK_LIB([fftw], [fftw_create_plan], SIMLIBS="$SIMLIBS -lfftw", AC_MSG_ERROR("Can't make tests without FFTW 2 or 3 (does your system require an fftw?-devel package?)"))])
AC_CHECK_LIB([pthread], [pthread_attr_init], TESTLIBS="$TESTLIBS -lpthread")
AC_CHECK_LIB([dl], [dlopen], TESTLIBS="$TESTLIBS -ldl")
AC_CHECK_LIB([Xft], [XftFontOpen], TESTLIBS="$TESTLIBS -lXft",, $TESTLIBS)
@@ -406,10 +407,13 @@
AC_DEFINE([SPANDSP_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).])
fi
+TESTLIBS="$SIMLIBS $TESTLIBS"
+
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(CPPFLAGS_FOR_BUILD)
AC_SUBST(COMP_VENDOR_CFLAGS)
AC_SUBST(COMP_VENDOR_LDFLAGS)
+AC_SUBST(SIMLIBS)
AC_SUBST(TESTLIBS)
AC_SUBST(SPANDSP_USE_FIXED_POINT)
AC_SUBST(SPANDSP_MISALIGNED_ACCESS_FAILS)
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/Makefile.am
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/Makefile.am (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/Makefile.am Thu Jun 18 01:13:59 2009
@@ -16,15 +16,26 @@
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
-## $Id: Makefile.am,v 1.7 2008/05/03 13:05:04 steveu Exp $
+## $Id: Makefile.am,v 1.10 2009/06/02 16:03:55 steveu Exp $
AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
-LIBS += $(TESTLIBS)
+LIBS += -L$(top_builddir)/src -lspandsp $(SIMLIBS)
MAINTAINERCLEANFILES = Makefile.in
+EXTRA_DIST = libspandsp_sim.dsp \
+ libspandsp_sim.2005.vcproj \
+ libspandsp_sim.2008.vcproj \
+ msvc/make_line_models.2008.vcproj \
+ msvc/msvcproj.head \
+ msvc/msvcproj.foot \
+ msvc/vc8proj.head \
+ msvc/vc8proj.foot \
+ msvc/vc9proj.head \
+ msvc/vc9proj.foot
+
INCLUDES = -I$(top_builddir) -I$(top_builddir)/src -DDATADIR="\"$(pkgdatadir)\""
noinst_PROGRAMS = make_line_models
@@ -38,7 +49,7 @@
nodist_libspandsp_sim_la_SOURCES = line_models.c
-libspandsp_sim_la_LDFLAGS = -version-info @SPANDSP_LT_CURRENT@:@SPANDSP_LT_REVISION@:@SPANDSP_LT_AGE@
+libspandsp_sim_la_LDFLAGS = -version-info @SPANDSP_LT_CURRENT@:@SPANDSP_LT_REVISION@:@SPANDSP_LT_AGE@ $(COMP_VENDOR_LDFLAGS)
nobase_include_HEADERS = spandsp/g1050.h \
spandsp/line_model.h \
@@ -60,14 +71,16 @@
line_models.c: make_line_models$(EXEEXT)
./make_line_models$(EXEEXT)
-DSP = libspandsp-sim.dsp
-VCPROJ = libspandsp-sim.vcproj
+DSP = libspandsp_sim.dsp
+VCPROJ8 = libspandsp_sim.2005.vcproj
+VCPROJ9 = libspandsp_sim.2008.vcproj
-WIN32SOURCES = $(libspandsp_sim_la_SOURCES) msvc/gettimeofday.c
-WIN32HEADERS = $(nobase_include_HEADERS) spandsp-sim.h
+WIN32SOURCES = $(libspandsp_sim_la_SOURCES)
+WIN32HEADERS = $(nobase_include_HEADERS)
DSPOUT = | awk '{printf("%s\r\n", $$0)}' >> $(DSP)
-VCPROJOUT = | awk '{printf("%s\r\n", $$0)}' >> $(VCPROJ)
+VCPROJOUT8 = | awk '{printf("%s\r\n", $$0)}' >> $(VCPROJ8)
+VCPROJOUT9 = | awk '{printf("%s\r\n", $$0)}' >> $(VCPROJ9)
$(DSP): msvc/msvcproj.head msvc/msvcproj.foot Makefile.am
echo "creating $(DSP)"
@@ -90,14 +103,26 @@
echo "# End Group" $(DSPOUT); \
cat $(srcdir)/msvc/msvcproj.foot $(DSPOUT) )
-$(VCPROJ): msvc/vc8proj.head msvc/vc8proj.foot Makefile.am
- echo "creating $(VCPROJ)"
- @(cp $(srcdir)/msvc/vc8proj.head $(VCPROJ); \
+$(VCPROJ8): msvc/vc8proj.head msvc/vc8proj.foot Makefile.am
+ echo "creating $(VCPROJ8)"
+ @(cp $(srcdir)/msvc/vc8proj.head $(VCPROJ8); \
+ for file in $(WIN32SOURCES); do \
+ echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT8); \
+ done; \
+ echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT8); \
+ for file in $(WIN32HEADERS); do \
+ echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT8); \
+ done; \
+ cat $(srcdir)/msvc/vc8proj.foot $(VCPROJOUT8) )
+
+$(VCPROJ9): msvc/vc9proj.head msvc/vc9proj.foot Makefile.am
+ echo "creating $(VCPROJ9)"
+ @(cp $(srcdir)/msvc/vc9proj.head $(VCPROJ9); \
for file in $(WIN32SOURCES); do \
- echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
+ echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT9); \
done; \
- echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT); \
+ echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT9); \
for file in $(WIN32HEADERS); do \
- echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
+ echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT9); \
done; \
- cat $(srcdir)/msvc/vc8proj.foot $(VCPROJOUT) )
+ cat $(srcdir)/msvc/vc9proj.foot $(VCPROJOUT9) )
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/g1050.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g1050.c,v 1.13 2009/02/03 16:28:39 steveu Exp $
+ * $Id: g1050.c,v 1.17 2009/06/02 14:55:36 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -36,7 +36,6 @@
#include <time.h>
#include <stdio.h>
#include <fcntl.h>
-#include <audiofile.h>
#if defined(HAVE_TGMATH_H)
#include <tgmath.h>
#endif
@@ -669,11 +668,31 @@
}
};
+#if defined(HAVE_DRAND48)
+static __inline__ void q1050_rand_init(void)
+{
+ srand48(time(NULL));
+}
+/*- End of function --------------------------------------------------------*/
+
static __inline__ double q1050_rand(void)
{
return drand48();
}
/*- End of function --------------------------------------------------------*/
+#else
+static __inline__ void q1050_rand_init(void)
+{
+ srand(time(NULL));
+}
+/*- End of function --------------------------------------------------------*/
+
+static __inline__ double q1050_rand(void)
+{
+ return (double) rand()/(double) RAND_MAX;
+}
+/*- End of function --------------------------------------------------------*/
+#endif
static __inline__ double scale_probability(double prob, double scale)
{
@@ -1070,10 +1089,10 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(g1050_state_t) *g1050_init(int model,
- int speed_pattern,
- int packet_size,
- int packet_rate)
+SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
+ int speed_pattern,
+ int packet_size,
+ int packet_rate)
{
g1050_state_t *s;
g1050_constants_t *constants;
@@ -1089,7 +1108,7 @@
break;
}
if (i >= 10)
- srand48(time(NULL));
+ q1050_rand_init();
if ((s = (g1050_state_t *) malloc(sizeof(*s))) == NULL)
return NULL;
memset(s, 0, sizeof(*s));
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.2005.vcproj
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.2005.vcproj Thu Jun 18 01:13:59 2009
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="libspandsp_sim"
+ ProjectGUID="{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"
+ RootNamespace="libspandsp_sim"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)Debug"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="4"
+ CompileAs="1"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Debug\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)Release"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Release\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+<File RelativePath="g1050.c"></File>
+<File RelativePath="line_model.c"></File>
+<File RelativePath="rfc2198_sim.c"></File>
+<File RelativePath="test_utils.c"></File>
+</Filter><Filter Name="Header Files">
+<File RelativePath="spandsp/g1050.h"></File>
+<File RelativePath="spandsp/line_model.h"></File>
+<File RelativePath="spandsp/line_models.h"></File>
+<File RelativePath="spandsp/rfc2198_sim.h"></File>
+<File RelativePath="spandsp/test_utils.h"></File>
+<File RelativePath="spandsp-sim.h"></File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.2008.vcproj
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.2008.vcproj Thu Jun 18 01:13:59 2009
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="libspandsp_sim"
+ ProjectGUID="{502F1E51-F0A0-4607-AB7F-05BAB530AAE1}"
+ RootNamespace="libspandsp_sim"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)Debug"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="4"
+ CompileAs="1"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Debug\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)Release"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Release\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(TargetDir)spandsp_sim.lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(TargetDir)spandsp_sim.lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+<File RelativePath="g1050.c"></File>
+<File RelativePath="line_model.c"></File>
+<File RelativePath="rfc2198_sim.c"></File>
+<File RelativePath="test_utils.c"></File>
+</Filter><Filter Name="Header Files">
+<File RelativePath="spandsp/g1050.h"></File>
+<File RelativePath="spandsp/line_model.h"></File>
+<File RelativePath="spandsp/line_models.h"></File>
+<File RelativePath="spandsp/rfc2198_sim.h"></File>
+<File RelativePath="spandsp/test_utils.h"></File>
+<File RelativePath="spandsp-sim.h"></File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.dsp
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/libspandsp_sim.dsp Thu Jun 18 01:13:59 2009
@@ -0,0 +1,143 @@
+# Microsoft Developer Studio Project File - Name="spandsp" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=spandsp - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "spandsp.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "spandsp.mak" CFG="spandsp - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "spandsp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "spandsp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "spandsp - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "." /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /D "_WINDLL" /FR /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /map /debug /machine:I386 /out:"Release/libspandsp.dll"
+
+!ELSEIF "$(CFG)" == "spandsp - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "." /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /FR /FD /GZ /c
+# SUBTRACT CPP /WX /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"Debug/libspandsp.dll" /pdbtype:sept
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "spandsp - Win32 Release"
+# Name "spandsp - Win32 Debug"
+# Begin Group "Source Files"
+# Begin Source File
+
+SOURCE=.\g1050.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\line_model.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\rfc2198_sim.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\test_utils.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+# Begin Source File
+
+SOURCE=.\spandsp/g1050.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\spandsp/line_model.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\spandsp/line_models.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\spandsp/rfc2198_sim.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\spandsp/test_utils.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\spandsp-sim.h
+# End Source File
+# End Group
+
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/line_model.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: line_model.c,v 1.8 2009/02/03 16:28:39 steveu Exp $
+ * $Id: line_model.c,v 1.12 2009/06/01 16:27:12 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -36,7 +36,6 @@
#include <time.h>
#include <stdio.h>
#include <fcntl.h>
-#include <audiofile.h>
#if defined(HAVE_TGMATH_H)
#include <tgmath.h>
#endif
@@ -270,10 +269,10 @@
}
/*- End of function --------------------------------------------------------*/
-void one_way_line_model(one_way_line_model_state_t *s,
- int16_t output[],
- const int16_t input[],
- int samples)
+SPAN_DECLARE(void) one_way_line_model(one_way_line_model_state_t *s,
+ int16_t output[],
+ const int16_t input[],
+ int samples)
{
int i;
float in;
@@ -336,13 +335,13 @@
}
/*- End of function --------------------------------------------------------*/
-void one_way_line_model_set_dc(one_way_line_model_state_t *s, float dc)
+SPAN_DECLARE(void) one_way_line_model_set_dc(one_way_line_model_state_t *s, float dc)
{
s->dc_offset = dc;
}
/*- End of function --------------------------------------------------------*/
-void one_way_line_model_set_mains_pickup(one_way_line_model_state_t *s, int f, float level)
+SPAN_DECLARE(void) one_way_line_model_set_mains_pickup(one_way_line_model_state_t *s, int f, float level)
{
tone_gen_descriptor_t mains_tone_desc;
@@ -355,12 +354,12 @@
}
/*- End of function --------------------------------------------------------*/
-void both_ways_line_model(both_ways_line_model_state_t *s,
- int16_t output1[],
- const int16_t input1[],
- int16_t output2[],
- const int16_t input2[],
- int samples)
+SPAN_DECLARE(void) both_ways_line_model(both_ways_line_model_state_t *s,
+ int16_t output1[],
+ const int16_t input1[],
+ int16_t output2[],
+ const int16_t input2[],
+ int samples)
{
int i;
float in1;
@@ -444,14 +443,14 @@
}
/*- End of function --------------------------------------------------------*/
-void both_ways_line_model_set_dc(both_ways_line_model_state_t *s, float dc1, float dc2)
+SPAN_DECLARE(void) both_ways_line_model_set_dc(both_ways_line_model_state_t *s, float dc1, float dc2)
{
s->line1.dc_offset = dc1;
s->line2.dc_offset = dc2;
}
/*- End of function --------------------------------------------------------*/
-void both_ways_line_model_set_mains_pickup(both_ways_line_model_state_t *s, int f, float level1, float level2)
+SPAN_DECLARE(void) both_ways_line_model_set_mains_pickup(both_ways_line_model_state_t *s, int f, float level1, float level2)
{
tone_gen_descriptor_t mains_tone_desc;
@@ -467,7 +466,7 @@
}
/*- End of function --------------------------------------------------------*/
-one_way_line_model_state_t *one_way_line_model_init(int model, float noise, int codec, int rbs_pattern)
+SPAN_DECLARE(one_way_line_model_state_t *) one_way_line_model_init(int model, float noise, int codec, int rbs_pattern)
{
one_way_line_model_state_t *s;
@@ -486,8 +485,9 @@
s->far_filter = models[model];
s->far_filter_len = 129;
- awgn_init_dbm0(&s->near_noise, 1234567, noise);
- awgn_init_dbm0(&s->far_noise, 1234567, noise);
+ /* Put half the noise in each analogue section */
+ awgn_init_dbm0(&s->near_noise, 1234567, noise - 3.02f);
+ awgn_init_dbm0(&s->far_noise, 1234567, noise - 3.02f);
s->dc_offset = 0.0f;
s->mains_interference = 0;
@@ -496,19 +496,19 @@
}
/*- End of function --------------------------------------------------------*/
-int one_way_line_model_release(one_way_line_model_state_t *s)
+SPAN_DECLARE(int) one_way_line_model_release(one_way_line_model_state_t *s)
{
free(s);
return 0;
}
/*- End of function --------------------------------------------------------*/
-both_ways_line_model_state_t *both_ways_line_model_init(int model1,
- float noise1,
- int model2,
- float noise2,
- int codec,
- int rbs_pattern)
+SPAN_DECLARE(both_ways_line_model_state_t *) both_ways_line_model_init(int model1,
+ float noise1,
+ int model2,
+ float noise2,
+ int codec,
+ int rbs_pattern)
{
float echo_level;
both_ways_line_model_state_t *s;
@@ -536,11 +536,12 @@
s->line2.far_filter = models[model2];
s->line2.far_filter_len = 129;
- awgn_init_dbm0(&s->line1.near_noise, 1234567, noise1);
- awgn_init_dbm0(&s->line2.near_noise, 7654321, noise2);
+ /* Put half the noise in each analogue section */
+ awgn_init_dbm0(&s->line1.near_noise, 1234567, noise1 - 3.02f);
+ awgn_init_dbm0(&s->line2.near_noise, 7654321, noise2 - 3.02f);
- awgn_init_dbm0(&s->line1.far_noise, 1234567, noise1);
- awgn_init_dbm0(&s->line2.far_noise, 7654321, noise2);
+ awgn_init_dbm0(&s->line1.far_noise, 1234567, noise1 - 3.02f);
+ awgn_init_dbm0(&s->line2.far_noise, 7654321, noise2 - 3.02f);
s->line1.dc_offset = 0.0f;
s->line2.dc_offset = 0.0f;
@@ -549,16 +550,16 @@
/* Echos */
echo_level = -15; /* in dB */
- s->line1.near_co_hybrid_echo = pow(10, echo_level/20.0);
- s->line2.near_co_hybrid_echo = pow(10, echo_level/20.0);
- s->line1.near_cpe_hybrid_echo = pow(10, echo_level/20.0);
- s->line2.near_cpe_hybrid_echo = pow(10, echo_level/20.0);
+ s->line1.near_co_hybrid_echo = pow(10, echo_level/20.0f);
+ s->line2.near_co_hybrid_echo = pow(10, echo_level/20.0f);
+ s->line1.near_cpe_hybrid_echo = pow(10, echo_level/20.0f);
+ s->line2.near_cpe_hybrid_echo = pow(10, echo_level/20.0f);
return s;
}
/*- End of function --------------------------------------------------------*/
-int both_ways_line_model_release(both_ways_line_model_state_t *s)
+SPAN_DECLARE(int) both_ways_line_model_release(both_ways_line_model_state_t *s)
{
free(s);
return 0;
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/make_line_models.2008.vcproj
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/make_line_models.2008.vcproj Thu Jun 18 01:13:59 2009
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="make_line_models"
+ ProjectGUID="{329A6FA0-0FCC-4435-A950-E670AEFA9838}"
+ RootNamespace="make_line_models"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="All|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\..\src;..\..\src\msvc;..\..\src\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""$(TargetPath)"
"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\src\msvc\getopt.c"
+ >
+ </File>
+ <File
+ RelativePath="..\make_line_models.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/msvcproj.foot
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/msvcproj.foot Thu Jun 18 01:13:59 2009
@@ -0,0 +1,7 @@
+
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/msvcproj.head
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/msvcproj.head Thu Jun 18 01:13:59 2009
@@ -0,0 +1,92 @@
+# Microsoft Developer Studio Project File - Name="spandsp" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=spandsp - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "spandsp.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "spandsp.mak" CFG="spandsp - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "spandsp - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "spandsp - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "spandsp - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "." /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /D "_WINDLL" /FR /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /map /debug /machine:I386 /out:"Release/libspandsp.dll"
+
+!ELSEIF "$(CFG)" == "spandsp - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "." /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /FR /FD /GZ /c
+# SUBTRACT CPP /WX /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"Debug/libspandsp.dll" /pdbtype:sept
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "spandsp - Win32 Release"
+# Name "spandsp - Win32 Debug"
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc8proj.foot
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc8proj.foot Thu Jun 18 01:13:59 2009
@@ -0,0 +1,5 @@
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc8proj.head
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc8proj.head Thu Jun 18 01:13:59 2009
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="libspandsp_sim"
+ ProjectGUID="{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"
+ RootNamespace="libspandsp_sim"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)Debug"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="4"
+ CompileAs="1"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Debug\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)Release"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Release\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc9proj.foot
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc9proj.foot Thu Jun 18 01:13:59 2009
@@ -0,0 +1,5 @@
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc9proj.head
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/msvc/vc9proj.head Thu Jun 18 01:13:59 2009
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="libspandsp_sim"
+ ProjectGUID="{502F1E51-F0A0-4607-AB7F-05BAB530AAE1}"
+ RootNamespace="libspandsp_sim"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)Debug"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="4"
+ CompileAs="1"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Debug\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)Release"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="./Release\spandsp_sim.lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ CompileAs="1"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(TargetDir)spandsp_sim.lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="2"
+ CharacterSet="1"
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=".;..\src\spandsp;..\src;..\src\msvc;..\..\tiff-3.8.2\libtiff"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ ProgramDataBaseFileName="$(IntDir)\$(TargetName).pdb"
+ WarningLevel="4"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4127"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(TargetDir)spandsp_sim.lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/rfc2198_sim.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/rfc2198_sim.c (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/rfc2198_sim.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: rfc2198_sim.c,v 1.7 2009/02/03 16:28:39 steveu Exp $
+ * $Id: rfc2198_sim.c,v 1.10 2009/06/01 16:27:12 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -36,7 +36,6 @@
#include <time.h>
#include <stdio.h>
#include <fcntl.h>
-#include <audiofile.h>
#if defined(HAVE_TGMATH_H)
#include <tgmath.h>
#endif
@@ -55,11 +54,11 @@
#define FALSE 0
#define TRUE (!FALSE)
-rfc2198_sim_state_t *rfc2198_sim_init(int model,
- int speed_pattern,
- int packet_size,
- int packet_rate,
- int redundancy_depth)
+SPAN_DECLARE(rfc2198_sim_state_t *) rfc2198_sim_init(int model,
+ int speed_pattern,
+ int packet_size,
+ int packet_rate,
+ int redundancy_depth)
{
rfc2198_sim_state_t *s;
@@ -73,11 +72,11 @@
}
/*- End of function --------------------------------------------------------*/
-int rfc2198_sim_put(rfc2198_sim_state_t *s,
- const uint8_t buf[],
- int len,
- int seq_no,
- double departure_time)
+SPAN_DECLARE(int) rfc2198_sim_put(rfc2198_sim_state_t *s,
+ const uint8_t buf[],
+ int len,
+ int seq_no,
+ double departure_time)
{
uint8_t buf2[8192];
uint8_t *p;
@@ -110,19 +109,23 @@
}
/*- End of function --------------------------------------------------------*/
-int rfc2198_sim_get(rfc2198_sim_state_t *s,
- uint8_t buf[],
- int max_len,
- double current_time,
- int *seq_no,
- double *departure_time,
- double *arrival_time)
+SPAN_DECLARE(int) rfc2198_sim_get(rfc2198_sim_state_t *s,
+ uint8_t buf[],
+ int max_len,
+ double current_time,
+ int *seq_no,
+ double *departure_time,
+ double *arrival_time)
{
int len;
int lenx;
int seq_nox;
int i;
+#if defined(_MSC_VER)
+ uint8_t *bufx = (uint8_t *) _alloca(s->redundancy_depth*1024);
+#else
uint8_t bufx[s->redundancy_depth*1024];
+#endif
uint8_t *p;
uint16_t *q;
int redundancy_depth;
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/g1050.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g1050.h,v 1.10 2009/01/31 08:48:10 steveu Exp $
+ * $Id: g1050.h,v 1.12 2009/06/01 16:27:12 steveu Exp $
*/
/*! \file */
@@ -269,12 +269,12 @@
{
#endif
-SPAN_DECLARE(g1050_state_t) *g1050_init(int model,
- int speed_pattern,
- int packet_size,
- int packet_rate);
+SPAN_DECLARE(g1050_state_t *) g1050_init(int model,
+ int speed_pattern,
+ int packet_size,
+ int packet_rate);
-void g1050_dump_parms(int model, int speed_pattern);
+SPAN_DECLARE(void) g1050_dump_parms(int model, int speed_pattern);
SPAN_DECLARE(int) g1050_put(g1050_state_t *s,
const uint8_t buf[],
@@ -290,7 +290,7 @@
double *departure_time,
double *arrival_time);
-void g1050_queue_dump(g1050_state_t *s);
+SPAN_DECLARE(void) g1050_queue_dump(g1050_state_t *s);
#ifdef __cplusplus
}
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/line_model.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: line_model.h,v 1.5 2009/01/31 08:48:10 steveu Exp $
+ * $Id: line_model.h,v 1.6 2009/05/31 14:47:10 steveu Exp $
*/
/*! \file */
@@ -143,12 +143,12 @@
SPAN_DECLARE(void) both_ways_line_model_set_mains_pickup(both_ways_line_model_state_t *s, int f, float level1, float level2);
-SPAN_DECLARE(both_ways_line_model_state_t) *both_ways_line_model_init(int model1,
- float noise1,
- int model2,
- float noise2,
- int codec,
- int rbs_pattern);
+SPAN_DECLARE(both_ways_line_model_state_t *) both_ways_line_model_init(int model1,
+ float noise1,
+ int model2,
+ float noise2,
+ int codec,
+ int rbs_pattern);
SPAN_DECLARE(int) both_ways_line_model_release(both_ways_line_model_state_t *s);
@@ -161,7 +161,7 @@
SPAN_DECLARE(void) one_way_line_model_set_mains_pickup(one_way_line_model_state_t *s, int f, float level);
-SPAN_DECLARE(one_way_line_model_state_t) *one_way_line_model_init(int model, float noise, int codec, int rbs_pattern);
+SPAN_DECLARE(one_way_line_model_state_t *) one_way_line_model_init(int model, float noise, int codec, int rbs_pattern);
SPAN_DECLARE(int) one_way_line_model_release(one_way_line_model_state_t *s);
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/rfc2198_sim.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: rfc2198_sim.h,v 1.5 2009/01/31 08:48:10 steveu Exp $
+ * $Id: rfc2198_sim.h,v 1.6 2009/05/31 14:47:10 steveu Exp $
*/
/*! \file */
@@ -69,11 +69,11 @@
{
#endif
-SPAN_DECLARE(rfc2198_sim_state_t) *rfc2198_sim_init(int model,
- int speed_pattern,
- int packet_size,
- int packet_rate,
- int redundancy_depth);
+SPAN_DECLARE(rfc2198_sim_state_t *) rfc2198_sim_init(int model,
+ int speed_pattern,
+ int packet_size,
+ int packet_rate,
+ int redundancy_depth);
SPAN_DECLARE(int) rfc2198_sim_put(rfc2198_sim_state_t *s,
const uint8_t buf[],
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/spandsp/test_utils.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: test_utils.h,v 1.7 2009/01/31 08:48:10 steveu Exp $
+ * $Id: test_utils.h,v 1.9 2009/05/31 14:47:10 steveu Exp $
*/
/*! \file */
@@ -30,7 +30,7 @@
#if !defined(_TEST_UTILS_H_)
#define _TEST_UTILS_H_
-#include <audiofile.h>
+#include <sndfile.h>
enum
{
@@ -51,7 +51,7 @@
extern "C" {
#endif
-SPAN_DECLARE(complexify_state_t) *complexify_init(void);
+SPAN_DECLARE(complexify_state_t *) complexify_init(void);
SPAN_DECLARE(void) complexify_release(complexify_state_t *s);
@@ -61,15 +61,15 @@
SPAN_DECLARE(void) ifft(complex_t data[], int len);
-SPAN_DECLARE(codec_munge_state_t) *codec_munge_init(int codec, int info);
+SPAN_DECLARE(codec_munge_state_t *) codec_munge_init(int codec, int info);
SPAN_DECLARE(void) codec_munge_release(codec_munge_state_t *s);
SPAN_DECLARE(void) codec_munge(codec_munge_state_t *s, int16_t amp[], int len);
-SPAN_DECLARE(AFfilehandle) afOpenFile_telephony_read(const char *name, int channels);
+SPAN_DECLARE(SNDFILE *) sf_open_telephony_read(const char *name, int channels);
-SPAN_DECLARE(AFfilehandle) afOpenFile_telephony_write(const char *name, int channels);
+SPAN_DECLARE(SNDFILE *) sf_open_telephony_write(const char *name, int channels);
#ifdef __cplusplus
}
Modified: freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c (original)
+++ freeswitch/trunk/libs/spandsp/spandsp-sim/test_utils.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: test_utils.c,v 1.12 2009/02/03 16:28:39 steveu Exp $
+ * $Id: test_utils.c,v 1.14 2009/06/01 16:27:12 steveu Exp $
*/
/*! \file */
@@ -44,7 +44,7 @@
#include "floating_fudge.h"
#include <time.h>
#include <fcntl.h>
-#include <audiofile.h>
+#include <sndfile.h>
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
#include "spandsp.h"
@@ -72,7 +72,7 @@
static complex_t icircle[MAX_FFT_LEN/2];
static int icircle_init = FALSE;
-SPAN_DECLARE(complexify_state_t) *complexify_init(void)
+SPAN_DECLARE(complexify_state_t *) complexify_init(void)
{
complexify_state_t *s;
int i;
@@ -261,7 +261,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(codec_munge_state_t) *codec_munge_init(int codec, int info)
+SPAN_DECLARE(codec_munge_state_t *) codec_munge_init(int codec, int info)
{
codec_munge_state_t *s;
@@ -351,29 +351,25 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(AFfilehandle) afOpenFile_telephony_read(const char *name, int channels)
+SPAN_DECLARE(SNDFILE *) sf_open_telephony_read(const char *name, int channels)
{
- float x;
- AFfilehandle handle;
+ SNDFILE *handle;
+ SF_INFO info;
- if ((handle = afOpenFile(name, "r", 0)) == AF_NULL_FILEHANDLE)
+ memset(&info, 0, sizeof(info));
+ if ((handle = sf_open(name, SFM_READ, &info)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", name);
+ fprintf(stderr, " Cannot open audio file '%s' for reading\n", name);
exit(2);
}
- if ((x = afGetFrameSize(handle, AF_DEFAULT_TRACK, 1)) != 2.0)
+ if (info.samplerate != SAMPLE_RATE)
{
- fprintf(stderr, " Unexpected frame size in wave file '%s'\n", name);
+ printf(" Unexpected sample rate in audio file '%s'\n", name);
exit(2);
}
- if ((x = afGetRate(handle, AF_DEFAULT_TRACK)) != (float) SAMPLE_RATE)
+ if (info.channels != channels)
{
- printf(" Unexpected sample rate in wave file '%s'\n", name);
- exit(2);
- }
- if ((x = afGetChannels(handle, AF_DEFAULT_TRACK)) != (float) channels)
- {
- printf(" Unexpected number of channels in wave file '%s'\n", name);
+ printf(" Unexpected number of channels in audio file '%s'\n", name);
exit(2);
}
@@ -381,27 +377,24 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(AFfilehandle) afOpenFile_telephony_write(const char *name, int channels)
+SPAN_DECLARE(SNDFILE *) sf_open_telephony_write(const char *name, int channels)
{
- AFfilesetup setup;
- AFfilehandle handle;
+ SNDFILE *handle;
+ SF_INFO info;
- if ((setup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " %s: Failed to create file setup\n", name);
- exit(2);
- }
- afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(setup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(setup, AF_FILE_WAVE);
- afInitChannels(setup, AF_DEFAULT_TRACK, channels);
+ memset(&info, 0, sizeof(info));
+ info.frames = 0;
+ info.samplerate = SAMPLE_RATE;
+ info.channels = channels;
+ info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
+ info.sections = 1;
+ info.seekable = 1;
- if ((handle = afOpenFile(name, "w", setup)) == AF_NULL_FILEHANDLE)
+ if ((handle = sf_open(name, SFM_WRITE, &info)) == NULL)
{
- fprintf(stderr, " Failed to open result file\n");
+ fprintf(stderr, " Cannot open audio file '%s' for writing\n", name);
exit(2);
}
- afFreeFileSetup(setup);
return handle;
}
Added: freeswitch/trunk/libs/spandsp/spandsp/fax-tests.dtd
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/spandsp/fax-tests.dtd Thu Jun 18 01:13:59 2009
@@ -0,0 +1,51 @@
+<!-- FAX test scripts -->
+<!ELEMENT fax-tests (config|messages|test-group)* >
+<!ELEMENT config (path)* >
+<!ATTLIST path
+ type CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT messages (message)* >
+<!ELEMENT message (EMPTY)* >
+<!ATTLIST message
+ type CDATA #REQUIRED
+ value CDATA #REQUIRED
+ >
+
+<!ELEMENT test-group (test)* >
+<!ATTLIST test-group
+ name CDATA #IMPLIED
+ >
+
+<!ELEMENT test (step|possible-step)* >
+<!ATTLIST test
+ name CDATA #IMPLIED
+ >
+
+<!ELEMENT possible-step (step)* >
+
+<!ELEMENT step (check|EMPTY)* >
+<!ATTLIST step
+ dir CDATA #IMPLIED
+ type CDATA #IMPLIED
+ modem CDATA #IMPLIED
+ tag CDATA #IMPLIED
+ value CDATA #IMPLIED
+ timeout CDATA #IMPLIED
+ crc_error CDATA #IMPLIED
+ pattern CDATA #IMPLIED
+ bad_rows CDATA #IMPLIED
+ min_bits CDATA #IMPLIED
+ frame_size CDATA #IMPLIED
+ compression CDATA #IMPLIED
+ block CDATA #IMPLIED
+ xxx CDATA #IMPLIED
+ >
+
+<!ELEMENT check (EMPTY)* >
+<!ATTLIST check
+ name CDATA #IMPLIED
+ desc CDATA #IMPLIED
+ >
+
Modified: freeswitch/trunk/libs/spandsp/spandsp/tsb85.xml
==============================================================================
--- freeswitch/trunk/libs/spandsp/spandsp/tsb85.xml (original)
+++ freeswitch/trunk/libs/spandsp/spandsp/tsb85.xml Thu Jun 18 01:13:59 2009
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE fax-tests SYSTEM "./fax-tests.dtd">
<fax-tests>
-<!-- $Id: tsb85.xml,v 1.21 2008/09/12 14:41:55 steveu Exp $ -->
+<!-- $Id: tsb85.xml,v 1.22 2009/05/24 07:18:36 steveu Exp $ -->
<config>
<path type="IMAGE" value="../test-data/etsi/fax"/>
</config>
@@ -2202,7 +2202,7 @@
<step type="WAIT" value="75"/>
<step dir="T" type="PREAMBLE" modem="V.27ter/4800"/>
- <step dir="T" type="PP" value="etsi_300_242_a4_stairstep.tif" min_bits="302" frame_size="256"/>
+ <step dir="T" type="PP" value="etsi_300_242_a4_stairstep.tif" min_bits="303" frame_size="256"/>
<step dir="T" type="POSTAMBLE"/>
<step type="WAIT" value="75"/>
<step dir="T" type="PREAMBLE" modem="V.21"/>
@@ -2541,8 +2541,8 @@
<step type="WAIT" value="75"/>
<!-- UNKNOWN_BCS_1 -->
- <step dir="T" type="HDLC" modem="V.21" tag="GARBAGE" value="FF C0 00"/>
- <step dir="T" type="POSTAMBLE"/>
+ <step dir="T" type="PREAMBLE" modem="V.21" value="37"/>
+ <step dir="T" type="HDLC" tag="GARBAGE" value="FF C0 00"/>
<step dir="T" type="HDLC" tag="DCS" value="FF C8 41 00 50 00"/>
<step dir="T" type="POSTAMBLE"/>
<step type="WAIT" value="75"/>
@@ -5513,7 +5513,7 @@
<step dir="R" type="CNG"/>
- <step type="WAIT" value="140001"/>
+ <step type="WAIT" value="40001"/>
<step dir="T" type="CED"/>
<step type="WAIT" value="75"/>
<step dir="T" type="PREAMBLE" modem="V.21"/>
Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/Makefile.am (original)
+++ freeswitch/trunk/libs/spandsp/src/Makefile.am Thu Jun 18 01:13:59 2009
@@ -16,7 +16,7 @@
## License along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
-## $Id: Makefile.am,v 1.130 2009/04/16 13:09:40 steveu Exp $
+## $Id: Makefile.am,v 1.134 2009/06/02 11:51:57 steveu Exp $
AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
@@ -24,7 +24,6 @@
MAINTAINERCLEANFILES = Makefile.in
EXTRA_DIST = floating_fudge.h \
- spandsp/version.h.in \
libspandsp.dsp \
libspandsp.2005.sln \
libspandsp.2008.sln \
@@ -42,19 +41,20 @@
msvc/make_at_dictionary.2008.vcproj \
msvc/make_modem_filter.2005.vcproj \
msvc/make_modem_filter.2008.vcproj \
- msvc/spandsp.h \
- msvc/unistd.h \
- msvc/tgmath.h \
msvc/msvcproj.head \
msvc/msvcproj.foot \
+ msvc/spandsp.h \
+ msvc/tgmath.h \
+ msvc/tiff/cleancount \
+ msvc/unistd.h \
msvc/util.vbs \
- msvc/vc8proj.head \
msvc/vc8proj.foot \
- msvc/vc9proj.head \
+ msvc/vc8proj.head \
msvc/vc9proj.foot \
+ msvc/vc9proj.head \
msvc/sys/time.h \
- msvc/tiff/cleancount \
- spandsp/private/README
+ spandsp/private/README \
+ spandsp/version.h.in
INCLUDES = -I$(top_builddir)
@@ -139,7 +139,7 @@
vector_float.c \
vector_int.c
-libspandsp_la_LDFLAGS = -version-info @SPANDSP_LT_CURRENT@:@SPANDSP_LT_REVISION@:@SPANDSP_LT_AGE@ $(COMP_VENDOR_FLAGS)
+libspandsp_la_LDFLAGS = -version-info @SPANDSP_LT_CURRENT@:@SPANDSP_LT_REVISION@:@SPANDSP_LT_AGE@ $(COMP_VENDOR_LDFLAGS)
nobase_include_HEADERS = spandsp/adsi.h \
spandsp/async.h \
@@ -277,8 +277,8 @@
lpc10_encdecs.h \
t30_local.h \
t4_states.h \
- v17rx_constellation_maps.h \
- v17tx_constellation_maps.h \
+ v17_v32bis_rx_constellation_maps.h \
+ v17_v32bis_tx_constellation_maps.h \
v29tx_constellation_maps.h
noinst_PROGRAMS = make_at_dictionary \
@@ -301,25 +301,25 @@
t4.lo: spandsp/version.h
-v17rx.$(OBJEXT): v17rx_fixed_rrc.h v17rx_floating_rrc.h
+v17rx.$(OBJEXT): v17_v32bis_rx_fixed_rrc.h v17_v32bis_rx_floating_rrc.h
-v17rx.lo: v17rx_fixed_rrc.h v17rx_floating_rrc.h
+v17rx.lo: v17_v32bis_rx_fixed_rrc.h v17_v32bis_rx_floating_rrc.h
-v17rx_fixed_rrc.h: make_modem_filter$(EXEEXT)
- ./make_modem_filter$(EXEEXT) -m V.17 -i -r >v17rx_fixed_rrc.h
+v17_v32bis_rx_fixed_rrc.h: make_modem_filter$(EXEEXT)
+ ./make_modem_filter$(EXEEXT) -m V.17 -i -r >v17_v32bis_rx_fixed_rrc.h
-v17rx_floating_rrc.h: make_modem_filter$(EXEEXT)
- ./make_modem_filter$(EXEEXT) -m V.17 -r >v17rx_floating_rrc.h
+v17_v32bis_rx_floating_rrc.h: make_modem_filter$(EXEEXT)
+ ./make_modem_filter$(EXEEXT) -m V.17 -r >v17_v32bis_rx_floating_rrc.h
-v17tx.$(OBJEXT): v17tx_fixed_rrc.h v17tx_floating_rrc.h
+v17tx.$(OBJEXT): v17_v32bis_tx_fixed_rrc.h v17_v32bis_tx_floating_rrc.h
-v17tx.lo: v17tx_fixed_rrc.h v17tx_floating_rrc.h
+v17tx.lo: v17_v32bis_tx_fixed_rrc.h v17_v32bis_tx_floating_rrc.h
-v17tx_fixed_rrc.h: make_modem_filter$(EXEEXT)
- ./make_modem_filter$(EXEEXT) -m V.17 -i -t >v17tx_fixed_rrc.h
+v17_v32bis_tx_fixed_rrc.h: make_modem_filter$(EXEEXT)
+ ./make_modem_filter$(EXEEXT) -m V.17 -i -t >v17_v32bis_tx_fixed_rrc.h
-v17tx_floating_rrc.h: make_modem_filter$(EXEEXT)
- ./make_modem_filter$(EXEEXT) -m V.17 -t >v17tx_floating_rrc.h
+v17_v32bis_tx_floating_rrc.h: make_modem_filter$(EXEEXT)
+ ./make_modem_filter$(EXEEXT) -m V.17 -t >v17_v32bis_tx_floating_rrc.h
v22bis_rx.$(OBJEXT): v22bis_rx_1200_fixed_rrc.h \
v22bis_rx_2400_fixed_rrc.h \
Modified: freeswitch/trunk/libs/spandsp/src/fax.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/fax.c (original)
+++ freeswitch/trunk/libs/spandsp/src/fax.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fax.c,v 1.92 2009/04/23 15:48:21 steveu Exp $
+ * $Id: fax.c,v 1.93 2009/05/24 07:18:36 steveu Exp $
*/
/*! \file */
@@ -98,7 +98,7 @@
#include "spandsp/private/t30.h"
#include "spandsp/private/fax.h"
-#define HDLC_FRAMING_OK_THRESHOLD 5
+#define HDLC_FRAMING_OK_THRESHOLD 8
static void fax_send_hdlc(void *user_data, const uint8_t *msg, int len)
{
@@ -387,7 +387,7 @@
{
put_bit_func = (put_bit_func_t) hdlc_rx_put_bit;
put_bit_user_data = (void *) &t->hdlc_rx;
- hdlc_rx_init(&t->hdlc_rx, FALSE, FALSE, HDLC_FRAMING_OK_THRESHOLD, t30_hdlc_accept, &s->t30);
+ hdlc_rx_init(&t->hdlc_rx, FALSE, TRUE, HDLC_FRAMING_OK_THRESHOLD, t30_hdlc_accept, &s->t30);
}
else
{
Modified: freeswitch/trunk/libs/spandsp/src/fsk.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/fsk.c (original)
+++ freeswitch/trunk/libs/spandsp/src/fsk.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fsk.c,v 1.58 2009/04/01 13:22:40 steveu Exp $
+ * $Id: fsk.c,v 1.59 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/hdlc.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/hdlc.c (original)
+++ freeswitch/trunk/libs/spandsp/src/hdlc.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: hdlc.c,v 1.71 2009/02/12 12:38:39 steveu Exp $
+ * $Id: hdlc.c,v 1.72 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -264,7 +264,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(void) hdlc_rx_put_byte(hdlc_rx_state_t *s, int new_byte)
+SPAN_DECLARE_NONSTD(void) hdlc_rx_put_byte(hdlc_rx_state_t *s, int new_byte)
{
int i;
@@ -282,7 +282,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(void) hdlc_rx_put(hdlc_rx_state_t *s, const uint8_t buf[], int len)
+SPAN_DECLARE_NONSTD(void) hdlc_rx_put(hdlc_rx_state_t *s, const uint8_t buf[], int len)
{
int i;
@@ -440,7 +440,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) hdlc_tx_get_byte(hdlc_tx_state_t *s)
+SPAN_DECLARE_NONSTD(int) hdlc_tx_get_byte(hdlc_tx_state_t *s)
{
int i;
int byte_in_progress;
@@ -561,7 +561,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) hdlc_tx_get(hdlc_tx_state_t *s, uint8_t buf[], size_t max_len)
+SPAN_DECLARE_NONSTD(int) hdlc_tx_get(hdlc_tx_state_t *s, uint8_t buf[], size_t max_len)
{
size_t i;
int x;
Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.2005.sln
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/libspandsp.2005.sln (original)
+++ freeswitch/trunk/libs/spandsp/src/libspandsp.2005.sln Thu Jun 18 01:13:59 2009
@@ -12,6 +12,13 @@
{401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp_sim", "..\spandsp-sim\libspandsp_sim.2005.vcproj", "{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}"
+ ProjectSection(ProjectDependencies) = postProject
+ {329A6FA0-0FCC-4435-A950-E670AEFA9838} = {329A6FA0-0FCC-4435-A950-E670AEFA9838}
+ {DEE932AB-5911-4700-9EEB-8C7090A0A330} = {DEE932AB-5911-4700-9EEB-8C7090A0A330}
+ {401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libtiff.2005.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}"
ProjectSection(ProjectDependencies) = postProject
{2B8A45C9-FEB4-4734-AB37-8DB9DB899917} = {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}
Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.2008.sln
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/libspandsp.2008.sln (original)
+++ freeswitch/trunk/libs/spandsp/src/libspandsp.2008.sln Thu Jun 18 01:13:59 2009
@@ -12,6 +12,16 @@
{401A40CD-5DB4-4E34-AC68-FA99E9FAC014} = {401A40CD-5DB4-4E34-AC68-FA99E9FAC014}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_line_models", "..\spandsp-sim\msvc\make_line_models.2008.vcproj", "{F290BADE-82DE-4037-B49D-D563E43169DA}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspandsp_sim", "..\spandsp-sim\libspandsp_sim.2008.vcproj", "{502F1E51-F0A0-4607-AB7F-05BAB530AAE1}"
+ ProjectSection(ProjectDependencies) = postProject
+ {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5} = {1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}
+ EndProjectSection
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtiff", "libtiff.2008.vcproj", "{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}"
ProjectSection(ProjectDependencies) = postProject
{2B8A45C9-FEB4-4734-AB37-8DB9DB899917} = {2B8A45C9-FEB4-4734-AB37-8DB9DB899917}
@@ -91,6 +101,15 @@
{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|Win32.Build.0 = Release|Win32
{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.ActiveCfg = Release|x64
{1CBB0077-18C5-455F-801C-0A0CE7B0BBF5}.Release|x64.Build.0 = Release|x64
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.All|Win32.ActiveCfg = Release|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.All|Win32.Build.0 = Release|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.All|x64.ActiveCfg = Release|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.Debug|Win32.Build.0 = Debug|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.Debug|x64.ActiveCfg = Debug|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.Release|Win32.ActiveCfg = Release|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.Release|Win32.Build.0 = Release|Win32
+ {502F1E51-F0A0-4607-AB7F-05BAB530AAE1}.Release|x64.ActiveCfg = Release|Win32
{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|Win32.ActiveCfg = Release|x64
{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.ActiveCfg = Release|x64
{401A40CD-5DB4-4E34-AC68-FA99E9FAC014}.All|x64.Build.0 = Release|x64
@@ -174,6 +193,15 @@
{C2E8B4D1-A398-4D57-94F8-B61F20C7D514}.Release|Win32.ActiveCfg = Release|Win32
{C2E8B4D1-A398-4D57-94F8-B61F20C7D514}.Release|Win32.Build.0 = Release|Win32
{C2E8B4D1-A398-4D57-94F8-B61F20C7D514}.Release|x64.ActiveCfg = Release|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.All|Win32.ActiveCfg = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.All|Win32.Build.0 = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.All|x64.ActiveCfg = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.Debug|Win32.ActiveCfg = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.Debug|Win32.Build.0 = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.Debug|x64.ActiveCfg = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.Release|Win32.ActiveCfg = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.Release|Win32.Build.0 = All|Win32
+ {F290BADE-82DE-4037-B49D-D563E43169DA}.Release|x64.ActiveCfg = All|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Modified: freeswitch/trunk/libs/spandsp/src/libspandsp.2008.vcproj
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/libspandsp.2008.vcproj (original)
+++ freeswitch/trunk/libs/spandsp/src/libspandsp.2008.vcproj Thu Jun 18 01:13:59 2009
@@ -30,7 +30,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=".;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff"
+ AdditionalIncludeDirectories=".;..\..\src\spandsp;..\..\src;..\..\src\msvc;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
Modified: freeswitch/trunk/libs/spandsp/src/make_modem_filter.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/make_modem_filter.c (original)
+++ freeswitch/trunk/libs/spandsp/src/make_modem_filter.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: make_modem_filter.c,v 1.14 2009/02/10 17:16:57 steveu Exp $
+ * $Id: make_modem_filter.c,v 1.15 2009/06/02 11:51:57 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -355,6 +355,7 @@
}
if (strcmp(modem, "V.17") == 0)
{
+ /* This applies to V.32bis as well as V.17 */
rx_coeff_sets = 192;
rx_coeffs_per_filter = 27;
rx_excess_bandwidth = 0.5;
Modified: freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c (original)
+++ freeswitch/trunk/libs/spandsp/src/modem_connect_tones.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: modem_connect_tones.c,v 1.35 2009/02/16 09:57:22 steveu Exp $
+ * $Id: modem_connect_tones.c,v 1.37 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -88,8 +88,8 @@
/*- End of function --------------------------------------------------------*/
SPAN_DECLARE_NONSTD(int) modem_connect_tones_tx(modem_connect_tones_tx_state_t *s,
- int16_t amp[],
- int len)
+ int16_t amp[],
+ int len)
{
int16_t mod;
int i;
@@ -354,7 +354,9 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *s, const int16_t amp[], int len)
+SPAN_DECLARE_NONSTD(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *s,
+ const int16_t amp[],
+ int len)
{
int i;
int16_t notched;
@@ -399,6 +401,10 @@
}
}
break;
+ case MODEM_CONNECT_TONES_FAX_PREAMBLE:
+ /* Ignore any CED tone, and just look for V.21 preamble. */
+ fsk_rx(&(s->v21rx), amp, len);
+ break;
case MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE:
/* Also look for V.21 preamble. A lot of machines don't send the 2100Hz burst. It
might also not be seen all the way through the channel, due to switching delays. */
@@ -520,6 +526,7 @@
s->tone_type = tone_type;
switch (s->tone_type)
{
+ case MODEM_CONNECT_TONES_FAX_PREAMBLE:
case MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE:
fsk_rx_init(&(s->v21rx), &preset_fsk_specs[FSK_V21CH2], TRUE, v21_put_bit, s);
fsk_rx_signal_cutoff(&(s->v21rx), -45.5f);
Modified: freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h (original)
+++ freeswitch/trunk/libs/spandsp/src/msvc/inttypes.h Thu Jun 18 01:13:59 2009
@@ -19,6 +19,11 @@
extern "C" {
#endif
+typedef __int8 __int8_t;
+typedef __int16 __int16_t;
+typedef __int32 __int32_t;
+typedef __int64 __int64_t;
+
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
@@ -28,11 +33,11 @@
typedef __int32 int32_t;
typedef __int64 int64_t;
-#define INT16_MAX 0x7fff
+#define INT16_MAX 0x7FFF
#define INT16_MIN (-INT16_MAX - 1)
#if !defined(INFINITY)
-#define INFINITY 0x7fffffff
+#define INFINITY 0x7FFFFFFF
#endif
#define INT32_MAX (2147483647)
Modified: freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2005.vcproj
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2005.vcproj (original)
+++ freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2005.vcproj Thu Jun 18 01:13:59 2009
@@ -90,7 +90,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine=""$(TargetPath)" -m V.17 -i -r >"$(ProjectDir)..\v17rx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -r >"$(ProjectDir)..\v17rx_floating_rrc.h"

"$(TargetPath)" -m V.17 -i -t >"$(ProjectDir)..\v17tx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -t >"$(ProjectDir)..\v17tx_floating_rrc.h"

"$(TargetPath)" -m V.22bis1200 -i -r >"$(ProjectDir)..\v22bis_rx_1200_fixed_rrc.h"
"$(TargetPath)" -m V.22bis2400 -i -r >"$(ProjectDir)..\v22bis_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.22bis1200 -r >"$(ProjectDir)..\v22bis_rx_1200_floating_rrc.h"
"$(TargetPath)" -m V.22bis2400 -r >"$(ProjectDir)..\v22bis_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.22bis -i -t >"$(ProjectDir)..\v22bis_tx_fixed_rrc.h"
"$(TargetPath)" -m V.22bis -t >"$(ProjectDir)..\v22bis_tx_floating_rrc.h"

"$(TargetPath)" -m V.27ter2400 -i -r >"$(ProjectDir)..\v27ter_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -r >"$(ProjectDir)..\v27ter_rx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -r >"$(ProjectDir)..\v27ter_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -r >"$(ProjectDir)..\v27ter_rx_4800_floating_rrc.h"
"$(TargetPath)" -m V.27ter2400 -i -t >"$(ProjectDir)..\v27ter_tx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -t >"$(ProjectDir)..\v27ter_tx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -t >"$(ProjectDir)..\v27ter_tx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -t >"$(ProjectDir)..\v27ter_tx_4800_floating_rrc.h"

"$(TargetPath)" -m V.29 -i -r >"$(ProjectDir)..\v29rx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -r >"$(ProjectDir)..\v29rx_floating_rrc.h"
"$(TargetPath)" -m V.29 -i -t >"$(ProjectDir)..\v29tx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -t >"$(ProjectDir)..\v29tx_floating_rrc.h"

"
+ CommandLine=""$(TargetPath)" -m V.17 -i -r >"$(ProjectDir)..\v17_v32bis_rx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -r >"$(ProjectDir)..\v17_v32bis_rx_floating_rrc.h"

"$(TargetPath)" -m V.17 -i -t >"$(ProjectDir)..\v17_v32bis_tx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -t >"$(ProjectDir)..\v17_v32bis_tx_floating_rrc.h"

"$(TargetPath)" -m V.22bis1200 -i -r >"$(ProjectDir)..\v22bis_rx_1200_fixed_rrc.h"
"$(TargetPath)" -m V.22bis2400 -i -r >"$(ProjectDir)..\v22bis_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.22bis1200 -r >"$(ProjectDir)..\v22bis_rx_1200_floating_rrc.h"
"$(TargetPath)" -m V.22bis2400 -r >"$(ProjectDir)..\v22bis_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.22bis -i -t >"$(ProjectDir)..\v22bis_tx_fixed_rrc.h"
"$(TargetPath)" -m V.22bis -t >"$(ProjectDir)..\v22bis_tx_floating_rrc.h"

"$(TargetPath)" -m V.27ter2400 -i -r >"$(ProjectDir)..\v27ter_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -r >"$(ProjectDir)..\v27ter_rx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -r >"$(ProjectDir)..\v27ter_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -r >"$(ProjectDir)..\v27ter_rx_4800_floating_rrc.h"
"$(TargetPath)" -m V.27ter2400 -i -t >"$(ProjectDir)..\v27ter_tx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -t >"$(ProjectDir)..\v27ter_tx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -t >"$(ProjectDir)..\v27ter_tx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -t >"$(ProjectDir)..\v27ter_tx_4800_floating_rrc.h"

"$(TargetPath)" -m V.29 -i -r >"$(ProjectDir)..\v29rx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -r >"$(ProjectDir)..\v29rx_floating_rrc.h"
"$(TargetPath)" -m V.29 -i -t >"$(ProjectDir)..\v29tx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -t >"$(ProjectDir)..\v29tx_floating_rrc.h"
"
/>
</Configuration>
</Configurations>
Modified: freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2008.vcproj
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2008.vcproj (original)
+++ freeswitch/trunk/libs/spandsp/src/msvc/make_modem_filter.2008.vcproj Thu Jun 18 01:13:59 2009
@@ -88,7 +88,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine=""$(TargetPath)" -m V.17 -i -r >"$(ProjectDir)..\v17rx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -r >"$(ProjectDir)..\v17rx_floating_rrc.h"

"$(TargetPath)" -m V.17 -i -t >"$(ProjectDir)..\v17tx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -t >"$(ProjectDir)..\v17tx_floating_rrc.h"

"$(TargetPath)" -m V.22bis1200 -i -r >"$(ProjectDir)..\v22bis_rx_1200_fixed_rrc.h"
"$(TargetPath)" -m V.22bis2400 -i -r >"$(ProjectDir)..\v22bis_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.22bis1200 -r >"$(ProjectDir)..\v22bis_rx_1200_floating_rrc.h"
"$(TargetPath)" -m V.22bis2400 -r >"$(ProjectDir)..\v22bis_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.22bis -i -t >"$(ProjectDir)..\v22bis_tx_fixed_rrc.h"
"$(TargetPath)" -m V.22bis -t >"$(ProjectDir)..\v22bis_tx_floating_rrc.h"

"$(TargetPath)" -m V.27ter2400 -i -r >"$(ProjectDir)..\v27ter_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -r >"$(ProjectDir)..\v27ter_rx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -r >"$(ProjectDir)..\v27ter_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -r >"$(ProjectDir)..\v27ter_rx_4800_floating_rrc.h"
"$(TargetPath)" -m V.27ter2400 -i -t >"$(ProjectDir)..\v27ter_tx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -t >"$(ProjectDir)..\v27ter_tx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -t >"$(ProjectDir)..\v27ter_tx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -t >"$(ProjectDir)..\v27ter_tx_4800_floating_rrc.h"

"$(TargetPath)" -m V.29 -i -r >"$(ProjectDir)..\v29rx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -r >"$(ProjectDir)..\v29rx_floating_rrc.h"
"$(TargetPath)" -m V.29 -i -t >"$(ProjectDir)..\v29tx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -t >"$(ProjectDir)..\v29tx_floating_rrc.h"
"
+ CommandLine=""$(TargetPath)" -m V.17 -i -r >"$(ProjectDir)..\v17_v32bis_rx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -r >"$(ProjectDir)..\v17_v32bis_rx_floating_rrc.h"

"$(TargetPath)" -m V.17 -i -t >"$(ProjectDir)..\v17_v32bis_tx_fixed_rrc.h"
"$(TargetPath)" -m V.17 -t >"$(ProjectDir)..\v17_v32bis_tx_floating_rrc.h"

"$(TargetPath)" -m V.22bis1200 -i -r >"$(ProjectDir)..\v22bis_rx_1200_fixed_rrc.h"
"$(TargetPath)" -m V.22bis2400 -i -r >"$(ProjectDir)..\v22bis_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.22bis1200 -r >"$(ProjectDir)..\v22bis_rx_1200_floating_rrc.h"
"$(TargetPath)" -m V.22bis2400 -r >"$(ProjectDir)..\v22bis_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.22bis -i -t >"$(ProjectDir)..\v22bis_tx_fixed_rrc.h"
"$(TargetPath)" -m V.22bis -t >"$(ProjectDir)..\v22bis_tx_floating_rrc.h"

"$(TargetPath)" -m V.27ter2400 -i -r >"$(ProjectDir)..\v27ter_rx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -r >"$(ProjectDir)..\v27ter_rx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -r >"$(ProjectDir)..\v27ter_rx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -r >"$(ProjectDir)..\v27ter_rx_4800_floating_rrc.h"
"$(TargetPath)" -m V.27ter2400 -i -t >"$(ProjectDir)..\v27ter_tx_2400_fixed_rrc.h"
"$(TargetPath)" -m V.27ter4800 -i -t >"$(ProjectDir)..\v27ter_tx_4800_fixed_rrc.h"
"$(TargetPath)" -m V.27ter2400 -t >"$(ProjectDir)..\v27ter_tx_2400_floating_rrc.h"
"$(TargetPath)" -m V.27ter4800 -t >"$(ProjectDir)..\v27ter_tx_4800_floating_rrc.h"

"$(TargetPath)" -m V.29 -i -r >"$(ProjectDir)..\v29rx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -r >"$(ProjectDir)..\v29rx_floating_rrc.h"
"$(TargetPath)" -m V.29 -i -t >"$(ProjectDir)..\v29tx_fixed_rrc.h"
"$(TargetPath)" -m V.29 -t >"$(ProjectDir)..\v29tx_floating_rrc.h"
"
/>
</Configuration>
</Configurations>
Modified: freeswitch/trunk/libs/spandsp/src/msvc/vc9proj.head
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/msvc/vc9proj.head (original)
+++ freeswitch/trunk/libs/spandsp/src/msvc/vc9proj.head Thu Jun 18 01:13:59 2009
@@ -30,7 +30,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories=".;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff"
+ AdditionalIncludeDirectories=".;..\..\src\spandsp;..\..\src;..\..\src\msvc;.\spandsp;.\msvc;..\..\tiff-3.8.2\libtiff"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBSPANDSP_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_CONFIG_H"
MinimalRebuild="true"
BasicRuntimeChecks="3"
Modified: freeswitch/trunk/libs/spandsp/src/power_meter.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/power_meter.c (original)
+++ freeswitch/trunk/libs/spandsp/src/power_meter.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: power_meter.c,v 1.28 2009/02/10 13:06:46 steveu Exp $
+ * $Id: power_meter.c,v 1.31 2009/05/30 17:29:23 steveu Exp $
*/
/*! \file */
@@ -122,7 +122,7 @@
SPAN_DECLARE(float) power_meter_current_dbm0(power_meter_t *s)
{
if (s->reading <= 0)
- return FLT_MIN;
+ return -96.329f + DBM0_MAX_POWER;
/* This is based on A-law, but u-law is only 0.03dB different, so don't worry. */
return log10f((float) s->reading/(32767.0f*32767.0f))*10.0f + DBM0_MAX_POWER;
}
@@ -131,8 +131,84 @@
SPAN_DECLARE(float) power_meter_current_dbov(power_meter_t *s)
{
if (s->reading <= 0)
- return FLT_MIN;
+ return -96.329f;
return log10f((float) s->reading/(32767.0f*32767.0f))*10.0f;
}
/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(int32_t) power_surge_detector(power_surge_detector_state_t *s, int16_t amp)
+{
+ int32_t pow_short;
+ int32_t pow_medium;
+
+ pow_short = power_meter_update(&s->short_term, amp);
+ pow_medium = power_meter_update(&s->medium_term, amp);
+ if (pow_medium < s->min)
+ return 0;
+ if (!s->signal_present)
+ {
+ if (pow_short <= s->surge*(pow_medium >> 10))
+ return 0;
+ s->signal_present = TRUE;
+ s->medium_term.reading = s->short_term.reading;
+ }
+ else
+ {
+ if (pow_short < s->sag*(pow_medium >> 10))
+ {
+ s->signal_present = FALSE;
+ s->medium_term.reading = s->short_term.reading;
+ return 0;
+ }
+ }
+ return pow_short;
+}
+/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(float) power_surge_detector_current_dbm0(power_surge_detector_state_t *s)
+{
+ return power_meter_current_dbm0(&s->short_term);
+}
+/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(float) power_surge_detector_current_dbov(power_surge_detector_state_t *s)
+{
+ return power_meter_current_dbov(&s->short_term);
+}
+/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(power_surge_detector_state_t *) power_surge_detector_init(power_surge_detector_state_t *s, float min, float surge)
+{
+ float ratio;
+
+ if (s == NULL)
+ {
+ if ((s = (power_surge_detector_state_t *) malloc(sizeof(*s))) == NULL)
+ return NULL;
+ }
+ memset(s, 0, sizeof(*s));
+ power_meter_init(&s->short_term, 4);
+ power_meter_init(&s->medium_term, 7);
+ ratio = powf(10.0f, surge/10.0f);
+ s->surge = 1024.0f*ratio;
+ s->sag = 1024.0f/ratio;
+ s->min = power_meter_level_dbm0(min);
+ s->medium_term.reading = s->min + 1;
+ return s;
+}
+/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(int) power_surge_detector_release(power_surge_detector_state_t *s)
+{
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(int) power_surge_detector_free(power_surge_detector_state_t *s)
+{
+ if (s)
+ free(s);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
/*- End of file ------------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/src/silence_gen.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/silence_gen.c (original)
+++ freeswitch/trunk/libs/spandsp/src/silence_gen.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: silence_gen.c,v 1.21 2009/04/12 03:29:58 steveu Exp $
+ * $Id: silence_gen.c,v 1.22 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/adsi.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: adsi.h,v 1.39 2009/04/11 18:11:19 steveu Exp $
+ * $Id: adsi.h,v 1.40 2009/05/22 16:39:01 steveu Exp $
*/
/*! \file */
@@ -476,7 +476,8 @@
\param len The length of the message.
\return The length actually added. If a message is already in progress
in the transmitter, this function will return zero, as it will
- not successfully add the message to the buffer.
+ not successfully add the message to the buffer. If the message is
+ invalid (e.g. it is too long), this function will return -1.
*/
SPAN_DECLARE(int) adsi_tx_put_message(adsi_tx_state_t *s, const uint8_t *msg, int len);
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/expose.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/expose.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/expose.h Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: expose.h,v 1.12 2009/04/12 03:29:58 steveu Exp $
+ * $Id: expose.h,v 1.13 2009/05/16 03:34:45 steveu Exp $
*/
/*! \file */
@@ -77,6 +77,7 @@
#include <spandsp/private/t38_terminal.h>
#include <spandsp/private/t31.h>
#include <spandsp/private/v8.h>
+#include <spandsp/private/v18.h>
#include <spandsp/private/v42.h>
#include <spandsp/private/v42bis.h>
#include <spandsp/private/adsi.h>
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/fsk.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fsk.h,v 1.39 2009/04/01 13:22:40 steveu Exp $
+ * $Id: fsk.h,v 1.40 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/hdlc.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: hdlc.h,v 1.44 2009/02/12 12:38:39 steveu Exp $
+ * $Id: hdlc.h,v 1.45 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -160,14 +160,14 @@
\param s A pointer to an HDLC receiver context.
\param new_byte The byte of data.
*/
-SPAN_DECLARE(void) hdlc_rx_put_byte(hdlc_rx_state_t *s, int new_byte);
+SPAN_DECLARE_NONSTD(void) hdlc_rx_put_byte(hdlc_rx_state_t *s, int new_byte);
/*! \brief Put a series of bytes of data to an HDLC receiver.
\param s A pointer to an HDLC receiver context.
\param buf The buffer of data.
\param len The length of the data in the buffer.
*/
-SPAN_DECLARE(void) hdlc_rx_put(hdlc_rx_state_t *s, const uint8_t buf[], int len);
+SPAN_DECLARE_NONSTD(void) hdlc_rx_put(hdlc_rx_state_t *s, const uint8_t buf[], int len);
/*! \brief Initialise an HDLC transmitter context.
\param s A pointer to an HDLC transmitter context.
@@ -234,7 +234,7 @@
\param s A pointer to an HDLC transmitter context.
\return The next byte for transmission.
*/
-SPAN_DECLARE(int) hdlc_tx_get_byte(hdlc_tx_state_t *s);
+SPAN_DECLARE_NONSTD(int) hdlc_tx_get_byte(hdlc_tx_state_t *s);
/*! \brief Get the next sequence of bytes for transmission.
\param s A pointer to an HDLC transmitter context.
@@ -242,7 +242,7 @@
\param max_len The number of bytes to get.
\return The number of bytes actually got.
*/
-SPAN_DECLARE(int) hdlc_tx_get(hdlc_tx_state_t *s, uint8_t buf[], size_t max_len);
+SPAN_DECLARE_NONSTD(int) hdlc_tx_get(hdlc_tx_state_t *s, uint8_t buf[], size_t max_len);
#if defined(__cplusplus)
}
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/modem_connect_tones.h Thu Jun 18 01:13:59 2009
@@ -24,7 +24,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: modem_connect_tones.h,v 1.22 2009/02/10 13:06:47 steveu Exp $
+ * $Id: modem_connect_tones.h,v 1.24 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -72,8 +72,7 @@
/*! \brief The ANSam with phase reversals tone is a version of ANS_PR with 20% of 15Hz+-0.1Hz AM
modulation, as per V.8 */
MODEM_CONNECT_TONES_ANSAM_PR = 5,
- /*! \brief FAX preamble in a string of V.21 HDLC flag octets. This is only valid as a result of tone
- detection. It should not be specified as a tone type to transmit or receive. */
+ /*! \brief FAX preamble in a string of V.21 HDLC flag octets. */
MODEM_CONNECT_TONES_FAX_PREAMBLE = 6,
/*! \brief CED tone is the same as ANS tone. FAX preamble in a string of V.21 HDLC flag octets.
This is only valid as a tone type to receive. It is never reported as a detected tone
@@ -126,8 +125,8 @@
\return The number of samples generated.
*/
SPAN_DECLARE_NONSTD(int) modem_connect_tones_tx(modem_connect_tones_tx_state_t *s,
- int16_t amp[],
- int len);
+ int16_t amp[],
+ int len);
/*! \brief Process a block of samples through an instance of the modem connect
tones detector.
@@ -136,9 +135,9 @@
\param len The number of samples in the array.
\return The number of unprocessed samples.
*/
-SPAN_DECLARE(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *s,
- const int16_t amp[],
- int len);
+SPAN_DECLARE_NONSTD(int) modem_connect_tones_rx(modem_connect_tones_rx_state_t *s,
+ const int16_t amp[],
+ int len);
/*! \brief Test if a modem_connect tone has been detected.
\param s The context.
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/power_meter.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/power_meter.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/power_meter.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: power_meter.h,v 1.18 2009/02/10 13:06:47 steveu Exp $
+ * $Id: power_meter.h,v 1.19 2009/05/19 14:15:09 steveu Exp $
*/
#if !defined(_POWER_METER_H_)
@@ -56,6 +56,16 @@
int32_t reading;
} power_meter_t;
+typedef struct
+{
+ power_meter_t short_term;
+ power_meter_t medium_term;
+ int signal_present;
+ int32_t surge;
+ int32_t sag;
+ int32_t min;
+} power_surge_detector_state_t;
+
#if defined(__cplusplus)
extern "C"
{
@@ -116,6 +126,26 @@
\return The equivalent power meter reading. */
SPAN_DECLARE(int32_t) power_meter_level_dbov(float level);
+SPAN_DECLARE(int32_t) power_surge_detector(power_surge_detector_state_t *s, int16_t amp);
+
+/*! Get the current surge detector short term meter reading, in dBm0.
+ \brief Get the current surge detector meter reading, in dBm0.
+ \param s The power surge detector context.
+ \return The current power surge detector power reading, in dBm0. */
+SPAN_DECLARE(float) power_surge_detector_current_dbm0(power_surge_detector_state_t *s);
+
+/*! Get the current surge detector short term meter reading, in dBOv.
+ \brief Get the current surge detector meter reading, in dBOv.
+ \param s The power surge detector context.
+ \return The current power surge detector power reading, in dBOv. */
+SPAN_DECLARE(float) power_surge_detector_current_dbov(power_surge_detector_state_t *s);
+
+SPAN_DECLARE(power_surge_detector_state_t *) power_surge_detector_init(power_surge_detector_state_t *s, float min, float surge);
+
+SPAN_DECLARE(int) power_surge_detector_release(power_surge_detector_state_t *s);
+
+SPAN_DECLARE(int) power_surge_detector_free(power_surge_detector_state_t *s);
+
#if defined(__cplusplus)
}
#endif
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_gateway.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t38_gateway.h,v 1.3 2009/04/12 14:18:02 steveu Exp $
+ * $Id: t38_gateway.h,v 1.4 2009/05/16 03:34:45 steveu Exp $
*/
/*! \file */
@@ -168,11 +168,8 @@
/*! \brief The type of fast receive modem currently active, which may be T38_NONE */
int fast_rx_active;
- /*! \brief TRUE if between DCS and TCF, and we want the fast image modem to
- start in the T.38 data at a predictable time from the end of the
- V.21 signal. */
- int tcf_mode_predictable_modem_start;
-
+ /*! \brief The current timed operation. */
+ int timed_mode;
/*! \brief The number of samples until the next timeout event */
int samples_to_timeout;
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/silence_gen.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/silence_gen.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/silence_gen.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: silence_gen.h,v 1.17 2009/04/12 03:29:58 steveu Exp $
+ * $Id: silence_gen.h,v 1.18 2009/06/02 16:03:56 steveu Exp $
*/
#if !defined(_SPANDSP_SILENCE_GEN_H_)
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/tone_generate.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: tone_generate.h,v 1.38 2009/02/10 13:06:47 steveu Exp $
+ * $Id: tone_generate.h,v 1.39 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v17rx.h,v 1.63 2009/04/12 04:20:01 steveu Exp $
+ * $Id: v17rx.h,v 1.64 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v17tx.h,v 1.41 2009/04/12 09:12:11 steveu Exp $
+ * $Id: v17tx.h,v 1.42 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v18.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v18.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v18.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v18.h,v 1.3 2009/04/12 09:12:11 steveu Exp $
+ * $Id: v18.h,v 1.5 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -100,7 +100,7 @@
\param max_len The number of samples to be generated.
\return The number of samples actually generated.
*/
-SPAN_DECLARE(int) v18_tx(v18_state_t *s, int16_t amp[], int max_len);
+SPAN_DECLARE_NONSTD(int) v18_tx(v18_state_t *s, int16_t amp[], int max_len);
/*! Process a block of received V.18 audio samples.
\brief Process a block of received V.18 audio samples.
@@ -108,7 +108,7 @@
\param amp The audio sample buffer.
\param len The number of samples in the buffer.
*/
-SPAN_DECLARE(int) v18_rx(v18_state_t *s, const int16_t amp[], int len);
+SPAN_DECLARE_NONSTD(int) v18_rx(v18_state_t *s, const int16_t amp[], int len);
/*! \brief Put a string to a V.18 context's input buffer.
\param s The V.18 context.
@@ -116,7 +116,8 @@
\param len The length of the string. If negative, the string is
assumed to be a NULL terminated string.
\return The number of characters actually added. This may be less than the
- length of the digit string, if the buffer fills up. */
+ length of the digit string, if the buffer fills up. If the string is
+ invalid, this function will return -1. */
SPAN_DECLARE(int) v18_put(v18_state_t *s, const char msg[], int len);
/*! Convert a text string to a V.18 DTMF string.
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v22bis.h,v 1.42 2009/04/29 12:37:45 steveu Exp $
+ * $Id: v22bis.h,v 1.43 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -87,7 +87,7 @@
\param amp The audio sample buffer.
\param len The number of samples in the buffer.
\return The number of samples unprocessed. */
-SPAN_DECLARE(int) v22bis_rx(v22bis_state_t *s, const int16_t amp[], int len);
+SPAN_DECLARE_NONSTD(int) v22bis_rx(v22bis_state_t *s, const int16_t amp[], int len);
/*! Fake processing of a missing block of received V.22bis modem audio samples.
(e.g due to packet loss).
@@ -135,7 +135,7 @@
\param amp The audio sample buffer.
\param len The number of samples to be generated.
\return The number of samples actually generated. */
-SPAN_DECLARE(int) v22bis_tx(v22bis_state_t *s, int16_t amp[], int len);
+SPAN_DECLARE_NONSTD(int) v22bis_tx(v22bis_state_t *s, int16_t amp[], int len);
/*! Adjust a V.22bis modem transmit context's power output.
\brief Adjust a V.22bis modem transmit context's output power.
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v27ter_rx.h,v 1.59 2009/04/12 09:12:11 steveu Exp $
+ * $Id: v27ter_rx.h,v 1.60 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v27ter_tx.h,v 1.41 2009/04/12 09:12:11 steveu Exp $
+ * $Id: v27ter_tx.h,v 1.42 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v29rx.h,v 1.70 2009/04/12 09:12:11 steveu Exp $
+ * $Id: v29rx.h,v 1.71 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v29tx.h,v 1.39 2009/04/12 09:12:11 steveu Exp $
+ * $Id: v29tx.h,v 1.40 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v8.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/v8.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v8.h Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v8.h,v 1.27 2009/02/03 16:28:41 steveu Exp $
+ * $Id: v8.h,v 1.28 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -155,7 +155,7 @@
\param max_len The number of samples to be generated.
\return The number of samples actually generated.
*/
-SPAN_DECLARE(int) v8_tx(v8_state_t *s, int16_t *amp, int max_len);
+SPAN_DECLARE_NONSTD(int) v8_tx(v8_state_t *s, int16_t *amp, int max_len);
/*! Process a block of received V.8 audio samples.
\brief Process a block of received V.8 audio samples.
@@ -163,7 +163,7 @@
\param amp The audio sample buffer.
\param len The number of samples in the buffer.
*/
-SPAN_DECLARE(int) v8_rx(v8_state_t *s, const int16_t *amp, int len);
+SPAN_DECLARE_NONSTD(int) v8_rx(v8_state_t *s, const int16_t *amp, int len);
/*! Log the list of supported modulations.
\brief Log the list of supported modulations.
Modified: freeswitch/trunk/libs/spandsp/src/spandsp/version.h
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/spandsp/version.h (original)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/version.h Thu Jun 18 01:13:59 2009
@@ -30,9 +30,9 @@
/* The date and time of the version are in UTC form. */
-#define SPANDSP_RELEASE_DATE 20090502
-#define SPANDSP_RELEASE_TIME 044449
-#define SPANDSP_RELEASE_DATETIME_STRING "20090502 044449"
+#define SPANDSP_RELEASE_DATE 20090602
+#define SPANDSP_RELEASE_TIME 160509
+#define SPANDSP_RELEASE_DATETIME_STRING "20090602 160509"
#endif
/*- End of file ------------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/src/t30.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/t30.c (original)
+++ freeswitch/trunk/libs/spandsp/src/t30.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t30.c,v 1.298 2009/04/30 18:46:14 steveu Exp $
+ * $Id: t30.c,v 1.301 2009/05/25 12:37:38 steveu Exp $
*/
/*! \file */
@@ -319,6 +319,11 @@
variable. */
#define PPR_LIMIT_BEFORE_CTC_OR_EOR 4
+/* HDLC message header byte values */
+#define ADDRESS_FIELD 0xFF
+#define CONTROL_FIELD_NON_FINAL_FRAME 0x03
+#define CONTROL_FIELD_FINAL_FRAME 0x13
+
enum
{
TIMER_IS_IDLE = 0,
@@ -660,8 +665,8 @@
for (i = 0; i < 256; i++)
{
s->ecm_len[i] = -1;
- s->ecm_data[i][0] = 0xFF;
- s->ecm_data[i][1] = 0x03;
+ s->ecm_data[i][0] = ADDRESS_FIELD;
+ s->ecm_data[i][1] = CONTROL_FIELD_NON_FINAL_FRAME;
s->ecm_data[i][2] = T4_FCD;
/* These frames contain a frame sequence number within the partial page (one octet) followed
by some image data. */
@@ -749,8 +754,8 @@
/* The RCP frame is an odd man out, as its a simple 1 byte control
frame, but is specified to not have the final bit set. It doesn't
seem to have the DIS received bit set, either. */
- frame[0] = 0xFF;
- frame[1] = 0x03;
+ frame[0] = ADDRESS_FIELD;
+ frame[1] = CONTROL_FIELD_NON_FINAL_FRAME;
frame[2] = T4_RCP;
send_frame(s, frame, 3);
/* In case we are just after a CTC/CTR exchange, which kicked us back to long training */
@@ -806,8 +811,8 @@
uint8_t frame[3];
/* The simple command/response frames are always final frames */
- frame[0] = 0xFF;
- frame[1] = 0x13;
+ frame[0] = ADDRESS_FIELD;
+ frame[1] = CONTROL_FIELD_FINAL_FRAME;
frame[2] = (uint8_t) (type | s->dis_received);
send_frame(s, frame, 3);
}
@@ -821,8 +826,8 @@
len = strlen(msg);
p = 0;
- frame[p++] = 0xFF;
- frame[p++] = 0x03;
+ frame[p++] = ADDRESS_FIELD;
+ frame[p++] = CONTROL_FIELD_NON_FINAL_FRAME;
frame[p++] = (uint8_t) (cmd | s->dis_received);
while (len > 0)
frame[p++] = msg[--len];
@@ -838,8 +843,8 @@
if (s->tx_info.nsf && s->tx_info.nsf_len)
{
span_log(&s->logging, SPAN_LOG_FLOW, "Sending user supplied NSF - %d octets\n", s->tx_info.nsf_len);
- s->tx_info.nsf[0] = 0xFF;
- s->tx_info.nsf[1] = 0x03;
+ s->tx_info.nsf[0] = ADDRESS_FIELD;
+ s->tx_info.nsf[1] = CONTROL_FIELD_NON_FINAL_FRAME;
s->tx_info.nsf[2] = (uint8_t) (T30_NSF | s->dis_received);
send_frame(s, s->tx_info.nsf, s->tx_info.nsf_len + 3);
return TRUE;
@@ -854,8 +859,8 @@
if (s->tx_info.nss && s->tx_info.nss_len)
{
span_log(&s->logging, SPAN_LOG_FLOW, "Sending user supplied NSS - %d octets\n", s->tx_info.nss_len);
- s->tx_info.nss[0] = 0xFF;
- s->tx_info.nss[1] = 0x03;
+ s->tx_info.nss[0] = ADDRESS_FIELD;
+ s->tx_info.nss[1] = CONTROL_FIELD_NON_FINAL_FRAME;
s->tx_info.nss[2] = (uint8_t) (T30_NSS | s->dis_received);
send_frame(s, s->tx_info.nss, s->tx_info.nss_len + 3);
return TRUE;
@@ -870,8 +875,8 @@
if (s->tx_info.nsc && s->tx_info.nsc_len)
{
span_log(&s->logging, SPAN_LOG_FLOW, "Sending user supplied NSC - %d octets\n", s->tx_info.nsc_len);
- s->tx_info.nsc[0] = 0xFF;
- s->tx_info.nsc[1] = 0x03;
+ s->tx_info.nsc[0] = ADDRESS_FIELD;
+ s->tx_info.nsc[1] = CONTROL_FIELD_NON_FINAL_FRAME;
s->tx_info.nsc[2] = (uint8_t) (T30_NSC | s->dis_received);
send_frame(s, s->tx_info.nsc, s->tx_info.nsc_len + 3);
return TRUE;
@@ -1033,8 +1038,8 @@
{
uint8_t frame[7];
- frame[0] = 0xFF;
- frame[1] = 0x13;
+ frame[0] = ADDRESS_FIELD;
+ frame[1] = CONTROL_FIELD_FINAL_FRAME;
frame[2] = (uint8_t) (T30_PPS | s->dis_received);
frame[3] = (s->ecm_at_page_end) ? ((uint8_t) (s->next_tx_step | s->dis_received)) : T30_NULL;
frame[4] = (uint8_t) (s->ecm_tx_page & 0xFF);
@@ -1074,8 +1079,8 @@
it is sent. It might also be edited if the application changes our
capabilities (e.g. disabling fine mode). Right now we set up all the
unchanging stuff about what we are capable of doing. */
- s->local_dis_dtc_frame[0] = 0xFF;
- s->local_dis_dtc_frame[1] = 0x13;
+ s->local_dis_dtc_frame[0] = ADDRESS_FIELD;
+ s->local_dis_dtc_frame[1] = CONTROL_FIELD_FINAL_FRAME;
s->local_dis_dtc_frame[2] = (uint8_t) (T30_DIS | s->dis_received);
for (i = 3; i < 19; i++)
s->local_dis_dtc_frame[i] = 0x00;
@@ -1258,8 +1263,8 @@
/* Make a DCS frame based on local issues and the latest received DIS/DTC frame. Negotiate
the result based on what both parties can do. */
- s->dcs_frame[0] = 0xFF;
- s->dcs_frame[1] = 0x13;
+ s->dcs_frame[0] = ADDRESS_FIELD;
+ s->dcs_frame[1] = CONTROL_FIELD_FINAL_FRAME;
s->dcs_frame[2] = (uint8_t) (T30_DCS | s->dis_received);
for (i = 3; i < 19; i++)
s->dcs_frame[i] = 0x00;
@@ -1608,6 +1613,7 @@
static void return_to_phase_b(t30_state_t *s, int with_fallback)
{
/* This is what we do after things like T30_EOM is exchanged. */
+#if 0
if (step_fallback_entry(s) < 0)
{
/* We have fallen back as far as we can go. Give up. */
@@ -1622,6 +1628,12 @@
else
set_state(s, T30_STATE_R);
}
+#else
+ if (s->calling_party)
+ set_state(s, T30_STATE_T);
+ else
+ set_state(s, T30_STATE_R);
+#endif
}
/*- End of function --------------------------------------------------------*/
@@ -2309,8 +2321,8 @@
{
/* We need to send the PPR frame we have created, to try to fill in the missing/bad data. */
set_state(s, T30_STATE_F_POST_RCP_PPR);
- s->ecm_frame_map[0] = 0xFF;
- s->ecm_frame_map[1] = 0x13;
+ s->ecm_frame_map[0] = ADDRESS_FIELD;
+ s->ecm_frame_map[1] = CONTROL_FIELD_FINAL_FRAME;
s->ecm_frame_map[2] = (uint8_t) (T30_PPR | s->dis_received);
send_frame(s, s->ecm_frame_map, 3 + 32);
}
@@ -2474,8 +2486,8 @@
{
set_state(s, T30_STATE_IV_EOR);
queue_phase(s, T30_PHASE_D_TX);
- frame[0] = 0xFF;
- frame[1] = 0x13;
+ frame[0] = ADDRESS_FIELD;
+ frame[1] = CONTROL_FIELD_FINAL_FRAME;
frame[2] = (uint8_t) (T30_EOR | s->dis_received);
frame[3] = (s->ecm_at_page_end) ? ((uint8_t) (s->next_tx_step | s->dis_received)) : T30_NULL;
span_log(&s->logging, SPAN_LOG_FLOW, "Sending EOR + %s\n", t30_frametype(frame[3]));
@@ -5489,7 +5501,7 @@
*/
if (!ok)
{
- span_log(&s->logging, SPAN_LOG_FLOW, "Bad CRC received\n");
+ span_log(&s->logging, SPAN_LOG_FLOW, "Bad HDLC CRC received\n");
if (s->phase != T30_PHASE_C_ECM_RX)
{
/* We either force a resend, or we wait until a resend occurs through a timeout. */
@@ -5502,6 +5514,13 @@
queue_phase(s, T30_PHASE_D_TX);
send_simple_frame(s, T30_CRP);
}
+ else
+ {
+ /* Cancel the command or response timer (if one is running) */
+ span_log(&s->logging, SPAN_LOG_FLOW, "Bad CRC and timer is %d\n", s->timer_t2_t4_is);
+ if (s->timer_t2_t4_is == TIMER_IS_T2A)
+ timer_t2_t4_stop(s);
+ }
}
return;
}
@@ -5509,11 +5528,17 @@
if (len < 3)
{
span_log(&s->logging, SPAN_LOG_FLOW, "Bad HDLC frame length - %d\n", len);
+ /* Cancel the command or response timer (if one is running) */
+ timer_t2_t4_stop(s);
return;
}
- if (msg[0] != 0xFF || !(msg[1] == 0x03 || msg[1] == 0x13))
+ if (msg[0] != ADDRESS_FIELD
+ ||
+ !(msg[1] == CONTROL_FIELD_NON_FINAL_FRAME || msg[1] == CONTROL_FIELD_FINAL_FRAME))
{
span_log(&s->logging, SPAN_LOG_FLOW, "Bad HDLC frame header - %02x %02x\n", msg[0], msg[1]);
+ /* Cancel the command or response timer (if one is running) */
+ timer_t2_t4_stop(s);
return;
}
s->rx_frame_received = TRUE;
Modified: freeswitch/trunk/libs/spandsp/src/t35.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/t35.c (original)
+++ freeswitch/trunk/libs/spandsp/src/t35.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t35.c,v 1.30 2009/04/12 09:12:10 steveu Exp $
+ * $Id: t35.c,v 1.31 2009/05/16 03:34:45 steveu Exp $
*/
/*
@@ -525,7 +525,7 @@
static const nsf_data_t known_nsf[] =
{
/* Japan */
- {"\x00\x00\x00", 3, "unknown - indeterminate", TRUE, NULL},
+ {"\x00\x00\x00", 3, "Unknown - indeterminate", TRUE, NULL},
{"\x00\x00\x01", 3, "Anjitsu", FALSE, NULL},
{"\x00\x00\x02", 3, "Nippon Telephone", FALSE, NULL},
{"\x00\x00\x05", 3, "Mitsuba Electric", FALSE, NULL},
Modified: freeswitch/trunk/libs/spandsp/src/t38_gateway.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/t38_gateway.c (original)
+++ freeswitch/trunk/libs/spandsp/src/t38_gateway.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t38_gateway.c,v 1.162 2009/04/12 14:18:02 steveu Exp $
+ * $Id: t38_gateway.c,v 1.163 2009/05/16 03:34:45 steveu Exp $
*/
/*! \file */
@@ -152,11 +152,12 @@
enum
{
- TCF_MODE_PREDICTABLE_MODEM_START_OFF = 0,
- TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED,
- TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN,
- TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM,
- TCF_MODE_PREDICTABLE_MODEM_START_BEGIN
+ TIMED_MODE_STARTUP = 0,
+ TIMED_MODE_IDLE,
+ TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED,
+ TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN,
+ TIMED_MODE_TCF_PREDICTABLE_MODEM_START_PAST_V21_MODEM,
+ TIMED_MODE_TCF_PREDICTABLE_MODEM_START_BEGIN,
};
/*! The maximum number of bytes to be zapped, in order to corrupt NSF,
@@ -765,7 +766,7 @@
if (len < 3)
return;
/*endif*/
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_OFF;
+ s->core.timed_mode = TIMED_MODE_IDLE;
switch (buf[2])
{
case T30_CFR:
@@ -822,7 +823,7 @@
s->core.image_data_mode = FALSE;
s->core.short_train = FALSE;
if (from_modem)
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_BEGIN;
+ s->core.timed_mode = TIMED_MODE_TCF_PREDICTABLE_MODEM_START_BEGIN;
/*endif*/
break;
case T30_PPS:
@@ -1510,14 +1511,14 @@
switch (status)
{
case SIG_STATUS_TRAINING_IN_PROGRESS:
- if (s->core.tcf_mode_predictable_modem_start == TCF_MODE_PREDICTABLE_MODEM_START_OFF)
+ if (s->core.timed_mode == TIMED_MODE_IDLE)
{
announce_training(s);
}
else
{
- if (s->core.tcf_mode_predictable_modem_start == TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM)
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN;
+ if (s->core.timed_mode == TIMED_MODE_TCF_PREDICTABLE_MODEM_START_PAST_V21_MODEM)
+ s->core.timed_mode = TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN;
else
s->core.samples_to_timeout = ms_to_samples(500);
set_fast_packetisation(s);
@@ -1529,7 +1530,7 @@
/* The modem is now trained */
s->audio.modems.rx_signal_present = TRUE;
s->audio.modems.rx_trained = TRUE;
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_OFF;
+ s->core.timed_mode = TIMED_MODE_IDLE;
s->core.samples_to_timeout = 0;
to_t38_buffer_init(&s->core.to_t38);
break;
@@ -1546,7 +1547,7 @@
case T38_DATA_V27TER_4800:
case T38_DATA_V29_7200:
case T38_DATA_V29_9600:
- if (s->core.tcf_mode_predictable_modem_start != TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED)
+ if (s->core.timed_mode != TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED)
{
/* TODO: If the carrier really did fall for good during the 500ms TEP blocking timeout, we
won't declare the no-signal condition. */
@@ -1716,7 +1717,7 @@
t->framing_ok_announced = FALSE;
}
restart_rx_modem(s);
- if (s->core.tcf_mode_predictable_modem_start == TCF_MODE_PREDICTABLE_MODEM_START_BEGIN)
+ if (s->core.timed_mode == TIMED_MODE_TCF_PREDICTABLE_MODEM_START_BEGIN)
{
/* If we are doing TCF, we need to announce the fast carrier training very
quickly, to ensure it starts 75+-20ms after the HDLC carrier ends. Waiting until
@@ -1724,7 +1725,7 @@
the end of the V.21 carrier, in anticipation of its arrival. If we announce it,
and it doesn't arrive, we will worry about that later. */
s->core.samples_to_timeout = ms_to_samples(75);
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM;
+ s->core.timed_mode = TIMED_MODE_TCF_PREDICTABLE_MODEM_START_PAST_V21_MODEM;
}
break;
default:
@@ -2001,28 +2002,35 @@
#if defined(LOG_FAX_AUDIO)
if (s->audio.modems.audio_rx_log >= 0)
write(s->audio.modems.audio_rx_log, amp, len*sizeof(int16_t));
+ /*endif*/
#endif
if (s->core.samples_to_timeout > 0)
{
if ((s->core.samples_to_timeout -= len) <= 0)
{
- switch (s->core.tcf_mode_predictable_modem_start)
+ switch (s->core.timed_mode)
{
- case TCF_MODE_PREDICTABLE_MODEM_START_PAST_V21_MODEM:
+ case TIMED_MODE_TCF_PREDICTABLE_MODEM_START_PAST_V21_MODEM:
/* Timed announcement of training, 75ms after the DCS carrier fell. */
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED;
+ s->core.timed_mode = TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED;
announce_training(s);
break;
- case TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN:
+ case TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_SEEN:
/* Timed announcement of training, 75ms after the DCS carrier fell. */
/* Use a timeout to ride over TEP, if it is present */
s->core.samples_to_timeout = ms_to_samples(500);
+ s->core.timed_mode = TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED;
announce_training(s);
break;
- case TCF_MODE_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED:
- s->core.tcf_mode_predictable_modem_start = TCF_MODE_PREDICTABLE_MODEM_START_OFF;
+ case TIMED_MODE_TCF_PREDICTABLE_MODEM_START_FAST_MODEM_ANNOUNCED:
+ s->core.timed_mode = TIMED_MODE_IDLE;
span_log(&s->logging, SPAN_LOG_FLOW, "TEP jamming expired\n");
break;
+ case TIMED_MODE_STARTUP:
+ /* Ensure a no-signal condition goes out the moment the received audio starts */
+ t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL, s->t38x.t38.indicator_tx_count);
+ s->core.timed_mode = TIMED_MODE_IDLE;
+ break;
}
/*endswitch*/
}
@@ -2129,10 +2137,10 @@
/*- End of function --------------------------------------------------------*/
SPAN_DECLARE(void) t38_gateway_set_nsx_suppression(t38_gateway_state_t *s,
- const uint8_t *from_t38,
- int from_t38_len,
- const uint8_t *from_modem,
- int from_modem_len)
+ const uint8_t *from_t38,
+ int from_t38_len,
+ const uint8_t *from_modem,
+ int from_modem_len)
{
s->t38x.suppress_nsx_len[0] = (from_t38_len < 0 || from_t38_len < MAX_NSX_SUPPRESSION) ? (from_t38_len + 3) : 0;
s->t38x.suppress_nsx_len[1] = (from_modem_len < 0 || from_modem_len < MAX_NSX_SUPPRESSION) ? (from_modem_len + 3) : 0;
@@ -2232,6 +2240,8 @@
s->core.ecm_allowed = FALSE;
t38_non_ecm_buffer_init(&s->core.non_ecm_to_modem, FALSE, 0);
restart_rx_modem(s);
+ s->core.timed_mode = TIMED_MODE_STARTUP;
+ s->core.samples_to_timeout = 1;
#if defined(LOG_FAX_AUDIO)
{
char buf[100 + 1];
Modified: freeswitch/trunk/libs/spandsp/src/t4.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/t4.c (original)
+++ freeswitch/trunk/libs/spandsp/src/t4.c Thu Jun 18 01:13:59 2009
@@ -24,7 +24,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t4.c,v 1.130 2009/04/12 09:12:10 steveu Exp $
+ * $Id: t4.c,v 1.131 2009/05/16 03:34:45 steveu Exp $
*/
/*
Modified: freeswitch/trunk/libs/spandsp/src/tone_generate.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/tone_generate.c (original)
+++ freeswitch/trunk/libs/spandsp/src/tone_generate.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: tone_generate.c,v 1.52 2009/04/12 09:12:10 steveu Exp $
+ * $Id: tone_generate.c,v 1.53 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Added: freeswitch/trunk/libs/spandsp/src/v17_v32bis_rx_constellation_maps.h
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/src/v17_v32bis_rx_constellation_maps.h Thu Jun 18 01:13:59 2009
@@ -0,0 +1,5517 @@
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * v17rx_v32bis_constellation_maps.h - ITU V.17 and V.32bis modems
+ * receive part.
+ * Constellation mapping.
+ *
+ * Written by Steve Underwood <steveu at coppice.org>
+ *
+ * Copyright (C) 2004 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: v17_v32bis_rx_constellation_maps.h,v 1.1 2009/06/02 11:51:57 steveu Exp $
+ */
+
+/* The following table maps the 8 soft-decisions associated with every possible point in the
+ constellation space. If you look at the constellations carefully, all 4 can be accurately
+ mapped at 0.5 unit resolution. */
+static const uint8_t constel_maps[4][36][36][8] =
+{
+ { /* 14,400bps map */
+ {
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x05, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x66, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x05, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x0d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x0d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x4c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x66, 0x7f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x66, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x76, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x56, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x63, 0x4c, 0x15, 0x66, 0x5f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x66, 0x7f},
+ {0x00, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x66, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x76, 0x7f},
+ {0x08, 0x49, 0x7a, 0x73, 0x4c, 0x15, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x7a, 0x73, 0x4c, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x73, 0x44, 0x1d, 0x76, 0x7f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x76, 0x6f},
+ {0x08, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x44, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x49, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x7a, 0x63, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x7a, 0x63, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x66, 0x7f},
+ {0x10, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x66, 0x7f},
+ {0x18, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x41, 0x7a, 0x73, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x7a, 0x73, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x6a, 0x73, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x6a, 0x73, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x76, 0x6f},
+ {0x18, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x76, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x63, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x5a, 0x63, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x7a, 0x63, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x7a, 0x63, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x66, 0x7f},
+ {0x10, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x66, 0x7f},
+ {0x18, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x49, 0x7a, 0x73, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x41, 0x7a, 0x73, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x7a, 0x73, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x6a, 0x73, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x6a, 0x73, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x76, 0x6f},
+ {0x18, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x76, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x41, 0x6a, 0x53, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x53, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x50, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x29, 0x5a, 0x23, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x5a, 0x23, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x7a, 0x23, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x7a, 0x23, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x66, 0x7f},
+ {0x10, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x66, 0x7f},
+ {0x18, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x21, 0x7a, 0x33, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x7a, 0x33, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x6a, 0x33, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x6a, 0x33, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x76, 0x6f},
+ {0x18, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x76, 0x6f},
+ {0x58, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x69, 0x5a, 0x23, 0x6c, 0x55, 0x66, 0x5f},
+ {0x10, 0x29, 0x5a, 0x23, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x5a, 0x23, 0x6c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x7a, 0x23, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x7a, 0x23, 0x2c, 0x15, 0x66, 0x5f},
+ {0x10, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x66, 0x7f},
+ {0x10, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x66, 0x7f},
+ {0x18, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x29, 0x7a, 0x33, 0x2c, 0x15, 0x76, 0x7f},
+ {0x18, 0x21, 0x7a, 0x33, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x7a, 0x33, 0x2c, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x6a, 0x33, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x6a, 0x33, 0x24, 0x1d, 0x76, 0x7f},
+ {0x18, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x76, 0x6f},
+ {0x18, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x76, 0x6f},
+ {0x58, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x21, 0x6a, 0x13, 0x24, 0x1d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x24, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x6a, 0x13, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x56, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x46, 0x5f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x26, 0x5f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x26, 0x5f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x26, 0x7f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x26, 0x7f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x36, 0x7f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x36, 0x7f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x36, 0x6f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x36, 0x6f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x16, 0x6f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x16, 0x6f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x55, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x46, 0x5f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x46, 0x5f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x26, 0x5f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x55, 0x26, 0x5f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x15, 0x26, 0x5f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x26, 0x7f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x26, 0x7f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x36, 0x7f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x15, 0x36, 0x7f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x1d, 0x36, 0x7f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x36, 0x6f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x36, 0x6f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x16, 0x6f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x1d, 0x16, 0x6f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x16, 0x6f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x16, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x5d, 0x06, 0x4f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x46, 0x1f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x46, 0x1f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x26, 0x1f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x26, 0x1f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x26, 0x3f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x26, 0x3f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x36, 0x3f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x36, 0x3f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x36, 0x2f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x36, 0x2f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x16, 0x2f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x16, 0x2f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x16, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x16, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f}
+ },
+ {
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x0a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x43, 0x6c, 0x75, 0x46, 0x0f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x46, 0x1f},
+ {0x50, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x46, 0x1f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x26, 0x1f},
+ {0x10, 0x69, 0x1a, 0x23, 0x6c, 0x75, 0x26, 0x1f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x1a, 0x23, 0x6c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x3a, 0x23, 0x2c, 0x35, 0x26, 0x1f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x26, 0x3f},
+ {0x10, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x26, 0x3f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x36, 0x3f},
+ {0x18, 0x29, 0x3a, 0x33, 0x2c, 0x35, 0x36, 0x3f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x3a, 0x33, 0x2c, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x2a, 0x33, 0x24, 0x3d, 0x36, 0x3f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x36, 0x2f},
+ {0x18, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x36, 0x2f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x16, 0x2f},
+ {0x58, 0x21, 0x2a, 0x13, 0x24, 0x3d, 0x16, 0x2f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x2a, 0x13, 0x24, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x4a, 0x13, 0x64, 0x7d, 0x16, 0x2f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x16, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x16, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f},
+ {0x58, 0x61, 0x4a, 0x03, 0x64, 0x7d, 0x06, 0x4f}
+ },
+ {
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x1a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x1a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x46, 0x1f},
+ {0x70, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x46, 0x1f},
+ {0x30, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x29, 0x1a, 0x23, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x1a, 0x23, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x3a, 0x23, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x3a, 0x23, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x26, 0x3f},
+ {0x30, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x26, 0x3f},
+ {0x38, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x21, 0x3a, 0x33, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x3a, 0x33, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x2a, 0x33, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x2a, 0x33, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x36, 0x2f},
+ {0x38, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x36, 0x2f},
+ {0x78, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x61, 0x2a, 0x13, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x2a, 0x13, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x4a, 0x13, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x4a, 0x13, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f}
+ },
+ {
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x0a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x1a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x1a, 0x43, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x46, 0x1f},
+ {0x70, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x46, 0x1f},
+ {0x30, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x69, 0x1a, 0x23, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x29, 0x1a, 0x23, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x1a, 0x23, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x3a, 0x23, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x3a, 0x23, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x26, 0x3f},
+ {0x30, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x26, 0x3f},
+ {0x38, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x29, 0x3a, 0x33, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x21, 0x3a, 0x33, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x3a, 0x33, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x2a, 0x33, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x2a, 0x33, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x36, 0x2f},
+ {0x38, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x36, 0x2f},
+ {0x78, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x21, 0x2a, 0x13, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x61, 0x2a, 0x13, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x2a, 0x13, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x4a, 0x13, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x4a, 0x13, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x61, 0x4a, 0x03, 0x74, 0x7d, 0x06, 0x4f}
+ },
+ {
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x1a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x1a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x46, 0x1f},
+ {0x70, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x46, 0x1f},
+ {0x30, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x39, 0x1a, 0x2b, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x1a, 0x2b, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x3a, 0x2b, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x3a, 0x2b, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x26, 0x3f},
+ {0x30, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x26, 0x3f},
+ {0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x31, 0x3a, 0x3b, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x3a, 0x3b, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x2a, 0x3b, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x2a, 0x3b, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x36, 0x2f},
+ {0x38, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x36, 0x2f},
+ {0x78, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x71, 0x2a, 0x1b, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x2a, 0x1b, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x4a, 0x1b, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x4a, 0x1b, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f}
+ },
+ {
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x0a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x1a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x1a, 0x4b, 0x7c, 0x75, 0x46, 0x0f},
+ {0x70, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x46, 0x1f},
+ {0x70, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x46, 0x1f},
+ {0x30, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x79, 0x1a, 0x2b, 0x7c, 0x75, 0x26, 0x1f},
+ {0x30, 0x39, 0x1a, 0x2b, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x1a, 0x2b, 0x7c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x3a, 0x2b, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x3a, 0x2b, 0x3c, 0x35, 0x26, 0x1f},
+ {0x30, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x26, 0x3f},
+ {0x30, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x26, 0x3f},
+ {0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x35, 0x36, 0x3f},
+ {0x38, 0x31, 0x3a, 0x3b, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x3a, 0x3b, 0x3c, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x2a, 0x3b, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x2a, 0x3b, 0x34, 0x3d, 0x36, 0x3f},
+ {0x38, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x36, 0x2f},
+ {0x38, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x36, 0x2f},
+ {0x78, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x31, 0x2a, 0x1b, 0x34, 0x3d, 0x16, 0x2f},
+ {0x78, 0x71, 0x2a, 0x1b, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x2a, 0x1b, 0x34, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x4a, 0x1b, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x4a, 0x1b, 0x74, 0x7d, 0x16, 0x2f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x16, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f},
+ {0x78, 0x71, 0x4a, 0x0b, 0x74, 0x7d, 0x06, 0x4f}
+ },
+ {
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x4e, 0x1f},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x4e, 0x1f},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x2e, 0x1f},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x2e, 0x1f},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x2e, 0x3f},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x2e, 0x3f},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x3e, 0x3f},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x3e, 0x3f},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x3e, 0x2f},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x3e, 0x2f},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x1e, 0x2f},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x1e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x1e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f}
+ },
+ {
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x75, 0x4e, 0x0f},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x4e, 0x1f},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x4e, 0x1f},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x2e, 0x1f},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x75, 0x2e, 0x1f},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x35, 0x2e, 0x1f},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x2e, 0x3f},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x2e, 0x3f},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x3e, 0x3f},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x35, 0x3e, 0x3f},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x3d, 0x3e, 0x3f},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x3e, 0x2f},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x3e, 0x2f},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x1e, 0x2f},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x3d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x7d, 0x1e, 0x2f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x1e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x1e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x7d, 0x0e, 0x4f}
+ },
+ {
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x4e, 0x17},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x4e, 0x17},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x2e, 0x17},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x2e, 0x17},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x2e, 0x37},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x2e, 0x37},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x3e, 0x37},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x3e, 0x37},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x3e, 0x27},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x3e, 0x27},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x1e, 0x27},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x1e, 0x27},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x1e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x1e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x02, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x12, 0x4b, 0x7c, 0x65, 0x4e, 0x07},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x4e, 0x17},
+ {0x70, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x4e, 0x17},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x2e, 0x17},
+ {0x30, 0x79, 0x12, 0x2b, 0x7c, 0x65, 0x2e, 0x17},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x12, 0x2b, 0x7c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x32, 0x2b, 0x3c, 0x25, 0x2e, 0x17},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x2e, 0x37},
+ {0x30, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x2e, 0x37},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x3e, 0x37},
+ {0x38, 0x39, 0x32, 0x3b, 0x3c, 0x25, 0x3e, 0x37},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x32, 0x3b, 0x3c, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x22, 0x3b, 0x34, 0x2d, 0x3e, 0x37},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x3e, 0x27},
+ {0x38, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x3e, 0x27},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x1e, 0x27},
+ {0x78, 0x31, 0x22, 0x1b, 0x34, 0x2d, 0x1e, 0x27},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x22, 0x1b, 0x34, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x42, 0x1b, 0x74, 0x6d, 0x1e, 0x27},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x1e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x1e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47},
+ {0x78, 0x71, 0x42, 0x0b, 0x74, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x60, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x20, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x39, 0x12, 0x2b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x12, 0x2b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x32, 0x2b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x32, 0x2b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x20, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x28, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x31, 0x32, 0x3b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x32, 0x3b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x22, 0x3b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x22, 0x3b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x28, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x68, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x71, 0x22, 0x1b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x22, 0x1b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x42, 0x1b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x42, 0x1b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x60, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x20, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x79, 0x12, 0x2b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x39, 0x12, 0x2b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x12, 0x2b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x32, 0x2b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x32, 0x2b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x20, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x28, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x39, 0x32, 0x3b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x31, 0x32, 0x3b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x32, 0x3b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x22, 0x3b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x22, 0x3b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x28, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x68, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x31, 0x22, 0x1b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x71, 0x22, 0x1b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x22, 0x1b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x42, 0x1b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x42, 0x1b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x71, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x60, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x20, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x19, 0x12, 0x6b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x12, 0x6b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x32, 0x6b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x32, 0x6b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x20, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x28, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x11, 0x32, 0x7b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x32, 0x7b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x22, 0x7b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x22, 0x7b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x28, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x68, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x51, 0x22, 0x5b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x22, 0x5b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x12, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x60, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x20, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x59, 0x12, 0x6b, 0x5c, 0x65, 0x2e, 0x17},
+ {0x20, 0x19, 0x12, 0x6b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x12, 0x6b, 0x5c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x32, 0x6b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x32, 0x6b, 0x1c, 0x25, 0x2e, 0x17},
+ {0x20, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x20, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x2e, 0x37},
+ {0x28, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x19, 0x32, 0x7b, 0x1c, 0x25, 0x3e, 0x37},
+ {0x28, 0x11, 0x32, 0x7b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x32, 0x7b, 0x1c, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x22, 0x7b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x22, 0x7b, 0x14, 0x2d, 0x3e, 0x37},
+ {0x28, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x28, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x3e, 0x27},
+ {0x68, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x11, 0x22, 0x5b, 0x14, 0x2d, 0x1e, 0x27},
+ {0x68, 0x51, 0x22, 0x5b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x22, 0x5b, 0x14, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x1e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x17},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x17},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x6e, 0x37},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x6e, 0x37},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x7e, 0x37},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x7e, 0x37},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x7e, 0x27},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x7e, 0x27},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x5e, 0x27},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x17},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x17},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x17},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x17},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x25, 0x6e, 0x17},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x6e, 0x37},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x6e, 0x37},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x7e, 0x37},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x25, 0x7e, 0x37},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x2d, 0x7e, 0x37},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x7e, 0x27},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x7e, 0x27},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x5e, 0x27},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x2d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x27},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x6e, 0x77},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x6e, 0x77},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x7e, 0x77},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x7e, 0x77},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x7e, 0x67},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x7e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x5e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x02, 0x4b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x20, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x72, 0x6b, 0x1c, 0x45, 0x6e, 0x57},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x6e, 0x77},
+ {0x20, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x6e, 0x77},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x7e, 0x77},
+ {0x28, 0x19, 0x72, 0x7b, 0x1c, 0x45, 0x7e, 0x77},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x72, 0x7b, 0x1c, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x62, 0x7b, 0x14, 0x4d, 0x7e, 0x77},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x7e, 0x67},
+ {0x28, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x7e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x5e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x14, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x14, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x0b, 0x54, 0x6d, 0x0e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x40, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x48, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x11, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x40, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x48, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x19, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x11, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x11, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x4e, 0x07},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x42, 0x5b, 0x54, 0x6d, 0x5e, 0x47}
+ },
+ {
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67}
+ },
+ {
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x60, 0x59, 0x52, 0x6b, 0x5c, 0x65, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x59, 0x52, 0x6b, 0x5c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x52, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x6b, 0x0c, 0x45, 0x6e, 0x57},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x40, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x6e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x09, 0x72, 0x7b, 0x0c, 0x45, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x72, 0x7b, 0x0c, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x7b, 0x04, 0x4d, 0x7e, 0x77},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x7e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x48, 0x01, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x04, 0x4d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67},
+ {0x68, 0x51, 0x62, 0x5b, 0x54, 0x6d, 0x5e, 0x67}
+ }
+ },
+ { /* 12,000bps map */
+ {
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27}
+ },
+ {
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27}
+ },
+ {
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27}
+ },
+ {
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27}
+ },
+ {
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x13, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x3d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x1b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x14, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x32, 0x0b, 0x24, 0x3d, 0x16, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x38, 0x01, 0x22, 0x1b, 0x04, 0x2d, 0x0e, 0x27},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x22, 0x3b, 0x0c, 0x35, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x13, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x16, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x3d, 0x0e, 0x37},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x22, 0x0b, 0x04, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x01, 0x22, 0x1b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x1e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x14, 0x35, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x0e, 0x37},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x0e, 0x2f},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x0e, 0x2f},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x38, 0x01, 0x2a, 0x0b, 0x24, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x22, 0x0b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x2b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x2b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x22, 0x3b, 0x0c, 0x2d, 0x0e, 0x27},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x2e, 0x27},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x2e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x3e, 0x27},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x0e, 0x2f},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x0e, 0x2f},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x2b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x2b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x2b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x2e, 0x27},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x2e, 0x27},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x2e, 0x27},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x32, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x1d, 0x06, 0x37},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x38, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x01, 0x2a, 0x0b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x22, 0x2b, 0x0c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x2d, 0x2e, 0x27},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x30, 0x11, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x0b, 0x24, 0x0d, 0x06, 0x2f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x28, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x2a, 0x2b, 0x2c, 0x2d, 0x0e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x3b, 0x0c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x1d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x2a, 0x03, 0x24, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x0b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x0e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x02, 0x2b, 0x0c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07},
+ {0x20, 0x19, 0x02, 0x3b, 0x1c, 0x25, 0x3e, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x2a, 0x03, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x2b, 0x2c, 0x0d, 0x06, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x2e, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x28, 0x09, 0x0a, 0x2b, 0x2c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x02, 0x2b, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07}
+ },
+ {
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x18, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x21, 0x3a, 0x03, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x2a, 0x23, 0x2c, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x0d, 0x26, 0x2f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x28, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x09, 0x0a, 0x2b, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07},
+ {0x20, 0x19, 0x02, 0x33, 0x1c, 0x25, 0x36, 0x07}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x29, 0x3a, 0x23, 0x34, 0x0d, 0x06, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x08, 0x29, 0x0a, 0x2b, 0x2c, 0x05, 0x26, 0x0f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x0a, 0x33, 0x3c, 0x25, 0x2e, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x0d, 0x26, 0x3f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x0a, 0x23, 0x2c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x29, 0x0a, 0x2b, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x2e, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x0f},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x0f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x03, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x08, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x29, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x0a, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x0f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x1c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17},
+ {0x20, 0x19, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17}
+ },
+ {
+ {0x10, 0x31, 0x3a, 0x23, 0x34, 0x15, 0x06, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x3f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x10, 0x31, 0x1a, 0x23, 0x34, 0x15, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x31, 0x1a, 0x23, 0x34, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x1a, 0x23, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x26, 0x1f},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x00, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x05, 0x36, 0x17},
+ {0x20, 0x39, 0x12, 0x33, 0x3c, 0x25, 0x36, 0x17}
+ }
+ },
+ { /* 9,600bps map */
+ {
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x0e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x01, 0x12, 0x13, 0x1c, 0x1d, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x12, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x1c, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x00, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x01, 0x12, 0x13, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x12, 0x13, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x09, 0x02, 0x13, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x09, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x1b, 0x0c, 0x1d, 0x0e, 0x07},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x10, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x0e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x11, 0x12, 0x0b, 0x0c, 0x1d, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x12, 0x0b, 0x0c, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x0b, 0x14, 0x15, 0x1e, 0x0f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f},
+ {0x08, 0x19, 0x02, 0x03, 0x14, 0x15, 0x1e, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x1d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x06, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x1d, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x0f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x15, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x06, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x11, 0x1a, 0x0b, 0x0c, 0x0d, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x1a, 0x0b, 0x0c, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x08, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x07},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x1f}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17}
+ },
+ {
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x10, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x1b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x06, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x11, 0x1a, 0x0b, 0x04, 0x0d, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x1a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x0b, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x04, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17},
+ {0x18, 0x19, 0x0a, 0x03, 0x14, 0x05, 0x16, 0x17}
+ }
+ },
+ { /* 7,200bps map */
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x03, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x04, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x0a, 0x0b, 0x0c, 0x0d, 0x06, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x03, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x04, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07},
+ {0x08, 0x01, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ },
+ {
+ {0x00, 0x09, 0x0a, 0x0b, 0x0c, 0x05, 0x06, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x0f},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x00, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x05, 0x0e, 0x07},
+ {0x08, 0x09, 0x02, 0x0b, 0x0c, 0x0d, 0x0e, 0x07}
+ }
+ }
+};
+
+/*- End of file ------------------------------------------------------------*/
Added: freeswitch/trunk/libs/spandsp/src/v17_v32bis_tx_constellation_maps.h
==============================================================================
--- (empty file)
+++ freeswitch/trunk/libs/spandsp/src/v17_v32bis_tx_constellation_maps.h Thu Jun 18 01:13:59 2009
@@ -0,0 +1,314 @@
+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * v17_v32bis_tx_constellation_maps.h - ITU V.17 and V.32bis modems
+ * transmit part.
+ * Constellation mapping.
+ *
+ * Written by Steve Underwood <steveu at coppice.org>
+ *
+ * Copyright (C) 2004 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: v17_v32bis_tx_constellation_maps.h,v 1.1 2009/06/02 11:51:57 steveu Exp $
+ */
+
+#if defined(SPANDSP_USE_FIXED_POINTx)
+static const complexi16_t v17_v32bis_14400_constellation[128] =
+#else
+static const complexf_t v17_v32bis_14400_constellation[128] =
+#endif
+{
+ {-8, -3}, /* 0x00 */
+ { 9, 2}, /* 0x01 */
+ { 2, -9}, /* 0x02 */
+ {-3, 8}, /* 0x03 */
+ { 8, 3}, /* 0x04 */
+ {-9, -2}, /* 0x05 */
+ {-2, 9}, /* 0x06 */
+ { 3, -8}, /* 0x07 */
+ {-8, 1}, /* 0x08 */
+ { 9, -2}, /* 0x09 */
+ {-2, -9}, /* 0x0A */
+ { 1, 8}, /* 0x0B */
+ { 8, -1}, /* 0x0C */
+ {-9, 2}, /* 0x0D */
+ { 2, 9}, /* 0x0E */
+ {-1, -8}, /* 0x0F */
+ {-4, -3}, /* 0x10 */
+ { 5, 2}, /* 0x11 */
+ { 2, -5}, /* 0x12 */
+ {-3, 4}, /* 0x13 */
+ { 4, 3}, /* 0x14 */
+ {-5, -2}, /* 0x15 */
+ {-2, 5}, /* 0x16 */
+ { 3, -4}, /* 0x17 */
+ {-4, 1}, /* 0x18 */
+ { 5, -2}, /* 0x19 */
+ {-2, -5}, /* 0x1A */
+ { 1, 4}, /* 0x1B */
+ { 4, -1}, /* 0x1C */
+ {-5, 2}, /* 0x1D */
+ { 2, 5}, /* 0x1E */
+ {-1, -4}, /* 0x1F */
+ { 4, -3}, /* 0x20 */
+ {-3, 2}, /* 0x21 */
+ { 2, 3}, /* 0x22 */
+ {-3, -4}, /* 0x23 */
+ {-4, 3}, /* 0x24 */
+ { 3, -2}, /* 0x25 */
+ {-2, -3}, /* 0x26 */
+ { 3, 4}, /* 0x27 */
+ { 4, 1}, /* 0x28 */
+ {-3, -2}, /* 0x29 */
+ {-2, 3}, /* 0x2A */
+ { 1, -4}, /* 0x2B */
+ {-4, -1}, /* 0x2C */
+ { 3, 2}, /* 0x2D */
+ { 2, -3}, /* 0x2E */
+ {-1, 4}, /* 0x2F */
+ { 0, -3}, /* 0x30 */
+ { 1, 2}, /* 0x31 */
+ { 2, -1}, /* 0x32 */
+ {-3, 0}, /* 0x33 */
+ { 0, 3}, /* 0x34 */
+ {-1, -2}, /* 0x35 */
+ {-2, 1}, /* 0x36 */
+ { 3, 0}, /* 0x37 */
+ { 0, 1}, /* 0x38 */
+ { 1, -2}, /* 0x39 */
+ {-2, -1}, /* 0x3A */
+ { 1, 0}, /* 0x3B */
+ { 0, -1}, /* 0x3C */
+ {-1, 2}, /* 0x3D */
+ { 2, 1}, /* 0x3E */
+ {-1, 0}, /* 0x3F */
+ { 8, -3}, /* 0x40 */
+ {-7, 2}, /* 0x41 */
+ { 2, 7}, /* 0x42 */
+ {-3, -8}, /* 0x43 */
+ {-8, 3}, /* 0x44 */
+ { 7, -2}, /* 0x45 */
+ {-2, -7}, /* 0x46 */
+ { 3, 8}, /* 0x47 */
+ { 8, 1}, /* 0x48 */
+ {-7, -2}, /* 0x49 */
+ {-2, 7}, /* 0x4A */
+ { 1, -8}, /* 0x4B */
+ {-8, -1}, /* 0x4C */
+ { 7, 2}, /* 0x4D */
+ { 2, -7}, /* 0x4E */
+ {-1, 8}, /* 0x4F */
+ {-4, -7}, /* 0x50 */
+ { 5, 6}, /* 0x51 */
+ { 6, -5}, /* 0x52 */
+ {-7, 4}, /* 0x53 */
+ { 4, 7}, /* 0x54 */
+ {-5, -6}, /* 0x55 */
+ {-6, 5}, /* 0x56 */
+ { 7, -4}, /* 0x57 */
+ {-4, 5}, /* 0x58 */
+ { 5, -6}, /* 0x59 */
+ {-6, -5}, /* 0x5A */
+ { 5, 4}, /* 0x5B */
+ { 4, -5}, /* 0x5C */
+ {-5, 6}, /* 0x5D */
+ { 6, 5}, /* 0x5E */
+ {-5, -4}, /* 0x5F */
+ { 4, -7}, /* 0x60 */
+ {-3, 6}, /* 0x61 */
+ { 6, 3}, /* 0x62 */
+ {-7, -4}, /* 0x63 */
+ {-4, 7}, /* 0x64 */
+ { 3, -6}, /* 0x65 */
+ {-6, -3}, /* 0x66 */
+ { 7, 4}, /* 0x67 */
+ { 4, 5}, /* 0x68 */
+ {-3, -6}, /* 0x69 */
+ {-6, 3}, /* 0x6A */
+ { 5, -4}, /* 0x6B */
+ {-4, -5}, /* 0x6C */
+ { 3, 6}, /* 0x6D */
+ { 6, -3}, /* 0x6E */
+ {-5, 4}, /* 0x6F */
+ { 0, -7}, /* 0x70 */
+ { 1, 6}, /* 0x71 */
+ { 6, -1}, /* 0x72 */
+ {-7, 0}, /* 0x73 */
+ { 0, 7}, /* 0x74 */
+ {-1, -6}, /* 0x75 */
+ {-6, 1}, /* 0x76 */
+ { 7, 0}, /* 0x77 */
+ { 0, 5}, /* 0x78 */
+ { 1, -6}, /* 0x79 */
+ {-6, -1}, /* 0x7A */
+ { 5, 0}, /* 0x7B */
+ { 0, -5}, /* 0x7C */
+ {-1, 6}, /* 0x7D */
+ { 6, 1}, /* 0x7E */
+ {-5, 0} /* 0x7F */
+};
+
+#if defined(SPANDSP_USE_FIXED_POINTx)
+static const complexi16_t v17_v32bis_12000_constellation[64] =
+#else
+static const complexf_t v17_v32bis_12000_constellation[64] =
+#endif
+{
+ { 7, 1}, /* 0x00 */
+ {-5, -1}, /* 0x01 */
+ {-1, 5}, /* 0x02 */
+ { 1, -7}, /* 0x03 */
+ {-7, -1}, /* 0x04 */
+ { 5, 1}, /* 0x05 */
+ { 1, -5}, /* 0x06 */
+ {-1, 7}, /* 0x07 */
+ { 3, -3}, /* 0x08 */
+ {-1, 3}, /* 0x09 */
+ { 3, 1}, /* 0x0A */
+ {-3, -3}, /* 0x0B */
+ {-3, 3}, /* 0x0C */
+ { 1, -3}, /* 0x0D */
+ {-3, -1}, /* 0x0E */
+ { 3, 3}, /* 0x0F */
+ { 7, -7}, /* 0x10 */
+ {-5, 7}, /* 0x11 */
+ { 7, 5}, /* 0x12 */
+ {-7, -7}, /* 0x13 */
+ {-7, 7}, /* 0x14 */
+ { 5, -7}, /* 0x15 */
+ {-7, -5}, /* 0x16 */
+ { 7, 7}, /* 0x17 */
+ {-1, -7}, /* 0x18 */
+ { 3, 7}, /* 0x19 */
+ { 7, -3}, /* 0x1A */
+ {-7, 1}, /* 0x1B */
+ { 1, 7}, /* 0x1C */
+ {-3, -7}, /* 0x1D */
+ {-7, 3}, /* 0x1E */
+ { 7, -1}, /* 0x1F */
+ { 3, 5}, /* 0x20 */
+ {-1, -5}, /* 0x21 */
+ {-5, 1}, /* 0x22 */
+ { 5, -3}, /* 0x23 */
+ {-3, -5}, /* 0x24 */
+ { 1, 5}, /* 0x25 */
+ { 5, -1}, /* 0x26 */
+ {-5, 3}, /* 0x27 */
+ {-1, 1}, /* 0x28 */
+ { 3, -1}, /* 0x29 */
+ {-1, -3}, /* 0x2A */
+ { 1, 1}, /* 0x2B */
+ { 1, -1}, /* 0x2C */
+ {-3, 1}, /* 0x2D */
+ { 1, 3}, /* 0x2E */
+ {-1, -1}, /* 0x2F */
+ {-5, 5}, /* 0x30 */
+ { 7, -5}, /* 0x31 */
+ {-5, -7}, /* 0x32 */
+ { 5, 5}, /* 0x33 */
+ { 5, -5}, /* 0x34 */
+ {-7, 5}, /* 0x35 */
+ { 5, 7}, /* 0x36 */
+ {-5, -5}, /* 0x37 */
+ {-5, -3}, /* 0x38 */
+ { 7, 3}, /* 0x39 */
+ { 3, -7}, /* 0x3A */
+ {-3, 5}, /* 0x3B */
+ { 5, 3}, /* 0x3C */
+ {-7, -3}, /* 0x3D */
+ {-3, 7}, /* 0x3E */
+ { 3, -5} /* 0x3F */
+};
+
+#if defined(SPANDSP_USE_FIXED_POINTx)
+static const complexi16_t v17_v32bis_9600_constellation[32] =
+#else
+static const complexf_t v17_v32bis_9600_constellation[32] =
+#endif
+{
+ {-8, 2}, /* 0x00 */
+ {-6, -4}, /* 0x01 */
+ {-4, 6}, /* 0x02 */
+ { 2, 8}, /* 0x03 */
+ { 8, -2}, /* 0x04 */
+ { 6, 4}, /* 0x05 */
+ { 4, -6}, /* 0x06 */
+ {-2, -8}, /* 0x07 */
+ { 0, 2}, /* 0x08 */
+ {-6, 4}, /* 0x09 */
+ { 4, 6}, /* 0x0A */
+ { 2, 0}, /* 0x0B */
+ { 0, -2}, /* 0x0C */
+ { 6, -4}, /* 0x0D */
+ {-4, -6}, /* 0x0E */
+ {-2, 0}, /* 0x0F */
+ { 0, -6}, /* 0x10 */
+ { 2, -4}, /* 0x11 */
+ {-4, -2}, /* 0x12 */
+ {-6, 0}, /* 0x13 */
+ { 0, 6}, /* 0x14 */
+ {-2, 4}, /* 0x15 */
+ { 4, 2}, /* 0x16 */
+ { 6, 0}, /* 0x17 */
+ { 8, 2}, /* 0x18 */
+ { 2, 4}, /* 0x19 */
+ { 4, -2}, /* 0x1A */
+ { 2, -8}, /* 0x1B */
+ {-8, -2}, /* 0x1C */
+ {-2, -4}, /* 0x1D */
+ {-4, 2}, /* 0x1E */
+ {-2, 8} /* 0x1F */
+};
+
+#if defined(SPANDSP_USE_FIXED_POINTx)
+static const complexi16_t v17_v32bis_7200_constellation[16] =
+#else
+static const complexf_t v17_v32bis_7200_constellation[16] =
+#endif
+{
+ { 6, -6}, /* 0x00 */
+ {-2, 6}, /* 0x01 */
+ { 6, 2}, /* 0x02 */
+ {-6, -6}, /* 0x03 */
+ {-6, 6}, /* 0x04 */
+ { 2, -6}, /* 0x05 */
+ {-6, -2}, /* 0x06 */
+ { 6, 6}, /* 0x07 */
+ {-2, 2}, /* 0x08 */
+ { 6, -2}, /* 0x09 */
+ {-2, -6}, /* 0x0A */
+ { 2, 2}, /* 0x0B */
+ { 2, -2}, /* 0x0C */
+ {-6, 2}, /* 0x0D */
+ { 2, 6}, /* 0x0E */
+ {-2, -2} /* 0x0F */
+};
+
+#if defined(SPANDSP_USE_FIXED_POINTx)
+static const complexi16_t v17_v32bis_4800_constellation[4] =
+#else
+static const complexf_t v17_v32bis_4800_constellation[4] =
+#endif
+{
+ {-6, -2},
+ { 2, -6},
+ { 6, 2},
+ {-2, 6}
+};
+
+/*- End of file ------------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/src/v17rx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v17rx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v17rx.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v17rx.c,v 1.146 2009/04/21 13:59:07 steveu Exp $
+ * $Id: v17rx.c,v 1.149 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -64,12 +64,12 @@
#include "spandsp/private/logging.h"
#include "spandsp/private/v17rx.h"
-#include "v17tx_constellation_maps.h"
-#include "v17rx_constellation_maps.h"
+#include "v17_v32bis_tx_constellation_maps.h"
+#include "v17_v32bis_rx_constellation_maps.h"
#if defined(SPANDSP_USE_FIXED_POINT)
-#include "v17rx_fixed_rrc.h"
+#include "v17_v32bis_rx_fixed_rrc.h"
#else
-#include "v17rx_floating_rrc.h"
+#include "v17_v32bis_rx_floating_rrc.h"
#endif
/*! The nominal frequency of the carrier, in Hertz */
@@ -295,18 +295,6 @@
}
/*- End of function --------------------------------------------------------*/
-static __inline__ int find_quadrant(complexf_t *z)
-{
- int b1;
- int b2;
-
- /* Split the space along the two diagonals. */
- b1 = (z->im > z->re);
- b2 = (z->im < -z->re);
- return (b2 << 1) | (b1 ^ b2);
-}
-/*- End of function --------------------------------------------------------*/
-
static void track_carrier(v17_rx_state_t *s, const complexf_t *z, const complexf_t *target)
{
float error;
@@ -1008,12 +996,81 @@
}
/*- End of function --------------------------------------------------------*/
+static __inline__ int signal_detect(v17_rx_state_t *s, int16_t amp)
+{
+ int16_t diff;
+ int16_t x;
+ int32_t power;
+
+ /* There should be no DC in the signal, but sometimes there is.
+ We need to measure the power with the DC blocked, but not using
+ a slow to respond DC blocker. Use the most elementary HPF. */
+ x = amp >> 1;
+ /* There could be overflow here, but it isn't a problem in practice */
+ diff = x - s->last_sample;
+ s->last_sample = x;
+ power = power_meter_update(&(s->power), diff);
+#if defined(IAXMODEM_STUFF)
+ /* Quick power drop fudge */
+ diff = abs(diff);
+ if (10*diff < s->high_sample)
+ {
+ if (++s->low_samples > 120)
+ {
+ power_meter_init(&(s->power), 4);
+ s->high_sample = 0;
+ s->low_samples = 0;
+ }
+ }
+ else
+ {
+ s->low_samples = 0;
+ if (diff > s->high_sample)
+ s->high_sample = diff;
+ }
+#endif
+ if (s->signal_present > 0)
+ {
+ /* Look for power below turn-off threshold to turn the carrier off */
+#if defined(IAXMODEM_STUFF)
+ if (s->carrier_drop_pending || power < s->carrier_off_power)
+#else
+ if (power < s->carrier_off_power)
+#endif
+ {
+ if (--s->signal_present <= 0)
+ {
+ /* Count down a short delay, to ensure we push the last
+ few bits through the filters before stopping. */
+ v17_rx_restart(s, s->bit_rate, s->short_train);
+ report_status_change(s, SIG_STATUS_CARRIER_DOWN);
+ return 0;
+ }
+#if defined(IAXMODEM_STUFF)
+ /* Carrier has dropped, but the put_bit is pending the signal_present delay. */
+ s->carrier_drop_pending = TRUE;
+#endif
+ }
+ }
+ else
+ {
+ /* Look for power exceeding turn-on threshold to turn the carrier on */
+ if (power < s->carrier_on_power)
+ return 0;
+ s->signal_present = 1;
+#if defined(IAXMODEM_STUFF)
+ s->carrier_drop_pending = FALSE;
+#endif
+ report_status_change(s, SIG_STATUS_CARRIER_UP);
+ }
+ return power;
+}
+/*- End of function --------------------------------------------------------*/
+
SPAN_DECLARE_NONSTD(int) v17_rx(v17_rx_state_t *s, const int16_t amp[], int len)
{
int i;
int step;
- int16_t x;
- int16_t diff;
complexf_t z;
complexf_t zz;
complexf_t sample;
@@ -1033,68 +1090,8 @@
if (++s->rrc_filter_step >= V17_RX_FILTER_STEPS)
s->rrc_filter_step = 0;
- /* There should be no DC in the signal, but sometimes there is.
- We need to measure the power with the DC blocked, but not using
- a slow to respond DC blocker. Use the most elementary HPF. */
- x = amp[i] >> 1;
- /* There could be overflow here, but it isn't a problem in practice */
- diff = x - s->last_sample;
- power = power_meter_update(&(s->power), diff);
-#if defined(IAXMODEM_STUFF)
- /* Quick power drop fudge */
- diff = abs(diff);
- if (10*diff < s->high_sample)
- {
- if (++s->low_samples > 120)
- {
- power_meter_init(&(s->power), 4);
- s->high_sample = 0;
- s->low_samples = 0;
- }
- }
- else
- {
- s->low_samples = 0;
- if (diff > s->high_sample)
- s->high_sample = diff;
- }
-#endif
- s->last_sample = x;
- if (s->signal_present)
- {
- /* Look for power below turnoff threshold to turn the carrier off */
-#if defined(IAXMODEM_STUFF)
- if (s->carrier_drop_pending || power < s->carrier_off_power)
-#else
- if (power < s->carrier_off_power)
-#endif
- {
- if (--s->signal_present <= 0)
- {
- /* Count down a short delay, to ensure we push the last
- few bits through the filters before stopping. */
- v17_rx_restart(s, s->bit_rate, s->short_train);
- report_status_change(s, SIG_STATUS_CARRIER_DOWN);
- continue;
- }
-#if defined(IAXMODEM_STUFF)
- /* Carrier has dropped, but the put_bit is
- pending the signal_present delay. */
- s->carrier_drop_pending = TRUE;
-#endif
- }
- }
- else
- {
- /* Look for power exceeding turnon threshold to turn the carrier on */
- if (power < s->carrier_on_power)
- continue;
- s->signal_present = 1;
-#if defined(IAXMODEM_STUFF)
- s->carrier_drop_pending = FALSE;
-#endif
- report_status_change(s, SIG_STATUS_CARRIER_UP);
- }
+ if ((power = signal_detect(s, amp[i])) == 0)
+ continue;
if (s->training_stage == TRAINING_STAGE_PARKED)
continue;
/* Only spend effort processing this data if the modem is not
@@ -1171,7 +1168,7 @@
/* We want to sustain the current state (i.e carrier on<->carrier off), and
try to sustain the carrier phase. We should probably push the filters, as well */
span_log(&s->logging, SPAN_LOG_FLOW, "Fill-in %d samples\n", len);
- if (!s->signal_present)
+ if (s->signal_present <= 0)
return 0;
if (s->training_stage == TRAINING_STAGE_PARKED)
return 0;
@@ -1220,22 +1217,22 @@
switch (bit_rate)
{
case 14400:
- s->constellation = v17_14400_constellation;
+ s->constellation = v17_v32bis_14400_constellation;
s->space_map = 0;
s->bits_per_symbol = 6;
break;
case 12000:
- s->constellation = v17_12000_constellation;
+ s->constellation = v17_v32bis_12000_constellation;
s->space_map = 1;
s->bits_per_symbol = 5;
break;
case 9600:
- s->constellation = v17_9600_constellation;
+ s->constellation = v17_v32bis_9600_constellation;
s->space_map = 2;
s->bits_per_symbol = 4;
break;
case 7200:
- s->constellation = v17_7200_constellation;
+ s->constellation = v17_v32bis_7200_constellation;
s->space_map = 3;
s->bits_per_symbol = 3;
break;
Modified: freeswitch/trunk/libs/spandsp/src/v17tx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v17tx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v17tx.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v17tx.c,v 1.73 2009/04/21 13:59:07 steveu Exp $
+ * $Id: v17tx.c,v 1.75 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -62,11 +62,11 @@
#define SPANDSP_USE_FIXED_POINTx
#endif
-#include "v17tx_constellation_maps.h"
+#include "v17_v32bis_tx_constellation_maps.h"
#if defined(SPANDSP_USE_FIXED_POINT)
-#include "v17tx_fixed_rrc.h"
+#include "v17_v32bis_tx_fixed_rrc.h"
#else
-#include "v17tx_floating_rrc.h"
+#include "v17_v32bis_tx_floating_rrc.h"
#endif
/*! The nominal frequency of the carrier, in Hertz */
@@ -135,7 +135,7 @@
if (s->training_step <= V17_TRAINING_SEG_TEP_B)
{
/* Optional segment: Unmodulated carrier (talker echo protection) */
- return v17_abcd_constellation[0];
+ return v17_v32bis_4800_constellation[0];
}
if (s->training_step <= V17_TRAINING_SEG_1)
{
@@ -143,7 +143,7 @@
return zero;
}
/* Segment 1: ABAB... */
- return v17_abcd_constellation[(s->training_step & 1) ^ 1];
+ return v17_v32bis_4800_constellation[(s->training_step & 1) ^ 1];
}
/* Segment 2: CDBA... */
/* Apply the scrambler */
@@ -155,7 +155,7 @@
/* Go straight to the ones test. */
s->training_step = V17_TRAINING_SEG_4;
}
- return v17_abcd_constellation[s->constellation_state];
+ return v17_v32bis_4800_constellation[s->constellation_state];
}
/* Segment 3: Bridge... */
shift = ((s->training_step - V17_TRAINING_SEG_3 - 1) & 0x7) << 1;
@@ -163,7 +163,7 @@
bits = scramble(s, V17_BRIDGE_WORD >> shift);
bits = (bits << 1) | scramble(s, V17_BRIDGE_WORD >> (shift + 1));
s->constellation_state = (s->constellation_state + dibit_to_step[bits]) & 3;
- return v17_abcd_constellation[s->constellation_state];
+ return v17_v32bis_4800_constellation[s->constellation_state];
}
/*- End of function --------------------------------------------------------*/
@@ -359,19 +359,19 @@
{
case 14400:
s->bits_per_symbol = 6;
- s->constellation = v17_14400_constellation;
+ s->constellation = v17_v32bis_14400_constellation;
break;
case 12000:
s->bits_per_symbol = 5;
- s->constellation = v17_12000_constellation;
+ s->constellation = v17_v32bis_12000_constellation;
break;
case 9600:
s->bits_per_symbol = 4;
- s->constellation = v17_9600_constellation;
+ s->constellation = v17_v32bis_9600_constellation;
break;
case 7200:
s->bits_per_symbol = 3;
- s->constellation = v17_7200_constellation;
+ s->constellation = v17_v32bis_7200_constellation;
break;
default:
return -1;
Modified: freeswitch/trunk/libs/spandsp/src/v18.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v18.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v18.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v18.c,v 1.7 2009/04/26 07:00:38 steveu Exp $
+ * $Id: v18.c,v 1.10 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -379,50 +379,50 @@
{
static const uint8_t conv[128] =
{
- 0x00, /* NUL */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
+ 0xFF, /* NUL */
+ 0xFF, /* SOH */
+ 0xFF, /* STX */
+ 0xFF, /* ETX */
+ 0xFF, /* EOT */
+ 0xFF, /* ENQ */
+ 0xFF, /* ACK */
+ 0xFF, /* BEL */
+ 0x00, /* BS */
+ 0x44, /* HT >> SPACE */
0x42, /* LF */
- 0xFF, /* */
- 0xFF, /* */
+ 0x42, /* VT >> LF */
+ 0x42, /* FF >> LF */
0x48, /* CR */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
- 0xFF, /* */
+ 0xFF, /* SO */
+ 0xFF, /* SI */
+ 0xFF, /* DLE */
+ 0xFF, /* DC1 */
+ 0xFF, /* DC2 */
+ 0xFF, /* DC3 */
+ 0xFF, /* DC4 */
+ 0xFF, /* NAK */
+ 0xFF, /* SYN */
+ 0xFF, /* ETB */
+ 0xFF, /* CAN */
+ 0xFF, /* EM */
+ 0x99, /* SUB >> ? */
+ 0xFF, /* ESC */
+ 0x42, /* IS4 >> LF */
+ 0x42, /* IS3 >> LF */
+ 0x42, /* IS2 >> LF */
+ 0x44, /* IS1 >> SPACE */
0x44, /* */
- 0xFF, /* ! */
- 0xFF, /* " */
- 0x94, /* # */
+ 0x8D, /* ! */
+ 0x91, /* " */
+ 0x89, /* # >> $ */
0x89, /* $ */
- 0xFF, /* % */
- 0xFF, /* & */
- 0x85, /* ' */
+ 0x9D, /* % >> / */
+ 0x9A, /* & >> + */
+ 0x8B, /* ' */
0x8F, /* ( */
0x92, /* ) */
- 0x8B, /* * */
- 0x91, /* + */
+ 0x9C, /* * >> . */
+ 0x9A, /* + */
0x8C, /* , */
0x83, /* - */
0x9C, /* . */
@@ -438,12 +438,12 @@
0x86, /* 8 */
0x98, /* 9 */
0x8E, /* : */
- 0xFF, /* ; */
- 0xFF, /* < */
- 0x9E, /* = */
- 0xFF, /* > */
+ 0x9E, /* ; */
+ 0x8F, /* < >> )*/
+ 0x94, /* = */
+ 0x92, /* > >> ( */
0x99, /* ? */
- 0xFF, /* @ */
+ 0x1D, /* @ >> X */
0x03, /* A */
0x19, /* B */
0x0E, /* C */
@@ -470,12 +470,12 @@
0x1D, /* X */
0x15, /* Y */
0x11, /* Z */
- 0xFF, /* [ */
- 0xFF, /* \ */
- 0xFF, /* ] */
- 0x9B, /* ^ */
- 0xFF, /* _ */
- 0xFF, /* ` */
+ 0x8F, /* [ >> (*/
+ 0x9D, /* \ >> / */
+ 0x92, /* ] >> ) */
+ 0x8B, /* ^ >> ' */
+ 0x44, /* _ >> Space */
+ 0x8B, /* ` >> ' */
0x03, /* a */
0x19, /* b */
0x0E, /* c */
@@ -502,19 +502,29 @@
0x1D, /* x */
0x15, /* y */
0x11, /* z */
- 0xFF, /* { */
- 0xFF, /* | */
- 0xFF, /* } */
- 0xFF, /* ~ */
+ 0x8F, /* { >> ( */
+ 0x8D, /* | >> ! */
+ 0x92, /* } >> ) */
+ 0x44, /* ~ >> Space */
0xFF, /* DEL */
};
uint16_t shift;
+ if (ch == 0x7F)
+ {
+ /* DLE is a special character meaning "force a
+ change to the letter character set */
+ shift = BAUDOT_LETTER_SHIFT;
+ return 0;
+ }
ch = conv[ch];
+ /* Is it a non-existant code? */
if (ch == 0xFF)
return 0;
+ /* Is it a code present in both character sets? */
if ((ch & 0x40))
- return ch & 0x1F;
+ return 0x8000 | (ch & 0x1F);
+ /* Need to allow for a possible character set change. */
if ((ch & 0x80))
{
if (s->baudot_tx_shift == 1)
@@ -529,7 +539,7 @@
s->baudot_tx_shift = 0;
shift = BAUDOT_LETTER_SHIFT;
}
- return (shift << 5) | (ch & 0x1F);
+ return 0x8000 | (shift << 5) | (ch & 0x1F);
}
/*- End of function --------------------------------------------------------*/
@@ -537,8 +547,8 @@
{
static const uint8_t conv[2][32] =
{
- {"\000E\nA SIU\rDRJNFCKTZLWHYPQOBG^MXV^"},
- {"\0003\n- '87\r$4*,*:(5+)2#6019?*^./=^"}
+ {"\bE\nA SIU\rDRJNFCKTZLWHYPQOBG^MXV^"},
+ {"\b3\n- -87\r$4',!:(5\")2=6019?+^./;^"}
};
switch (ch)
@@ -633,7 +643,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) v18_tx(v18_state_t *s, int16_t *amp, int max_len)
+SPAN_DECLARE_NONSTD(int) v18_tx(v18_state_t *s, int16_t *amp, int max_len)
{
int len;
int lenx;
@@ -661,7 +671,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) v18_rx(v18_state_t *s, const int16_t amp[], int len)
+SPAN_DECLARE_NONSTD(int) v18_rx(v18_state_t *s, const int16_t amp[], int len)
{
switch (s->mode)
{
@@ -709,11 +719,11 @@
buf[n++] = (uint8_t) (x & 0x1F);
/* TODO: Deal with out of space condition */
if (queue_write(&s->queue.queue, (const uint8_t *) buf, n) < 0)
- return 0;
+ return i;
s->tx_signal_on = TRUE;
}
}
- break;
+ return len;
case V18_MODE_DTMF:
break;
}
Modified: freeswitch/trunk/libs/spandsp/src/v22bis_rx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v22bis_rx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v22bis_rx.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v22bis_rx.c,v 1.67 2009/04/29 12:37:45 steveu Exp $
+ * $Id: v22bis_rx.c,v 1.68 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -691,7 +691,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) v22bis_rx(v22bis_state_t *s, const int16_t amp[], int len)
+SPAN_DECLARE_NONSTD(int) v22bis_rx(v22bis_state_t *s, const int16_t amp[], int len)
{
int i;
int j;
Modified: freeswitch/trunk/libs/spandsp/src/v22bis_tx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v22bis_tx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v22bis_tx.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v22bis_tx.c,v 1.62 2009/04/29 12:37:45 steveu Exp $
+ * $Id: v22bis_tx.c,v 1.63 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -448,7 +448,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) v22bis_tx(v22bis_state_t *s, int16_t amp[], int len)
+SPAN_DECLARE_NONSTD(int) v22bis_tx(v22bis_state_t *s, int16_t amp[], int len)
{
complexf_t x;
complexf_t z;
Modified: freeswitch/trunk/libs/spandsp/src/v27ter_rx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v27ter_rx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v27ter_rx.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v27ter_rx.c,v 1.126 2009/04/21 13:59:07 steveu Exp $
+ * $Id: v27ter_rx.c,v 1.130 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -522,13 +522,23 @@
{
0, 4
};
- complexf_t z;
complexf_t zz;
+#if defined(SPANDSP_USE_FIXED_POINTx)
+ complexf_t z1;
+ complexi16_t z;
+ const complexi16_t *target;
+ static const complexi16_t zero = {0, 0};
+#else
+ complexf_t z;
+ const complexf_t *target;
+ static const complexf_t zero = {0.0f, 0.0f};
+#endif
float p;
int i;
int j;
int32_t angle;
int32_t ang;
+ int constellation_state;
/* Add a sample to the equalizer's circular buffer, but don't calculate anything
at this time. */
@@ -550,16 +560,20 @@
z = equalizer_get(s);
//span_log(&s->logging, SPAN_LOG_FLOW, "Equalized symbol - %15.5f %15.5f\n", z.re, z.im);
+ constellation_state = s->constellation_state;
switch (s->training_stage)
{
case TRAINING_STAGE_NORMAL_OPERATION:
decode_baud(s, &z);
+ constellation_state = (s->bit_rate == 4800) ? s->constellation_state : (s->constellation_state << 1);
+ target = &v27ter_constellation[constellation_state];
break;
case TRAINING_STAGE_SYMBOL_ACQUISITION:
/* Allow time for the Gardner algorithm to settle the baud timing */
/* Don't start narrowing the bandwidth of the Gardner algorithm too early.
Some modems are a bit wobbly when they start sending the signal. Also, we start
this analysis before our filter buffers have completely filled. */
+ target = &zero;
if (++s->training_count >= 30)
{
s->gardner_step = 32;
@@ -570,6 +584,7 @@
break;
case TRAINING_STAGE_LOG_PHASE:
/* Record the current alternate phase angle */
+ target = &zero;
angle = arctan2(z.im, z.re);
s->angles[1] =
s->start_angles[1] = angle;
@@ -577,6 +592,7 @@
s->training_stage = TRAINING_STAGE_WAIT_FOR_HOP;
break;
case TRAINING_STAGE_WAIT_FOR_HOP:
+ target = &zero;
angle = arctan2(z.im, z.re);
/* Look for the initial ABAB sequence to display a phase reversal, which will
signal the start of the scrambled ABAB segment */
@@ -634,14 +650,15 @@
s->eq_buf[i] = complex_mulf(&s->eq_buf[i], &zz);
#endif
s->carrier_phase += angle;
-
s->gardner_step = 2;
/* We have just seen the first element of the scrambled sequence so skip it. */
s->training_bc = 1;
s->training_bc ^= descramble(s, 1);
descramble(s, 1);
descramble(s, 1);
+ constellation_state =
s->constellation_state = abab_pos[s->training_bc];
+ target = &v27ter_constellation[constellation_state];
s->training_count = 1;
s->training_stage = TRAINING_STAGE_TRAIN_ON_ABAB;
report_status_change(s, SIG_STATUS_TRAINING_IN_PROGRESS);
@@ -661,41 +678,40 @@
s->training_bc ^= descramble(s, 1);
descramble(s, 1);
descramble(s, 1);
+ constellation_state =
s->constellation_state = abab_pos[s->training_bc];
- track_carrier(s, &z, &v27ter_constellation[s->constellation_state]);
- tune_equalizer(s, &z, &v27ter_constellation[s->constellation_state]);
+ target = &v27ter_constellation[constellation_state];
+ track_carrier(s, &z, target);
+ tune_equalizer(s, &z, target);
+#if defined(SPANDSP_USE_FIXED_POINTx)
+ s->carrier_track_i = 400 + (200000 - 400)*(float) (V27TER_TRAINING_SEG_5_LEN - s->training_count)/(float) V27TER_TRAINING_SEG_5_LEN;
+ s->carrier_track_p = 1000000 + (10000000 - 1000000)*(float) (V27TER_TRAINING_SEG_5_LEN - s->training_count)/(float) V27TER_TRAINING_SEG_5_LEN;
+#else
+ s->carrier_track_i = 400.0f + (200000.0f - 400.0f)*(float) (V27TER_TRAINING_SEG_5_LEN - s->training_count)/(float) V27TER_TRAINING_SEG_5_LEN;
+ s->carrier_track_p = 1000000.0f + (10000000.0f - 1000000.0f)*(float) (V27TER_TRAINING_SEG_5_LEN - s->training_count)/(float) V27TER_TRAINING_SEG_5_LEN;
+#endif
if (++s->training_count >= V27TER_TRAINING_SEG_5_LEN)
{
+ constellation_state = 4;
s->constellation_state = (s->bit_rate == 4800) ? 4 : 2;
s->training_count = 0;
s->training_stage = TRAINING_STAGE_TEST_ONES;
-#if defined(SPANDSP_USE_FIXED_POINTx)
- s->carrier_track_i = 400;
- s->carrier_track_p = 1000000;
-#else
- s->carrier_track_i = 400.0f;
- s->carrier_track_p = 1000000.0f;
-#endif
}
break;
case TRAINING_STAGE_TEST_ONES:
decode_baud(s, &z);
+ constellation_state = (s->bit_rate == 4800) ? s->constellation_state : (s->constellation_state << 1);
+ target = &v27ter_constellation[constellation_state];
/* Measure the training error */
#if defined(SPANDSP_USE_FIXED_POINTx)
z1.re = z.re/(float) FP_FACTOR;
z1.im = z.im/(float) FP_FACTOR;
- if (s->bit_rate == 4800)
- zz = complex_subf(&z, &v27ter_constellation[s->constellation_state]);
- else
- zz = complex_subf(&z, &v27ter_constellation[s->constellation_state << 1]);
+ zz = complex_subf(&z, target);
zz = complex_subf(&z1, &zz);
s->training_error += powerf(&zz);
#else
- if (s->bit_rate == 4800)
- zz = complex_subf(&z, &v27ter_constellation[s->constellation_state]);
- else
- zz = complex_subf(&z, &v27ter_constellation[s->constellation_state << 1]);
+ zz = complex_subf(&z, target);
s->training_error += powerf(&zz);
#endif
if (++s->training_count >= V27TER_TRAINING_SEG_6_LEN)
@@ -728,8 +744,10 @@
}
break;
case TRAINING_STAGE_PARKED:
+ default:
/* We failed to train! */
/* Park here until the carrier drops. */
+ target = &zero;
break;
}
if (s->qam_report)
@@ -737,28 +755,92 @@
#if defined(SPANDSP_USE_FIXED_POINTx)
z1.re = z.re/(float) FP_FACTOR;
z1.im = z.im/(float) FP_FACTOR;
- zz.re = v27ter_constellation[s->constellation_state].re;
- zz.im = v27ter_constellation[s->constellation_state].im;
- s->qam_report(s->qam_user_data,
- &z1,
- &zz,
- s->constellation_state);
-#else
- s->qam_report(s->qam_user_data,
- &z,
- &v27ter_constellation[s->constellation_state],
- s->constellation_state);
+ zz.re = target->re;
+ zz.im = target->im;
+ s->qam_report(s->qam_user_data, &z1, &zz, s->constellation_state);
+#else
+ s->qam_report(s->qam_user_data, &z, target, s->constellation_state);
#endif
}
}
/*- End of function --------------------------------------------------------*/
+static __inline__ int signal_detect(v27ter_rx_state_t *s, int16_t amp)
+{
+ int16_t diff;
+ int16_t x;
+ int32_t power;
+
+ /* There should be no DC in the signal, but sometimes there is.
+ We need to measure the power with the DC blocked, but not using
+ a slow to respond DC blocker. Use the most elementary HPF. */
+ x = amp >> 1;
+ /* There could be overflow here, but it isn't a problem in practice */
+ diff = x - s->last_sample;
+ s->last_sample = x;
+ power = power_meter_update(&(s->power), diff);
+#if defined(IAXMODEM_STUFF)
+ /* Quick power drop fudge */
+ diff = abs(diff);
+ if (10*diff < s->high_sample)
+ {
+ if (++s->low_samples > 120)
+ {
+ power_meter_init(&(s->power), 4);
+ s->high_sample = 0;
+ s->low_samples = 0;
+ }
+ }
+ else
+ {
+ s->low_samples = 0;
+ if (diff > s->high_sample)
+ s->high_sample = diff;
+ }
+#endif
+ //span_log(&s->logging, SPAN_LOG_FLOW, "Power = %f\n", power_meter_current_dbm0(&(s->power)));
+ if (s->signal_present > 0)
+ {
+ /* Look for power below turn-off threshold to turn the carrier off */
+#if defined(IAXMODEM_STUFF)
+ if (s->carrier_drop_pending || power < s->carrier_off_power)
+#else
+ if (power < s->carrier_off_power)
+#endif
+ {
+ if (--s->signal_present <= 0)
+ {
+ /* Count down a short delay, to ensure we push the last
+ few bits through the filters before stopping. */
+ v27ter_rx_restart(s, s->bit_rate, FALSE);
+ report_status_change(s, SIG_STATUS_CARRIER_DOWN);
+ return 0;
+ }
+#if defined(IAXMODEM_STUFF)
+ /* Carrier has dropped, but the put_bit is pending the signal_present delay. */
+ s->carrier_drop_pending = TRUE;
+#endif
+ }
+ }
+ else
+ {
+ /* Look for power exceeding turn-on threshold to turn the carrier on */
+ if (power < s->carrier_on_power)
+ return 0;
+ s->signal_present = 1;
+#if defined(IAXMODEM_STUFF)
+ s->carrier_drop_pending = FALSE;
+#endif
+ report_status_change(s, SIG_STATUS_CARRIER_UP);
+ }
+ return power;
+}
+/*- End of function --------------------------------------------------------*/
+
SPAN_DECLARE_NONSTD(int) v27ter_rx(v27ter_rx_state_t *s, const int16_t amp[], int len)
{
int i;
int step;
- int16_t x;
- int16_t diff;
#if defined(SPANDSP_USE_FIXED_POINT)
complexi16_t z;
complexi16_t zz;
@@ -780,68 +862,8 @@
if (++s->rrc_filter_step >= V27TER_RX_4800_FILTER_STEPS)
s->rrc_filter_step = 0;
- /* There should be no DC in the signal, but sometimes there is.
- We need to measure the power with the DC blocked, but not using
- a slow to respond DC blocker. Use the most elementary HPF. */
- x = amp[i] >> 1;
- /* There could be overflow here, but it isn't a problem in practice */
- diff = x - s->last_sample;
- power = power_meter_update(&(s->power), diff);
-#if defined(IAXMODEM_STUFF)
- /* Quick power drop fudge */
- diff = abs(diff);
- if (10*diff < s->high_sample)
- {
- if (++s->low_samples > 120)
- {
- power_meter_init(&(s->power), 4);
- s->high_sample = 0;
- s->low_samples = 0;
- }
- }
- else
- {
- s->low_samples = 0;
- if (diff > s->high_sample)
- s->high_sample = diff;
- }
-#endif
- s->last_sample = x;
- //span_log(&s->logging, SPAN_LOG_FLOW, "Power = %f\n", power_meter_current_dbm0(&(s->power)));
- if (s->signal_present)
- {
- /* Look for power below turnoff threshold to turn the carrier off */
-#if defined(IAXMODEM_STUFF)
- if (s->carrier_drop_pending || power < s->carrier_off_power)
-#else
- if (power < s->carrier_off_power)
-#endif
- {
- if (--s->signal_present <= 0)
- {
- /* Count down a short delay, to ensure we push the last
- few bits through the filters before stopping. */
- v27ter_rx_restart(s, s->bit_rate, FALSE);
- report_status_change(s, SIG_STATUS_CARRIER_DOWN);
- continue;
- }
-#if defined(IAXMODEM_STUFF)
- /* Carrier has dropped, but the put_bit is pending the signal_present delay. */
- s->carrier_drop_pending = TRUE;
-#endif
- }
- }
- else
- {
- /* Look for power exceeding turnon threshold to turn the carrier on */
- if (power < s->carrier_on_power)
- continue;
- s->signal_present = 1;
-#if defined(IAXMODEM_STUFF)
- s->carrier_drop_pending = FALSE;
-#endif
- report_status_change(s, SIG_STATUS_CARRIER_UP);
- }
+ if ((power = signal_detect(s, amp[i])) == 0)
+ continue;
/* Only spend effort processing this data if the modem is not
parked, after training failure. */
if (s->training_stage == TRAINING_STAGE_PARKED)
@@ -902,69 +924,8 @@
if (++s->rrc_filter_step >= V27TER_RX_2400_FILTER_STEPS)
s->rrc_filter_step = 0;
- /* There should be no DC in the signal, but sometimes there is.
- We need to measure the power with the DC blocked, but not using
- a slow to respond DC blocker. Use the most elementary HPF. */
- x = amp[i] >> 1;
- /* There could be overflow here, but it isn't a problem in practice */
- diff = x - s->last_sample;
- power = power_meter_update(&(s->power), diff);
-#if defined(IAXMODEM_STUFF)
- /* Quick power drop fudge */
- diff = abs(diff);
- if (10*diff < s->high_sample)
- {
- if (++s->low_samples > 120)
- {
- power_meter_init(&(s->power), 4);
- s->high_sample = 0;
- s->low_samples = 0;
- }
- }
- else
- {
- s->low_samples = 0;
- if (diff > s->high_sample)
- s->high_sample = diff;
- }
-#endif
- s->last_sample = x;
- //span_log(&s->logging, SPAN_LOG_FLOW, "Power = %f\n", power_meter_current_dbm0(&(s->power)));
- if (s->signal_present)
- {
- /* Look for power below turnoff threshold to turn the carrier off */
-#if defined(IAXMODEM_STUFF)
- if (s->carrier_drop_pending || power < s->carrier_off_power)
-#else
- if (power < s->carrier_off_power)
-#endif
- {
- if (--s->signal_present <= 0)
- {
- /* Count down a short delay, to ensure we push the last
- few bits through the filters before stopping. */
- v27ter_rx_restart(s, s->bit_rate, FALSE);
- report_status_change(s, SIG_STATUS_CARRIER_DOWN);
- continue;
- }
-#if defined(IAXMODEM_STUFF)
- /* Carrier has dropped, but the put_bit is
- pending the signal_present delay. */
- s->carrier_drop_pending = TRUE;
-#endif
- }
- }
- else
- {
- /* Look for power exceeding turnon threshold to turn the carrier on */
- if (power < s->carrier_on_power)
- continue;
- s->signal_present = 1;
-#if defined(IAXMODEM_STUFF)
- s->carrier_drop_pending = FALSE;
-#endif
- report_status_change(s, SIG_STATUS_CARRIER_UP);
- }
+ if ((power = signal_detect(s, amp[i])) == 0)
+ continue;
/* Only spend effort processing this data if the modem is not
parked, after training failure. */
if (s->training_stage == TRAINING_STAGE_PARKED)
@@ -1028,7 +989,7 @@
/* We want to sustain the current state (i.e carrier on<->carrier off), and
try to sustain the carrier phase. We should probably push the filters, as well */
span_log(&s->logging, SPAN_LOG_FLOW, "Fill-in %d samples\n", len);
- if (!s->signal_present)
+ if (s->signal_present <= 0)
return 0;
if (s->training_stage == TRAINING_STAGE_PARKED)
return 0;
Modified: freeswitch/trunk/libs/spandsp/src/v27ter_tx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v27ter_tx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v27ter_tx.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v27ter_tx.c,v 1.75 2009/04/21 13:59:07 steveu Exp $
+ * $Id: v27ter_tx.c,v 1.76 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/v29rx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v29rx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v29rx.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v29rx.c,v 1.164 2009/04/21 13:59:07 steveu Exp $
+ * $Id: v29rx.c,v 1.166 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
@@ -841,12 +841,82 @@
}
/*- End of function --------------------------------------------------------*/
+static __inline__ int signal_detect(v29_rx_state_t *s, int16_t amp)
+{
+ int16_t diff;
+ int16_t x;
+ int32_t power;
+
+ /* There should be no DC in the signal, but sometimes there is.
+ We need to measure the power with the DC blocked, but not using
+ a slow to respond DC blocker. Use the most elementary HPF. */
+ x = amp >> 1;
+ /* There could be overflow here, but it isn't a problem in practice */
+ diff = x - s->last_sample;
+ s->last_sample = x;
+ power = power_meter_update(&(s->power), diff);
+#if defined(IAXMODEM_STUFF)
+ /* Quick power drop fudge */
+ diff = abs(diff);
+ if (10*diff < s->high_sample)
+ {
+ if (++s->low_samples > 120)
+ {
+ power_meter_init(&(s->power), 4);
+ s->high_sample = 0;
+ s->low_samples = 0;
+ }
+ }
+ else
+ {
+ s->low_samples = 0;
+ if (diff > s->high_sample)
+ s->high_sample = diff;
+ }
+#endif
+ if (s->signal_present > 0)
+ {
+ /* Look for power below turn-off threshold to turn the carrier off */
+#if defined(IAXMODEM_STUFF)
+ if (s->carrier_drop_pending || power < s->carrier_off_power)
+#else
+ if (power < s->carrier_off_power)
+#endif
+ {
+ if (--s->signal_present <= 0)
+ {
+ /* Count down a short delay, to ensure we push the last
+ few bits through the filters before stopping. */
+ v29_rx_restart(s, s->bit_rate, FALSE);
+ report_status_change(s, SIG_STATUS_CARRIER_DOWN);
+ return 0;
+ }
+#if defined(IAXMODEM_STUFF)
+ /* Carrier has dropped, but the put_bit is
+ pending the signal_present delay. */
+ s->carrier_drop_pending = TRUE;
+#endif
+ }
+ }
+ else
+ {
+ /* Look for power exceeding turn-on threshold to turn the carrier on */
+ if (power < s->carrier_on_power)
+ return 0;
+ s->signal_present = 1;
+#if defined(IAXMODEM_STUFF)
+ s->carrier_drop_pending = FALSE;
+#endif
+ report_status_change(s, SIG_STATUS_CARRIER_UP);
+ }
+ return power;
+}
+/*- End of function --------------------------------------------------------*/
+
SPAN_DECLARE_NONSTD(int) v29_rx(v29_rx_state_t *s, const int16_t amp[], int len)
{
int i;
int step;
- int16_t x;
- int16_t diff;
#if defined(SPANDSP_USE_FIXED_POINT)
complexi16_t z;
complexi16_t zz;
@@ -866,68 +936,8 @@
if (++s->rrc_filter_step >= V29_RX_FILTER_STEPS)
s->rrc_filter_step = 0;
- /* There should be no DC in the signal, but sometimes there is.
- We need to measure the power with the DC blocked, but not using
- a slow to respond DC blocker. Use the most elementary HPF. */
- x = amp[i] >> 1;
- /* There could be overflow here, but it isn't a problem in practice */
- diff = x - s->last_sample;
- power = power_meter_update(&(s->power), diff);
-#if defined(IAXMODEM_STUFF)
- /* Quick power drop fudge */
- diff = abs(diff);
- if (10*diff < s->high_sample)
- {
- if (++s->low_samples > 120)
- {
- power_meter_init(&(s->power), 4);
- s->high_sample = 0;
- s->low_samples = 0;
- }
- }
- else
- {
- s->low_samples = 0;
- if (diff > s->high_sample)
- s->high_sample = diff;
- }
-#endif
- s->last_sample = x;
- if (s->signal_present)
- {
- /* Look for power below turn-off threshold to turn the carrier off */
-#if defined(IAXMODEM_STUFF)
- if (s->carrier_drop_pending || power < s->carrier_off_power)
-#else
- if (power < s->carrier_off_power)
-#endif
- {
- if (--s->signal_present <= 0)
- {
- /* Count down a short delay, to ensure we push the last
- few bits through the filters before stopping. */
- v29_rx_restart(s, s->bit_rate, FALSE);
- report_status_change(s, SIG_STATUS_CARRIER_DOWN);
- continue;
- }
-#if defined(IAXMODEM_STUFF)
- /* Carrier has dropped, but the put_bit is
- pending the signal_present delay. */
- s->carrier_drop_pending = TRUE;
-#endif
- }
- }
- else
- {
- /* Look for power exceeding turn-on threshold to turn the carrier on */
- if (power < s->carrier_on_power)
- continue;
- s->signal_present = 1;
-#if defined(IAXMODEM_STUFF)
- s->carrier_drop_pending = FALSE;
-#endif
- report_status_change(s, SIG_STATUS_CARRIER_UP);
- }
+ if ((power = signal_detect(s, amp[i])) == 0)
+ continue;
if (s->training_stage == TRAINING_STAGE_PARKED)
continue;
/* Only spend effort processing this data if the modem is not
@@ -1018,7 +1028,7 @@
/* We want to sustain the current state (i.e carrier on<->carrier off), and
try to sustain the carrier phase. We should probably push the filters, as well */
span_log(&s->logging, SPAN_LOG_FLOW, "Fill-in %d samples\n", len);
- if (!s->signal_present)
+ if (s->signal_present <= 0)
return 0;
if (s->training_stage == TRAINING_STAGE_PARKED)
return 0;
Modified: freeswitch/trunk/libs/spandsp/src/v29tx.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v29tx.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v29tx.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v29tx.c,v 1.88 2009/04/21 13:59:07 steveu Exp $
+ * $Id: v29tx.c,v 1.89 2009/06/02 16:03:56 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/src/v8.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/src/v8.c (original)
+++ freeswitch/trunk/libs/spandsp/src/v8.c Thu Jun 18 01:13:59 2009
@@ -609,7 +609,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) v8_tx(v8_state_t *s, int16_t *amp, int max_len)
+SPAN_DECLARE_NONSTD(int) v8_tx(v8_state_t *s, int16_t *amp, int max_len)
{
int len;
@@ -632,7 +632,7 @@
}
/*- End of function --------------------------------------------------------*/
-SPAN_DECLARE(int) v8_rx(v8_state_t *s, const int16_t *amp, int len)
+SPAN_DECLARE_NONSTD(int) v8_rx(v8_state_t *s, const int16_t *amp, int len)
{
int i;
int residual_samples;
Modified: freeswitch/trunk/libs/spandsp/tests/Makefile.am
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/Makefile.am (original)
+++ freeswitch/trunk/libs/spandsp/tests/Makefile.am Thu Jun 18 01:13:59 2009
@@ -16,7 +16,7 @@
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
-## $Id: Makefile.am,v 1.114 2009/04/26 08:25:37 steveu Exp $
+## $Id: Makefile.am,v 1.116 2009/05/30 15:23:13 steveu Exp $
AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
@@ -172,7 +172,7 @@
dc_restore_tests_LDADD = $(LIBDIR) -lspandsp
dds_tests_SOURCES = dds_tests.c
-dds_tests_LDADD = $(LIBDIR) -lspandsp
+dds_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
dtmf_rx_tests_SOURCES = dtmf_rx_tests.c
dtmf_rx_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
@@ -196,7 +196,7 @@
g1050_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
g168_tests_SOURCES = g168_tests.c
-g168_tests_LDADD = $(LIBDIR) -lspandsp
+g168_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
g711_tests_SOURCES = g711_tests.c
g711_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
@@ -244,10 +244,10 @@
playout_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
plc_tests_SOURCES = plc_tests.c
-plc_tests_LDADD = $(LIBDIR) -lspandsp
+plc_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
power_meter_tests_SOURCES = power_meter_tests.c
-power_meter_tests_LDADD = $(LIBDIR) -lspandsp
+power_meter_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
queue_tests_SOURCES = queue_tests.c
queue_tests_LDADD = $(LIBDIR) -lspandsp
@@ -268,7 +268,7 @@
sig_tone_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
super_tone_rx_tests_SOURCES = super_tone_rx_tests.c
-super_tone_rx_tests_LDADD = $(LIBDIR) -lspandsp
+super_tone_rx_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
super_tone_tx_tests_SOURCES = super_tone_tx_tests.c
super_tone_tx_tests_LDADD = -L$(top_builddir)/spandsp-sim -lspandsp-sim $(LIBDIR) -lspandsp
Modified: freeswitch/trunk/libs/spandsp/tests/adsi_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/adsi_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/adsi_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: adsi_tests.c,v 1.56 2009/04/26 07:24:35 steveu Exp $
+ * $Id: adsi_tests.c,v 1.57 2009/05/30 15:23:13 steveu Exp $
*/
/*! \page adsi_tests_page ADSI tests
@@ -48,7 +48,7 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -87,7 +87,7 @@
int current_standard = 0;
int good_message_received;
int log_audio = FALSE;
-AFfilehandle outhandle = NULL;
+SNDFILE *outhandle = NULL;
int short_preamble = FALSE;
static int adsi_create_message(adsi_tx_state_t *s, uint8_t *msg)
@@ -674,13 +674,12 @@
}
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle,
+ amp,
+ len);
if (outframes != len)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -696,27 +695,27 @@
{
int j;
int16_t amp[BLOCK_LEN];
- AFfilehandle inhandle;
+ SNDFILE *inhandle;
int frames;
/* The remainder of the Mitel tape is the talk-off test */
/* Here we use the Bellcore test tapes (much tougher), in six
- wave files - 1 from each side of the original 3 cassette tapes */
+ files - 1 from each side of the original 3 cassette tapes */
printf("Talk-off tests for %s\n", adsi_standard_to_str(standard));
rx_adsi = adsi_rx_init(NULL, standard, put_adsi_msg, NULL);
for (j = 0; bellcore_files[j][0]; j++)
{
printf("Testing with %s\n", bellcore_files[j]);
- if ((inhandle = afOpenFile_telephony_read(bellcore_files[j], 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(bellcore_files[j], 1)) == NULL)
{
printf(" Cannot open speech file '%s'\n", bellcore_files[j]);
exit(2);
}
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, BLOCK_LEN)))
+ while ((frames = sf_readf_short(inhandle, amp, BLOCK_LEN)))
{
adsi_rx(rx_adsi, amp, frames);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
printf(" Cannot close speech file '%s'\n", bellcore_files[j]);
exit(2);
@@ -735,7 +734,7 @@
int main(int argc, char *argv[])
{
int16_t amp[BLOCK_LEN];
- AFfilehandle inhandle;
+ SNDFILE *inhandle;
int len;
int test_standard;
int first_standard;
@@ -793,16 +792,16 @@
break;
}
}
- outhandle = AF_NULL_FILEHANDLE;
+ outhandle = NULL;
tdd_character_set_tests();
if (decode_test_file)
{
- /* We will decode the audio from a wave file. */
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ /* We will decode the audio from a file. */
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
if (test_standard < 0)
@@ -817,17 +816,14 @@
#endif
for (;;)
{
- len = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- BLOCK_LEN);
+ len = sf_readf_short(inhandle, amp, BLOCK_LEN);
if (len == 0)
break;
adsi_rx(rx_adsi, amp, len);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
adsi_rx_free(rx_adsi);
@@ -836,9 +832,9 @@
{
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
}
@@ -863,9 +859,9 @@
}
if (log_audio)
{
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/async_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/async_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/async_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: async_tests.c,v 1.18 2008/11/30 10:17:31 steveu Exp $
+ * $Id: async_tests.c,v 1.19 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -38,7 +38,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
Modified: freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/at_interpreter_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: at_interpreter_tests.c,v 1.22 2009/04/24 22:35:25 steveu Exp $
+ * $Id: at_interpreter_tests.c,v 1.23 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -42,7 +42,7 @@
#include <unistd.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
#include "spandsp.h"
Modified: freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/bell_mf_rx_tests.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: bell_mf_rx_tests.c,v 1.15 2009/04/11 18:11:19 steveu Exp $
+ * $Id: bell_mf_rx_tests.c,v 1.16 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -48,7 +48,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
Modified: freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/bell_mf_tx_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: bell_mf_tx_tests.c,v 1.14 2008/11/30 10:17:31 steveu Exp $
+ * $Id: bell_mf_tx_tests.c,v 1.15 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -44,7 +44,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -60,55 +60,40 @@
bell_mf_tx_state_t *gen;
int16_t amp[16384];
int len;
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
int outframes;
int add_digits;
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
gen = bell_mf_tx_init(NULL);
len = bell_mf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "123", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "456", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "789", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "*#", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
add_digits = 1;
do
{
@@ -116,10 +101,7 @@
printf("Generated %d samples\n", len);
if (len > 0)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
if (add_digits)
{
@@ -135,50 +117,32 @@
bell_mf_tx_init(gen);
len = bell_mf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "123", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "456", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "789", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "0*#", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (bell_mf_tx_put(gen, "ABC", -1))
printf("Ooops\n");
len = bell_mf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
add_digits = 1;
do
{
@@ -186,10 +150,7 @@
printf("Generated %d samples\n", len);
if (len > 0)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
if (add_digits)
{
@@ -202,9 +163,9 @@
}
while (len > 0);
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit (2);
}
Modified: freeswitch/trunk/libs/spandsp/tests/bert_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/bert_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/bert_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: bert_tests.c,v 1.27 2009/04/14 16:04:54 steveu Exp $
+ * $Id: bert_tests.c,v 1.28 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -40,7 +40,7 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
Modified: freeswitch/trunk/libs/spandsp/tests/dds_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/dds_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/dds_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: dds_tests.c,v 1.24 2008/05/13 13:17:25 steveu Exp $
+ * $Id: dds_tests.c,v 1.26 2009/06/02 14:55:36 steveu Exp $
*/
/*! \file */
@@ -43,9 +43,10 @@
#include <stdio.h>
#include <fcntl.h>
#include <memory.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include "spandsp.h"
+#include "spandsp-sim.h"
#define OUTPUT_FILE_NAME "dds.wav"
#define OUTPUT_FILE_NAME_COMPLEX "complex_dds.wav"
@@ -60,8 +61,7 @@
int outframes;
complexf_t camp;
int16_t buf[2*SAMPLES_PER_CHUNK];
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *outhandle;
power_meter_t meter;
power_meter_t meter_i;
power_meter_t meter_q;
@@ -70,19 +70,9 @@
power_meter_init(&meter, 10);
printf("Non-complex DDS tests.\n");
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
-
- if ((outhandle = afOpenFile(OUTPUT_FILE_NAME, "w", filesetup)) == AF_NULL_FILEHANDLE)
- {
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -96,13 +86,10 @@
buf[i] = alaw_to_linear(linear_to_alaw((dds(&phase, phase_inc)*scale) >> 15));
power_meter_update(&meter, buf[i]);
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- buf,
- SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(outhandle, buf, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
printf("Level is %fdBOv/%fdBm0\n", power_meter_current_dbov(&meter), power_meter_current_dbm0(&meter));
@@ -119,13 +106,10 @@
buf[i] = alaw_to_linear(linear_to_alaw(dds(&phase, phase_inc)));
power_meter_update(&meter, buf[i]);
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- buf,
- SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(outhandle, buf, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
printf("Level is %fdBOv/%fdBm0\n", power_meter_current_dbov(&meter), power_meter_current_dbm0(&meter));
@@ -144,13 +128,10 @@
buf[i] = alaw_to_linear(linear_to_alaw((dds(&phase, phase_inc)*scale) >> 15));
power_meter_update(&meter, buf[i]);
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- buf,
- SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(outhandle, buf, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
printf("Level is %fdBOv/%fdBm0\n", power_meter_current_dbov(&meter), power_meter_current_dbm0(&meter));
@@ -167,13 +148,10 @@
buf[i] = alaw_to_linear(linear_to_alaw(dds(&phase, phase_inc)));
power_meter_update(&meter, buf[i]);
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- buf,
- SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(outhandle, buf, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
printf("Level is %fdBOv/%fdBm0\n", power_meter_current_dbov(&meter), power_meter_current_dbm0(&meter));
@@ -183,27 +161,16 @@
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
- afFreeFileSetup(filesetup);
printf("Complex DDS tests,\n");
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 2);
-
- if ((outhandle = afOpenFile(OUTPUT_FILE_NAME_COMPLEX, "w", filesetup)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME_COMPLEX, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME_COMPLEX);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME_COMPLEX);
exit(2);
}
@@ -220,13 +187,10 @@
power_meter_update(&meter_i, buf[2*i]);
power_meter_update(&meter_q, buf[2*i]);
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- buf,
- SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(outhandle, buf, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
printf("Level is %fdBOv/%fdBm0, %fdBOv/%fdBm0\n",
@@ -242,12 +206,11 @@
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME_COMPLEX);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME_COMPLEX);
exit(2);
}
- afFreeFileSetup(filesetup);
printf("Tests passed.\n");
return 0;
Modified: freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/dtmf_rx_tests.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: dtmf_rx_tests.c,v 1.44 2008/11/30 10:17:31 steveu Exp $
+ * $Id: dtmf_rx_tests.c,v 1.45 2009/05/30 15:23:13 steveu Exp $
*/
/*
@@ -94,7 +94,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -623,7 +623,7 @@
int hits;
int hit_types[256];
char buf[128 + 1];
- AFfilehandle inhandle;
+ SNDFILE *inhandle;
int frames;
dtmf_rx_state_t *dtmf_state;
@@ -633,7 +633,7 @@
/* The remainder of the Mitel tape is the talk-off test */
/* Here we use the Bellcore test tapes (much tougher), in six
- wave files - 1 from each side of the original 3 cassette tapes */
+ files - 1 from each side of the original 3 cassette tapes */
/* Bellcore say you should get no more than 470 false detections with
a good receiver. Dialogic claim 20. Of course, we can do better than
that, eh? */
@@ -641,13 +641,13 @@
memset(hit_types, '\0', sizeof(hit_types));
for (j = 0; bellcore_files[j][0]; j++)
{
- if ((inhandle = afOpenFile_telephony_read(bellcore_files[j], 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(bellcore_files[j], 1)) == NULL)
{
printf(" Cannot open speech file '%s'\n", bellcore_files[j]);
exit(2);
}
hits = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLE_RATE)))
+ while ((frames = sf_readf_short(inhandle, amp, SAMPLE_RATE)))
{
dtmf_rx(dtmf_state, amp, frames);
len = dtmf_rx_get(dtmf_state, buf, 128);
@@ -658,7 +658,7 @@
hits += len;
}
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
printf(" Cannot close speech file '%s'\n", bellcore_files[j]);
exit(2);
@@ -804,7 +804,7 @@
static void decode_test(const char *test_file)
{
int16_t amp[SAMPLES_PER_CHUNK];
- AFfilehandle inhandle;
+ SNDFILE *inhandle;
dtmf_rx_state_t *dtmf_state;
char buf[128 + 1];
int actual;
@@ -815,16 +815,16 @@
if (use_dialtone_filter)
dtmf_rx_parms(dtmf_state, TRUE, -1, -1, -99);
- /* We will decode the audio from a wave file. */
+ /* We will decode the audio from a file. */
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
total = 0;
- while ((samples = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLES_PER_CHUNK)) > 0)
+ while ((samples = sf_readf_short(inhandle, amp, SAMPLES_PER_CHUNK)) > 0)
{
codec_munge(munge, amp, samples);
dtmf_rx(dtmf_state, amp, samples);
Modified: freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/dtmf_tx_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: dtmf_tx_tests.c,v 1.22 2008/11/30 10:17:31 steveu Exp $
+ * $Id: dtmf_tx_tests.c,v 1.23 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -44,7 +44,7 @@
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -60,40 +60,52 @@
dtmf_tx_state_t *gen;
int16_t amp[16384];
int len;
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
int outframes;
int add_digits;
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
gen = dtmf_tx_init(NULL);
len = dtmf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "123", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "456", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "789", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "*#", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
add_digits = 1;
do
{
@@ -101,7 +113,7 @@
printf("Generated %d samples\n", len);
if (len > 0)
{
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
if (add_digits)
{
@@ -117,52 +129,73 @@
dtmf_tx_init(gen);
len = dtmf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "123", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 16384);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "456", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "789", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "0*#", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (dtmf_tx_put(gen, "ABCD", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
/* Try modifying the level and length of the digits */
printf("Try different levels and timing\n");
dtmf_tx_set_level(gen, -20, 5);
dtmf_tx_set_timing(gen, 100, 200);
if (dtmf_tx_put(gen, "123", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
do
{
len = dtmf_tx(gen, amp, 160);
printf("Generated %d samples\n", len);
if (len > 0)
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
while (len > 0);
printf("Restore normal levels and timing\n");
dtmf_tx_set_level(gen, -10, 0);
dtmf_tx_set_timing(gen, 50, 55);
if (dtmf_tx_put(gen, "A", -1))
+ {
printf("Ooops\n");
+ exit(2);
+ }
add_digits = TRUE;
do
@@ -171,7 +204,7 @@
printf("Generated %d samples\n", len);
if (len > 0)
{
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
if (add_digits)
{
@@ -184,10 +217,10 @@
}
while (len > 0);
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
- exit (2);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
+ exit(2);
}
return 0;
Modified: freeswitch/trunk/libs/spandsp/tests/echo_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/echo_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/echo_tests.c Thu Jun 18 01:13:59 2009
@@ -25,7 +25,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: echo_tests.c,v 1.38 2009/02/10 13:06:47 steveu Exp $
+ * $Id: echo_tests.c,v 1.39 2009/05/30 15:23:13 steveu Exp $
*/
/*! \page echo_can_tests_page Line echo cancellation for voice tests
@@ -54,7 +54,7 @@
#include <string.h>
#include <strings.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
#define GEN_CONST
#include <math.h>
@@ -107,7 +107,7 @@
int max;
int cur;
float gain;
- AFfilehandle handle;
+ SNDFILE *handle;
int16_t signal[SAMPLE_RATE];
} signal_source_t;
@@ -139,7 +139,7 @@
awgn_state_t local_noise_source;
awgn_state_t far_noise_source;
-AFfilehandle residue_handle;
+SNDFILE *residue_handle;
int16_t residue_sound[SAMPLE_RATE];
int residue_cur = 0;
@@ -157,7 +157,7 @@
level_measurement_device_t *sgen_power_meter;
#define RESULT_CHANNELS 7
-AFfilehandle result_handle;
+SNDFILE *result_handle;
int16_t result_sound[SAMPLE_RATE*RESULT_CHANNELS];
int result_cur;
@@ -188,10 +188,7 @@
residue_sound[residue_cur++] = amp;
if (residue_cur >= SAMPLE_RATE)
{
- outframes = afWriteFrames(residue_handle,
- AF_DEFAULT_TRACK,
- residue_sound,
- residue_cur);
+ outframes = sf_writef_short(residue_handle, residue_sound, residue_cur);
if (outframes != residue_cur)
{
fprintf(stderr, " Error writing residue sound\n");
@@ -204,9 +201,9 @@
static void signal_load(signal_source_t *sig, const char *name)
{
- sig->handle = afOpenFile_telephony_read(name, 1);
+ sig->handle = sf_open_telephony_read(name, 1);
sig->name = name;
- sig->max = afReadFrames(sig->handle, AF_DEFAULT_TRACK, sig->signal, SAMPLE_RATE);
+ sig->max = sf_readf_short(sig->handle, sig->signal, SAMPLE_RATE);
if (sig->max < 0)
{
fprintf(stderr, " Error reading sound file '%s'\n", sig->name);
@@ -217,7 +214,7 @@
static void signal_free(signal_source_t *sig)
{
- if (afCloseFile(sig->handle) != 0)
+ if (sf_close(sig->handle) != 0)
{
fprintf(stderr, " Cannot close sound file '%s'\n", sig->name);
exit(2);
@@ -597,10 +594,7 @@
result_sound[result_cur++] = 0; // TODO: insert the EC's internal status here
if (result_cur >= RESULT_CHANNELS*SAMPLE_RATE)
{
- outframes = afWriteFrames(result_handle,
- AF_DEFAULT_TRACK,
- result_sound,
- result_cur/RESULT_CHANNELS);
+ outframes = sf_writef_short(result_handle, result_sound, result_cur/RESULT_CHANNELS);
if (outframes != result_cur/RESULT_CHANNELS)
{
fprintf(stderr, " Error writing result sound\n");
@@ -615,10 +609,7 @@
#endif
if (result_cur >= 0)
{
- outframes = afWriteFrames(result_handle,
- AF_DEFAULT_TRACK,
- result_sound,
- result_cur/RESULT_CHANNELS);
+ outframes = sf_writef_short(result_handle, result_sound, result_cur/RESULT_CHANNELS);
if (outframes != result_cur/RESULT_CHANNELS)
{
fprintf(stderr, " Error writing result sound\n");
@@ -678,7 +669,7 @@
/* Inject a burst of far sound */
if (far_cur >= far_max)
{
- far_max = afReadFrames(farhandle, AF_DEFAULT_TRACK, far_sound, SAMPLE_RATE);
+ far_max = sf_readf_short(farhandle, far_sound, SAMPLE_RATE);
if (far_max < 0)
{
fprintf(stderr, " Error reading far sound\n");
@@ -734,10 +725,7 @@
put_residue(clean - far_tx);
if (result_cur >= RESULT_CHANNELS*SAMPLE_RATE)
{
- outframes = afWriteFrames(result_handle,
- AF_DEFAULT_TRACK,
- result_sound,
- result_cur/RESULT_CHANNELS);
+ outframes = sf_writef_short(result_handle, result_sound, result_cur/RESULT_CHANNELS);
if (outframes != result_cur/RESULT_CHANNELS)
{
fprintf(stderr, " Error writing result sound\n");
@@ -748,10 +736,7 @@
}
if (result_cur > 0)
{
- outframes = afWriteFrames(result_handle,
- AF_DEFAULT_TRACK,
- result_sound,
- result_cur/RESULT_CHANNELS);
+ outframes = sf_writef_short(result_handle, result_sound, result_cur/RESULT_CHANNELS);
if (outframes != result_cur/RESULT_CHANNELS)
{
fprintf(stderr, " Error writing result sound\n");
@@ -1494,10 +1479,10 @@
static void simulate_ec(char *argv[], int two_channel_file, int mode)
{
echo_can_state_t *ctx;
- AFfilehandle txfile;
- AFfilehandle rxfile;
- AFfilehandle rxtxfile;
- AFfilehandle ecfile;
+ SNDFILE *txfile;
+ SNDFILE *rxfile;
+ SNDFILE *rxtxfile;
+ SNDFILE *ecfile;
int ntx;
int nrx;
int nec;
@@ -1515,14 +1500,14 @@
ecfile = NULL;
if (two_channel_file)
{
- txfile = afOpenFile_telephony_read(argv[0], 1);
- rxfile = afOpenFile_telephony_read(argv[1], 1);
- ecfile = afOpenFile_telephony_write(argv[2], 1);
+ txfile = sf_open_telephony_read(argv[0], 1);
+ rxfile = sf_open_telephony_read(argv[1], 1);
+ ecfile = sf_open_telephony_write(argv[2], 1);
}
else
{
- rxtxfile = afOpenFile_telephony_read(argv[0], 2);
- ecfile = afOpenFile_telephony_write(argv[1], 1);
+ rxtxfile = sf_open_telephony_read(argv[0], 2);
+ ecfile = sf_open_telephony_write(argv[1], 1);
}
ctx = echo_can_init(TEST_EC_TAPS, 0);
@@ -1532,7 +1517,7 @@
{
if (two_channel_file)
{
- if ((ntx = afReadFrames(rxtxfile, AF_DEFAULT_TRACK, buf, 1)) < 0)
+ if ((ntx = sf_readf_short(rxtxfile, buf, 1)) < 0)
{
fprintf(stderr, " Error reading tx sound file\n");
exit(2);
@@ -1543,12 +1528,12 @@
}
else
{
- if ((ntx = afReadFrames(txfile, AF_DEFAULT_TRACK, &rin, 1)) < 0)
+ if ((ntx = sf_readf_short(txfile, &rin, 1)) < 0)
{
fprintf(stderr, " Error reading tx sound file\n");
exit(2);
}
- if ((nrx = afReadFrames(rxfile, AF_DEFAULT_TRACK, &sin, 1)) < 0)
+ if ((nrx = sf_readf_short(rxfile, &sin, 1)) < 0)
{
fprintf(stderr, " Error reading rx sound file\n");
exit(2);
@@ -1557,7 +1542,7 @@
rout = echo_can_hpf_tx(ctx, rin);
sout = echo_can_update(ctx, rout, sin);
- if ((nec = afWriteFrames(ecfile, AF_DEFAULT_TRACK, &sout, 1)) != 1)
+ if ((nec = sf_writef_short(ecfile, &sout, 1)) != 1)
{
fprintf(stderr, " Error writing ec sound file\n");
exit(2);
@@ -1576,14 +1561,14 @@
if (two_channel_file)
{
- afCloseFile(rxtxfile);
+ sf_close(rxtxfile);
}
else
{
- afCloseFile(txfile);
- afCloseFile(rxfile);
+ sf_close(txfile);
+ sf_close(rxfile);
}
- afCloseFile(ecfile);
+ sf_close(ecfile);
}
/*- End of function --------------------------------------------------------*/
@@ -1666,8 +1651,8 @@
#endif
if (simulate)
{
- /* Process a pair of transmitted and received wave files, and produce
- an echo cancelled wave file. */
+ /* Process a pair of transmitted and received audio files, and produce
+ an echo cancelled audio file. */
if (argc < ((two_channel_file) ? 2 : 3))
{
printf("not enough arguments for a simulation\n");
@@ -1692,7 +1677,7 @@
signal_load(&local_css, "sound_c1_8k.wav");
signal_load(&far_css, "sound_c3_8k.wav");
- if ((residue_handle = afOpenFile_telephony_write(RESIDUE_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((residue_handle = sf_open_telephony_write(RESIDUE_FILE_NAME, 1)) == NULL)
{
fprintf(stderr, " Failed to open '%s'\n", RESIDUE_FILE_NAME);
exit(2);
@@ -1704,7 +1689,7 @@
else
{
time(&now);
- if ((result_handle = afOpenFile_telephony_write("echo_tests_result.wav", RESULT_CHANNELS)) == AF_NULL_FILEHANDLE)
+ if ((result_handle = sf_open_telephony_write("echo_tests_result.wav", RESULT_CHANNELS)) == NULL)
{
fprintf(stderr, " Failed to open result file\n");
exit(2);
@@ -1720,7 +1705,7 @@
}
match_test_name(argv[i]);
}
- if (afCloseFile(result_handle) != 0)
+ if (sf_close(result_handle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", "result_sound.wav");
exit(2);
@@ -1729,7 +1714,7 @@
}
signal_free(&local_css);
signal_free(&far_css);
- if (afCloseFile(residue_handle) != 0)
+ if (sf_close(residue_handle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", RESIDUE_FILE_NAME);
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/fax_decode.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/fax_decode.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/fax_decode.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fax_decode.c,v 1.55 2009/04/29 12:37:45 steveu Exp $
+ * $Id: fax_decode.c,v 1.56 2009/05/30 15:23:13 steveu Exp $
*/
/*! \page fax_decode_page FAX decoder
@@ -41,7 +41,7 @@
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -446,10 +446,10 @@
v29_rx_state_t *v29;
v27ter_rx_state_t *v27ter;
int16_t amp[SAMPLES_PER_CHUNK];
- AFfilehandle inhandle;
+ SNDFILE *inhandle;
+ SF_INFO info;
int len;
const char *filename;
- float x;
logging_state_t *logging;
filename = "fax_samp.wav";
@@ -457,26 +457,23 @@
if (argc > 1)
filename = argv[1];
- if ((inhandle = afOpenFile(filename, "r", NULL)) == AF_NULL_FILEHANDLE)
+ memset(&info, 0, sizeof(info));
+ if ((inhandle = sf_open(filename, SFM_READ, &info)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", filename);
+ fprintf(stderr, " Cannot open audio file '%s' for reading\n", filename);
exit(2);
}
- if ((x = afGetFrameSize(inhandle, AF_DEFAULT_TRACK, 1)) != 2.0)
+ if (info.samplerate != SAMPLE_RATE)
{
- printf(" Unexpected frame size in speech file '%s' (%f)\n", filename, x);
+ printf(" Unexpected sample rate in audio file '%s'\n", filename);
exit(2);
}
- if ((x = afGetRate(inhandle, AF_DEFAULT_TRACK)) != (float) SAMPLE_RATE)
+ if (info.channels != 1)
{
- printf(" Unexpected sample rate in speech file '%s' (%f)\n", filename, x);
- exit(2);
- }
- if ((x = afGetChannels(inhandle, AF_DEFAULT_TRACK)) != 1.0)
- {
- printf(" Unexpected number of channels in speech file '%s' (%f)\n", filename, x);
+ printf(" Unexpected number of channels in audio file '%s'\n", filename);
exit(2);
}
+
memset(&t30_dummy, 0, sizeof(t30_dummy));
span_log_init(&t30_dummy.logging, SPAN_LOG_FLOW, NULL);
span_log_set_protocol(&t30_dummy.logging, "T.30");
@@ -517,7 +514,7 @@
for (;;)
{
- len = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLES_PER_CHUNK);
+ len = sf_readf_short(inhandle, amp, SAMPLES_PER_CHUNK);
if (len < SAMPLES_PER_CHUNK)
break;
fsk_rx(fsk, amp, len);
@@ -527,9 +524,9 @@
}
t4_rx_release(&t4_state);
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", filename);
+ fprintf(stderr, " Cannot close audio file '%s'\n", filename);
exit(2);
}
return 0;
Modified: freeswitch/trunk/libs/spandsp/tests/fax_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/fax_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/fax_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fax_tests.c,v 1.101 2009/02/20 12:34:20 steveu Exp $
+ * $Id: fax_tests.c,v 1.102 2009/05/30 15:23:13 steveu Exp $
*/
/*! \page fax_tests_page FAX tests
@@ -39,7 +39,7 @@
#include <unistd.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -179,8 +179,8 @@
int main(int argc, char *argv[])
{
- AFfilehandle wave_handle;
- AFfilehandle input_wave_handle;
+ SNDFILE *wave_handle;
+ SNDFILE *input_wave_handle;
int i;
int j;
int k;
@@ -282,22 +282,22 @@
}
}
- input_wave_handle = AF_NULL_FILEHANDLE;
+ input_wave_handle = NULL;
if (input_audio_file_name)
{
- if ((input_wave_handle = afOpenFile_telephony_read(input_audio_file_name, 1)) == AF_NULL_FILEHANDLE)
+ if ((input_wave_handle = sf_open_telephony_read(input_audio_file_name, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", input_audio_file_name);
+ fprintf(stderr, " Cannot open audio file '%s'\n", input_audio_file_name);
exit(2);
}
}
- wave_handle = AF_NULL_FILEHANDLE;
+ wave_handle = NULL;
if (log_audio)
{
- if ((wave_handle = afOpenFile_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == AF_NULL_FILEHANDLE)
+ if ((wave_handle = sf_open_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
@@ -427,7 +427,7 @@
if ((j & 1) == 0 && input_audio_file_name)
{
- mc->len = afReadFrames(input_wave_handle, AF_DEFAULT_TRACK, mc->amp, SAMPLES_PER_CHUNK);
+ mc->len = sf_readf_short(input_wave_handle, mc->amp, SAMPLES_PER_CHUNK);
if (mc->len == 0)
break;
}
@@ -492,7 +492,7 @@
if (log_audio)
{
- outframes = afWriteFrames(wave_handle, AF_DEFAULT_TRACK, out_amp, SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(wave_handle, out_amp, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
break;
}
@@ -508,17 +508,17 @@
}
if (log_audio)
{
- if (afCloseFile(wave_handle))
+ if (sf_close(wave_handle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
if (input_audio_file_name)
{
- if (afCloseFile(input_wave_handle))
+ if (sf_close(input_wave_handle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", input_audio_file_name);
+ fprintf(stderr, " Cannot close audio file '%s'\n", input_audio_file_name);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/fax_utils.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/fax_utils.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/fax_utils.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fax_utils.c,v 1.2 2009/04/25 14:17:47 steveu Exp $
+ * $Id: fax_utils.c,v 1.3 2009/05/16 03:34:45 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -93,7 +93,7 @@
t30_get_transfer_statistics(s, &t);
printf("%s: bit rate %d\n", tag, t.bit_rate);
printf("%s: ECM %s\n", tag, (t.error_correcting_mode) ? "on" : "off");
- printf("%s: pages tx %d, pages rx %d\n", tag, t.pages_tx, t.pages_rx);
+ printf("%s: tx pages %d, rx pages %d\n", tag, t.pages_tx, t.pages_rx);
printf("%s: pages in the file %d\n", tag, t.pages_in_file);
printf("%s: image size %d x %d\n", tag, t.width, t.length);
printf("%s: image resolution %d x %d\n", tag, t.x_resolution, t.y_resolution);
Modified: freeswitch/trunk/libs/spandsp/tests/fsk_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/fsk_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/fsk_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: fsk_tests.c,v 1.56 2009/04/14 16:04:54 steveu Exp $
+ * $Id: fsk_tests.c,v 1.57 2009/05/30 15:23:13 steveu Exp $
*/
/*! \page fsk_tests_page FSK modem tests
@@ -35,7 +35,7 @@
the basic performance of the receive modem. It is also the only test mode
provided for evaluating the transmit modem.
- - An FSK receive modem is used to decode FSK audio, stored in a wave file.
+ - An FSK receive modem is used to decode FSK audio, stored in a file.
This is good way to evaluate performance with audio recorded from other
models of modem, and with real world problematic telephone lines.
@@ -51,7 +51,7 @@
#include <unistd.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -178,8 +178,8 @@
int16_t caller_model_amp[BLOCK_LEN];
int16_t answerer_model_amp[BLOCK_LEN];
int16_t out_amp[2*BLOCK_LEN];
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int i;
int j;
@@ -255,13 +255,13 @@
if (modem_under_test_2 >= 0)
printf("Modem channel 2 is '%s'\n", preset_fsk_specs[modem_under_test_2].name);
- outhandle = AF_NULL_FILEHANDLE;
+ outhandle = NULL;
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 2)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
}
@@ -278,9 +278,9 @@
if (decode_test_file)
{
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
caller_rx = fsk_rx_init(NULL, &preset_fsk_specs[modem_under_test_1], TRUE, put_bit, NULL);
@@ -289,10 +289,7 @@
for (;;)
{
- samples = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- caller_model_amp,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle, caller_model_amp, BLOCK_LEN);
if (samples < BLOCK_LEN)
break;
for (i = 0; i < samples; i++)
@@ -300,9 +297,9 @@
fsk_rx(caller_rx, caller_model_amp, samples);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
}
@@ -429,13 +426,10 @@
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- out_amp,
- BLOCK_LEN);
+ outframes = sf_writef_short(outhandle, out_amp, BLOCK_LEN);
if (outframes != BLOCK_LEN)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -477,12 +471,7 @@
if (log_audio)
{
for (i = 0; i < 200; i++)
- {
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- out_amp,
- BLOCK_LEN);
- }
+ outframes = sf_writef_short(outhandle, out_amp, BLOCK_LEN);
}
if (modem_under_test_1 >= 0)
{
@@ -514,9 +503,9 @@
}
if (log_audio)
{
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/g1050_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/g1050_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/g1050_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g1050_tests.c,v 1.17 2008/11/30 10:17:31 steveu Exp $
+ * $Id: g1050_tests.c,v 1.18 2009/05/30 15:23:13 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -39,7 +39,7 @@
#include <unistd.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_MATH_H)
#define GEN_CONST
#endif
Modified: freeswitch/trunk/libs/spandsp/tests/g168_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/g168_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/g168_tests.c Thu Jun 18 01:13:59 2009
@@ -24,7 +24,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g168_tests.c,v 1.19 2008/11/30 10:17:31 steveu Exp $
+ * $Id: g168_tests.c,v 1.20 2009/05/30 15:23:13 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -34,7 +34,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -42,6 +42,7 @@
#include "spandsp.h"
#include "spandsp/g168models.h"
+#include "spandsp-sim.h"
#define FALSE 0
#define TRUE (!FALSE)
@@ -52,76 +53,18 @@
int max;
int cur;
float gain;
- AFfilehandle handle;
+ SNDFILE *handle;
int16_t signal[SAMPLE_RATE];
} signal_source_t;
signal_source_t local_css;
signal_source_t far_css;
-static AFfilehandle afOpenFile_telephony_read(const char *name, int channels)
-{
- float x;
- AFfilehandle handle;
-
- if ((handle = afOpenFile(name, "r", 0)) == AF_NULL_FILEHANDLE)
- {
- fprintf(stderr, " Cannot open wave file '%s'\n", name);
- exit(2);
- }
- if ((x = afGetFrameSize(handle, AF_DEFAULT_TRACK, 1)) != 2.0)
- {
- fprintf(stderr, " Unexpected frame size in wave file '%s'\n", name);
- exit(2);
- }
- if ((x = afGetRate(handle, AF_DEFAULT_TRACK)) != (float) SAMPLE_RATE)
- {
- printf(" Unexpected sample rate in wave file '%s'\n", name);
- exit(2);
- }
- if ((x = afGetChannels(handle, AF_DEFAULT_TRACK)) != (float) channels)
- {
- printf(" Unexpected number of channels in wave file '%s'\n", name);
- exit(2);
- }
-
- return handle;
-}
-/*- End of function --------------------------------------------------------*/
-
-#if 0
-static AFfilehandle afOpenFile_telephony_write(const char *name, int channels)
-{
- AFfilesetup setup;
- AFfilehandle handle;
-
- if ((setup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " %s: Failed to create file setup\n", name);
- exit(2);
- }
- afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(setup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(setup, AF_FILE_WAVE);
- afInitChannels(setup, AF_DEFAULT_TRACK, channels);
-
- if ((handle = afOpenFile(name, "w", setup)) == AF_NULL_FILEHANDLE)
- {
- fprintf(stderr, " Failed to open result file\n");
- exit(2);
- }
- afFreeFileSetup(setup);
-
- return handle;
-}
-/*- End of function --------------------------------------------------------*/
-#endif
-
static void signal_load(signal_source_t *sig, const char *name)
{
- sig->handle = afOpenFile_telephony_read(name, 1);
+ sig->handle = sf_open_telephony_read(name, 1);
sig->name = name;
- sig->max = afReadFrames(sig->handle, AF_DEFAULT_TRACK, sig->signal, SAMPLE_RATE);
+ sig->max = sf_readf_short(sig->handle, sig->signal, SAMPLE_RATE);
if (sig->max < 0)
{
fprintf(stderr, " Error reading sound file '%s'\n", sig->name);
@@ -132,7 +75,7 @@
static void signal_free(signal_source_t *sig)
{
- if (afCloseFile(sig->handle) != 0)
+ if (sf_close(sig->handle) != 0)
{
fprintf(stderr, " Cannot close sound file '%s'\n", sig->name);
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/g711_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/g711_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/g711_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g711_tests.c,v 1.16 2009/04/22 12:57:40 steveu Exp $
+ * $Id: g711_tests.c,v 1.17 2009/05/30 15:23:13 steveu Exp $
*/
/*! \page g711_tests_page A-law and u-law conversion tests
@@ -40,7 +40,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -64,7 +64,7 @@
static void compliance_tests(int log_audio)
{
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
power_meter_t power_meter;
int outframes;
int i;
@@ -82,12 +82,12 @@
g711_state_t *transcode;
g711_state_t *dec_state;
- outhandle = AF_NULL_FILEHANDLE;
+ outhandle = NULL;
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
@@ -127,13 +127,10 @@
}
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- 65536);
+ outframes = sf_writef_short(outhandle, amp, 65536);
if (outframes != 65536)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -165,13 +162,10 @@
}
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- 65536);
+ outframes = sf_writef_short(outhandle, amp, 65536);
if (outframes != 65536)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -224,13 +218,10 @@
printf("Reference u-law 1kHz tone is %fdBm0\n", power_meter_current_dbm0(&power_meter));
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- 8000);
+ outframes = sf_writef_short(outhandle, amp, 8000);
if (outframes != 8000)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -248,13 +239,10 @@
printf("Reference A-law 1kHz tone is %fdBm0\n", power_meter_current_dbm0(&power_meter));
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- 8000);
+ outframes = sf_writef_short(outhandle, amp, 8000);
if (outframes != 8000)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -338,9 +326,9 @@
if (log_audio)
{
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
@@ -351,8 +339,8 @@
int main(int argc, char *argv[])
{
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int opt;
int samples;
@@ -427,16 +415,16 @@
{
out_file = (decode) ? OUT_FILE_NAME : ENCODED_FILE_NAME;
}
- inhandle = AF_NULL_FILEHANDLE;
- outhandle = AF_NULL_FILEHANDLE;
+ inhandle = NULL;
+ outhandle = NULL;
file = -1;
enc_state = NULL;
dec_state = NULL;
if (encode)
{
- if ((inhandle = afOpenFile_telephony_read(in_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(in_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", in_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", in_file);
exit(2);
}
enc_state = g711_init(NULL, law);
@@ -451,9 +439,9 @@
}
if (decode)
{
- if ((outhandle = afOpenFile_telephony_write(out_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(out_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", out_file);
+ fprintf(stderr, " Cannot create audio file '%s'\n", out_file);
exit(2);
}
dec_state = g711_init(NULL, law);
@@ -470,10 +458,7 @@
{
if (encode)
{
- samples = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- indata,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle, indata, BLOCK_LEN);
if (samples <= 0)
break;
len2 = g711_encode(enc_state, g711data, indata, samples);
@@ -487,13 +472,10 @@
if (decode)
{
len3 = g711_decode(dec_state, outdata, g711data, len2);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- outdata,
- len3);
+ outframes = sf_writef_short(outhandle, outdata, len3);
if (outframes != len3)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -506,9 +488,9 @@
}
if (encode)
{
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", IN_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
}
@@ -518,9 +500,9 @@
}
if (decode)
{
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/g722_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/g722_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/g722_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g722_tests.c,v 1.30 2009/04/22 12:57:40 steveu Exp $
+ * $Id: g722_tests.c,v 1.32 2009/06/02 14:55:36 steveu Exp $
*/
/*! \file */
@@ -69,7 +69,7 @@
#include <unistd.h>
#include <memory.h>
#include <ctype.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include "spandsp.h"
@@ -357,9 +357,9 @@
int len3;
int i;
int file;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
+ SF_INFO info;
int outframes;
int samples;
int opt;
@@ -370,7 +370,6 @@
int encode;
int decode;
int tone_test;
- float x;
const char *in_file;
const char *out_file;
int16_t indata[BLOCK_LEN];
@@ -477,54 +476,44 @@
{
out_file = (decode) ? OUT_FILE_NAME : ENCODED_FILE_NAME;
}
- inhandle = AF_NULL_FILEHANDLE;
- outhandle = AF_NULL_FILEHANDLE;
+ inhandle = NULL;
+ outhandle = NULL;
file = -1;
if (encode)
{
if (eight_k_in)
{
- if ((inhandle = afOpenFile(in_file, "r", NULL)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open(in_file, SFM_READ, &info)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", in_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", in_file);
exit(2);
}
- if ((x = afGetFrameSize(inhandle, AF_DEFAULT_TRACK, 1)) != 2.0)
+ if (info.samplerate != SAMPLE_RATE)
{
- fprintf(stderr, " Unexpected frame size in wave file '%s'\n", in_file);
+ fprintf(stderr, " Unexpected sample rate %d in audio file '%s'\n", info.samplerate, in_file);
exit(2);
}
- if ((x = afGetRate(inhandle, AF_DEFAULT_TRACK)) != (float) SAMPLE_RATE)
+ if (info.channels != 1)
{
- fprintf(stderr, " Unexpected sample rate %f in wave file '%s'\n", x, in_file);
- exit(2);
- }
- if ((x = afGetChannels(inhandle, AF_DEFAULT_TRACK)) != 1.0)
- {
- fprintf(stderr, " Unexpected number of channels in wave file '%s'\n", in_file);
+ fprintf(stderr, " Unexpected number of channels in audio file '%s'\n", in_file);
exit(2);
}
}
else
{
- if ((inhandle = afOpenFile(in_file, "r", NULL)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open(in_file, SFM_READ, &info)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", in_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", in_file);
exit(2);
}
- if ((x = afGetFrameSize(inhandle, AF_DEFAULT_TRACK, 1)) != 2.0)
- {
- fprintf(stderr, " Unexpected frame size in wave file '%s'\n", in_file);
- exit(2);
- }
- if ((x = afGetRate(inhandle, AF_DEFAULT_TRACK)) != (float) G722_SAMPLE_RATE)
+ if (info.samplerate != G722_SAMPLE_RATE)
{
- fprintf(stderr, " Unexpected sample rate %f in wave file '%s'\n", x, in_file);
+ fprintf(stderr, " Unexpected sample rate %d in audio file '%s'\n", info.samplerate, in_file);
exit(2);
}
- if ((x = afGetChannels(inhandle, AF_DEFAULT_TRACK)) != 1.0)
+ if (info.channels != 1)
{
- fprintf(stderr, " Unexpected number of channels in wave file '%s'\n", in_file);
+ fprintf(stderr, " Unexpected number of channels in audio file '%s'\n", in_file);
exit(2);
}
}
@@ -543,24 +532,18 @@
}
if (decode)
{
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- if (eight_k_out)
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- else
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) G722_SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
- if ((outhandle = afOpenFile(out_file, "w", filesetup)) == AF_NULL_FILEHANDLE)
+ memset(&info, 0, sizeof(info));
+ info.frames = 0;
+ info.samplerate = (eight_k_out) ? SAMPLE_RATE : G722_SAMPLE_RATE;
+ info.channels = 1;
+ info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
+ info.sections = 1;
+ info.seekable = 1;
+ if ((outhandle = sf_open(out_file, SFM_WRITE, &info)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", out_file);
+ fprintf(stderr, " Cannot create audio file '%s'\n", out_file);
exit(2);
}
- afFreeFileSetup(filesetup);
if (eight_k_out)
g722_decode_init(&dec_state, bit_rate, G722_PACKED | G722_SAMPLE_RATE_8000);
else
@@ -578,10 +561,7 @@
{
if (encode)
{
- samples = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- indata,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle, indata, BLOCK_LEN);
if (samples <= 0)
break;
if (tone_test)
@@ -600,13 +580,10 @@
if (decode)
{
len3 = g722_decode(&dec_state, outdata, adpcmdata, len2);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- outdata,
- len3);
+ outframes = sf_writef_short(outhandle, outdata, len3);
if (outframes != len3)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -619,9 +596,9 @@
}
if (encode)
{
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", IN_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
}
@@ -631,9 +608,9 @@
}
if (decode)
{
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/g726_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/g726_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/g726_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: g726_tests.c,v 1.32 2009/04/22 12:57:40 steveu Exp $
+ * $Id: g726_tests.c,v 1.33 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -73,7 +73,7 @@
#include <unistd.h>
#include <memory.h>
#include <ctype.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -1224,8 +1224,8 @@
int opt;
int itutests;
int bit_rate;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int16_t amp[1024];
int frames;
int outframes;
@@ -1266,14 +1266,14 @@
}
else
{
- if ((inhandle = afOpenFile_telephony_read(IN_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(IN_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", IN_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -1281,20 +1281,20 @@
g726_init(&enc_state, bit_rate, G726_ENCODING_LINEAR, packing);
g726_init(&dec_state, bit_rate, G726_ENCODING_LINEAR, packing);
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, 159)))
+ while ((frames = sf_readf_short(inhandle, amp, 159)))
{
adpcm = g726_encode(&enc_state, adpcmdata, amp, frames);
frames = g726_decode(&dec_state, amp, adpcmdata, adpcm);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, amp, frames);
+ outframes = sf_writef_short(outhandle, amp, frames);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- printf(" Cannot close wave file '%s'\n", IN_FILE_NAME);
+ printf(" Cannot close audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- printf(" Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ printf(" Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
printf("'%s' transcoded to '%s' at %dbps.\n", IN_FILE_NAME, OUT_FILE_NAME, bit_rate);
Modified: freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/gsm0610_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: gsm0610_tests.c,v 1.24 2009/04/22 12:57:40 steveu Exp $
+ * $Id: gsm0610_tests.c,v 1.25 2009/05/30 15:23:13 steveu Exp $
*/
/*! \file */
@@ -123,7 +123,7 @@
#include <unistd.h>
#include <string.h>
#include <ctype.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -542,8 +542,8 @@
int main(int argc, char *argv[])
{
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int frames;
int outframes;
int bytes;
@@ -580,14 +580,14 @@
}
else
{
- if ((inhandle = afOpenFile_telephony_read(IN_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(IN_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", IN_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -603,21 +603,21 @@
exit(2);
}
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, pre_amp, 2*BLOCK_LEN)))
+ while ((frames = sf_readf_short(inhandle, pre_amp, 2*BLOCK_LEN)))
{
bytes = gsm0610_encode(gsm0610_enc_state, gsm0610_data, pre_amp, frames);
gsm0610_decode(gsm0610_dec_state, post_amp, gsm0610_data, bytes);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, post_amp, frames);
+ outframes = sf_writef_short(outhandle, post_amp, frames);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", IN_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
gsm0610_release(gsm0610_enc_state);
Modified: freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/ima_adpcm_tests.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: ima_adpcm_tests.c,v 1.35 2008/11/30 10:17:31 steveu Exp $
+ * $Id: ima_adpcm_tests.c,v 1.36 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -49,7 +49,7 @@
#include <unistd.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -66,8 +66,8 @@
int main(int argc, char *argv[])
{
int i;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int frames;
int dec_frames;
int outframes;
@@ -126,15 +126,15 @@
}
}
- if ((inhandle = afOpenFile_telephony_read(in_file_name, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(in_file_name, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", in_file_name);
+ fprintf(stderr, " Cannot open audio file '%s'\n", in_file_name);
exit(2);
}
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -158,7 +158,7 @@
total_pre_samples = 0;
total_compressed_bytes = 0;
total_post_samples = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, pre_amp, chunk_size)))
+ while ((frames = sf_readf_short(inhandle, pre_amp, chunk_size)))
{
total_pre_samples += frames;
ima_bytes = ima_adpcm_encode(ima_enc_state, ima_data, pre_amp, frames);
@@ -182,16 +182,16 @@
hist_out = 0;
diff_energy += (double) xx * (double) xx;
}
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, post_amp, dec_frames);
+ outframes = sf_writef_short(outhandle, post_amp, dec_frames);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", in_file_name);
+ fprintf(stderr, " Cannot close audio file '%s'\n", in_file_name);
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
ima_adpcm_release(ima_enc_state);
Modified: freeswitch/trunk/libs/spandsp/tests/line_model_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/line_model_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/line_model_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: line_model_tests.c,v 1.26 2009/01/12 17:20:59 steveu Exp $
+ * $Id: line_model_tests.c,v 1.27 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page line_model_tests_page Telephony line model tests
@@ -43,7 +43,7 @@
#include <unistd.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -73,25 +73,14 @@
complexf_t cc;
int16_t amp;
int i;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *outhandle;
int outframes;
int16_t out[40000];
awgn_state_t noise1;
-
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 2);
- if ((outhandle = afOpenFile(OUT_FILE_COMPLEXIFY, "w", filesetup)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_COMPLEXIFY, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_COMPLEXIFY);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_COMPLEXIFY);
exit(2);
}
awgn_init_dbm0(&noise1, 1234567, -10.0f);
@@ -103,21 +92,17 @@
out[2*i] = cc.re;
out[2*i + 1] = cc.im;
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- out,
- 20000);
+ outframes = sf_writef_short(outhandle, out, 20000);
if (outframes != 20000)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_COMPLEXIFY);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_COMPLEXIFY);
exit(2);
}
- afFreeFileSetup(filesetup);
}
/*- End of function --------------------------------------------------------*/
@@ -127,9 +112,8 @@
int16_t input1[BLOCK_LEN];
int16_t output1[BLOCK_LEN];
int16_t amp[2*BLOCK_LEN];
- AFfilehandle inhandle1;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *inhandle1;
+ SNDFILE *outhandle;
int outframes;
int samples;
int i;
@@ -144,34 +128,21 @@
awgn_init_dbm0(&noise1, 1234567, -10.0f);
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
-
- if ((inhandle1 = afOpenFile(IN_FILE_NAME1, "r", NULL)) == AF_NULL_FILEHANDLE)
+ if ((inhandle1 = sf_open_telephony_read(IN_FILE_NAME1, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", IN_FILE_NAME1);
+ fprintf(stderr, " Cannot open audio file '%s'\n", IN_FILE_NAME1);
exit(2);
}
- if ((outhandle = afOpenFile(OUT_FILE_NAME1, "w", filesetup)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME1, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME1);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME1);
exit(2);
}
for (i = 0; i < 10000; i++)
{
if (speech_test)
{
- samples = afReadFrames(inhandle1,
- AF_DEFAULT_TRACK,
- input1,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle1, input1, BLOCK_LEN);
if (samples == 0)
break;
}
@@ -189,27 +160,23 @@
1);
amp[j] = output1[j];
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
- if (afCloseFile(inhandle1))
+ if (sf_close(inhandle1))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", IN_FILE_NAME1);
+ fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME1);
exit(2);
}
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME1);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME1);
exit(2);
}
- afFreeFileSetup(filesetup);
one_way_line_model_release(model);
}
/*- End of function --------------------------------------------------------*/
@@ -222,10 +189,9 @@
int16_t output1[BLOCK_LEN];
int16_t output2[BLOCK_LEN];
int16_t amp[2*BLOCK_LEN];
- AFfilehandle inhandle1;
- AFfilehandle inhandle2;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *inhandle1;
+ SNDFILE *inhandle2;
+ SNDFILE *outhandle;
int outframes;
int samples;
int i;
@@ -242,49 +208,29 @@
awgn_init_dbm0(&noise1, 1234567, -10.0f);
awgn_init_dbm0(&noise2, 1234567, -10.0f);
- filesetup = afNewFileSetup();
- if (filesetup == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 2);
-
- inhandle1 = afOpenFile(IN_FILE_NAME1, "r", NULL);
- if (inhandle1 == AF_NULL_FILEHANDLE)
+ if ((inhandle1 = sf_open_telephony_read(IN_FILE_NAME1, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", IN_FILE_NAME1);
+ fprintf(stderr, " Cannot open audio file '%s'\n", IN_FILE_NAME1);
exit(2);
}
- inhandle2 = afOpenFile(IN_FILE_NAME2, "r", NULL);
- if (inhandle2 == AF_NULL_FILEHANDLE)
+ if ((inhandle2 = sf_open_telephony_read(IN_FILE_NAME2, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", IN_FILE_NAME2);
+ fprintf(stderr, " Cannot open audio file '%s'\n", IN_FILE_NAME2);
exit(2);
}
- outhandle = afOpenFile(OUT_FILE_NAME, "w", filesetup);
- if (outhandle == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
for (i = 0; i < 10000; i++)
{
if (speech_test)
{
- samples = afReadFrames(inhandle1,
- AF_DEFAULT_TRACK,
- input1,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle1, input1, BLOCK_LEN);
if (samples == 0)
break;
- samples = afReadFrames(inhandle2,
- AF_DEFAULT_TRACK,
- input2,
- samples);
+ samples = sf_readf_short(inhandle2, input2, samples);
if (samples == 0)
break;
}
@@ -308,32 +254,28 @@
amp[2*j] = output1[j];
amp[2*j + 1] = output2[j];
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
- if (afCloseFile(inhandle1))
+ if (sf_close(inhandle1))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", IN_FILE_NAME1);
+ fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME1);
exit(2);
}
- if (afCloseFile(inhandle2))
+ if (sf_close(inhandle2))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", IN_FILE_NAME2);
+ fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME2);
exit(2);
}
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
- afFreeFileSetup(filesetup);
both_ways_line_model_release(model);
}
/*- End of function --------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/lpc10_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: lpc10_tests.c,v 1.23 2009/01/12 17:20:59 steveu Exp $
+ * $Id: lpc10_tests.c,v 1.24 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -46,7 +46,7 @@
#include <string.h>
#include <assert.h>
#include <ctype.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -67,9 +67,9 @@
int main(int argc, char *argv[])
{
- AFfilehandle inhandle;
- AFfilehandle refhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *refhandle;
+ SNDFILE *outhandle;
int frames;
int outframes;
double pre_energy;
@@ -125,20 +125,20 @@
compress_file = -1;
decompress_file = -1;
- inhandle = AF_NULL_FILEHANDLE;
- refhandle = AF_NULL_FILEHANDLE;
- outhandle = AF_NULL_FILEHANDLE;
+ inhandle = NULL;
+ refhandle = NULL;
+ outhandle = NULL;
if (!decompress)
{
- if ((inhandle = afOpenFile_telephony_read(in_file_name, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(in_file_name, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", in_file_name);
+ fprintf(stderr, " Cannot open audio file '%s'\n", in_file_name);
exit(2);
}
- if ((refhandle = afOpenFile_telephony_read(REF_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((refhandle = sf_open_telephony_read(REF_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", REF_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", REF_FILE_NAME);
exit(2);
}
}
@@ -151,9 +151,9 @@
}
}
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -188,15 +188,15 @@
while ((len = read(decompress_file, lpc10_data, BLOCKS_PER_READ*7)) > 0)
{
lpc10_decode(lpc10_dec_state, post_amp, lpc10_data, len/7);
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, post_amp, BLOCK_LEN*len/7);
+ outframes = sf_writef_short(outhandle, post_amp, BLOCK_LEN*len/7);
}
}
else
{
block_no = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, pre_amp, BLOCKS_PER_READ*BLOCK_LEN)) == BLOCKS_PER_READ*BLOCK_LEN
+ while ((frames = sf_readf_short(inhandle, pre_amp, BLOCKS_PER_READ*BLOCK_LEN)) == BLOCKS_PER_READ*BLOCK_LEN
&&
- (frames = afReadFrames(refhandle, AF_DEFAULT_TRACK, ref_amp, BLOCKS_PER_READ*BLOCK_LEN)) == BLOCKS_PER_READ*BLOCK_LEN)
+ (frames = sf_readf_short(refhandle, ref_amp, BLOCKS_PER_READ*BLOCK_LEN)) == BLOCKS_PER_READ*BLOCK_LEN)
{
enc_len = lpc10_encode(lpc10_enc_state, lpc10_data, pre_amp, BLOCKS_PER_READ*BLOCK_LEN);
if (compress)
@@ -218,25 +218,25 @@
}
block_no++;
if (log_error)
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, log_amp, dec_len);
+ outframes = sf_writef_short(outhandle, log_amp, dec_len);
else
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, post_amp, dec_len);
+ outframes = sf_writef_short(outhandle, post_amp, dec_len);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", in_file_name);
+ fprintf(stderr, " Cannot close audio file '%s'\n", in_file_name);
exit(2);
}
- if (afCloseFile(refhandle) != 0)
+ if (sf_close(refhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", REF_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", REF_FILE_NAME);
exit(2);
}
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
if (compress)
Modified: freeswitch/trunk/libs/spandsp/tests/make_g168_css.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/make_g168_css.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/make_g168_css.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: make_g168_css.c,v 1.17 2009/02/10 17:49:20 steveu Exp $
+ * $Id: make_g168_css.c,v 1.18 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page makecss_page CSS construction for G.168 testing
@@ -43,7 +43,7 @@
#include <time.h>
#include <stdio.h>
#include <fcntl.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_FFTW3_H)
#include <fftw3.h>
#else
@@ -139,20 +139,18 @@
double pk;
double ms;
double scale;
- AFfilehandle filehandle;
- AFfilesetup filesetup;
+ SNDFILE *filehandle;
+ SF_INFO info;
awgn_state_t noise_source;
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, FAST_SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
- if ((filehandle = afOpenFile("sound_c1.wav", "w", filesetup)) == AF_NULL_FILEHANDLE)
+ memset(&info, 0, sizeof(info));
+ info.frames = 0;
+ info.samplerate = FAST_SAMPLE_RATE;
+ info.channels = 1;
+ info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
+ info.sections = 1;
+ info.seekable = 1;
+ if ((filehandle = sf_open("sound_c1.wav", SFM_WRITE, &info)) == NULL)
{
fprintf(stderr, " Failed to open result file\n");
exit(2);
@@ -243,26 +241,12 @@
silence_sound[i] = 0.0;
for (i = 0; i < 16; i++)
- {
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- voiced_sound,
- voiced_length);
- }
+ outframes = sf_writef_short(filehandle, voiced_sound, voiced_length);
printf("%d samples of voice\n", 16*voiced_length);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- 8192);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- C1_NOISE_SAMPLES - 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, C1_NOISE_SAMPLES - 8192);
printf("%d samples of noise\n", C1_NOISE_SAMPLES);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- silence_sound,
- C1_SILENCE_SAMPLES);
+ outframes = sf_writef_short(filehandle, silence_sound, C1_SILENCE_SAMPLES);
printf("%d samples of silence\n", C1_SILENCE_SAMPLES);
/* Now phase invert the C1 set of voice samples. */
@@ -277,40 +261,28 @@
noise_sound[i] = -noise_sound[i];
for (i = 0; i < 16; i++)
- {
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- voiced_sound,
- voiced_length);
- }
+ outframes = sf_writef_short(filehandle, voiced_sound, voiced_length);
printf("%d samples of voice\n", 16*voiced_length);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- 8192);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- C1_NOISE_SAMPLES - 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, C1_NOISE_SAMPLES - 8192);
printf("%d samples of noise\n", C1_NOISE_SAMPLES);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- silence_sound,
- C1_SILENCE_SAMPLES);
+ outframes = sf_writef_short(filehandle, silence_sound, C1_SILENCE_SAMPLES);
printf("%d samples of silence\n", C1_SILENCE_SAMPLES);
- if (afCloseFile(filehandle) != 0)
+ if (sf_close(filehandle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", "sound_c1.wav");
exit(2);
}
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, FAST_SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
- filehandle = afOpenFile("sound_c3.wav", "w", filesetup);
- if (filehandle == AF_NULL_FILEHANDLE)
+ memset(&info, 0, sizeof(info));
+ info.frames = 0;
+ info.samplerate = FAST_SAMPLE_RATE;
+ info.channels = 1;
+ info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
+ info.sections = 1;
+ info.seekable = 1;
+ if ((filehandle = sf_open("sound_c3.wav", SFM_WRITE, &info)) == NULL)
{
fprintf(stderr, " Failed to open result file\n");
exit(2);
@@ -333,27 +305,13 @@
printf("Noise level = %.2fdB, crest factor = %.2fdB\n", rms_to_dbm0(ms), rms_to_db(pk/ms));
for (i = 0; i < 14; i++)
- {
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- voiced_sound,
- voiced_length);
- }
+ outframes = sf_writef_short(filehandle, voiced_sound, voiced_length);
printf("%d samples of voice\n", 14*voiced_length);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- 8192);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- C3_NOISE_SAMPLES - 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, C3_NOISE_SAMPLES - 8192);
printf("%d samples of noise\n", C3_NOISE_SAMPLES);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- silence_sound,
- C3_SILENCE_SAMPLES);
+ outframes = sf_writef_short(filehandle, silence_sound, C3_SILENCE_SAMPLES);
printf("%d samples of silence\n", C3_SILENCE_SAMPLES);
/* Now phase invert the set of voice samples. */
@@ -369,34 +327,19 @@
noise_sound[i] = -noise_sound[i];
for (i = 0; i < 14; i++)
- {
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- voiced_sound,
- voiced_length);
- }
+ outframes = sf_writef_short(filehandle, voiced_sound, voiced_length);
printf("%d samples of voice\n", 14*i);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- 8192);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- noise_sound,
- C3_NOISE_SAMPLES - 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, 8192);
+ outframes = sf_writef_short(filehandle, noise_sound, C3_NOISE_SAMPLES - 8192);
printf("%d samples of noise\n", C3_NOISE_SAMPLES);
- outframes = afWriteFrames(filehandle,
- AF_DEFAULT_TRACK,
- silence_sound,
- C3_SILENCE_SAMPLES);
+ outframes = sf_writef_short(filehandle, silence_sound, C3_SILENCE_SAMPLES);
printf("%d samples of silence\n", C3_SILENCE_SAMPLES);
- if (afCloseFile(filehandle) != 0)
+ if (sf_close(filehandle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", "sound_c3.wav");
exit(2);
}
- afFreeFileSetup(filesetup);
fftw_destroy_plan(p);
return 0;
Modified: freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/modem_connect_tones_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: modem_connect_tones_tests.c,v 1.29 2008/11/30 10:17:31 steveu Exp $
+ * $Id: modem_connect_tones_tests.c,v 1.30 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page modem_connect_tones_tests_page Modem connect tones tests
@@ -42,7 +42,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -186,8 +186,8 @@
modem_connect_tones_rx_state_t ans_pr_rx;
modem_connect_tones_tx_state_t modem_tone_tx;
awgn_state_t chan_noise_source;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int frames;
int samples;
@@ -264,9 +264,9 @@
if (decode_test_file == NULL && test_list == 0)
test_list = 0xFFFFFFFF;
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -277,13 +277,10 @@
for (i = 0; i < 20*SAMPLE_RATE; i += SAMPLES_PER_CHUNK)
{
samples = modem_connect_tones_tx(&modem_tone_tx, amp, SAMPLES_PER_CHUNK);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
/*endif*/
@@ -299,13 +296,10 @@
for (i = 0; i < 20*SAMPLE_RATE; i += SAMPLES_PER_CHUNK)
{
samples = modem_connect_tones_tx(&modem_tone_tx, amp, SAMPLES_PER_CHUNK);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
/*endif*/
@@ -322,13 +316,10 @@
for (i = 0; i < 20*SAMPLE_RATE; i += SAMPLES_PER_CHUNK)
{
samples = modem_connect_tones_tx(&modem_tone_tx, amp, SAMPLES_PER_CHUNK);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
/*endif*/
@@ -345,13 +336,10 @@
for (i = 0; i < 20*SAMPLE_RATE; i += SAMPLES_PER_CHUNK)
{
samples = modem_connect_tones_tx(&modem_tone_tx, amp, SAMPLES_PER_CHUNK);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
/*endif*/
@@ -368,13 +356,10 @@
for (i = 0; i < 20*SAMPLE_RATE; i += SAMPLES_PER_CHUNK)
{
samples = modem_connect_tones_tx(&modem_tone_tx, amp, SAMPLES_PER_CHUNK);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- samples);
+ outframes = sf_writef_short(outhandle, amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
/*endif*/
@@ -383,9 +368,9 @@
}
/*endif*/
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- printf(" Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ printf(" Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
/*endif*/
@@ -926,7 +911,7 @@
hits = 0;
for (j = 0; bellcore_files[j][0]; j++)
{
- if ((inhandle = afOpenFile_telephony_read(bellcore_files[j], 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(bellcore_files[j], 1)) == NULL)
{
fprintf(stderr, " Cannot open speech file '%s'\n", bellcore_files[j]);
exit (2);
@@ -935,7 +920,7 @@
when = 0;
hits = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, 8000)))
+ while ((frames = sf_readf_short(inhandle, amp, 8000)))
{
when++;
modem_connect_tones_rx(&cng_rx, amp, frames);
@@ -967,7 +952,7 @@
/*endif*/
}
/*endwhile*/
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", bellcore_files[j]);
exit(2);
@@ -993,7 +978,7 @@
modem_connect_tones_rx_init(&ced_rx, MODEM_CONNECT_TONES_FAX_CED_OR_PREAMBLE, ced_detected, NULL);
modem_connect_tones_rx_init(&ans_pr_rx, MODEM_CONNECT_TONES_ANS_PR, ec_dis_detected, NULL);
hits = 0;
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
fprintf(stderr, " Cannot open speech file '%s'\n", decode_test_file);
exit (2);
@@ -1002,7 +987,7 @@
when = 0;
hits = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, 8000)))
+ while ((frames = sf_readf_short(inhandle, amp, 8000)))
{
when++;
modem_connect_tones_rx(&cng_rx, amp, frames);
@@ -1010,7 +995,7 @@
modem_connect_tones_rx(&ans_pr_rx, amp, frames);
}
/*endwhile*/
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", decode_test_file);
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/modem_echo_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: modem_echo_tests.c,v 1.31 2008/11/30 10:17:31 steveu Exp $
+ * $Id: modem_echo_tests.c,v 1.32 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page modem_echo_can_tests_page Line echo cancellation for modems tests
@@ -37,9 +37,9 @@
models in g168tests.c.
\section modem_echo_can_tests_page_sec_2 How does it work?
-The current test consists of feeding a wave file of real speech to the echo
+The current test consists of feeding an audio file of real speech to the echo
cancellor as the transmit signal. A very simple model of a telephone line is
-used to simulate a simple echo from the transmit signal. A second wave file of
+used to simulate a simple echo from the transmit signal. A second audio file of
real speech is also used to simulate a signal received form the far end of the
line. This is gated so it is only placed for one second every 10 seconds,
simulating the double talk condition. The resulting echo cancelled signal can
@@ -62,7 +62,7 @@
Build the tests with the command "./build". Currently there is no proper make
setup, or way to build individual tests. "./build" will built all the tests
which currently exist for the DSP functions. The echo cancellation test assumes
-there are two wave files containing mono, 16 bit signed PCM speech data, sampled
+there are two audio files containing mono, 16 bit signed PCM speech data, sampled
at 8kHz. These should be called local_sound.wav and far_sound.wav. A third wave
file will be produced. This very crudely starts with the first 256 bytes from
the local_sound.wav file, followed by the results of the echo cancellation. The
@@ -87,7 +87,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_MATH_H)
#define GEN_CONST
#endif
@@ -113,7 +113,7 @@
const char *name;
int max;
int cur;
- AFfilehandle handle;
+ SNDFILE *handle;
int16_t signal[8000];
} signal_source_t;
@@ -121,7 +121,7 @@
fir32_state_t line_model;
-AFfilehandle resulthandle;
+SNDFILE *resulthandle;
int16_t residue_sound[8000];
int residue_cur = 0;
int do_codec_munge = TRUE;
@@ -138,10 +138,7 @@
if (residue_cur >= 8000)
{
residue_cur >>= 1;
- outframes = afWriteFrames(resulthandle,
- AF_DEFAULT_TRACK,
- residue_sound,
- residue_cur);
+ outframes = sf_writef_short(resulthandle, residue_sound, residue_cur);
if (outframes != residue_cur)
{
fprintf(stderr, " Error writing residue sound\n");
@@ -155,12 +152,12 @@
static void signal_load(signal_source_t *sig, const char *name)
{
sig->name = name;
- if ((sig->handle = afOpenFile_telephony_read(sig->name, 1)) == AF_NULL_FILEHANDLE)
+ if ((sig->handle = sf_open_telephony_read(sig->name, 1)) == NULL)
{
fprintf(stderr, " Cannot open sound file '%s'\n", sig->name);
exit(2);
}
- sig->max = afReadFrames(sig->handle, AF_DEFAULT_TRACK, sig->signal, 8000);
+ sig->max = sf_readf_short(sig->handle, sig->signal, 8000);
if (sig->max < 0)
{
fprintf(stderr, " Error reading sound file '%s'\n", sig->name);
@@ -171,7 +168,7 @@
static void signal_free(signal_source_t *sig)
{
- if (afCloseFile(sig->handle) != 0)
+ if (sf_close(sig->handle) != 0)
{
fprintf(stderr, " Cannot close sound file '%s'\n", sig->name);
exit(2);
@@ -296,7 +293,7 @@
signal_load(&local_css, "sound_c1_8k.wav");
- if ((resulthandle = afOpenFile_telephony_write("modem_echo.wav", 2)) == AF_NULL_FILEHANDLE)
+ if ((resulthandle = sf_open_telephony_write("modem_echo.wav", 2)) == NULL)
{
fprintf(stderr, " Failed to open result file\n");
exit(2);
@@ -391,7 +388,7 @@
modem_echo_can_free(ctx);
signal_free(&local_css);
- if (afCloseFile(resulthandle) != 0)
+ if (sf_close(resulthandle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", "result_sound.wav");
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/noise_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/noise_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/noise_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: noise_tests.c,v 1.17 2008/11/30 10:17:31 steveu Exp $
+ * $Id: noise_tests.c,v 1.18 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page noise_tests_page Noise generator tests
@@ -36,7 +36,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -72,11 +72,11 @@
int bins[65536];
int16_t amp[1024];
noise_state_t noise_source;
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -164,13 +164,10 @@
{
for (i = 0; i < 1024; i++)
amp[i] = noise(&noise_source);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- 1024);
+ outframes = sf_writef_short(outhandle, amp, 1024);
if (outframes != 1024)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -220,20 +217,17 @@
{
for (i = 0; i < 1024; i++)
amp[i] = noise(&noise_source);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- 1024);
+ outframes = sf_writef_short(outhandle, amp, 1024);
if (outframes != 1024)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
Modified: freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/oki_adpcm_tests.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: oki_adpcm_tests.c,v 1.36 2008/11/30 10:17:31 steveu Exp $
+ * $Id: oki_adpcm_tests.c,v 1.37 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -50,7 +50,7 @@
#include <unistd.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -67,8 +67,8 @@
int main(int argc, char *argv[])
{
int i;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int frames;
int dec_frames;
int outframes;
@@ -116,14 +116,14 @@
}
}
- if ((inhandle = afOpenFile_telephony_read(in_file_name, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(in_file_name, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", in_file_name);
+ fprintf(stderr, " Cannot open audio file '%s'\n", in_file_name);
exit(2);
}
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -151,7 +151,7 @@
total_pre_samples = 0;
total_compressed_bytes = 0;
total_post_samples = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, pre_amp, 159)))
+ while ((frames = sf_readf_short(inhandle, pre_amp, 159)))
{
total_pre_samples += frames;
oki_bytes = oki_adpcm_encode(oki_enc_state, oki_data, pre_amp, frames);
@@ -176,16 +176,16 @@
diff_energy += (double) xx * (double) xx;
//post_amp[i] = xx;
}
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, post_amp, dec_frames);
+ outframes = sf_writef_short(outhandle, post_amp, dec_frames);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", in_file_name);
+ fprintf(stderr, " Cannot close audio file '%s'\n", in_file_name);
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
oki_adpcm_release(oki_enc_state);
Modified: freeswitch/trunk/libs/spandsp/tests/playout_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/playout_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/playout_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: playout_tests.c,v 1.28 2009/02/10 13:06:47 steveu Exp $
+ * $Id: playout_tests.c,v 1.29 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page playout_tests_page Playout (jitter buffering) tests
@@ -38,11 +38,11 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include "spandsp.h"
-
#include "spandsp/private/time_scale.h"
+#include "spandsp-sim.h"
#define INPUT_FILE_NAME "playout_in.wav"
#define OUTPUT_FILE_NAME "playout_out.wav"
@@ -71,31 +71,17 @@
int len;
int inframes;
int outframes;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
-
- filesetup = afNewFileSetup();
- if (filesetup == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 2);
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
- inhandle = afOpenFile(INPUT_FILE_NAME, "r", NULL);
- if (inhandle == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(INPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Failed to open wave file '%s'\n", INPUT_FILE_NAME);
+ fprintf(stderr, " Failed to open audio file '%s'\n", INPUT_FILE_NAME);
exit(2);
}
- outhandle = afOpenFile(OUTPUT_FILE_NAME, "w", filesetup);
- if (outhandle == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Failed to create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Failed to create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -115,10 +101,7 @@
if (i >= next_actual_receive)
{
amp = malloc(BLOCK_LEN*sizeof(int16_t));
- inframes = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- BLOCK_LEN);
+ inframes = sf_readf_short(inhandle, amp, BLOCK_LEN);
if (inframes < BLOCK_LEN)
break;
ret = playout_put(s,
@@ -174,7 +157,7 @@
buf[2*j] = out[j];
buf[2*j + 1] = 10*playout_current_length(s);
}
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, buf, len);
+ outframes = sf_writef_short(outhandle, buf, len);
if (outframes != len)
{
fprintf(stderr, " Error writing out sound\n");
@@ -195,7 +178,7 @@
buf[2*j] = out[j];
buf[2*j + 1] = 10*playout_current_length(s);
}
- outframes = afWriteFrames(outhandle, AF_DEFAULT_TRACK, buf, len);
+ outframes = sf_writef_short(outhandle, buf, len);
if (outframes != len)
{
fprintf(stderr, " Error writing out sound\n");
@@ -224,17 +207,16 @@
}
}
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", INPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", INPUT_FILE_NAME);
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
- afFreeFileSetup(filesetup);
printf("%10" PRId32 " %10" PRId32 " %10d\n", s->state_just_in_time, s->state_late, playout_current_length(s));
Modified: freeswitch/trunk/libs/spandsp/tests/plc_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/plc_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/plc_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: plc_tests.c,v 1.25 2008/05/13 13:17:26 steveu Exp $
+ * $Id: plc_tests.c,v 1.26 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page plc_tests_page Packet loss concealment tests
@@ -51,18 +51,18 @@
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include "spandsp.h"
+#include "spandsp-sim.h"
#define INPUT_FILE_NAME "../test-data/local/short_nb_voice.wav"
#define OUTPUT_FILE_NAME "post_plc.wav"
int main(int argc, char *argv[])
{
- AFfilehandle inhandle;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
plc_state_t plc;
int inframes;
int outframes;
@@ -106,23 +106,13 @@
break;
}
}
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
-
phase_rate = 0;
inhandle = NULL;
if (tone < 0)
{
- if ((inhandle = afOpenFile(INPUT_FILE_NAME, "r", NULL)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(INPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Failed to open wave file '%s'\n", INPUT_FILE_NAME);
+ fprintf(stderr, " Failed to open audio file '%s'\n", INPUT_FILE_NAME);
exit(2);
}
}
@@ -130,9 +120,9 @@
{
phase_rate = dds_phase_ratef((float) tone);
}
- if ((outhandle = afOpenFile(OUTPUT_FILE_NAME, "w", filesetup)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Failed to open wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Failed to open audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
plc_init(&plc);
@@ -141,10 +131,7 @@
{
if (tone < 0)
{
- inframes = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- block_len);
+ inframes = sf_readf_short(inhandle, amp, block_len);
if (inframes != block_len)
break;
}
@@ -170,10 +157,7 @@
if (block_synthetic)
memset(amp, 0, sizeof(int16_t)*inframes);
}
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- inframes);
+ outframes = sf_writef_short(outhandle, amp, inframes);
if (outframes != inframes)
{
fprintf(stderr, " Error writing out sound\n");
@@ -183,18 +167,17 @@
printf("Dropped %d of %d blocks\n", lost_blocks, block_no);
if (tone < 0)
{
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", INPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", INPUT_FILE_NAME);
exit(2);
}
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
- afFreeFileSetup(filesetup);
return 0;
}
/*- End of function --------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/power_meter_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: power_meter_tests.c,v 1.22 2008/11/30 10:17:31 steveu Exp $
+ * $Id: power_meter_tests.c,v 1.24 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page power_meter_tests_page Power meter tests
@@ -40,16 +40,177 @@
#include <stdlib.h>
#include <stdio.h>
+#include <unistd.h>
#include <memory.h>
+#include <float.h>
#include <time.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
//#endif
#include "spandsp.h"
+#include "spandsp-sim.h"
-int main(int argc, char *argv[])
+#define IN_FILE_NAME "../test-data/local/short_nb_voice.wav"
+#define OUT_FILE_NAME "power_meter_tests.wav"
+
+static int power_surge_detector_tests(void)
+{
+ SNDFILE *outhandle;
+ power_surge_detector_state_t *sig;
+ int i;
+ int sample;
+ int16_t amp[8000];
+ int16_t amp_out[2*8000];
+ awgn_state_t *awgnx;
+ int32_t phase_rate;
+ uint32_t phase_acc;
+ int16_t phase_scale;
+ float signal_power;
+ int32_t signal_level;
+ int signal_present;
+ int prev_signal_present;
+ int ok;
+ int extremes[4];
+
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 2)) == NULL)
+ {
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
+ exit(2);
+ }
+ sig = power_surge_detector_init(NULL, -50.0f, 5.0f);
+ prev_signal_present = FALSE;
+
+ phase_rate = dds_phase_rate(450.0f);
+ phase_acc = 0;
+
+ phase_scale = dds_scaling_dbm0(-33.0f);
+ awgnx = awgn_init_dbm0(NULL, 1234567, -45.0f);
+
+ extremes[0] = 8001;
+ extremes[1] = -1;
+ extremes[2] = 8001;
+ extremes[3] = -1;
+ for (sample = 0; sample < 800000; sample += 8000)
+ {
+ ok = 0;
+ for (i = 0; i < 8000; i++)
+ {
+ amp[i] = awgn(awgnx);
+ if (i < 4000)
+ amp[i] += dds_mod(&phase_acc, phase_rate, phase_scale, 0);
+
+ signal_level = power_surge_detector(sig, amp[i]);
+ signal_present = (signal_level != 0);
+ if (prev_signal_present != signal_present)
+ {
+ signal_power = power_surge_detector_current_dbm0(sig);
+ if (signal_present)
+ {
+ if (ok == 0 && i >= 0 && i < 25)
+ ok = 1;
+ if (extremes[0] > i)
+ extremes[0] = i;
+ if (extremes[1] < i)
+ extremes[1] = i;
+ printf("On at %f (%fdBm0)\n", (sample + i)/8000.0, signal_power);
+ }
+ else
+ {
+ if (ok == 1 && i >= 4000 + 0 && i < 4000 + 35)
+ ok = 2;
+ if (extremes[2] > i)
+ extremes[2] = i;
+ if (extremes[3] < i)
+ extremes[3] = i;
+ printf("Off at %f (%fdBm0)\n", (sample + i)/8000.0, signal_power);
+ }
+ prev_signal_present = signal_present;
+ }
+ amp_out[2*i] = amp[i];
+ amp_out[2*i + 1] = signal_present*5000;
+ }
+ sf_writef_short(outhandle, amp_out, 8000);
+ if (ok != 2
+ ||
+ extremes[0] < 1
+ ||
+ extremes[1] > 30
+ ||
+ extremes[2] < 4001
+ ||
+ extremes[3] > 4030)
+ {
+ printf(" Surge not detected correctly (%d)\n", ok);
+ exit(2);
+ }
+ }
+ sf_close(outhandle);
+ printf("Min on %d, max on %d, min off %d, max off %d\n", extremes[0], extremes[1], extremes[2], extremes[3]);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int power_surge_detector_file_test(const char *file)
+{
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
+ int inframes;
+ power_surge_detector_state_t *sig;
+ int i;
+ int16_t amp[8000];
+ int16_t amp_out[2*8000];
+ int sample;
+ float signal_power;
+ int32_t signal_level;
+ int signal_present;
+ int prev_signal_present;
+
+ if ((inhandle = sf_open_telephony_read(file, 1)) == NULL)
+ {
+ printf(" Cannot open speech file '%s'\n", file);
+ exit(2);
+ }
+
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
+ {
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
+ exit(2);
+ }
+ sig = power_surge_detector_init(NULL, -50.0f, 6.0f);
+ prev_signal_present = FALSE;
+
+ sample = 0;
+ while ((inframes = sf_readf_short(inhandle, amp, 8000)))
+ {
+ for (i = 0; i < inframes; i++)
+ {
+ signal_level = power_surge_detector(sig, amp[i]);
+ signal_present = (signal_level != 0);
+ if (prev_signal_present != signal_present)
+ {
+ signal_power = power_surge_detector_current_dbm0(sig);
+ if (signal_present)
+ printf("On at %f (%fdBm0)\n", (sample + i)/8000.0, signal_power);
+ else
+ printf("Off at %f (%fdBm0)\n", (sample + i)/8000.0, signal_power);
+ prev_signal_present = signal_present;
+ }
+ amp_out[2*i] = amp[i];
+ amp_out[2*i + 1] = signal_present*5000;
+ }
+ sf_writef_short(outhandle, amp_out, inframes);
+ sample += inframes;
+ }
+ sf_close(inhandle);
+ sf_close(outhandle);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int power_meter_tests(void)
{
awgn_state_t noise_source;
power_meter_t meter;
@@ -62,6 +223,9 @@
int32_t level;
power_meter_init(&meter, 7);
+ printf("Testing with zero in the power register\n");
+ printf("Power: expected %fdBm0, got %fdBm0\n", -90.169f, power_meter_current_dbm0(&meter));
+ printf("Power: expected %fdBOv, got %fdBOv\n", -96.329f, power_meter_current_dbov(&meter));
printf("Testing with a square wave 10dB from maximum\n");
for (i = 0; i < 1000; i++)
@@ -159,8 +323,46 @@
printf("Test failed (dBOv)\n");
exit(2);
}
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+int main(int argc, char *argv[])
+{
+ int basic_tests;
+ int decode;
+ int opt;
+ const char *in_file;
+
+ basic_tests = TRUE;
+ decode = FALSE;
+ in_file = IN_FILE_NAME;
+ while ((opt = getopt(argc, argv, "d:")) != -1)
+ {
+ switch (opt)
+ {
+ case 'd':
+ in_file = optarg;
+ basic_tests = FALSE;
+ decode = TRUE;
+ break;
+ default:
+ //usage();
+ exit(2);
+ }
+ }
+
+ if (basic_tests)
+ {
+ power_meter_tests();
+ power_surge_detector_tests();
+ }
+ if (decode)
+ {
+ power_surge_detector_file_test(in_file);
+ }
printf("Tests passed\n");
- return 0;
+ return 0;
}
/*- End of function --------------------------------------------------------*/
/*- End of file ------------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/r2_mf_rx_tests.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: r2_mf_rx_tests.c,v 1.13 2009/04/11 18:11:19 steveu Exp $
+ * $Id: r2_mf_rx_tests.c,v 1.14 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -51,7 +51,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
Modified: freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/r2_mf_tx_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: r2_mf_tx_tests.c,v 1.15 2008/11/30 10:17:31 steveu Exp $
+ * $Id: r2_mf_tx_tests.c,v 1.16 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -47,7 +47,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -63,14 +63,14 @@
r2_mf_tx_state_t gen;
int16_t amp[1000];
int len;
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
int outframes;
int digit;
const char *digits = "0123456789BCDEF";
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -81,22 +81,12 @@
len = r2_mf_tx(&gen, amp, 1000);
printf("Generated %d samples of %c\n", len, digits[digit]);
if (len > 0)
- {
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
- }
+ outframes = sf_writef_short(outhandle, amp, len);
r2_mf_tx_put(&gen, 0);
len = r2_mf_tx(&gen, amp, 1000);
printf("Generated %d samples\n", len);
if (len > 0)
- {
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
- }
+ outframes = sf_writef_short(outhandle, amp, len);
}
r2_mf_tx_init(&gen, TRUE);
@@ -106,27 +96,17 @@
len = r2_mf_tx(&gen, amp, 1000);
printf("Generated %d samples of %c\n", len, digits[digit]);
if (len > 0)
- {
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
- }
+ outframes = sf_writef_short(outhandle, amp, len);
r2_mf_tx_put(&gen, 0);
len = r2_mf_tx(&gen, amp, 1000);
printf("Generated %d samples\n", len);
if (len > 0)
- {
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
- }
+ outframes = sf_writef_short(outhandle, amp, len);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit (2);
}
Modified: freeswitch/trunk/libs/spandsp/tests/regression_tests.sh
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/regression_tests.sh (original)
+++ freeswitch/trunk/libs/spandsp/tests/regression_tests.sh Thu Jun 18 01:13:59 2009
@@ -17,7 +17,7 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-# $Id: regression_tests.sh,v 1.56 2009/04/02 13:43:49 steveu Exp $
+# $Id: regression_tests.sh,v 1.58 2009/05/19 14:47:02 steveu Exp $
#
ITUTESTS_TIF=../test-data/itu/fax/itutests.tif
@@ -686,28 +686,28 @@
#echo tone_generate_tests completed OK
echo tone_generate_tests not enabled
-./v17_tests -b 14400 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v17_tests -b 14400 -s -42 -n -66 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
echo v17_tests failed!
exit $RETVAL
fi
-./v17_tests -b 12000 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v17_tests -b 12000 -s -42 -n -61 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
echo v17_tests failed!
exit $RETVAL
fi
-./v17_tests -b 9600 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v17_tests -b 9600 -s -42 -n -59 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
echo v17_tests failed!
exit $RETVAL
fi
-./v17_tests -b 7200 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v17_tests -b 7200 -s -42 -n -56 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
@@ -733,14 +733,14 @@
#echo v22bis_tests completed OK
echo v22bis_tests not enabled
-./v27ter_tests -b 4800 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v27ter_tests -b 4800 -s -42 -n -57 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
echo v27ter_tests failed!
exit $RETVAL
fi
-./v27ter_tests -b 2400 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v27ter_tests -b 2400 -s -42 -n -51 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
@@ -749,21 +749,21 @@
fi
echo v27ter_tests completed OK
-./v29_tests -b 9600 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v29_tests -b 9600 -s -42 -n -62 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
echo v29_tests failed!
exit $RETVAL
fi
-./v29_tests -b 7200 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v29_tests -b 7200 -s -42 -n -58 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
echo v29_tests failed!
exit $RETVAL
fi
-./v29_tests -b 4800 -s -42 >$STDOUT_DEST 2>$STDERR_DEST
+./v29_tests -b 4800 -s -42 -n -54 >$STDOUT_DEST 2>$STDERR_DEST
RETVAL=$?
if [ $RETVAL != 0 ]
then
Modified: freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/rfc2198_sim_tests.c Thu Jun 18 01:13:59 2009
@@ -24,7 +24,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: rfc2198_sim_tests.c,v 1.6 2008/11/30 10:17:31 steveu Exp $
+ * $Id: rfc2198_sim_tests.c,v 1.7 2009/05/30 15:23:14 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -41,7 +41,7 @@
#include <unistd.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_MATH_H)
#define GEN_CONST
#endif
Modified: freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/sig_tone_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: sig_tone_tests.c,v 1.24 2008/11/30 10:17:31 steveu Exp $
+ * $Id: sig_tone_tests.c,v 1.25 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -42,7 +42,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -171,7 +171,7 @@
{
int16_t amp[SAMPLES_PER_CHUNK];
int16_t out_amp[2*SAMPLES_PER_CHUNK];
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
int outframes;
int i;
int type;
@@ -182,9 +182,9 @@
awgn_state_t noise_source;
codec_munge_state_t *munge;
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 2)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
/*endif*/
@@ -240,13 +240,10 @@
for (i = 0; i < rx_samples; i++)
out_amp[2*i + 1] = amp[i];
/*endfor*/
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- out_amp,
- rx_samples);
+ outframes = sf_writef_short(outhandle, out_amp, rx_samples);
if (outframes != rx_samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
/*endif*/
@@ -254,9 +251,9 @@
/*endfor*/
}
/*endfor*/
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
/*endif*/
Modified: freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/super_tone_rx_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: super_tone_rx_tests.c,v 1.30 2008/11/30 10:17:31 steveu Exp $
+ * $Id: super_tone_rx_tests.c,v 1.33 2009/06/02 14:55:36 steveu Exp $
*/
/*! \file */
@@ -42,8 +42,7 @@
#include <strings.h>
#include <ctype.h>
#include <time.h>
-#include <sys/socket.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_LIBXML_XMLMEMORY_H)
#include <libxml/xmlmemory.h>
@@ -60,6 +59,7 @@
//#endif
#include "spandsp.h"
+#include "spandsp-sim.h"
#define IN_FILE_NAME "super_tone.wav"
@@ -80,7 +80,7 @@
const char *tone_names[20] = {NULL};
-AFfilehandle inhandle;
+SNDFILE *inhandle;
super_tone_rx_segment_t tone_segments[20][10];
@@ -378,24 +378,9 @@
super_tone_rx_state_t *super;
super_tone_rx_descriptor_t desc;
- if ((inhandle = afOpenFile(IN_FILE_NAME, "r", 0)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(IN_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", IN_FILE_NAME);
- exit(2);
- }
- if ((x = afGetFrameSize(inhandle, AF_DEFAULT_TRACK, 1)) != 2.0)
- {
- printf(" Unexpected frame size in wave file '%s'\n", IN_FILE_NAME);
- exit(2);
- }
- if ((x = afGetRate(inhandle, AF_DEFAULT_TRACK)) != (float) SAMPLE_RATE)
- {
- printf(" Unexpected sample rate in wave file '%s'\n", IN_FILE_NAME);
- exit(2);
- }
- if ((x = afGetChannels(inhandle, AF_DEFAULT_TRACK)) != 1.0)
- {
- printf(" Unexpected number of channels in wave file '%s'\n", IN_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", IN_FILE_NAME);
exit(2);
}
super_tone_rx_make_descriptor(&desc);
@@ -411,7 +396,7 @@
super_tone_rx_segment_callback(super, tone_segment);
awgn_init_dbm0(&noise_source, 1234567, -30.0f);
printf("Processing file\n");
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, 8000)))
+ while ((frames = sf_readf_short(inhandle, amp, 8000)))
{
/* Add some noise to the signal for a more meaningful test. */
//for (sample = 0; sample < frames; sample++)
@@ -422,7 +407,7 @@
sample += x;
}
}
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
fprintf(stderr, " Cannot close audio file '%s'\n", IN_FILE_NAME);
exit(2);
@@ -431,27 +416,12 @@
/* Test for voice immunity */
for (j = 0; bellcore_files[j][0]; j++)
{
- if ((inhandle = afOpenFile(bellcore_files[j], "r", 0)) == AF_NULL_FILEHANDLE)
- {
- printf(" Cannot open wave file '%s'\n", bellcore_files[j]);
- exit(2);
- }
- if ((x = afGetFrameSize(inhandle, AF_DEFAULT_TRACK, 1)) != 2.0)
- {
- printf(" Unexpected frame size in wave file '%s'\n", bellcore_files[j]);
- exit(2);
- }
- if ((x = afGetRate(inhandle, AF_DEFAULT_TRACK)) != (float) SAMPLE_RATE)
- {
- printf(" Unexpected sample rate in wave file '%s'\n", bellcore_files[j]);
- exit(2);
- }
- if ((x = afGetChannels(inhandle, AF_DEFAULT_TRACK)) != 1.0)
+ if ((inhandle = sf_open_telephony_read(bellcore_files[j], 1)) == NULL)
{
- printf(" Unexpected number of channels in wave file '%s'\n", bellcore_files[j]);
+ printf(" Cannot open audio file '%s'\n", bellcore_files[j]);
exit(2);
}
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, 8000)))
+ while ((frames = sf_readf_short(inhandle, amp, 8000)))
{
for (sample = 0; sample < frames; )
{
@@ -459,7 +429,7 @@
sample += x;
}
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
printf(" Cannot close speech file '%s'\n", bellcore_files[j]);
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/super_tone_tx_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: super_tone_tx_tests.c,v 1.25 2009/02/10 17:44:18 steveu Exp $
+ * $Id: super_tone_tx_tests.c,v 1.26 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -44,7 +44,7 @@
#include <time.h>
#include <inttypes.h>
#include <sys/socket.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_LIBXML_XMLMEMORY_H)
#include <libxml/xmlmemory.h>
@@ -65,7 +65,7 @@
#define OUT_FILE_NAME "super_tone.wav"
-AFfilehandle outhandle;
+SNDFILE *outhandle;
super_tone_tx_step_t *tone_tree = NULL;
@@ -82,13 +82,10 @@
do
{
len = super_tone_tx(tone, amp, 160);
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (outframes != len)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
total_length += len;
@@ -286,7 +283,7 @@
int main(int argc, char *argv[])
{
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
fprintf(stderr, " Cannot open audio file '%s'\n", OUT_FILE_NAME);
exit(2);
@@ -294,7 +291,7 @@
#if defined(HAVE_LIBXML2)
get_tone_set("../spandsp/global-tones.xml", (argc > 1) ? argv[1] : "hk");
#endif
- if (afCloseFile (outhandle) != 0)
+ if (sf_close (outhandle) != 0)
{
fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/t31_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/t31_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/t31_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t31_tests.c,v 1.71 2009/02/20 12:38:37 steveu Exp $
+ * $Id: t31_tests.c,v 1.72 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -48,7 +48,7 @@
#include <unistd.h>
#include <string.h>
#include <assert.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -661,8 +661,8 @@
int16_t out_amp[2*SAMPLES_PER_CHUNK];
int t30_len;
int t31_len;
- AFfilehandle wave_handle;
- AFfilehandle in_handle;
+ SNDFILE *wave_handle;
+ SNDFILE *in_handle;
int fast_send;
int fast_send_tcf;
int fast_blocks;
@@ -671,12 +671,12 @@
logging_state_t *logging;
int i;
- wave_handle = AF_NULL_FILEHANDLE;
+ wave_handle = NULL;
if (log_audio)
{
- if ((wave_handle = afOpenFile_telephony_write(OUTPUT_WAVE_FILE_NAME, 2)) == AF_NULL_FILEHANDLE)
+ if ((wave_handle = sf_open_telephony_write(OUTPUT_WAVE_FILE_NAME, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_WAVE_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_WAVE_FILE_NAME);
exit(2);
}
}
@@ -686,9 +686,9 @@
in_handle = NULL;
if (decode_test_file)
{
- if ((in_handle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((in_handle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot create audio file '%s'\n", decode_test_file);
exit(2);
}
}
@@ -864,24 +864,24 @@
if (log_audio)
{
- outframes = afWriteFrames(wave_handle, AF_DEFAULT_TRACK, out_amp, SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(wave_handle, out_amp, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
break;
}
}
if (decode_test_file)
{
- if (afCloseFile(in_handle) != 0)
+ if (sf_close(in_handle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
}
if (log_audio)
{
- if (afCloseFile(wave_handle) != 0)
+ if (sf_close(wave_handle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_WAVE_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_WAVE_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/t38_gateway_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t38_gateway_tests.c,v 1.81 2009/04/25 14:27:18 steveu Exp $
+ * $Id: t38_gateway_tests.c,v 1.82 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -51,7 +51,7 @@
#include <string.h>
#include <assert.h>
#include <errno.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if !defined(_WIN32)
#include <unistd.h>
#endif
@@ -234,7 +234,7 @@
int msg_len;
uint8_t msg[1024];
int outframes;
- AFfilehandle wave_handle;
+ SNDFILE *wave_handle;
int use_ecm;
int use_tep;
int feedback_audio;
@@ -327,12 +327,12 @@
if (use_ecm)
printf("Using ECM\n");
- wave_handle = AF_NULL_FILEHANDLE;
+ wave_handle = NULL;
if (log_audio)
{
- if ((wave_handle = afOpenFile_telephony_write(OUTPUT_FILE_NAME_WAVE, 4)) == AF_NULL_FILEHANDLE)
+ if ((wave_handle = sf_open_telephony_write(OUTPUT_FILE_NAME_WAVE, 4)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
@@ -599,7 +599,7 @@
}
if (log_audio)
{
- outframes = afWriteFrames(wave_handle, AF_DEFAULT_TRACK, out_amp, SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(wave_handle, out_amp, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
break;
}
@@ -627,9 +627,9 @@
fax_release(fax_state_b);
if (log_audio)
{
- if (afCloseFile(wave_handle) != 0)
+ if (sf_close(wave_handle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/t38_gateway_to_terminal_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t38_gateway_to_terminal_tests.c,v 1.65 2009/04/25 14:27:18 steveu Exp $
+ * $Id: t38_gateway_to_terminal_tests.c,v 1.66 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -51,7 +51,7 @@
#include <string.h>
#include <assert.h>
#include <errno.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if !defined(_WIN32)
#include <unistd.h>
#endif
@@ -208,7 +208,7 @@
int use_tep;
int feedback_audio;
int use_transmit_on_idle;
- AFfilehandle wave_handle;
+ SNDFILE *wave_handle;
const char *input_file_name;
int i;
int seq_no;
@@ -288,12 +288,12 @@
if (use_ecm)
printf("Using ECM\n");
- wave_handle = AF_NULL_FILEHANDLE;
+ wave_handle = NULL;
if (log_audio)
{
- if ((wave_handle = afOpenFile_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == AF_NULL_FILEHANDLE)
+ if ((wave_handle = sf_open_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
@@ -482,7 +482,7 @@
}
if (log_audio)
{
- outframes = afWriteFrames(wave_handle, AF_DEFAULT_TRACK, out_amp, SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(wave_handle, out_amp, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
break;
}
@@ -498,9 +498,9 @@
t38_terminal_release(t38_state_b);
if (log_audio)
{
- if (afCloseFile(wave_handle) != 0)
+ if (sf_close(wave_handle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/t38_terminal_to_gateway_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t38_terminal_to_gateway_tests.c,v 1.64 2009/04/25 14:27:19 steveu Exp $
+ * $Id: t38_terminal_to_gateway_tests.c,v 1.65 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -51,7 +51,7 @@
#include <string.h>
#include <assert.h>
#include <errno.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if !defined(_WIN32)
#include <unistd.h>
#endif
@@ -203,7 +203,7 @@
uint8_t msg[1024];
int log_audio;
int outframes;
- AFfilehandle wave_handle;
+ SNDFILE *wave_handle;
int t38_version;
int use_ecm;
int use_tep;
@@ -288,12 +288,12 @@
if (use_ecm)
printf("Using ECM\n");
- wave_handle = AF_NULL_FILEHANDLE;
+ wave_handle = NULL;
if (log_audio)
{
- if ((wave_handle = afOpenFile_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == AF_NULL_FILEHANDLE)
+ if ((wave_handle = sf_open_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
@@ -482,7 +482,7 @@
}
if (log_audio)
{
- outframes = afWriteFrames(wave_handle, AF_DEFAULT_TRACK, out_amp, SAMPLES_PER_CHUNK);
+ outframes = sf_writef_short(wave_handle, out_amp, SAMPLES_PER_CHUNK);
if (outframes != SAMPLES_PER_CHUNK)
break;
}
@@ -498,9 +498,9 @@
fax_release(fax_state_b);
if (log_audio)
{
- if (afCloseFile(wave_handle) != 0)
+ if (sf_close(wave_handle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/t4_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/t4_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/t4_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: t4_tests.c,v 1.68 2009/03/01 12:39:02 steveu Exp $
+ * $Id: t4_tests.c,v 1.69 2009/05/16 03:34:45 steveu Exp $
*/
/*! \file */
Modified: freeswitch/trunk/libs/spandsp/tests/testadsi.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/testadsi.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/testadsi.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: testadsi.c,v 1.22 2008/05/13 13:17:26 steveu Exp $
+ * $Id: testadsi.c,v 1.23 2009/05/30 15:23:14 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -46,7 +46,7 @@
#include <linux/zaptel.h>
#include <pthread.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include <tiffio.h>
#include "unicall.h"
@@ -59,8 +59,8 @@
#define TRUE (!FALSE)
int caller_mode = FALSE;
-static AFfilehandle rxhandle;
-static AFfilehandle txhandle;
+static SNDFILE *rxhandle;
+static SNDFILE *txhandle;
#if 0
int adsi_create_message(adsi_tx_state_t *s, uint8_t *msg)
@@ -196,7 +196,7 @@
for (i = 0; i < len; i++)
pcm_buf[i] = alaw_to_linear(buf[i]);
/*endfor*/
- outframes = afWriteFrames(rxhandle,
+ outframes = sf_writef_short(rxhandle,
AF_DEFAULT_TRACK,
pcm_buf,
len);
@@ -254,7 +254,7 @@
printf("Message put - %d bytes\n", len);
}
len = adsi_tx(&(chan_stuff[chan].adsi_tx), pcm_buf, max_len);
- afWriteFrames(txhandle,
+ sf_writef_short(txhandle,
AF_DEFAULT_TRACK,
pcm_buf,
len);
@@ -563,13 +563,13 @@
afInitFileFormat(filesetup, AF_FILE_WAVE);
afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
rxhandle = afOpenFile("rxadsi.wav", "w", filesetup);
- if (rxhandle == AF_NULL_FILEHANDLE)
+ if (rxhandle == NULL)
{
fprintf(stderr, " Failed to open adsi audio file\n");
exit(2);
}
txhandle = afOpenFile("txadsi.wav", "w", filesetup);
- if (txhandle == AF_NULL_FILEHANDLE)
+ if (txhandle == NULL)
{
fprintf(stderr, " Failed to open adsi audio file\n");
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/testfax.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/testfax.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/testfax.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: testfax.c,v 1.32 2008/05/13 13:17:26 steveu Exp $
+ * $Id: testfax.c,v 1.33 2009/05/30 15:23:14 steveu Exp $
*/
#if defined(HAVE_CONFIG_H)
@@ -46,7 +46,7 @@
#include <linux/zaptel.h>
#include <pthread.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include <tiffio.h>
#include "unicall.h"
@@ -57,8 +57,8 @@
#include "spandsp.h"
int caller_mode = FALSE;
-static AFfilehandle rxhandle;
-static AFfilehandle txhandle;
+static SNDFILE *rxhandle;
+static SNDFILE *txhandle;
typedef struct
{
@@ -104,7 +104,7 @@
int outframes;
#if 0
- outframes = afWriteFrames(rxhandle,
+ outframes = sf_writef_short(rxhandle,
AF_DEFAULT_TRACK,
buf,
len >> 1);
@@ -149,7 +149,7 @@
int len;
len = t30_tx(&(chan_stuff[chan].fax), (int16_t *) buf, max_len >> 1);
- afWriteFrames(txhandle, AF_DEFAULT_TRACK, buf, len);
+ sf_writef_short(txhandle, AF_DEFAULT_TRACK, buf, len);
if (len > 0)
len <<= 1;
return len;
@@ -532,13 +532,13 @@
afInitFileFormat(filesetup, AF_FILE_WAVE);
afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
rxhandle = afOpenFile("rxfax.wav", "w", filesetup);
- if (rxhandle == AF_NULL_FILEHANDLE)
+ if (rxhandle == NULL)
{
fprintf(stderr, " Failed to open fax audio file\n");
exit(2);
}
txhandle = afOpenFile("txfax.wav", "w", filesetup);
- if (txhandle == AF_NULL_FILEHANDLE)
+ if (txhandle == NULL)
{
fprintf(stderr, " Failed to open fax audio file\n");
exit(2);
Modified: freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/time_scale_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: time_scale_tests.c,v 1.23 2008/11/15 14:27:29 steveu Exp $
+ * $Id: time_scale_tests.c,v 1.24 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page time_scale_tests_page Time scaling tests
@@ -44,7 +44,7 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
#include "spandsp.h"
@@ -57,9 +57,9 @@
int main(int argc, char *argv[])
{
- AFfilehandle inhandle;
- AFfilehandle outhandle;
- AFfilesetup filesetup;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
+ SF_INFO info;
int16_t in[BLOCK_LEN];
int16_t out[5*(BLOCK_LEN + TIME_SCALE_MAX_SAMPLE_RATE/TIME_SCALE_MIN_PITCH)];
int frames;
@@ -68,7 +68,6 @@
int count;
int max;
time_scale_state_t state;
- float x;
float rate;
float sample_rate;
const char *in_file_name;
@@ -97,35 +96,29 @@
break;
}
}
- if ((inhandle = afOpenFile(in_file_name, "r", 0)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open(in_file_name, SFM_READ, &info)) == NULL)
{
- printf(" Cannot open wave file '%s'\n", in_file_name);
+ printf(" Cannot open audio file '%s'\n", in_file_name);
exit(2);
}
- if ((x = afGetFrameSize(inhandle, AF_DEFAULT_TRACK, 1)) != 2.0)
+ if (info.channels != 1)
{
- printf(" Unexpected frame size in wave file '%s'\n", in_file_name);
+ printf(" Unexpected number of channels in audio file '%s'\n", in_file_name);
exit(2);
}
- if ((x = afGetChannels(inhandle, AF_DEFAULT_TRACK)) != 1.0)
- {
- printf(" Unexpected number of channels in wave file '%s'\n", in_file_name);
- exit(2);
- }
- sample_rate = afGetRate(inhandle, AF_DEFAULT_TRACK);
+ sample_rate = info.samplerate;
- if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
- {
- fprintf(stderr, " Failed to create file setup\n");
- exit(2);
- }
- afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
- afInitRate(filesetup, AF_DEFAULT_TRACK, sample_rate);
- afInitFileFormat(filesetup, AF_FILE_WAVE);
- afInitChannels(filesetup, AF_DEFAULT_TRACK, 1);
- if ((outhandle = afOpenFile(OUT_FILE_NAME, "w", filesetup)) == AF_NULL_FILEHANDLE)
+ memset(&info, 0, sizeof(info));
+ info.frames = 0;
+ info.samplerate = sample_rate;
+ info.channels = 1;
+ info.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16;
+ info.sections = 1;
+ info.seekable = 1;
+
+ if ((outhandle = sf_open(OUT_FILE_NAME, SFM_WRITE, &info)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
@@ -137,13 +130,13 @@
max = time_scale_max_output_len(&state, BLOCK_LEN);
printf("Rate is %f, longest output block is %d\n", rate, max);
count = 0;
- while ((frames = afReadFrames(inhandle, AF_DEFAULT_TRACK, in, BLOCK_LEN)))
+ while ((frames = sf_readf_short(inhandle, in, BLOCK_LEN)))
{
new_frames = time_scale(&state, out, in, frames);
- out_frames = afWriteFrames(outhandle, AF_DEFAULT_TRACK, out, new_frames);
+ out_frames = sf_writef_short(outhandle, out, new_frames);
if (out_frames != new_frames)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
if (sweep_rate && ++count > 100)
@@ -160,17 +153,16 @@
count = 0;
}
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- printf(" Cannot close wave file '%s'\n", in_file_name);
+ printf(" Cannot close audio file '%s'\n", in_file_name);
exit(2);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- printf(" Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ printf(" Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
- afFreeFileSetup(filesetup);
return 0;
}
/*- End of function --------------------------------------------------------*/
Modified: freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/tone_detect_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: tone_detect_tests.c,v 1.11 2008/11/30 12:38:27 steveu Exp $
+ * $Id: tone_detect_tests.c,v 1.12 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page tone_detect_tests_page Tone detection tests
@@ -38,7 +38,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
Modified: freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/tone_generate_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: tone_generate_tests.c,v 1.21 2008/11/30 10:17:31 steveu Exp $
+ * $Id: tone_generate_tests.c,v 1.22 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page tone_generate_tests_page Tone generation tests
@@ -38,7 +38,7 @@
#include <fcntl.h>
#include <string.h>
#include <time.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -56,12 +56,12 @@
int i;
int16_t amp[16384];
int len;
- AFfilehandle outhandle;
+ SNDFILE *outhandle;
int outframes;
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot open audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -84,10 +84,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try a different tone pair */
@@ -109,10 +106,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try a different tone pair */
@@ -134,10 +128,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try a single tone */
@@ -159,10 +150,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try a single non-repeating tone */
@@ -184,10 +172,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try a single non-repeating tone at 0dBm0 */
@@ -209,10 +194,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try an AM modulated tone at a modest modulation level (25%) */
@@ -234,10 +216,7 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
/* Try an AM modulated tone at maximum modulation level (100%) */
@@ -259,15 +238,12 @@
printf("Generated %d samples\n", len);
if (len <= 0)
break;
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
}
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit (2);
}
Modified: freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/tsb85_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: tsb85_tests.c,v 1.30 2009/02/20 12:34:20 steveu Exp $
+ * $Id: tsb85_tests.c,v 1.32 2009/05/30 15:23:14 steveu Exp $
*/
/*! \file */
@@ -47,7 +47,7 @@
#include <fcntl.h>
#include <time.h>
#include <unistd.h>
-#include <audiofile.h>
+#include <sndfile.h>
#if defined(HAVE_LIBXML_XMLMEMORY_H)
#include <libxml/xmlmemory.h>
@@ -75,7 +75,7 @@
#define SAMPLES_PER_CHUNK 160
-AFfilehandle out_handle;
+SNDFILE *out_handle;
int use_receiver_not_ready = FALSE;
int test_local_interrupt = FALSE;
@@ -335,6 +335,7 @@
{
span_log_buf(&s->logging, SPAN_LOG_FLOW, "Expected", awaited, abs(awaited_len));
span_log_buf(&s->logging, SPAN_LOG_FLOW, "Received", msg, len);
+ printf("Test failed\n");
exit(2);
}
}
@@ -359,6 +360,7 @@
static void faxtester_front_end_step_timeout_handler(faxtester_state_t *s, void *user_data)
{
span_log(&s->logging, SPAN_LOG_FLOW, "FAX tester step timed out\n");
+ printf("Test failed\n");
exit(2);
}
/*- End of function --------------------------------------------------------*/
@@ -644,6 +646,7 @@
return 1;
}
/* Finished */
+ printf("Test passed\n");
exit(0);
}
while (s->cur && xmlStrcmp(s->cur->name, (const xmlChar *) "step") != 0)
@@ -651,6 +654,7 @@
if (s->cur == NULL)
{
/* Finished */
+ printf("Test passed\n");
exit(0);
}
@@ -965,6 +969,7 @@
if (t4_tx_init(&t4_state, path, -1, -1) == NULL)
{
span_log(&s->logging, SPAN_LOG_FLOW, "Failed to init T.4 send\n");
+ printf("Test failed\n");
exit(2);
}
t4_tx_set_min_row_bits(&t4_state, min_row_bits);
@@ -981,6 +986,7 @@
if (t4_tx_start_page(&t4_state))
{
span_log(&s->logging, SPAN_LOG_FLOW, "Failed to start T.4 send\n");
+ printf("Test failed\n");
exit(2);
}
len = t4_tx_get_chunk(&t4_state, image, sizeof(image));
@@ -1003,6 +1009,7 @@
if (t4_tx_init(&t4_state, path, -1, -1) == NULL)
{
span_log(&s->logging, SPAN_LOG_FLOW, "Failed to init T.4 send\n");
+ printf("Test failed\n");
exit(2);
}
t4_tx_set_min_row_bits(&t4_state, min_row_bits);
@@ -1019,6 +1026,7 @@
if (t4_tx_start_page(&t4_state))
{
span_log(&s->logging, SPAN_LOG_FLOW, "Failed to start T.4 send\n");
+ printf("Test failed\n");
exit(2);
}
/*endif*/
@@ -1060,9 +1068,10 @@
if (log_audio)
{
- if ((out_handle = afOpenFile_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == AF_NULL_FILEHANDLE)
+ if ((out_handle = sf_open_telephony_write(OUTPUT_FILE_NAME_WAVE, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ printf("Test failed\n");
exit(2);
}
/*endif*/
@@ -1118,7 +1127,7 @@
for (i = 0; i < len; i++)
out_amp[2*i + 1] = amp[i];
/*endfor*/
- if (afWriteFrames(out_handle, AF_DEFAULT_TRACK, out_amp, SAMPLES_PER_CHUNK) != SAMPLES_PER_CHUNK)
+ if (sf_writef_short(out_handle, out_amp, SAMPLES_PER_CHUNK) != SAMPLES_PER_CHUNK)
break;
/*endif*/
}
@@ -1127,9 +1136,10 @@
/*endfor*/
if (log_audio)
{
- if (afCloseFile(out_handle))
+ if (sf_close(out_handle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME_WAVE);
+ printf("Test failed\n");
exit(2);
}
/*endif*/
@@ -1209,6 +1219,7 @@
if ((doc = xmlParseFile(test_file)) == NULL)
{
fprintf(stderr, "No document\n");
+ printf("Test failed\n");
exit(2);
}
/*endif*/
@@ -1216,6 +1227,7 @@
if (!xmlValidateDocument(&valid, doc))
{
fprintf(stderr, "Invalid document\n");
+ printf("Test failed\n");
exit(2);
}
/*endif*/
@@ -1223,15 +1235,17 @@
/* Check the document is of the right kind */
if ((cur = xmlDocGetRootElement(doc)) == NULL)
{
- fprintf(stderr, "Empty document\n");
xmlFreeDoc(doc);
+ fprintf(stderr, "Empty document\n");
+ printf("Test failed\n");
exit(2);
}
/*endif*/
if (xmlStrcmp(cur->name, (const xmlChar *) "fax-tests"))
{
- fprintf(stderr, "Document of the wrong type, root node != fax-tests");
xmlFreeDoc(doc);
+ fprintf(stderr, "Document of the wrong type, root node != fax-tests");
+ printf("Test failed\n");
exit(2);
}
/*endif*/
@@ -1240,7 +1254,10 @@
cur = cur->next;
/*endwhile*/
if (cur == NULL)
+ {
+ printf("Test failed\n");
exit(2);
+ }
/*endif*/
while (cur)
{
Modified: freeswitch/trunk/libs/spandsp/tests/tsb85_tests.sh
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/tsb85_tests.sh (original)
+++ freeswitch/trunk/libs/spandsp/tests/tsb85_tests.sh Thu Jun 18 01:13:59 2009
@@ -15,7 +15,7 @@
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
-# $Id: tsb85_tests.sh,v 1.7 2009/04/30 15:04:20 steveu Exp $
+# $Id: tsb85_tests.sh,v 1.8 2009/05/24 07:18:36 steveu Exp $
#
run_tsb85_test()
@@ -35,14 +35,13 @@
run_tsb85_test
done
-#MRGN14 fails because ???
+#MRGN14 fails because we don't adequately distinguish between receiving a
+#bad image signal and receiving none at all.
#MRGN16 fails because we don't adequately distinguish between receiving a
#bad image signal and receiving none at all.
-#MRGN17 fails because we don't adequately distinguish between receiving a
-#bad HDLC message and receiving none at all.
#for TEST in MRGN09 MRGN10 MRGN11 MRGN12 MRGN13 MRGN14 MRGN15 MRGN16 MRGN17 ; do
-for TEST in MRGN09 MRGN10 MRGN11 MRGN12 MRGN13 MRGN15 ; do
+for TEST in MRGN09 MRGN10 MRGN11 MRGN12 MRGN13 MRGN15 MRGN17 ; do
run_tsb85_test
done
@@ -54,7 +53,7 @@
run_tsb85_test
done
-# MRGX03 is failing because the V.27ter modemsays it trained on HDLC
+# MRGX03 is failing because the V.27ter modem says it trained on HDLC
# MRGX05 is failing because we don't distinguish MPS immediately after MCF from MPS after
# a corrupt image signal.
@@ -95,6 +94,8 @@
run_tsb85_test
done
+#OTEN02 fails because ?????
+
#for TEST in OTEN01 OTEN02 OTEN03 OTEN04 OTEN05 OTEN06 ; do
for TEST in OTEN01 OTEN03 OTEN04 OTEN05 OTEN06 ; do
run_tsb85_test
Modified: freeswitch/trunk/libs/spandsp/tests/v17_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/v17_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/v17_tests.c Thu Jun 18 01:13:59 2009
@@ -23,7 +23,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v17_tests.c,v 1.102 2009/04/25 16:30:52 steveu Exp $
+ * $Id: v17_tests.c,v 1.103 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page v17_tests_page V.17 modem tests
@@ -36,7 +36,7 @@
receive modem. It is also the only test mode provided for evaluating the
transmit modem.
- - A V.17 receive modem is used to decode V.17 audio, stored in a wave file.
+ - A V.17 receive modem is used to decode V.17 audio, stored in a audio file.
This is good way to evaluate performance with audio recorded from other
models of modem, and with real world problematic telephone lines.
@@ -62,7 +62,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -226,8 +226,8 @@
bert_results_t bert_results;
int16_t gen_amp[BLOCK_LEN];
int16_t amp[BLOCK_LEN];
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int samples;
int tep;
@@ -311,20 +311,20 @@
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
if (decode_test_file)
{
- /* We will decode the audio from a wave file. */
+ /* We will decode the audio from a file. */
tx = NULL;
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
}
@@ -381,10 +381,7 @@
{
if (decode_test_file)
{
- samples = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle, amp, BLOCK_LEN);
#if defined(ENABLE_GUI)
if (use_gui)
qam_monitor_update_audio_level(qam_monitor, amp, samples);
@@ -445,13 +442,10 @@
}
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- gen_amp,
- samples);
+ outframes = sf_writef_short(outhandle, gen_amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -485,17 +479,17 @@
#endif
if (decode_test_file)
{
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
}
if (log_audio)
{
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/v18_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/v18_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/v18_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v18_tests.c,v 1.5 2009/04/11 18:11:19 steveu Exp $
+ * $Id: v18_tests.c,v 1.8 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page v18_tests_page V.18 tests
@@ -41,7 +41,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -58,19 +58,32 @@
#define SAMPLES_PER_CHUNK 160
int log_audio = FALSE;
-AFfilehandle outhandle = NULL;
+SNDFILE *outhandle = NULL;
char *decode_test_file = NULL;
int good_message_received;
+const char *qbf_tx = "The quick Brown Fox Jumps Over The Lazy dog 0123456789!@#$%^&*()'";
+const char *qbf_rx = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789!X$$/'+.()'";
+const char *full_baudot_rx =
+ "\b \n\n\n\r?\n\n\n !\"$$/+'().+,-./"
+ "0123456789:;(=)?"
+ "XABCDEFGHIJKLMNOPQRSTUVWXYZ(/)' "
+ "'ABCDEFGHIJKLMNOPQRSTUVWXYZ(!) ";
+
#if 1
static void put_text_msg(void *user_data, const uint8_t *msg, int len)
{
- if (strcmp((const char *) msg, "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789#$*()"))
- printf("%s\n", msg);
+ if (strcmp((const char *) msg, qbf_rx))
+ {
+ printf("Result:\n%s\n", msg);
+ printf("Reference result:\n%s\n", qbf_rx);
+ }
else
+ {
good_message_received = TRUE;
+ }
}
/*- End of function --------------------------------------------------------*/
@@ -91,7 +104,11 @@
/* Fake an OK condition for the first message test */
good_message_received = TRUE;
push = 0;
- v18_put(v18_a, "The quick Brown Fox Jumps Over The Lazy dog 0123456789!@#$%^&*()", -1);
+ if (v18_put(v18_a, qbf_tx, -1) != strlen(qbf_tx))
+ {
+ printf("V.18 put failed\n");
+ exit(2);
+ }
for (i = 0; i < 100000; i++)
{
if (push == 0)
@@ -111,7 +128,11 @@
exit(2);
}
good_message_received = FALSE;
- v18_put(v18_a, "The quick Brown Fox Jumps Over The Lazy dog 0123456789!@#$%^&*()", -1);
+ if (v18_put(v18_a, qbf_tx, -1) != strlen(qbf_tx))
+ {
+ printf("V.18 put failed\n");
+ exit(2);
+ }
}
}
if (len < SAMPLES_PER_CHUNK)
@@ -121,13 +142,10 @@
}
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- amp,
- len);
+ outframes = sf_writef_short(outhandle, amp, len);
if (outframes != len)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -165,39 +183,42 @@
static int test_x_04(void)
{
- const char *s;
- const char *ref;
char result[1024];
char *t;
int ch;
int xx;
int yy;
+ int i;
v18_state_t *v18_state;
/* III.5.4.5.4 5 Bit to T.50 character conversion */
v18_state = v18_init(NULL, TRUE, V18_MODE_5BIT_45, NULL, NULL);
- s = "The quick Brown Fox Jumps Over The Lazy dog 0123456789!@#$%^&*()";
- printf("Original:\n%s\n", s);
+ printf("Original:\n");
t = result;
- while ((ch = *s++))
+ for (i = 0; i < 127; i++)
{
+ ch = i;
+ printf("%c", ch);
xx = v18_encode_baudot(v18_state, ch);
- if ((xx & 0x3E0))
+ if (xx)
{
- yy = v18_decode_baudot(v18_state, (xx >> 5) & 0x1F);
+ if ((xx & 0x3E0))
+ {
+ yy = v18_decode_baudot(v18_state, (xx >> 5) & 0x1F);
+ if (yy)
+ *t++ = yy;
+ }
+ yy = v18_decode_baudot(v18_state, xx & 0x1F);
if (yy)
*t++ = yy;
}
- yy = v18_decode_baudot(v18_state, xx & 0x1F);
- if (yy)
- *t++ = yy;
}
+ printf("\n");
*t = '\0';
v18_free(v18_state);
- ref = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 0123456789#$*()";
printf("Result:\n%s\n", result);
- printf("Reference result:\n%s\n", ref);
- if (strcmp(result, ref) != 0)
+ printf("Reference result:\n%s\n", full_baudot_rx);
+ if (strcmp(result, full_baudot_rx) != 0)
return -1;
return 0;
}
@@ -256,30 +277,27 @@
{
v18_state_t *v18_state;
int16_t amp[SAMPLES_PER_CHUNK];
- AFfilehandle inhandle;
+ SNDFILE *inhandle;
int len;
printf("Decoding as '%s'\n", v18_mode_to_str(mode));
- /* We will decode the audio from a wave file. */
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ /* We will decode the audio from a file. */
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
v18_state = v18_init(NULL, FALSE, mode, put_v18_msg, NULL);
for (;;)
{
- len = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- SAMPLES_PER_CHUNK);
+ len = sf_readf_short(inhandle, amp, SAMPLES_PER_CHUNK);
if (len == 0)
break;
v18_rx(v18_state, amp, len);
}
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
v18_free(v18_state);
@@ -429,12 +447,12 @@
if (argc > 0)
match = argv[0];
- outhandle = AF_NULL_FILEHANDLE;
+ outhandle = NULL;
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
}
@@ -477,9 +495,9 @@
basic_tests(V18_MODE_5BIT_45);
if (log_audio)
{
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v22bis_tests.c,v 1.61 2009/04/25 16:30:52 steveu Exp $
+ * $Id: v22bis_tests.c,v 1.62 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page v22bis_tests_page V.22bis modem tests
@@ -50,7 +50,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
#include "spandsp.h"
@@ -210,8 +210,8 @@
int16_t amp[2][BLOCK_LEN];
int16_t model_amp[2][BLOCK_LEN];
int16_t out_amp[2*BLOCK_LEN];
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int samples;
int samples2;
@@ -281,23 +281,23 @@
break;
}
}
- inhandle = AF_NULL_FILEHANDLE;
+ inhandle = NULL;
if (decode_test_file)
{
- /* We will decode the audio from a wave file. */
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ /* We will decode the audio from a file. */
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
}
- outhandle = AF_NULL_FILEHANDLE;
+ outhandle = NULL;
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 2)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
@@ -369,10 +369,7 @@
#endif
if (decode_test_file)
{
- samples2 = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- model_amp[0],
- samples);
+ samples2 = sf_readf_short(inhandle, model_amp[0], samples);
if (samples2 != samples)
break;
}
@@ -388,13 +385,10 @@
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- out_amp,
- BLOCK_LEN);
+ outframes = sf_writef_short(outhandle, out_amp, BLOCK_LEN);
if (outframes != BLOCK_LEN)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -405,17 +399,17 @@
#endif
if (decode_test_file)
{
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
}
if (log_audio)
{
- if (afCloseFile(outhandle) != 0)
+ if (sf_close(outhandle) != 0)
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v27ter_tests.c,v 1.104 2009/04/25 16:30:52 steveu Exp $
+ * $Id: v27ter_tests.c,v 1.105 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page v27ter_tests_page V.27ter modem tests
@@ -35,7 +35,7 @@
receive modem. It is also the only test mode provided for evaluating the
transmit modem.
- - A V.27ter receive modem is used to decode V.27ter audio, stored in a wave file.
+ - A V.27ter receive modem is used to decode V.27ter audio, stored in an audio file.
This is good way to evaluate performance with audio recorded from other
models of modem, and with real world problematic telephone lines.
@@ -61,7 +61,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -225,8 +225,8 @@
bert_results_t bert_results;
int16_t gen_amp[BLOCK_LEN];
int16_t amp[BLOCK_LEN];
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int samples;
int tep;
@@ -311,20 +311,20 @@
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
if (decode_test_file)
{
- /* We will decode the audio from a wave file. */
+ /* We will decode the audio from a file. */
tx = NULL;
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
}
@@ -372,10 +372,7 @@
{
if (decode_test_file)
{
- samples = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle, amp, BLOCK_LEN);
#if defined(ENABLE_GUI)
if (use_gui)
qam_monitor_update_audio_level(qam_monitor, amp, samples);
@@ -434,13 +431,10 @@
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- gen_amp,
- samples);
+ outframes = sf_writef_short(outhandle, gen_amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -473,17 +467,17 @@
#endif
if (decode_test_file)
{
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
}
if (log_audio)
{
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/v29_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/v29_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/v29_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v29_tests.c,v 1.118 2009/04/25 16:30:52 steveu Exp $
+ * $Id: v29_tests.c,v 1.119 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page v29_tests_page V.29 modem tests
@@ -35,7 +35,7 @@
receive modem. It is also the only test mode provided for evaluating the
transmit modem.
- - A V.29 receive modem is used to decode V.29 audio, stored in a wave file.
+ - A V.29 receive modem is used to decode V.29 audio, stored in an audio file.
This is good way to evaluate performance with audio recorded from other
models of modem, and with real world problematic telephone lines.
@@ -61,7 +61,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -248,8 +248,8 @@
bert_results_t bert_results;
int16_t gen_amp[BLOCK_LEN];
int16_t amp[BLOCK_LEN];
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int outframes;
int samples;
int tep;
@@ -334,20 +334,20 @@
if (log_audio)
{
- if ((outhandle = afOpenFile_telephony_write(OUT_FILE_NAME, 1)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUT_FILE_NAME, 1)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
if (decode_test_file)
{
- /* We will decode the audio from a wave file. */
+ /* We will decode the audio from a file. */
tx = NULL;
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
- fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot open audio file '%s'\n", decode_test_file);
exit(2);
}
}
@@ -402,10 +402,7 @@
{
if (decode_test_file)
{
- samples = afReadFrames(inhandle,
- AF_DEFAULT_TRACK,
- amp,
- BLOCK_LEN);
+ samples = sf_readf_short(inhandle, amp, BLOCK_LEN);
#if defined(ENABLE_GUI)
if (use_gui)
qam_monitor_update_audio_level(qam_monitor, amp, samples);
@@ -462,13 +459,10 @@
}
if (log_audio)
{
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- gen_amp,
- samples);
+ outframes = sf_writef_short(outhandle, gen_amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
@@ -502,17 +496,17 @@
#endif
if (decode_test_file)
{
- if (afCloseFile(inhandle))
+ if (sf_close(inhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", decode_test_file);
+ fprintf(stderr, " Cannot close audio file '%s'\n", decode_test_file);
exit(2);
}
}
if (log_audio)
{
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUT_FILE_NAME);
exit(2);
}
}
Modified: freeswitch/trunk/libs/spandsp/tests/v8_tests.c
==============================================================================
--- freeswitch/trunk/libs/spandsp/tests/v8_tests.c (original)
+++ freeswitch/trunk/libs/spandsp/tests/v8_tests.c Thu Jun 18 01:13:59 2009
@@ -22,7 +22,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- * $Id: v8_tests.c,v 1.32 2009/04/24 22:35:25 steveu Exp $
+ * $Id: v8_tests.c,v 1.33 2009/05/30 15:23:14 steveu Exp $
*/
/*! \page v8_tests_page V.8 tests
@@ -41,7 +41,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
-#include <audiofile.h>
+#include <sndfile.h>
//#if defined(WITH_SPANDSP_INTERNALS)
#define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
@@ -98,8 +98,8 @@
int remnant;
int caller_available_modulations;
int answerer_available_modulations;
- AFfilehandle inhandle;
- AFfilehandle outhandle;
+ SNDFILE *inhandle;
+ SNDFILE *outhandle;
int opt;
char *decode_test_file;
logging_state_t *logging;
@@ -150,9 +150,9 @@
if (decode_test_file == NULL)
{
- if ((outhandle = afOpenFile_telephony_write(OUTPUT_FILE_NAME, 2)) == AF_NULL_FILEHANDLE)
+ if ((outhandle = sf_open_telephony_write(OUTPUT_FILE_NAME, 2)) == NULL)
{
- fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot create audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -187,19 +187,16 @@
for (i = 0; i < samples; i++)
out_amp[2*i + 1] = amp[i];
- outframes = afWriteFrames(outhandle,
- AF_DEFAULT_TRACK,
- out_amp,
- samples);
+ outframes = sf_writef_short(outhandle, out_amp, samples);
if (outframes != samples)
{
- fprintf(stderr, " Error writing wave file\n");
+ fprintf(stderr, " Error writing audio file\n");
exit(2);
}
}
- if (afCloseFile(outhandle))
+ if (sf_close(outhandle))
{
- fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
+ fprintf(stderr, " Cannot close audio file '%s'\n", OUTPUT_FILE_NAME);
exit(2);
}
@@ -220,21 +217,21 @@
logging = v8_get_logging_state(v8_answerer);
span_log_set_level(logging, SPAN_LOG_FLOW | SPAN_LOG_SHOW_TAG);
span_log_set_tag(logging, "decoder");
- if ((inhandle = afOpenFile_telephony_read(decode_test_file, 1)) == AF_NULL_FILEHANDLE)
+ if ((inhandle = sf_open_telephony_read(decode_test_file, 1)) == NULL)
{
fprintf(stderr, " Cannot open speech file '%s'\n", decode_test_file);
exit (2);
}
/*endif*/
- while ((samples = afReadFrames(inhandle, AF_DEFAULT_TRACK, amp, SAMPLES_PER_CHUNK)))
+ while ((samples = sf_readf_short(inhandle, amp, SAMPLES_PER_CHUNK)))
{
remnant = v8_rx(v8_answerer, amp, samples);
}
/*endwhile*/
v8_free(v8_answerer);
- if (afCloseFile(inhandle) != 0)
+ if (sf_close(inhandle) != 0)
{
fprintf(stderr, " Cannot close speech file '%s'\n", decode_test_file);
exit(2);
More information about the Freeswitch-trunk
mailing list