From: Monty Date: Mon, 8 May 2000 20:49:51 +0000 (+0000) Subject: First merge of new psychoacoustics. Have some unused codebooks to X-Git-Tag: v1.3.3~1227 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d1ac4fc0fbfa1ae5c7f2f483be66ca1db1bb0a2a;p=platform%2Fupstream%2Flibvorbis.git First merge of new psychoacoustics. Have some unused codebooks to remove yet, but we're otherwise OK. Tuning still has a little ways to go, but it's not too bad. Monty svn path=/trunk/vorbis/; revision=383 --- diff --git a/Makefile.in b/Makefile.in index b2fea18..203038a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ # vorbis makefile configured for use with gcc on any platform -# $Id: Makefile.in,v 1.5 2000/02/12 08:32:57 xiphmont Exp $ +# $Id: Makefile.in,v 1.6 2000/05/08 20:49:14 xiphmont Exp $ ############################################################################### # # @@ -17,7 +17,7 @@ @SET_MAKE@ -SUBDIRS = lib vq huff examples # cmdline xmms +SUBDIRS = lib examples # cmdline xmms vq huff all debug profile selftest target clean: @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $(MFLAGS) $@) || exit 1; done diff --git a/doc/masking.xcf b/doc/masking.xcf new file mode 100644 index 0000000..23541ed Binary files /dev/null and b/doc/masking.xcf differ diff --git a/examples/Makefile.in b/examples/Makefile.in index 46beac3..de522c2 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -1,6 +1,6 @@ # vorbis makefile configured for use with gcc on any platform -# $Id: Makefile.in,v 1.6 2000/04/03 09:51:07 xiphmont Exp $ +# $Id: Makefile.in,v 1.7 2000/05/08 20:49:42 xiphmont Exp $ ############################################################################### # # @@ -50,21 +50,21 @@ encoder_example.o: ../include/vorbis/modes.h encoder_example: $(OFILES) ../lib/libvorbis.a $(CC) $(CFLAGS) $(LDFLAGS) encoder_example.o ../lib/libvorbis.a -o \ - encoder_example -lm + encoder_example $(LIBS) decoder_example: $(OFILES) ../lib/libvorbis.a $(CC) $(CFLAGS) $(LDFLAGS) decoder_example.o ../lib/libvorbis.a -o \ - decoder_example -lm + decoder_example $(LIBS) chaining_example: $(OFILES) ../lib/libvorbis.a ../lib/vorbisfile.a $(CC) $(CFLAGS) $(LDFLAGS) chaining_example.o \ ../lib/vorbisfile.a ../lib/libvorbis.a \ - -o chaining_example -lm + -o chaining_example $(LIBS) seeking_test: $(OFILES) ../lib/libvorbis.a ../lib/vorbisfile.a $(CC) $(CFLAGS) $(LDFLAGS) seeking_test.o \ ../lib/vorbisfile.a ../lib/libvorbis.a \ - -o seeking_test -lm + -o seeking_test $(LIBS) $(OFILES): $(HFILES) diff --git a/examples/seeking_example.c b/examples/seeking_example.c index b9a2264..4a6f931 100644 --- a/examples/seeking_example.c +++ b/examples/seeking_example.c @@ -12,7 +12,7 @@ ******************************************************************** function: illustrate seeking, and test it too - last mod: $Id: seeking_example.c,v 1.1 2000/04/03 09:51:07 xiphmont Exp $ + last mod: $Id: seeking_example.c,v 1.2 2000/05/08 20:49:42 xiphmont Exp $ ********************************************************************/ diff --git a/include/vorbis/backends.h b/include/vorbis/backends.h index 9f2871b..dbd4ca0 100644 --- a/include/vorbis/backends.h +++ b/include/vorbis/backends.h @@ -13,7 +13,7 @@ function: libvorbis backend and mapping structures; needed for static mode headers - last mod: $Id: backends.h,v 1.7 2000/02/23 09:24:00 xiphmont Exp $ + last mod: $Id: backends.h,v 1.8 2000/05/08 20:49:42 xiphmont Exp $ ********************************************************************/ @@ -70,7 +70,7 @@ typedef struct{ int ampbits; int ampdB; - int stages; /* <= 16 */ + int numbooks; /* <= 16 */ int books[16]; } vorbis_info_floor0; @@ -94,11 +94,13 @@ typedef struct vorbis_info_residue0{ long end; /* first stage (lossless partitioning) */ - int grouping; /* group n vectors per partition */ - int partitions; /* possible codebooks ofr a partition */ - int groupbook; /* huffbook for partitioning */ - int secondstages[64]; /* expanded out to pointers in lookup */ - int booklist[256]; /* list of second stage books */ + int grouping; /* group n vectors per partition */ + int partitions; /* possible codebooks ofr a partition */ + int groupbook; /* huffbook for partitioning */ + + double ampmax[64]; /* book amp threshholds for *encode* */ + int secondstages[64]; /* expanded out to pointers in lookup */ + int booklist[256]; /* list of second stage books */ } vorbis_info_residue0; diff --git a/include/vorbis/book/lsp20_0.vqh b/include/vorbis/book/lsp20_0.vqh index 5b44418..35d0f12 100644 --- a/include/vorbis/book/lsp20_0.vqh +++ b/include/vorbis/book/lsp20_0.vqh @@ -11,7 +11,7 @@ * * ******************************************************************** - function: static codebook autogenerated by vq/vqbuild + function: static codebook autogenerated by vq/somethingorother ********************************************************************/ @@ -20,1304 +20,518 @@ #include "vorbis/codebook.h" static long _vq_quantlist_lsp20_0[] = { - 2, 12, 28, 41, - 52, 28, 34, 84, - 131, 71, 79, 28, - 69, 180, 84, 34, - 107, 98, 135, 99, - 52, 73, 32, 22, - 73, 43, 55, 22, - 64, 76, 77, 51, - 50, 56, 123, 213, - 99, 136, 64, 38, - 113, 28, 36, 28, - 29, 83, 103, 64, - 26, 61, 76, 18, - 84, 60, 43, 92, - 98, 61, 118, 96, - 173, 52, 52, 27, - 16, 31, 61, 86, - 154, 65, 115, 59, - 38, 69, 108, 23, - 111, 34, 49, 118, - 59, 42, 54, 30, - 46, 65, 77, 16, - 185, 139, 80, 53, - 61, 66, 93, 27, - 31, 29, 46, 72, - 87, 81, 43, 61, - 81, 21, 52, 143, - 46, 28, 86, 54, - 44, 101, 121, 97, - 76, 2, 21, 33, - 66, 39, 66, 178, - 29, 39, 79, 89, - 131, 28, 42, 71, - 117, 58, 75, 24, - 60, 30, 46, 83, - 102, 95, 35, 60, - 15, 41, 71, 127, - 186, 11, 22, 26, - 205, 103, 41, 42, - 48, 38, 33, 21, - 78, 20, 52, 49, - 103, 38, 84, 37, - 99, 151, 74, 92, - 40, 112, 51, 81, - 48, 48, 50, 27, - 194, 30, 28, 29, - 33, 43, 138, 44, - 60, 54, 83, 64, - 102, 96, 114, 95, - 35, 70, 71, 14, - 18, 38, 78, 42, - 23, 45, 111, 115, - 104, 122, 37, 25, - 96, 47, 138, 47, - 20, 55, 56, 28, - 39, 27, 63, 69, - 28, 44, 77, 171, - 66, 105, 26, 46, - 221, 112, 114, 123, - 11, 22, 57, 59, - 28, 24, 42, 66, - 145, 119, 85, 34, - 88, 110, 77, 38, - 121, 106, 67, 97, - 13, 28, 71, 47, - 70, 28, 59, 71, - 41, 54, 82, 139, - 77, 126, 78, 140, - 180, 34, 61, 113, - 6, 20, 42, 60, - 37, 115, 100, 27, - 53, 30, 69, 93, - 39, 70, 132, 25, - 107, 148, 80, 147, - 36, 37, 34, 20, - 58, 95, 36, 27, - 34, 49, 122, 137, - 74, 99, 64, 147, - 73, 114, 132, 62, - 69, 0, 14, 19, - 89, 29, 89, 179, - 31, 51, 149, 72, - 162, 254, 108, 76, - 77, 11, 27, 25, - 141, 63, 50, 40, - 55, 46, 62, 110, - 30, 98, 98, 96, - 90, 152, 216, 134, - 50, 14, 15, 28, - 100, 23, 56, 38, - 115, 106, 33, 83, - 63, 67, 141, 223, - 116, 219, 66, 42, - 66, 11, 23, 41, - 97, 39, 40, 22, - 138, 111, 38, 28, - 87, 111, 178, 153, - 63, 87, 243, 191, - 97, 92, 99, 80, - 75, 75, 81, 65, - 89, 34, 135, 101, - 121, 47, 57, 26, - 24, 34, 29, 28, - 133, 66, 71, 171, - 53, 123, 64, 78, - 109, 66, 54, 98, - 119, 32, 80, 125, - 36, 15, 23, 33, - 58, 149, 53, 25, - 35, 113, 75, 19, - 129, 58, 62, 135, - 113, 92, 119, 26, - 57, 56, 30, 23, - 33, 52, 105, 206, - 36, 40, 65, 137, - 62, 73, 198, 192, - 75, 54, 53, 47, - 64, 36, 34, 19, - 28, 31, 113, 86, - 21, 44, 91, 207, - 29, 71, 86, 23, - 117, 179, 56, 73, - 98, 22, 41, 31, - 123, 182, 26, 24, - 250, 141, 48, 47, - 83, 10, 53, 108, - 82, 72, 48, 28, - 18, 21, 44, 46, - 73, 200, 107, 29, - 196, 105, 54, 130, - 100, 23, 76, 63, - 124, 37, 41, 35, - 24, 27, 46, 42, - 175, 69, 58, 41, - 76, 165, 143, 106, - 78, 97, 90, 73, - 35, 101, 49, 58, - 3, 11, 28, 41, - 164, 89, 55, 126, - 92, 61, 181, 96, - 71, 80, 117, 29, - 54, 69, 55, 41, - 25, 13, 27, 32, - 59, 11, 19, 33, - 60, 142, 193, 45, - 103, 90, 40, 30, - 107, 72, 16, 33, - 100, 107, 159, 32, - 49, 23, 26, 51, - 130, 119, 146, 51, - 90, 79, 49, 24, - 133, 56, 21, 40, - 87, 18, 106, 63, - 45, 33, 50, 31, - 101, 211, 186, 71, - 32, 84, 41, 17, - 31, 69, 53, 82, - 33, 60, 172, 73, - 63, 29, 40, 36, - 149, 164, 104, 131, - 32, 65, 52, 51, - 40, 95, 40, 25, - 62, 49, 94, 123, - 77, 8, 28, 63, - 56, 103, 125, 110, - 87, 16, 75, 85, - 113, 37, 43, 30, - 148, 65, 133, 111, - 78, 3, 26, 44, - 66, 121, 132, 143, - 102, 41, 59, 40, - 150, 36, 37, 81, - 88, 22, 84, 114, - 85, 12, 41, 36, - 51, 98, 206, 49, - 94, 50, 44, 33, - 153, 51, 33, 32, - 144, 64, 81, 59, - 89, 21, 54, 46, - 42, 69, 197, 77, - 53, 50, 95, 25, - 182, 28, 39, 86, - 65, 42, 124, 64, - 82, 9, 34, 33, - 145, 233, 91, 48, - 39, 145, 105, 30, - 196, 61, 110, 61, - 44, 18, 28, 42, - 68, 38, 34, 40, - 99, 191, 147, 48, - 49, 84, 168, 32, - 159, 95, 139, 127, - 73, 2, 18, 27, - 82, 6, 36, 73, - 38, 63, 153, 138, - 198, 62, 60, 51, - 119, 33, 81, 59, - 62, 18, 34, 44, - 39, 35, 46, 118, - 48, 80, 173, 132, - 213, 48, 29, 28, - 71, 68, 100, 29, - 35, 30, 48, 38, - 75, 71, 19, 17, - 59, 150, 72, 81, - 136, 125, 56, 42, - 29, 70, 79, 87, - 18, 60, 108, 39, - 113, 24, 21, 21, - 60, 165, 116, 80, - 64, 189, 45, 16, - 51, 56, 60, 36, - 58, 69, 121, 86, - 78, 44, 33, 32, - 44, 134, 157, 23, - 167, 150, 61, 30, - 44, 36, 57, 42, - 99, 82, 121, 23, - 94, 16, 35, 41, - 36, 82, 155, 24, - 254, 86, 44, 35, - 35, 63, 32, 29, - 95, 25, 119, 83, - 137, 26, 20, 21, - 89, 49, 124, 160, - 57, 126, 46, 30, - 23, 36, 64, 87, - 100, 26, 122, 36, - 161, 19, 19, 22, - 52, 60, 110, 144, - 70, 88, 45, 125, - 7, 28, 50, 95, - 55, 36, 103, 96, - 87, 32, 33, 16, - 56, 87, 240, 94, - 38, 84, 80, 18, - 60, 61, 31, 53, - 93, 51, 170, 59, - 89, 18, 28, 21, - 71, 136, 254, 63, - 71, 51, 84, 27, - 75, 62, 45, 24, - 137, 41, 130, 78, - 95, 15, 57, 70, - 7, 34, 54, 132, - 250, 44, 35, 37, - 82, 50, 31, 46, - 133, 40, 97, 66, - 57, 39, 85, 59, - 11, 36, 65, 187, - 95, 64, 17, 29, - 109, 31, 35, 72, - 110, 61, 98, 25, - 85, 7, 42, 90, - 70, 56, 35, 87, - 15, 36, 99, 60, + 127, + 128, + 129, + 127, + 126, + 98, + 129, + 118, + 136, + 129, + 137, + 128, + 137, + 94, + 128, + 118, + 136, + 132, + 141, + 130, + 126, + 105, + 130, + 120, + 128, + 130, + 130, + 127, + 131, + 129, + 142, + 128, + 132, + 128, + 135, + 127, + 130, + 129, + 132, + 128, + 132, + 130, + 142, + 131, + 128, + 126, + 140, + 130, + 135, + 128, + 134, + 127, + 140, + 132, + 143, + 130, + 143, + 120, + 149, + 112, + 131, + 127, + 139, + 131, + 145, + 134, + 143, + 129, + 133, + 133, + 148, + 129, + 142, + 126, + 133, + 123, + 144, + 131, + 152, + 135, + 139, + 124, + 133, + 120, + 142, + 95, + 128, + 119, + 145, + 131, + 137, + 126, + 129, + 110, + 131, + 121, + 147, + 100, + 130, + 122, + 131, + 133, + 135, + 127, + 134, + 132, + 143, + 124, + 138, + 119, + 148, + 115, + 143, + 107, + 131, + 126, + 130, + 130, + 145, + 138, + 136, + 115, + 134, + 108, + 139, + 104, + 131, + 123, + 126, + 125, + 137, + 131, + 140, + 129, + 137, + 127, + 145, + 126, + 155, + 116, + 135, + 113, + 130, + 105, + 127, + 123, + 129, + 125, + 127, + 126, + 143, + 137, + 143, + 122, + 153, + 114, + 149, + 125, + 149, + 109, + 136, + 118, + 136, + 111, + 151, + 130, + 153, + 112, + 132, + 110, + 127, + 102, + 154, + 97, + 130, + 121, + 146, + 126, + 138, + 119, + 154, + 102, + 131, + 123, + 150, + 137, + 153, + 127, + 141, + 119, + 138, + 106, + 137, + 121, + 132, + 122, + 167, + 96, + 130, + 120, + 133, + 119, + 145, + 114, + 152, + 92, + 128, + 117, + 136, + 132, + 149, + 137, + 144, + 121, + 142, + 107, + 151, + 109, + 132, + 128, + 162, + 107, + 132, + 126, + 131, + 106, + 160, + 126, + 124, + 112, + 145, + 130, + 141, + 106, + 162, + 130, + 165, + 91, + 129, + 117, + 149, + 111, + 157, + 138, + 128, + 139, + 136, + 132, + 178, + 95, + 133, + 122, + 254, + 0, + 136, + 87, }; static long _vq_lengthlist_lsp20_0[] = { - 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, + 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9,10,10, }; static long _vq_ptr0_lsp20_0[] = { -1, -2, -3, -4, -5, -6, -7, -8, - -9, -10, -11, -12, -13, 2, 95, -16, - 90, -18, -19, 9, 160, 74, -23, -13, - 93, 111, 111, -28, -29, 2, 52, -32, - 52, 84, -35, 84, -37, -38, -39, -40, - -41, -42, 15, -44, 133, -14, -24, 133, - 133, 181, -51, 45, -53, -54, 15, 84, - -57, 84, 52, 90, -61, -62, 98, 93, - -65, 68, 177, -68, -69, 14, -71, 110, - 242, -74, -75, -76, 98, 177, -63, 110, - -81, -82, -83, -84, 105, 106, -87, 90, - 110, 187, -91, -85, 148, 171, -77, 74, - 181, 177, -99, 217, 247, -102, -103, -104, - -105, 104, 62, -108, 35, 62, -111, 104, - 140, -114, -115, -116, -117, 53, -119, -84, - -95, -122, -123, -124, 35, -126, 62, 105, - 135, -130, -106, 39, -133, 90, 62, 106, - -87, -131, 98, -140, -141, -142, -143, -144, - -145, 9, -147, 52, 62, -150, 52, 62, - -153, -154, -155, -156, 62, 204, 185, -137, - -161, 108, 185, -159, -165, -166, -167, 9, - -163, 62, 90, -172, 98, -174, 9, 107, - -150, 102, -177, -180, -181, -182, -183, 25, - -185, 35, 84, 105, 171, -190, -191, -192, - 19, 99, 172, -196, -197, -198, 99, 105, - -201, 104, 143, 105, -205, -206, -207, 19, - 106, 105, 19, 196, -213, 19, 88, -216, - -217, -218, 52, -124, -214, -222, 70, -224, - 108, -226, -227, 99, -229, -230, 104, -220, - -233, -234, -235, -236, -237, -238, 33, -21, - 35, 35, 99, 35, -245, -246, 25, 35, - 145, -250, -251, 35, 52, -254, -255, -256, - 70, -258, -259, 99, 201, -262, 140, -239, - -265, 222, -267, 41, 196, 53, -238, 132, - 196, -274, -275, -276, 19, -183, 102, 32, - 35, -282, -283, 33, -285, 101, 145, -288, - 32, -290, 41, -292, 33, 101, -295, -296, - -297, 37, 151, 32, 101, -21, 145, -304, - 37, -306, 45, 171, 151, -310, -311, -312, - -313, 76, -315, -316, 30, 162, 80, -320, - -321, 157, 194, 76, -325, -326, 8, 113, - 194, -318, 60, 113, -333, -334, -335, -336, - -337, 77, 194, -340, 77, -330, -343, -344, - -345, 28, -341, -348, 80, -350, -351, 162, - 229, -354, 212, -356, -357, 28, 157, -321, - -346, -362, -363, 28, 143, -366, 86, 79, - 182, -370, 86, 162, -373, -374, -375, -376, - 19, -378, -379, 162, 182, -367, -383, -384, - 80, 106, 105, -388, 100, 39, -391, -392, - -393, -394, -395, -396, 70, 104, -399, 99, - 86, 83, -403, -404, 104, 39, -407, 135, - 29, -410, -411, 86, 99, -414, -415, 70, - -417, 140, 212, -420, -421, -422, 99, -417, - -408, 182, -427, -428, 99, 182, 212, -432, - -433, 53, 135, -259, -424, -436, -439, -440, - -441, -442, 28, 157, -445, -370, -437, -448, - -449, 157, 190, 190, -453, 185, 107, -456, - -457, -458, 53, -460, 100, -462, 157, -464, - -465, -466, -467, -468, 14, -470, 28, 77, - -473, -474, -475, 14, 100, 77, -479, -480, - 28, -482, 164, -484, 174, -486, -487, 8, - 194, -490, 8, 80, -493, -494, 100, -496, - -497, 179, 194, -500, -501, -502, -503, -504, - -505, -506, 14, 100, -509, -510, -442, -454, - 102, -512, -515, -516, -517, -518, -519, 14, - 53, 53, 100, 106, -525, -526, 14, 237, - -529, -530, 77, -513, 0, -534, -535, -536, - 78, 98, -539, 14, -541, -337, -532, 69, - -545, -546, 78, -548, -172, -543, 135, 135, - -553, -554, -555, 28, 185, 190, 164, 104, - -561, -562, -563, 185, -565, 111, -567, -568, - -569, -570, -571, -572, -573, 42, 121, -576, - -577, 17, -579, 61, -581, -582, 61, 128, - -585, -586, -587, 4, 128, -590, -591, 42, - -593, 121, 149, -596, 73, 129, 73, 167, - -601, -602, -603, -604, -605, -606, 38, 138, - -609, 129, -549, -612, -613, -614, 38, 220, - 195, -618, 186, -609, 127, 123, -623, -624, - -625, -626, 61, 102, -629, 121, 60, -632, - -633, -634, 17, 138, 64, -638, -639, 61, - 186, 59, -643, -644, 38, 138, 195, -648, - 68, -650, 133, -616, -641, 200, -655, -656, - -657, -658, -659, -660, -661, 22, 92, -664, - -665, 92, 149, -588, -652, -670, -671, 73, - -673, 121, -668, -594, -674, -678, -679, -680, - -681, -682, 22, 215, -676, -686, 129, -688, - -689, 73, -684, 149, 167, 186, -695, -696, - -697, -698, 22, -665, 183, 159, -703, -704, - 58, 129, -707, -708, 22, 159, -705, 117, - 168, -714, -715, -682, -712, 124, 92, -720, - -721, -722, -723, 58, 124, -726, 82, 83, - 159, -726, -727, -732, 92, -734, -735, 154, - 184, -701, -730, -738, -741, -742, -743, -744, - -671, 163, 134, 149, -749, 96, -751, 128, - -746, 158, 144, -756, -757, -758, 87, 189, - -761, 154, 183, -764, 87, -762, -767, -768, - 73, -770, -771, -772, 87, 97, -775, 96, - -777, 96, 191, -768, -765, -782, -783, -784, - 134, 189, -666, 153, -787, -790, -791, -792, - -793, -794, -795, -796, -797, -798, 3, -800, - 9, 123, 123, 111, -805, -806, 3, 63, - 61, 117, -811, -812, 9, 98, 9, -47, - -809, 123, 95, -820, -821, -822, -823, 3, - 42, 42, 42, -816, -829, -830, -831, -832, - -833, 3, 78, 204, -837, 78, -839, 3, - 3, -842, -843, -844, -845, -506, 153, -848, - -849, 48, 78, 98, 39, -526, -852, -856, - 103, 110, -859, -860, -861, 67, -863, -539, - -131, -866, 67, 98, 77, 77, 103, -872, - -873, -874, -573, -864, -877, 63, -648, -875, - 103, -882, -883, -884, 42, -886, 17, 48, - -577, 93, 42, -892, -893, 17, -895, -896, - -897, -898, 17, 63, -901, -902, 63, 83, - 90, -906, -907, 17, -909, -910, 17, 133, - 17, -914, -915, -916, 48, 111, -919, -920, - -899, 39, -921, 98, -925, -926, -927, -928, - -929, -930, -931, -932, 4, 139, 67, 103, - -937, -938, -939, 73, -922, 134, -943, 96, - -932, -940, -947, -948, -949, 4, 147, -884, - 148, 128, -955, -956, -957, 4, 144, -960, - 134, 1, -963, -958, 216, 174, -950, -787, - -969, -970, 73, -972, 103, 167, 138, -976, - 144, -978, -979, -777, 160, 234, -773, -980, - 54, 97, 115, -988, -989, -990, 91, -992, - 139, 169, -995, -996, -986, 64, 169, 199, - -1001, -992, 60, -1002, -1005, -1006, 139, 169, - -1007, -1003, -1011, 144, 174, -1014, -1015, -1016, - -1017, -1018, -1019, 42, 48, 67, 14, -1024, - 48, 50, -1027, -1028, -1029, 48, 103, 139, - 14, 139, 153, -1036, -1037, 67, 169, -1040, - -1041, -1042, -1043, -1044, 78, 174, 147, -1048, - -1049, -837, 24, 209, 174, -1050, 153, -1056, - -1057, 139, 174, -984, -1061, -1062, -1063, -490, - 50, 91, 77, 103, -1069, -1070, 91, -1021, - 24, -1074, -934, -1072, 164, -1075, -1079, 139, - -1081, 164, 199, 194, -1085, -1086, -1087, -992, - 54, 164, 156, 12, -1091, -1094, 174, -1096, - -1089, -1092, -1097, -1100, -1101, -1102, -1103, -1104, - -1105, -1106, -1107, -1108, -1109, 11, 206, -1112, - 46, 18, -1098, 46, 51, 81, -1119, -1120, - 18, 136, 47, -1124, -1125, -1126, -1127, 47, - 152, 152, -1131, 85, 165, -1134, -1135, -1136, - 18, 47, 206, -1140, 46, -1142, -1143, -1137, - 244, 85, -1131, 36, -1147, -1150, -1151, -1152, - -1153, -1154, -1155, 31, 114, 114, -1159, -1160, - 71, 136, 156, -1164, -1165, 36, -1167, -1168, - -1169, 51, 118, -1172, 85, -1174, -1175, -1176, - 71, -1148, 71, -1157, -1177, 36, -1183, -1176, - -1181, -1186, -1187, 46, 206, -1190, -1191, 118, - 198, 118, -1195, -1196, -1197, -1198, -1199, 51, - 66, -1202, -1203, -1204, -1205, 30, -1207, -1208, - 56, 76, -1211, 66, -1213, 30, -1215, -1216, - 51, 56, 114, -1220, 51, 81, 66, 36, - -1225, -1226, -1227, -1228, -1229, -1230, 26, -1232, - 30, 66, -1235, -1236, -1237, 30, 66, 30, - 172, -1242, -1243, 26, 165, -1246, -1247, 51, - 182, -1250, -1251, 66, 85, -1254, -1255, -1256, - -1257, -1258, -1259, -1260, -1261, 7, -1263, 11, - -1265, 43, -1267, 43, -1269, -1270, -1271, -1272, - 7, -1223, 70, -1274, 31, 109, 70, 99, - -1281, -1282, -1283, 11, -1285, 18, 109, -1288, - -1289, -1290, 23, 47, -1293, -1294, -1295, 23, - 72, 72, -1299, -1300, -1301, -1302, -1303, 13, - 43, -1276, -1307, -1308, -1309, 13, -1311, -1312, - 7, -1305, -1315, -1316, -1317, 13, 130, 13, - -1313, -1322, -1323, -1324, 7, 43, -1327, -1328, - 25, -1330, -1331, -1272, -1320, -1334, 152, -1279, - 60, -1338, -267, -1336, 24, 152, -1343, -1344, - -1345, -1346, -1347, -1348, 11, -1350, 43, -1340, - 86, -1354, 86, 81, 76, 64, -1359, -1360, - -1361, -1362, -1363, 11, -1365, 81, 70, -415, - 231, -1370, -1371, 72, 16, -1374, 81, -1372, - -1377, -1378, 66, 76, -1381, 30, 66, -351, - -1375, 81, -1387, -1388, -1128, -1384, 50, -1392, - -1393, 162, 24, -1396, 172, -1398, -1399, -1400, - -1401, -1402, -1403, -1404, 75, 175, 116, -1408, - -1409, -1410, -1411, 89, 175, 241, -1415, -1416, - -1417, 94, 241, -1420, 175, -1394, -1417, 55, - 246, -1426, 203, -1428, -1429, -1430, -1431, 10, - 208, 208, -1435, -1417, 1, -1436, 122, -1440, - 89, 94, -1443, -1444, -1445, -1446, -1447, 6, - 255, 6, 213, -1452, 122, 178, -1455, -1452, - 160, -1458, -1459, -1460, 6, 50, -1426, -1461, - -1465, 161, 255, -1468, -1469, -1470, -1471, 6, - 141, -1192, 254, -1476, 75, 116, -1479, 161, - -1460, -1372, 236, 254, -1485, 65, -1487, 178, - -1489, -1490, -1491, -1492, -1493, 254, 116, 165, - -1497, 65, -1499, 125, -1481, -1502, -1503, 65, - 243, -1506, 178, -1508, -1509, -1510, 89, 178, - 55, 254, -1515, -1516, 116, -1518, -1519, -1520, - -1521, 18, -1523, 75, -1525, 109, -1512, -1528, - -1477, -1526, 141, 180, -1533, -1476, -1529, 136, - -1537, 141, 235, 136, -1541, 6, -1543, -1544, - 18, 180, -1547, -1548, -1549, 21, -1534, -1552, - 141, -1554, 120, -1550, -1557, 120, -1559, -1121, - -1555, 161, -1552, 193, -1563, -1566, -1567, -1568, - -1569, 254, 116, 141, 40, -1137, -1572, 136, - 165, 240, -1574, -1580, -1581, -1582, 254, 141, - 65, -1586, -1587, 21, -1589, -1590, -1591, 141, - 211, 156, -1595, 120, -1597, -1598, -1599, 120, - -1601, 27, 120, -1604, 27, 65, -1607, -1608, - -1609, 254, 156, -1612, -1613, -1605, 125, 65, - -1617, 71, 65, -1617, 34, 125, -1623, -1624, - -1625, -1626, -1627, 13, 19, -1630, -1631, 32, - 130, 170, -1635, 25, 150, -1638, 32, 41, - -1641, -1642, -1643, 25, 146, -1646, -1647, -1648, - 25, -1650, 101, 145, 57, -1654, -1655, -1656, - -1657, 32, -285, -1620, -1661, -1662, -1663, 131, - -1659, 40, -1667, 146, -1665, 101, -1671, -1672, - -1673, 57, 146, -1676, 126, 166, -1679, -1680, - -1681, -1682, -1683, -1684, 10, 89, 166, -1688, - 89, -1690, 170, 166, -1693, -1694, -1667, 34, - 166, -1698, 175, -1700, -1701, -1702, -1703, -1704, - -1705, 7, -1695, -1708, 13, -1706, -1711, -1328, - -1709, 150, -1715, 57, 27, -1718, -1719, -1715, - -1716, 20, 75, -1724, 7, -1721, -1727, -1728, - 23, -1730, 13, -1732, -1733, 7, -1735, 25, - 41, 7, 150, -1740, -1741, -1742, -1733, -1725, - 23, 13, -1639, -1743, 130, 170, -1751, -1752, - -1753, 23, 126, -1756, -1757, 126, -1747, -1760, - -1761, -1762, -1763, 13, 254, -1766, -1767, 254, - -1769, -1753, 31, 47, -1773, -1774, 47, 130, - -1777, -1778, -1764, -1770, 130, -1782, -1783, 130, - 165, 243, -1787, 254, -1789, -1790, -1791, 89, - -1793, -1794, 116, -1633, -1779, -1798, -1799, 116, - 89, -1802, -1803, -1804, -1805, -1806, -1807, -1808, - -1809, -1810, 12, -1812, 20, -1814, 49, -1721, - 114, 49, -1819, -1820, -1821, 5, 155, -1824, - -1810, 31, -1825, -1828, 44, -1826, -1831, -1821, - -1829, 112, 20, -1836, -1837, -1838, 112, 31, - -1841, -1842, 44, 158, 112, -1846, 12, -1848, - 20, -1839, -1851, 6, -1853, 5, 31, -1856, - -1857, -1587, 27, -1858, 49, 155, 161, -1864, - -1865, -1866, 163, 173, -1869, -1870, 20, 188, - 213, -1874, -1875, -1876, -1877, 40, -1879, -1880, - 173, 218, -1883, -1884, -1885, 117, -1887, 83, - 183, -1890, 158, 163, 173, -1894, -1895, 112, - -1859, 233, -1899, -1900, 117, 173, 158, -1904, - -1867, -1896, 156, 188, -1909, -1910, -1911, -1912, - -1913, -1914, 5, 6, -1917, -1918, 6, 20, - -1921, 188, 213, -1924, 161, 5, 211, 20, - -1929, -1930, 5, 112, -1933, 6, -1935, 203, - 71, -1938, -1939, -1940, -1941, 122, -1825, 208, - -1933, -1942, -1935, 71, -1872, 34, -1949, -1952, - -1953, -1918, 27, 40, -1954, -1958, -1959, -1960, - -1961, -1962, 1, -1964, 55, -1966, 34, -1968, - -1969, -1810, -1956, 27, -1973, -1974, 120, -1716, - -1970, 120, 1, -1980, 27, -1978, -1716, -1981, - -1090, + -9, 13, 52, -12, 34, -14, -15, -16, + 16, 31, -19, 34, -21, -22, 19, 23, + -25, 16, 22, -28, -29, 16, 46, -32, + 19, -23, -35, -36, 55, -38, 16, 22, + 39, -42, -43, -44, -45, -46, -47, 17, + 4, 38, -51, 4, 61, -54, -55, -56, + -57, -58, 13, 56, -61, 17, 28, 52, + -62, -66, -47, 36, 34, -70, -47, 30, + -73, 4, 38, -76, -61, -71, 29, 4, + -81, -39, 47, 38, -85, 34, -82, -88, + -89, -90, -91, -92, -93, 14, -95, 44, + -97, 2, 18, -100, 44, -102, -103, -104, + 4, 26, 31, 30, -109, -110, -111, -112, + 44, -107, -115, 44, -117, 14, 28, -112, + -118, -120, -123, -124, 55, 22, -127, -128, + -129, -130, 54, 18, -131, 30, -135, -136, + 14, 18, 27, -140, -141, -142, 14, -144, + 44, 18, 18, -148, -149, 55, -151, 62, + -153, -154, -155, -156, -157, -158, -159, 14, + 24, -162, -163, -164, 2, 26, -167, 61, + -160, -164, -168, 33, -173, 14, -170, 31, + 18, -178, -179, -180, -181, -182, -183, 17, + -51, -175, 24, -188, -189, 4, 61, -192, + -193, 4, 29, -167, -186, 30, 29, 4, + 58, -165, -197, -202, -205, 17, 23, -208, + -209, -210, -211, 61, 25, -214, -215, 15, + -167, -206, -219, 7, -221, -222, -223, 2, + 26, -226, -164, 31, 7, -167, -197, 23, + -233, 61, -235, 25, 27, -238, 7, 15, + -241, -219, -231, -194, -242, 37, -247, 29, + 37, -250, -251, -252, 54, -254, -255, 14, + -244, -258, -145, -256, -259, -262, 20, -260, + -265, 54, 49, -268, -269, -270, -271, 12, + -273, 25, -275, -223, 45, -276, -277, -280, + -281, 2, 18, 24, -285, -286, -287, 12, + 27, -290, 25, 51, -293, 20, -295, -296, + -297, -298, -299, -300, -301, 15, 8, 37, + 43, -290, -304, 2, -306, -310, 27, -312, + 14, 27, 7, 56, -308, -318, -319, -320, + -321, 45, 28, -82, -316, 48, 28, -328, + -329, -326, -324, -67, -291, 50, -335, -336, + -337, -326, 35, -340, 48, 40, 50, 21, + -345, -346, -347, 6, -349, 50, -343, -339, + 47, -350, -353, -349, 21, -358, -359, 32, + -356, 48, -363, -364, 28, 42, -367, -368, + -359, -365, -369, -372, 50, 5, -375, -376, + -377, 15, -379, 37, -381, 8, -383, -310, + 3, 56, -387, 50, -384, -390, -391, -392, + 32, 9, -387, 42, -395, 28, -399, -392, + -396, 1, 42, -404, -405, -406, -407, -408, + 54, -402, -411, 45, -409, 45, -415, -416, + -417, -418, -130, -412, 47, -138, -419, -422, + -130, 50, -287, 8, -427, -430, -408, 20, + -433, -431, -431, -434, -352, }; static long _vq_ptr1_lsp20_0[] = { - -1099, -566, -309, -179, -101, -60, -36, -31, - -27, -22, -17, -15, -14, 177, 177, 95, - 177, -15, 95, 177, -1592, 187, -26, -25, - 148, 177, 217, 217, -30, 252, 252, -34, - -33, 252, 90, 171, -52, -50, -48, -45, - -43, 181, 177, 177, 181, -47, -21, 177, - -49, 200, 181, 200, -58, -56, -55, 181, - 171, 176, -59, 95, -80, -64, -26, 143, - -67, -66, 242, -73, -70, 110, -72, 247, - 247, -79, -66, -77, 247, 247, -46, 177, - -97, -90, -86, -85, 247, 247, -88, 110, - -77, 202, -94, -93, 202, 247, -96, 202, - 247, -98, -100, 252, 252, -139, -113, -110, - -107, -106, 135, -109, 108, 108, -112, 135, - 185, -135, -121, -118, 135, 247, 106, 135, - -92, -129, -125, 105, 252, -127, 252, -128, - 252, -134, -132, 202, 105, 135, 247, -136, - -138, 148, 110, -164, -152, -149, -148, -146, - 62, 210, 62, 210, 204, -151, 90, 90, - -112, -160, -158, -157, 210, 210, -157, -120, - -162, 210, 210, -89, -176, -171, -169, -106, - -78, -170, 98, -173, 217, -26, 217, 187, - -126, 187, -175, -273, -215, -189, -184, 196, - -186, 105, -187, -188, 196, -204, -195, -193, - 172, -194, 222, -203, -200, -199, 230, 230, - -199, 230, 187, 222, -212, -210, -209, -208, - 222, 106, -211, 222, -188, 196, 187, -253, - -232, -221, -219, 108, -202, -225, -223, 140, - 225, -228, 140, 225, -224, 140, 225, -178, - -249, -244, -243, -241, -240, -124, 252, -177, - 196, -242, 196, 52, -247, 35, 99, -248, - 225, 171, -252, 84, 84, -264, 252, -257, - 201, -261, -260, 227, 227, -260, 227, -231, - -269, -266, -268, 227, 227, -270, -272, 187, - 252, -294, -281, -280, -277, -279, -271, 196, - 145, -287, -284, 145, -286, 151, 151, -289, - 101, -291, 196, -293, 196, 196, -302, -299, - -298, 228, 228, -300, -286, -278, -303, -305, - 45, -307, 176, -308, 176, -463, -390, -332, - -319, -314, -318, -317, 229, 229, 229, -324, - -322, 229, -323, 229, -328, -327, 194, 194, - -329, -331, 187, 229, -372, -355, -342, -338, - 100, 135, -339, -318, 229, -301, -347, -340, - 229, 212, -263, -349, 230, -353, -352, 230, - 230, 230, 229, -368, -359, -358, 194, -361, - -168, -365, -354, 229, 192, -354, 229, 192, - -369, -371, 212, 212, -382, -377, 80, 222, - 230, -194, -380, 222, 222, -364, -386, -385, - 222, 230, -387, -208, 222, -381, -438, -409, - -402, -400, -398, -397, 140, 140, 104, 140, - -201, 93, -406, -112, 185, -401, -112, 185, - 83, -419, -413, -412, 212, 201, -416, 219, - -418, 219, 219, -431, -426, -423, 182, -425, - 168, 219, -429, 212, 222, -430, 222, -434, - 135, 222, -435, -262, -405, -389, -455, -452, - -444, -443, 190, 190, -447, 219, -360, -451, - -450, 219, 219, 212, -450, 219, 127, -461, - -459, 190, 212, 212, 190, 219, 212, -499, - -485, -478, -472, -469, 77, -471, 164, 164, - -477, 110, -476, 224, 224, 224, -481, 179, - 100, -483, 237, 237, 179, -492, -489, -488, - 229, -491, 224, 224, -495, 224, 194, -498, - 224, 199, 199, -552, -533, -514, -508, 77, - 164, -507, 237, 237, -471, 164, -460, 142, - 142, 127, -528, -524, -522, -521, -520, 135, - 135, 100, -523, 110, 110, -527, 242, 242, - -111, -523, 110, -511, 137, -540, -538, -537, - 164, 164, 237, 98, -544, -138, 142, 142, - -547, 204, 217, -551, -550, -542, 217, 204, - -559, -558, -556, 185, -557, 214, 214, -560, - 210, -564, 217, 204, 214, 204, -789, -654, - -600, -584, -580, -575, -574, 138, 123, -578, - 138, 61, 121, 149, -583, 149, 147, 147, - -592, -589, -588, 42, 149, 73, 128, 121, - -595, -594, 186, -598, -597, 138, -599, 186, - -642, -622, -619, -611, -608, -607, 186, 186, - -607, 186, -531, -617, -616, -615, 245, 245, - 245, 195, 220, -621, 132, 215, -631, 186, - -628, -621, 215, -620, -621, 215, 132, -637, - -607, -635, 195, 195, 132, -607, -640, 195, - 195, 132, -647, -645, 123, -646, 205, -649, - 138, -651, 200, -653, -636, 245, -740, -694, - -677, -669, -663, 189, -662, 215, 215, -667, - -666, 189, 189, 189, 231, -675, -672, 149, - -588, 149, -630, 215, -627, -687, -685, 191, - -618, -683, 220, 220, -610, 186, 220, -691, - -599, 129, -446, -692, -693, 191, -719, -713, - -702, -699, 92, -701, 197, 189, -706, -705, - 191, 191, -710, -709, 191, 191, -709, -700, - 197, -718, -717, 129, 183, 220, 129, -729, - -728, -725, -724, 184, 184, -724, 184, 197, - 184, -731, 183, -733, 184, -737, -736, 189, - 189, -736, -716, -711, -755, -750, -748, -747, - -746, 197, 149, 167, 134, 167, -752, 144, - -754, 197, 149, -766, -763, -760, -759, 239, - -759, 239, -753, -701, 134, -745, -779, -769, - 191, -776, -774, -773, 239, 239, 239, 97, - -778, 239, 239, -781, -739, -759, -786, -785, - 191, 191, 191, 221, 158, -924, -841, -819, - -815, -810, -804, -803, -799, 123, 210, -802, - -801, 210, 205, 205, -808, -807, 42, 205, - -803, 221, -813, 63, 111, -814, 204, -817, - -788, -818, 205, -828, -826, -825, -824, 209, - 209, 128, -582, -780, -840, -838, -836, -835, - -834, 204, 204, 209, 204, 214, 147, 214, - 111, -871, -858, -853, -847, 242, 197, -851, - -850, 98, 98, -527, 197, -855, -846, -857, - 242, 242, -869, -862, 164, 78, -865, 77, - -92, -868, -867, 204, 204, -870, 110, -894, - -881, -878, -876, -854, 67, 138, -880, -787, - 138, -891, -888, -885, 147, -887, 147, 147, - -890, 197, 63, 242, 68, 63, -913, -904, - -900, -899, 242, 242, 242, -25, 177, -889, - -905, -908, 177, 68, -912, -911, 205, 205, - 177, -918, 147, -917, 242, 242, 90, -923, - -857, 83, -903, 242, -1013, -975, -968, -946, - -936, -935, -934, -933, 169, 169, 169, 169, - -944, -942, -941, -932, -879, 169, 169, 134, - 144, -827, -954, 73, -951, -950, 209, -953, - 197, 209, -962, -959, -958, 209, 209, -958, - 209, -952, -966, -965, 221, 209, 174, -964, - -971, 167, 96, -974, -973, 242, 167, -987, - -977, -985, -982, -981, -967, 239, -981, -961, - 202, -986, 234, -1004, -994, -991, 199, -993, - 199, 199, -1000, -999, -998, -984, 234, 234, - -999, 169, 202, -92, -1008, -1007, 174, 174, - -1010, -997, -1012, 234, 234, -1060, -1035, -1026, - -1022, -1021, -1020, 67, 67, 103, -1023, -934, - 209, 216, -1032, -1030, 147, 139, -1031, 242, - -1033, -527, -1025, -1039, -1038, 164, 209, -1055, - -1047, -1046, -1045, 214, 237, 214, 174, -558, - -1052, -1051, 216, 214, -1051, -1034, 202, -482, - -1058, 237, 237, -1054, -1083, -1068, -1066, -1065, - -1059, 224, -1067, 224, -1073, -1071, 169, 224, - 202, -1078, -1076, -1064, -993, -1053, -1080, 224, - -1082, 224, 224, -1084, -1093, -1080, 237, -1089, - 216, 199, 160, -1088, -1077, -1095, 199, 237, - -497, -1009, -983, -1801, -1397, -1253, -1194, -1149, - -1118, -1115, -1113, -1111, -1110, 232, 232, 232, - 206, -1112, -945, -1116, -1117, 232, -1123, -1122, - -1121, 235, 136, -1133, -1130, -1129, -1128, 232, - 232, 165, -1132, 232, 232, -1141, -1139, -1138, - -1137, 248, 248, 248, 47, -1146, -1145, 232, - 249, 248, -1110, 249, -1144, -1163, -1161, -1158, - -1157, -1156, 156, 71, 156, 206, 114, 125, - 85, -1162, 207, -1182, -1166, 118, -1173, -1171, - -1170, 206, 206, 232, 206, -1179, -1178, -1172, - 206, 198, 114, -1170, 118, 255, -1185, 248, - 226, -1189, -1188, 207, 207, -1193, -1138, 248, - 226, 207, -1224, -1219, -1214, -1201, -1200, 76, - 76, -1212, -1206, 76, 66, 119, -1210, -1209, - 119, 119, 76, 119, 119, 113, -1218, -1217, - 114, 114, 249, -1222, -1221, 157, -1117, 226, - -1245, -1241, -1234, -1233, -1231, 66, 56, 66, - 56, 232, -1240, -1239, -1238, 162, 162, 172, - 232, 125, -1244, 172, 172, -1249, -1248, 66, - 232, 125, -1252, 114, 114, -1342, -1298, -1280, - -1268, -1266, -1264, -1262, 47, 43, 47, 43, - 109, 136, 104, 225, -1278, -1275, -1274, -256, - 201, -1192, 225, -1277, 226, 225, -1279, 201, - -1287, -1286, -1284, 72, 72, 136, 136, -1292, - 136, -1291, 152, 152, 136, -1297, -1296, 201, - 201, 109, -1321, -1306, 25, -376, -1304, 230, - 230, -1192, -1310, 19, 41, 130, -1314, -1291, - 152, -1273, -1291, -1319, -1318, 152, 152, 172, - -1184, -1329, -1326, -1325, 99, 99, 43, 99, - 225, -1337, -1335, -1333, -1180, 201, 182, 182, - 231, -1341, -260, 64, 64, 227, -1376, -1358, - -1355, -1353, -1349, 182, 86, -1352, -422, -1339, - 182, 162, 230, -1356, -1352, 231, -449, -1367, - -1366, -1364, 86, 182, 182, 86, 86, -1369, - 244, -1373, -425, 219, 244, 219, 182, -1368, - -1385, -1380, -1379, 113, -1382, 230, -1383, 172, - -1357, -1386, -1391, -1248, 227, -1351, 55, -1395, - -1248, 232, 55, 232, 182, -1622, -1517, -1467, - -1442, -1427, -1407, -1405, 203, -1406, 241, -1425, - -1414, -1413, -1412, 246, 246, 246, -1422, -1419, - -1418, 250, 250, -1418, 250, -1390, -1424, 226, - 250, 250, 241, -1439, -1434, -1433, -1432, 223, - 223, 250, -1438, -1433, -1423, -1421, 208, -1441, - 122, 122, -1457, -1454, -1451, -1449, -1441, 122, - -1423, -1450, 246, -1453, 246, 246, 203, 208, - -1448, -1464, -1462, -1413, 246, 255, 246, -1456, - -1426, 241, 226, -1488, -1478, -1474, -1472, 141, - -1413, 244, -1475, -1477, 141, 141, -1483, -1480, - -1482, -1473, 246, -1484, -1486, 236, 246, 236, - -1507, -1501, -1496, -1495, -1494, 243, 243, 243, - -1498, 243, -1495, 243, -1466, -1505, -1504, 253, - 253, 243, 253, -1513, -1453, -1511, 243, 243, - -1500, -1514, 240, 243, 246, -1579, -1565, -1540, - -1527, -1522, -1524, 136, -1121, 235, -1463, -1532, - -1530, -1437, -1531, 240, -1536, -1535, -1389, 141, - -1538, 240, -1539, 240, -1556, -1542, -1546, -1545, - 235, 235, -1553, -1551, -1545, 235, -1332, 180, - 235, -1545, 235, -1114, -1558, 136, -1562, -1561, - -690, 235, -1561, 253, 216, -1576, -1573, -1535, - -1570, 248, -1571, 248, 178, -1575, 253, 248, - -1577, -1137, -1564, -1596, -1585, -1584, -1583, 156, - 141, -1594, -1588, 211, 161, -1593, -1592, 236, - 236, 236, 156, 161, -1606, -1600, 156, 207, - -1603, -1602, 180, -1605, 248, 248, -1611, -1610, - 125, 85, 248, -1619, -1616, -1610, 253, -1614, - -1610, 248, 71, -1621, 71, 165, -1699, -1670, - -1640, -1634, -1629, -1628, 32, -1633, -1632, 251, - 251, 251, -1637, -1636, 170, -1639, 170, 170, - -1653, -1645, -1644, 57, 151, 170, -1652, -1649, - 145, -1651, 150, 150, 150, -1669, -1631, -1658, - 101, 151, -1660, -1618, -1666, -1644, -298, 228, - -1615, 65, 228, 223, -1592, 170, -1678, -1677, - -1675, -1674, 250, 146, 150, 170, -1692, -1691, - -1689, -1687, -1686, -1685, 166, 166, 251, 251, - 175, 251, 175, 223, -1697, -1696, 250, 211, - 250, 250, 251, -1759, -1726, -1717, -1710, -1707, - -1643, 57, 65, -1643, 57, -1592, -1714, -1713, - -1668, 225, -1713, 225, 211, -1723, -1722, -1277, - 65, 211, 109, -1286, 136, -1720, -1729, 75, - 109, -1739, -1731, -1737, -1734, 41, -1736, 150, - 150, -1738, 201, -1750, -1745, 240, -1744, -1712, - 41, -1746, -1748, -1664, -1749, 240, -1755, 170, - -1754, 240, 240, -1636, 170, 175, -1578, -1776, - -1768, -1765, -1764, 165, 116, 136, 47, 165, - -1772, -1771, 207, 240, -1775, 152, 130, 165, - -1786, -1781, -1780, -1193, 240, -1784, 251, 243, - -1785, 251, -1788, 251, -1797, -1792, 170, 251, - -1795, 175, 251, 175, 156, -1800, 126, 175, - 240, -1560, -1957, -1863, -1850, -1835, -1830, -1818, - -1813, -1811, 160, 44, 160, -1815, 160, -1817, - 198, 211, -1823, -1822, 20, 155, 160, -1827, - -1822, 198, 36, -1822, 160, -1816, -1834, -1833, - -1796, 155, 112, -1845, -1840, -809, 221, 156, - -1844, -1843, 221, 221, 158, -1847, 216, 216, - -1842, 207, -1855, -1852, -1817, 211, 255, -1861, - -1860, -1817, 255, 55, 120, -1862, 211, -1908, - -1882, -1868, -1867, 238, -1873, -1871, 233, -1872, - 233, -1881, -1878, 188, 193, 218, 188, 218, - 193, 233, -1893, -1889, -1886, 238, -1888, 238, - 238, -1891, 163, -1892, 183, -1898, -1897, -1885, - -1854, 238, -1903, -1901, 158, -1902, 188, -1907, - -1897, -1849, 198, 233, -1937, -1928, -1923, -1916, - 236, -1915, 20, 20, -1920, -1919, 213, 213, - -1922, 236, 236, -1926, -1925, 236, -1927, 236, - -1932, -1931, 203, 233, -1934, 203, -1872, 233, - 198, -1951, -1944, -1943, -1881, 233, -1936, 233, - -1946, -1906, -1948, 156, -1881, 156, -1947, -1955, - 40, 236, 156, -1453, -1947, -1758, -1983, -1967, - -1965, -1963, 216, 216, 160, 55, 160, -1979, - -1972, -1971, -1950, 160, -1599, -1975, 160, -1977, - -1945, 211, -1976, -1982, -1949, -1905, -1984, -1832, - -20, + -317, -87, -41, -34, -27, -24, -13, -11, + -10, 60, 60, 60, 52, -20, -18, -10, + 60, 57, 52, 60, -10, 34, 60, 57, + -26, 34, 34, -31, -30, 41, 41, -30, + 41, -17, -37, 62, 22, -40, -39, 39, + 41, -79, -53, -52, -50, -49, -48, 38, + 38, 58, 58, 29, 29, -69, -65, -63, + -60, -12, 52, 57, -12, 52, -59, -19, + -33, 60, -68, 40, 38, -75, -72, 40, + -74, 60, 60, 60, -78, -67, 52, -80, + -84, -83, 40, 39, -83, 39, -77, -152, + -126, -108, -99, -94, 44, 58, -96, 33, + -98, 33, 33, -101, 38, -49, -48, -105, + 33, 33, 36, 36, -122, -116, -114, -39, + 39, -106, 33, 18, -119, -83, 36, -83, + -106, -113, 62, -125, 33, 33, -147, -139, + -132, -131, 20, 20, -134, 31, -137, 53, + 27, -138, 53, -146, -143, 53, 18, -145, + 53, 53, 55, -150, 53, 49, 49, 63, + -249, -207, -177, -176, -93, -172, -161, -105, + 31, -169, -166, -165, 10, 10, -165, 10, + -133, -171, -121, 10, -98, 33, -86, 51, + 25, -204, -201, -198, -187, -184, 29, 61, + -52, 35, 51, -191, -190, 26, 26, -195, + -194, 10, 10, -194, -185, 35, -199, -200, + 10, -171, 51, -196, 58, -48, 36, -237, + -236, -220, -213, -212, 37, -216, 37, 10, + -218, -106, 10, 37, -232, -225, -224, 7, + 7, -229, -228, 35, 10, -228, -227, 35, + -234, 7, 7, 26, 7, -240, -239, 37, + -246, -243, -227, -245, -230, 10, -248, 58, + 58, -294, -264, -253, 27, -257, -138, 53, + -217, -261, -138, -203, -174, -138, 53, -64, + -267, -131, 59, -284, -279, -274, -272, 27, + 27, 7, -273, -236, 59, -266, 28, -176, + -282, 27, 27, 28, -292, -289, -288, 8, + 8, -288, 8, 59, 27, 8, -311, -309, + -307, -305, -219, -303, -302, 11, 11, 11, + 59, 7, -291, -273, -186, 7, 11, -315, + -313, -314, 58, -248, -283, -423, -374, -327, + -323, -322, 48, -325, -278, -326, 40, -362, + -334, -331, -263, -333, 63, 40, -344, -342, + -339, 0, 51, -341, 0, 0, -341, 51, + -357, -351, -348, 50, -341, 0, -338, -355, + 50, -185, -332, 40, 35, -361, -349, 0, + -231, 50, -366, -59, 57, 35, -371, -59, + 57, -231, -360, -59, 57, 21, -403, -389, + -378, 8, -380, 56, -382, 50, -386, -385, + 21, 11, -385, 11, -373, -397, -394, -393, + 11, 11, -393, 21, 5, -398, -379, -303, + -388, 5, 5, -414, 47, -413, -410, -322, + 48, -401, -322, 48, -400, 49, -429, -424, + -421, -420, 53, -370, 53, -420, -354, -330, + -426, 9, -293, 9, -425, -435, -432, 50, + -436, -361, 9, -428, -361, }; static long _vq_p_lsp20_0[] = { - 68, 164, 704, 532, 8, 8, 8, 8, - 708, 36, 8, 8, 8, 8, 380, 360, - 360, 36, 36, 36, 640, 296, 8, 8, - 372, 444, 444, 8, 8, 8, 208, 208, - 208, 336, 336, 336, 180, 60, 60, 60, - 60, 60, 60, 532, 532, 380, 592, 532, - 532, 724, 180, 180, 60, 60, 60, 336, - 336, 336, 208, 360, 272, 868, 392, 372, - 272, 272, 708, 56, 56, 56, 440, 440, - 968, 392, 392, 392, 392, 708, 572, 440, - 440, 420, 424, 420, 420, 424, 360, 360, - 440, 748, 684, 424, 592, 684, 708, 296, - 724, 708, 868, 868, 988, 140, 740, 248, - 416, 416, 248, 140, 140, 248, 540, 416, - 560, 420, 212, 212, 212, 212, 420, 420, - 296, 140, 140, 140, 140, 248, 248, 420, - 540, 420, 248, 156, 360, 360, 248, 424, - 360, 156, 392, 432, 208, 36, 36, 36, - 36, 36, 208, 208, 248, 208, 208, 248, - 248, 248, 248, 248, 248, 816, 740, 156, - 432, 432, 740, 296, 868, 248, 36, 36, - 156, 248, 360, 392, 392, 36, 36, 428, - 208, 408, 408, 336, 76, 336, 100, 100, - 140, 140, 336, 420, 684, 396, 76, 76, - 76, 396, 688, 396, 396, 396, 396, 420, - 416, 416, 572, 420, 420, 420, 76, 76, - 424, 420, 76, 784, 76, 76, 352, 140, - 432, 208, 208, 140, 352, 280, 280, 432, - 432, 396, 396, 396, 416, 416, 416, 352, - 132, 132, 132, 132, 132, 132, 132, 296, - 140, 140, 396, 140, 100, 100, 100, 140, - 580, 336, 140, 140, 208, 396, 560, 280, - 280, 396, 396, 396, 804, 560, 560, 296, - 908, 888, 164, 164, 784, 212, 132, 528, - 784, 132, 100, 100, 76, 100, 408, 128, - 140, 580, 132, 132, 404, 404, 580, 128, - 128, 164, 164, 132, 132, 404, 128, 148, - 148, 148, 604, 128, 404, 296, 580, 148, - 148, 180, 180, 684, 604, 304, 688, 304, - 120, 304, 120, 120, 120, 648, 320, 304, - 628, 628, 776, 304, 32, 32, 32, 452, - 776, 320, 240, 452, 848, 400, 400, 400, - 308, 308, 776, 308, 308, 240, 308, 112, - 112, 112, 240, 320, 320, 648, 648, 648, - 916, 848, 848, 628, 776, 112, 628, 628, - 528, 112, 112, 112, 572, 344, 344, 316, - 728, 344, 344, 648, 76, 76, 76, 76, - 76, 648, 648, 648, 728, 316, 320, 320, - 320, 424, 420, 400, 400, 156, 560, 416, - 280, 560, 280, 280, 280, 416, 396, 396, - 344, 332, 416, 416, 416, 156, 540, 540, - 116, 344, 344, 344, 396, 280, 280, 280, - 560, 560, 848, 728, 560, 396, 396, 560, - 116, 728, 396, 396, 396, 728, 848, 212, - 212, 212, 540, 396, 116, 116, 112, 112, - 112, 112, 112, 628, 344, 344, 316, 628, - 628, 628, 760, 760, 740, 740, 428, 760, - 212, 212, 212, 400, 400, 628, 628, 716, - 112, 56, 112, 56, 56, 112, 112, 308, - 56, 56, 56, 56, 400, 308, 112, 112, - 112, 656, 656, 716, 696, 32, 776, 32, - 776, 32, 32, 320, 400, 400, 400, 716, - 716, 716, 776, 540, 212, 112, 56, 56, - 56, 56, 56, 400, 112, 112, 112, 428, - 408, 408, 56, 212, 56, 56, 56, 56, - 212, 212, 400, 424, 56, 56, 56, 948, - 308, 308, 308, 408, 0, 656, 312, 312, - 312, 392, 56, 56, 308, 308, 548, 276, - 312, 312, 312, 392, 392, 276, 540, 540, - 112, 112, 112, 112, 740, 760, 656, 416, - 740, 740, 740, 740, 444, 444, 88, 272, - 16, 68, 484, 168, 168, 168, 484, 68, - 68, 68, 244, 244, 244, 244, 244, 512, - 16, 16, 16, 16, 512, 168, 168, 168, - 596, 484, 596, 552, 292, 516, 292, 668, - 244, 152, 152, 552, 152, 152, 152, 552, - 516, 516, 276, 152, 152, 152, 152, 880, - 780, 744, 744, 744, 508, 492, 484, 244, - 244, 244, 244, 408, 484, 484, 240, 68, - 68, 68, 68, 552, 256, 244, 244, 244, - 744, 236, 492, 492, 152, 552, 780, 272, - 272, 532, 532, 780, 236, 800, 88, 596, - 484, 368, 88, 368, 88, 88, 368, 368, - 368, 368, 596, 512, 236, 484, 292, 292, - 484, 484, 236, 596, 236, 88, 88, 88, - 88, 88, 88, 860, 236, 516, 516, 516, - 516, 292, 508, 596, 668, 744, 88, 232, - 756, 88, 88, 368, 732, 636, 232, 232, - 232, 516, 88, 88, 88, 636, 516, 468, - 672, 88, 88, 88, 672, 496, 368, 232, - 232, 232, 232, 232, 496, 328, 328, 332, - 636, 328, 332, 368, 368, 616, 616, 616, - 736, 636, 332, 332, 668, 292, 292, 292, - 292, 652, 536, 596, 384, 384, 512, 512, - 536, 632, 576, 636, 616, 348, 348, 756, - 616, 616, 732, 348, 348, 632, 384, 292, - 292, 348, 348, 348, 348, 388, 384, 384, - 384, 384, 764, 292, 652, 536, 536, 536, - 536, 756, 596, 612, 612, 492, 492, 492, - 36, 12, 36, 36, 12, 12, 12, 36, - 36, 492, 492, 444, 168, 168, 12, 252, - 244, 468, 252, 36, 36, 392, 36, 532, - 468, 492, 380, 168, 12, 12, 12, 12, - 168, 168, 168, 612, 312, 312, 12, 12, - 12, 12, 312, 816, 312, 312, 12, 12, - 12, 656, 192, 392, 56, 56, 612, 192, - 192, 192, 312, 392, 156, 56, 156, 412, - 412, 440, 268, 312, 312, 268, 56, 56, - 156, 268, 268, 392, 308, 308, 412, 412, - 412, 252, 168, 592, 252, 252, 272, 156, - 412, 192, 192, 168, 168, 68, 68, 192, - 68, 372, 168, 68, 68, 68, 68, 444, - 68, 68, 68, 252, 444, 252, 252, 332, - 360, 272, 272, 68, 532, 68, 68, 532, - 68, 192, 444, 192, 192, 444, 252, 252, - 252, 156, 156, 392, 16, 292, 16, 676, - 268, 16, 16, 16, 16, 556, 268, 412, - 536, 292, 292, 292, 372, 536, 384, 384, - 16, 372, 512, 168, 16, 16, 588, 168, - 592, 512, 16, 16, 16, 16, 576, 536, - 536, 4, 576, 576, 864, 696, 588, 612, - 292, 292, 292, 412, 412, 668, 552, 384, - 576, 384, 384, 384, 640, 936, 388, 612, - 216, 388, 460, 460, 364, 364, 364, 556, - 556, 676, 460, 460, 460, 256, 676, 796, - 556, 556, 240, 240, 556, 556, 556, 676, - 676, 240, 576, 576, 696, 312, 192, 268, - 168, 192, 168, 168, 192, 268, 56, 192, - 192, 200, 192, 192, 192, 192, 412, 556, - 56, 556, 612, 268, 656, 268, 676, 312, - 588, 312, 312, 312, 312, 696, 588, 312, - 312, 312, 96, 836, 696, 96, 612, 556, - 556, 556, 696, 216, 676, 32, 32, 32, - 200, 364, 308, 412, 364, 364, 364, 412, - 96, 268, 268, 96, 656, 216, 556, 556, - 656, 656, 796, 776, 556, 556, 556, 556, - 216, 656, 624, 48, 48, 696, 696, 716, - 656, 200, 216, 396, 304, 184, 72, 72, - 324, 44, 44, 44, 44, 44, 824, 184, - 184, 72, 4, 184, 204, 324, 544, 72, - 72, 544, 188, 660, 188, 188, 188, 188, - 608, 608, 340, 340, 660, 184, 72, 72, - 72, 188, 824, 184, 184, 188, 188, 188, - 976, 340, 340, 144, 144, 124, 284, 124, - 624, 284, 284, 124, 456, 456, 284, 340, - 284, 544, 624, 340, 144, 144, 204, 204, - 204, 204, 472, 340, 340, 284, 340, 284, - 284, 144, 284, 456, 144, 144, 284, 824, - 1020, 184, 184, 184, 824, 824, 472, 472, - 792, 472, 304, 304, 476, 204, 204, 204, - 264, 304, 120, 120, 120, 120, 224, 224, - 224, 304, 264, 264, 452, 120, 224, 204, - 204, 224, 456, 204, 204, 324, 264, 144, - 104, 264, 104, 104, 104, 104, 104, 120, - 120, 264, 648, 648, 120, 120, 264, 120, - 688, 104, 104, 104, 660, 204, 264, 204, - 728, 340, 264, 264, 340, 52, 72, 28, - 172, 188, 188, 28, 28, 28, 44, 44, - 172, 172, 172, 172, 28, 28, 804, 28, - 28, 144, 280, 280, 124, 436, 280, 396, - 72, 72, 44, 44, 72, 72, 436, 608, - 188, 92, 92, 188, 436, 92, 92, 92, - 288, 288, 52, 172, 52, 52, 52, 52, - 172, 124, 76, 52, 52, 52, 28, 28, - 28, 124, 52, 608, 52, 52, 520, 52, - 124, 172, 28, 28, 28, 172, 100, 100, - 100, 28, 28, 28, 904, 728, 608, 396, - 240, 164, 164, 240, 96, 608, 44, 172, - 44, 172, 44, 44, 44, 172, 172, 96, - 344, 344, 344, 324, 304, 256, 324, 44, - 44, 44, 44, 44, 324, 324, 280, 280, - 924, 288, 288, 288, 64, 324, 324, 64, - 120, 304, 264, 304, 120, 120, 264, 648, - 64, 324, 608, 608, 608, 64, 200, 648, - 648, 648, 96, 688, 688, 480, 376, 40, - 356, 300, 300, 300, 300, 700, 464, 376, - 356, 356, 356, 356, 700, 964, 964, 376, - 376, 376, 964, 700, 700, 96, 376, 220, - 984, 812, 812, 40, 40, 40, 40, 40, - 832, 832, 376, 376, 4, 4, 488, 356, - 356, 376, 488, 712, 24, 376, 24, 24, - 1020, 24, 852, 488, 488, 712, 488, 488, - 640, 24, 24, 24, 24, 200, 812, 200, - 644, 644, 1020, 944, 564, 24, 24, 24, - 564, 904, 1016, 300, 300, 464, 24, 644, - 24, 64, 944, 1016, 260, 260, 712, 712, - 260, 500, 1016, 1016, 1016, 1016, 464, 660, - 260, 260, 500, 500, 64, 260, 260, 260, - 972, 712, 712, 356, 356, 356, 356, 712, - 220, 1016, 464, 464, 464, 188, 720, 300, - 72, 72, 300, 300, 436, 436, 64, 720, - 464, 64, 564, 720, 300, 300, 200, 544, - 564, 564, 940, 544, 84, 24, 72, 72, - 72, 720, 84, 84, 84, 84, 64, 564, - 564, 480, 480, 220, 480, 480, 544, 544, - 144, 644, 564, 772, 772, 1016, 1016, 1016, - 1016, 1016, 464, 564, 160, 188, 160, 544, - 660, 960, 160, 564, 260, 1016, 1016, 564, - 260, 84, 84, 84, 564, 564, 564, 564, - 844, 624, 480, 480, 108, 828, 480, 480, - 720, 108, 480, 108, 108, 260, 1016, 1016, - 1016, 1016, 624, 260, 260, 260, 500, 260, - 284, 284, 260, 284, 136, 500, 604, 524, - 164, 52, 52, 52, 76, 128, 128, 128, - 520, 680, 100, 100, 600, 128, 128, 164, - 228, 584, 228, 100, 584, 600, 100, 100, - 100, 404, 404, 580, 228, 524, 524, 128, - 128, 128, 404, 136, 524, 524, 524, 524, - 136, 160, 892, 584, 160, 404, 504, 504, - 228, 228, 584, 504, 504, 664, 40, 40, - 664, 664, 40, 40, 40, 356, 664, 700, - 356, 680, 680, 664, 664, 584, 584, 136, - 664, 700, 700, 28, 228, 100, 28, 28, - 28, 28, 136, 52, 52, 136, 100, 100, - 136, 600, 228, 228, 108, 228, 228, 228, - 108, 80, 300, 28, 28, 80, 300, 92, - 92, 100, 52, 164, 28, 28, 100, 100, - 164, 28, 600, 164, 92, 92, 28, 108, - 92, 52, 164, 160, 520, 680, 92, 504, - 92, 92, 504, 504, 504, 504, 136, 52, - 52, 52, 52, 52, 1016, 188, 1016, 1016, - 92, 92, 124, 188, 188, 520, 188, 520, - 520, 464, 464, 124, 520, 520, 520, 520, - 660, 972, 1016, 1016, 680, 356, 356, 356, - 464, 464, 464, 680, 124, 464, 464, 464, - 356, 24, 872, 176, 48, 620, 176, 196, - 48, 48, 48, 80, 80, 640, 196, 80, - 456, 196, 80, 80, 20, 20, 620, 48, - 48, 124, 124, 176, 176, 144, 20, 20, - 144, 448, 80, 632, 468, 448, 448, 124, - 176, 176, 176, 632, 448, 48, 48, 176, - 80, 124, 20, 24, 20, 20, 124, 196, - 84, 84, 108, 108, 196, 620, 644, 468, - 160, 652, 652, 692, 80, 80, 80, 752, - 852, 692, 160, 160, 160, 160, 692, 692, - 692, 872, 332, 468, 468, 468, 332, 332, - 732, 632, 632, 652, 692, 448, 448, 448, - 108, 932, 468, 468, 468, 692, 632, 692, - 692, 1020, 624, 752, 20, 752, 24, 20, - 20, 20, 20, 24, 24, 24, 24, 80, - 752, 752, 852, 20, 644, 20, 844, 80, - 20, 20, 20, 448, 24, 24, 812, 812, - 284, 488, 488, 488, 488, 488, 124, 832, - 24, 124, 812, 284, 852, 136, 136, 24, - 24, 24, 108, 160, 108, 4, 48, 4, - 4, 4, 4, 640, 220, 136, 136, 480, - 48, 48, 108, 108, 108, 640, 480, 108, - 136, 480, 4, 136, 108, 284, 108, 108, - 624, + 64, 76, 64, 136, 136, 52, 52, 52, + 52, 52, 208, 136, 136, 64, 64, 64, + 64, 124, 136, 136, 76, 76, 76, 92, + 64, 64, 88, 64, 64, 64, 184, 76, + 76, 92, 248, 220, 220, 64, 64, 88, + 156, 52, 232, 68, 68, 68, 68, 68, + 16, 152, 116, 16, 244, 52, 52, 52, + 52, 52, 52, 224, 68, 68, 112, 208, + 112, 136, 68, 144, 136, 16, 68, 120, + 16, 16, 152, 68, 68, 120, 116, 16, + 88, 88, 188, 152, 136, 136, 188, 220, + 16, 16, 56, 56, 56, 56, 176, 176, + 8, 8, 72, 176, 176, 16, 132, 16, + 16, 104, 124, 120, 176, 88, 88, 176, + 176, 120, 176, 176, 56, 56, 112, 176, + 112, 112, 220, 220, 220, 88, 216, 216, + 216, 216, 216, 72, 80, 120, 56, 56, + 56, 72, 108, 176, 56, 56, 56, 176, + 176, 72, 72, 220, 220, 220, 248, 248, + 244, 56, 56, 8, 104, 8, 56, 56, + 96, 104, 8, 8, 8, 104, 244, 244, + 96, 8, 96, 132, 56, 56, 112, 124, + 72, 104, 16, 104, 68, 68, 68, 68, + 16, 124, 96, 104, 16, 16, 244, 16, + 16, 16, 116, 244, 96, 120, 116, 16, + 232, 104, 140, 120, 152, 68, 92, 244, + 104, 60, 100, 244, 100, 60, 60, 60, + 244, 92, 28, 28, 8, 104, 8, 8, + 104, 8, 8, 124, 28, 244, 120, 92, + 244, 244, 100, 100, 108, 60, 28, 60, + 28, 28, 92, 116, 92, 148, 116, 116, + 148, 48, 56, 216, 216, 56, 56, 56, + 120, 72, 72, 92, 140, 80, 80, 144, + 216, 216, 196, 72, 48, 48, 48, 48, + 100, 100, 8, 8, 180, 180, 180, 8, + 8, 8, 72, 96, 48, 48, 48, 48, + 108, 100, 100, 204, 80, 80, 60, 60, + 60, 60, 60, 60, 60, 60, 32, 148, + 172, 100, 172, 8, 172, 108, 108, 108, + 56, 108, 28, 224, 172, 48, 24, 188, + 180, 180, 112, 188, 172, 192, 112, 144, + 144, 112, 180, 144, 204, 200, 112, 192, + 112, 112, 140, 192, 192, 160, 200, 84, + 24, 24, 24, 24, 200, 200, 84, 192, + 188, 84, 124, 200, 84, 128, 128, 128, + 84, 192, 112, 112, 112, 168, 128, 128, + 128, 168, 168, 200, 200, 20, 128, 32, + 60, 60, 148, 148, 32, 32, 108, 108, + 12, 224, 200, 200, 12, 200, 128, 128, + 128, 36, 200, 168, 168, 112, 128, 128, + 168, 4, 168, 180, 180, 216, 216, 216, + 216, 168, 180, 180, 4, 180, 108, 108, + 80, 80, 80, 20, 188, 108, 92, 12, + 216, 200, 48, 32, 32, 192, 216, 80, + 80, 80, 80, 80, 188, }; static long _vq_q_lsp20_0[] = { - 216, 292, 776, 912, 248, 988, 60, 336, - 1008, 444, 36, 360, 380, 708, 708, 380, - 708, 360, 380, 708, 844, 748, 868, 444, - 592, 708, 868, 868, 208, 1008, 1008, 360, - 336, 1008, 360, 684, 704, 180, 800, 380, - 532, 724, 708, 708, 724, 532, 748, 708, - 800, 800, 724, 800, 380, 704, 336, 724, - 684, 704, 380, 380, 724, 968, 444, 572, - 440, 708, 968, 392, 988, 440, 968, 988, - 988, 440, 968, 708, 988, 988, 748, 708, - 868, 684, 440, 424, 988, 988, 708, 440, - 988, 808, 724, 684, 808, 988, 724, 808, - 988, 988, 988, 1008, 1008, 208, 988, 560, - 432, 540, 540, 248, 432, 432, 560, 540, - 740, 440, 1008, 424, 540, 988, 424, 540, - 592, 360, 248, 420, 1008, 540, 1008, 540, - 1008, 988, 360, 808, 420, 540, 988, 440, - 392, 592, 440, 1008, 432, 360, 816, 208, - 248, 840, 248, 840, 816, 248, 360, 360, - 560, 432, 740, 816, 840, 840, 840, 296, - 740, 840, 840, 748, 1008, 868, 360, 248, - 372, 360, 392, 444, 868, 444, 868, 748, - 248, 748, 428, 704, 164, 424, 140, 784, - 684, 420, 684, 684, 784, 784, 920, 396, - 688, 888, 888, 888, 416, 420, 920, 920, - 420, 920, 748, 888, 684, 784, 420, 424, - 888, 424, 784, 888, 684, 784, 748, 908, - 580, 280, 432, 432, 572, 416, 432, 560, - 900, 416, 560, 900, 432, 560, 900, 428, - 336, 580, 208, 396, 784, 140, 1008, 408, - 784, 396, 784, 208, 580, 140, 396, 580, - 900, 684, 208, 336, 336, 784, 1008, 560, - 804, 560, 804, 908, 908, 804, 908, 572, - 1008, 908, 784, 908, 908, 1008, 784, 748, - 1008, 704, 404, 580, 128, 128, 528, 784, - 580, 784, 404, 580, 580, 604, 604, 784, - 404, 404, 784, 404, 784, 784, 684, 404, - 604, 912, 912, 604, 604, 528, 704, 704, - 180, 684, 704, 704, 704, 796, 804, 848, - 452, 916, 320, 648, 916, 916, 916, 452, - 776, 916, 916, 916, 320, 452, 776, 776, - 916, 452, 748, 916, 888, 628, 848, 916, - 400, 540, 916, 320, 916, 528, 920, 308, - 916, 848, 352, 916, 920, 848, 916, 920, - 920, 920, 916, 728, 916, 776, 776, 848, - 808, 344, 848, 916, 768, 848, 916, 768, - 848, 648, 848, 848, 424, 688, 320, 888, - 920, 688, 728, 888, 888, 572, 400, 424, - 888, 920, 424, 424, 888, 572, 760, 848, - 740, 920, 396, 416, 560, 560, 416, 560, - 416, 372, 540, 560, 740, 372, 560, 740, - 332, 888, 876, 848, 848, 804, 560, 876, - 848, 876, 876, 908, 848, 560, 728, 728, - 672, 876, 728, 848, 888, 848, 888, 560, - 540, 888, 560, 560, 372, 768, 400, 740, - 848, 628, 760, 760, 628, 876, 352, 848, - 760, 876, 876, 848, 760, 876, 508, 876, - 400, 760, 848, 848, 760, 876, 848, 760, - 776, 948, 400, 656, 308, 308, 656, 656, - 308, 440, 400, 896, 896, 896, 656, 716, - 400, 716, 948, 948, 716, 716, 896, 776, - 916, 320, 896, 896, 716, 896, 776, 776, - 896, 796, 796, 740, 868, 540, 112, 308, - 656, 400, 948, 948, 308, 656, 400, 568, - 568, 508, 308, 948, 424, 400, 212, 540, - 540, 400, 424, 440, 440, 948, 968, 968, - 540, 424, 440, 428, 548, 816, 948, 392, - 656, 656, 948, 392, 816, 440, 568, 568, - 392, 816, 868, 816, 540, 0, 868, 816, - 816, 656, 760, 740, 760, 856, 856, 740, - 840, 856, 868, 816, 856, 816, 656, 636, - 780, 668, 512, 244, 484, 552, 492, 484, - 552, 244, 484, 596, 512, 596, 588, 588, - 668, 292, 596, 168, 596, 292, 512, 484, - 668, 596, 744, 668, 552, 552, 668, 744, - 820, 244, 860, 780, 516, 552, 744, 744, - 552, 744, 508, 744, 780, 880, 980, 980, - 980, 780, 880, 860, 528, 860, 552, 744, - 484, 492, 860, 528, 492, 860, 528, 244, - 744, 552, 780, 780, 528, 552, 744, 780, - 780, 528, 800, 820, 492, 820, 820, 780, - 552, 780, 800, 800, 256, 980, 384, 636, - 516, 484, 596, 756, 368, 860, 860, 512, - 596, 756, 756, 756, 924, 860, 484, 596, - 512, 596, 240, 860, 508, 596, 516, 764, - 744, 860, 880, 880, 276, 744, 880, 764, - 744, 516, 748, 764, 764, 764, 736, 496, - 764, 636, 368, 636, 788, 756, 636, 516, - 764, 764, 516, 636, 764, 764, 636, 788, - 788, 368, 496, 516, 732, 880, 516, 616, - 636, 328, 496, 736, 736, 496, 736, 788, - 736, 616, 732, 756, 736, 636, 736, 756, - 756, 736, 672, 468, 764, 512, 384, 668, - 536, 788, 596, 668, 536, 668, 596, 576, - 576, 788, 596, 764, 636, 616, 956, 956, - 756, 956, 788, 636, 536, 652, 536, 384, - 764, 764, 384, 388, 956, 956, 956, 388, - 764, 956, 956, 536, 672, 956, 596, 756, - 764, 764, 764, 884, 632, 536, 552, 512, - 380, 816, 252, 444, 36, 492, 840, 820, - 840, 840, 820, 820, 244, 252, 168, 820, - 820, 884, 816, 252, 444, 816, 816, 820, - 612, 820, 820, 312, 588, 512, 168, 836, - 836, 512, 588, 788, 444, 588, 856, 836, - 312, 816, 816, 836, 816, 856, 588, 856, - 444, 820, 268, 440, 392, 968, 788, 968, - 312, 392, 392, 968, 788, 440, 612, 440, - 968, 968, 440, 392, 656, 312, 268, 308, - 592, 308, 392, 816, 816, 440, 440, 440, - 968, 412, 252, 788, 268, 552, 412, 884, - 552, 968, 252, 192, 588, 192, 588, 588, - 252, 788, 252, 968, 272, 252, 192, 532, - 444, 252, 968, 968, 968, 444, 708, 372, - 708, 532, 708, 272, 708, 532, 820, 820, - 708, 252, 588, 444, 968, 968, 360, 392, - 440, 332, 788, 968, 192, 460, 668, 836, - 292, 412, 268, 556, 676, 676, 676, 676, - 576, 384, 536, 676, 592, 676, 676, 536, - 576, 672, 576, 292, 168, 588, 836, 836, - 788, 836, 588, 536, 576, 836, 836, 576, - 836, 788, 588, 696, 884, 836, 696, 864, - 412, 668, 384, 552, 668, 968, 668, 676, - 936, 460, 388, 936, 864, 956, 936, 788, - 808, 460, 936, 576, 460, 676, 796, 676, - 796, 796, 556, 796, 676, 808, 936, 936, - 936, 676, 808, 592, 936, 676, 696, 696, - 936, 256, 696, 936, 936, 796, 312, 556, - 836, 412, 192, 268, 268, 412, 192, 268, - 836, 864, 948, 968, 588, 556, 968, 968, - 948, 948, 864, 312, 676, 656, 836, 556, - 836, 588, 696, 856, 948, 856, 696, 656, - 696, 836, 864, 856, 856, 612, 808, 656, - 696, 948, 948, 612, 696, 796, 308, 364, - 216, 896, 896, 896, 796, 896, 676, 896, - 808, 896, 656, 216, 676, 864, 796, 896, - 796, 896, 896, 796, 696, 896, 948, 656, - 864, 796, 640, 216, 200, 716, 796, 948, - 716, 256, 884, 528, 832, 288, 120, 828, - 660, 324, 72, 184, 824, 928, 928, 928, - 824, 184, 652, 324, 324, 928, 824, 188, - 544, 940, 544, 992, 340, 660, 608, 928, - 928, 660, 660, 928, 928, 928, 184, 824, - 992, 992, 992, 992, 188, 824, 340, 928, - 996, 992, 824, 996, 976, 472, 828, 500, - 824, 456, 624, 284, 624, 824, 456, 500, - 340, 624, 828, 992, 456, 472, 456, 928, - 472, 824, 824, 928, 824, 472, 456, 340, - 824, 792, 456, 472, 472, 1020, 472, 992, - 904, 472, 824, 828, 828, 828, 824, 992, - 904, 828, 648, 324, 996, 224, 264, 304, - 304, 452, 224, 304, 264, 476, 264, 304, - 476, 476, 304, 476, 476, 452, 996, 224, - 456, 456, 996, 264, 324, 628, 928, 904, - 340, 500, 688, 928, 120, 264, 224, 264, - 224, 928, 928, 688, 264, 648, 648, 688, - 928, 500, 660, 688, 688, 456, 928, 264, - 928, 500, 340, 456, 456, 648, 688, 92, - 280, 416, 544, 44, 188, 172, 188, 172, - 436, 544, 416, 900, 396, 436, 900, 280, - 804, 792, 900, 436, 904, 900, 804, 804, - 92, 436, 72, 288, 288, 544, 544, 804, - 544, 188, 608, 608, 544, 436, 288, 804, - 804, 436, 396, 188, 100, 76, 172, 920, - 920, 792, 688, 76, 164, 520, 52, 188, - 608, 144, 188, 688, 520, 608, 608, 688, - 1020, 728, 100, 172, 396, 396, 172, 396, - 900, 164, 396, 728, 976, 804, 728, 728, - 924, 608, 804, 256, 256, 908, 928, 280, - 324, 920, 172, 728, 344, 344, 396, 240, - 728, 648, 920, 344, 344, 924, 628, 288, - 280, 324, 344, 728, 728, 344, 344, 288, - 976, 324, 728, 876, 976, 876, 728, 924, - 608, 648, 304, 452, 648, 920, 648, 688, - 256, 728, 688, 728, 908, 96, 220, 688, - 728, 928, 220, 928, 728, 804, 480, 972, - 712, 892, 1000, 964, 812, 964, 964, 812, - 376, 964, 700, 984, 984, 984, 984, 700, - 964, 1000, 1000, 964, 1000, 200, 984, 904, - 1000, 1000, 964, 356, 376, 1000, 832, 892, - 892, 1000, 488, 832, 220, 96, 832, 376, - 488, 488, 964, 832, 712, 852, 376, 488, - 904, 852, 984, 712, 984, 984, 812, 832, - 904, 644, 812, 964, 984, 1020, 984, 220, - 812, 964, 904, 972, 944, 300, 964, 564, - 964, 976, 464, 464, 564, 564, 712, 944, - 944, 904, 984, 944, 712, 944, 984, 944, - 356, 1012, 500, 660, 464, 972, 972, 972, - 500, 972, 660, 972, 1020, 712, 972, 1012, - 1012, 972, 1012, 464, 984, 712, 972, 972, - 904, 464, 960, 972, 984, 284, 992, 644, - 720, 940, 436, 544, 544, 940, 200, 940, - 960, 96, 720, 960, 940, 544, 256, 564, - 940, 960, 960, 960, 644, 84, 480, 720, - 940, 940, 480, 564, 720, 940, 144, 720, - 940, 720, 940, 864, 644, 544, 564, 644, - 0, 940, 644, 1012, 864, 660, 188, 544, - 464, 992, 564, 992, 712, 544, 1012, 992, - 992, 992, 772, 992, 844, 260, 624, 624, - 564, 480, 564, 844, 644, 624, 844, 944, - 944, 944, 624, 644, 284, 992, 624, 828, - 992, 720, 720, 260, 992, 992, 260, 624, - 500, 340, 992, 500, 284, 624, 1012, 1012, - 624, 992, 284, 500, 284, 660, 804, 664, - 404, 100, 1004, 128, 128, 680, 520, 1004, - 1004, 1004, 128, 600, 680, 164, 680, 680, - 1004, 600, 584, 228, 604, 680, 228, 600, - 580, 580, 600, 600, 600, 680, 1004, 524, - 404, 604, 524, 260, 892, 584, 604, 912, - 1012, 260, 912, 892, 944, 680, 700, 680, - 504, 584, 1000, 584, 600, 680, 1000, 892, - 680, 700, 1004, 356, 664, 664, 1004, 1004, - 700, 1004, 700, 892, 700, 664, 1000, 844, - 1000, 1000, 1004, 188, 504, 300, 900, 52, - 100, 228, 260, 100, 228, 944, 228, 600, - 160, 900, 600, 900, 844, 544, 300, 436, - 260, 844, 436, 436, 544, 108, 504, 300, - 436, 680, 100, 804, 100, 164, 164, 600, - 600, 804, 804, 600, 520, 960, 92, 136, - 164, 520, 520, 1012, 680, 960, 600, 680, - 504, 960, 960, 600, 680, 700, 772, 1004, - 520, 188, 1016, 660, 464, 544, 188, 660, - 608, 188, 828, 960, 660, 608, 520, 660, - 680, 972, 960, 472, 960, 660, 1004, 972, - 972, 1004, 464, 1004, 960, 700, 680, 1004, - 680, 700, 1004, 700, 624, 960, 504, 700, - 960, 240, 1012, 752, 480, 884, 448, 620, - 196, 80, 640, 176, 640, 844, 640, 196, - 792, 844, 176, 640, 80, 620, 640, 176, - 620, 792, 144, 620, 640, 456, 80, 448, - 472, 620, 448, 864, 632, 468, 884, 624, - 448, 632, 884, 884, 632, 176, 864, 864, - 176, 828, 644, 844, 196, 844, 1020, 644, - 480, 196, 1020, 220, 480, 644, 844, 812, - 468, 772, 692, 952, 160, 752, 932, 932, - 932, 932, 692, 752, 772, 872, 752, 872, - 772, 932, 932, 632, 732, 952, 732, 952, - 952, 732, 652, 732, 732, 752, 932, 468, - 124, 952, 952, 752, 632, 752, 752, 752, - 932, 828, 792, 932, 488, 932, 844, 852, - 944, 24, 80, 80, 944, 80, 852, 852, - 852, 944, 944, 844, 944, 944, 944, 944, - 852, 448, 812, 932, 852, 812, 852, 932, - 792, 712, 852, 832, 872, 932, 284, 932, - 852, 624, 852, 624, 872, 624, 284, 712, - 160, 944, 624, 712, 284, 772, 1020, 844, - 136, 640, 864, 864, 640, 220, 640, 624, - 480, 108, 136, 640, 828, 844, 640, 480, - 792, 844, 136, 640, 136, 1020, 640, 472, - 844, + 92, 80, 68, 156, 164, 88, 64, 136, + 208, 240, 240, 240, 208, 76, 136, 208, + 240, 228, 208, 240, 208, 136, 240, 228, + 88, 136, 136, 76, 184, 164, 164, 184, + 164, 124, 164, 248, 88, 164, 88, 156, + 164, 88, 240, 244, 116, 232, 16, 152, + 152, 232, 232, 116, 116, 16, 152, 240, + 68, 136, 208, 228, 136, 208, 228, 240, + 124, 240, 136, 160, 152, 116, 16, 160, + 152, 240, 240, 240, 116, 144, 208, 88, + 136, 152, 160, 156, 152, 156, 120, 44, + 80, 88, 152, 132, 176, 232, 72, 132, + 72, 132, 132, 132, 152, 232, 152, 104, + 132, 132, 144, 144, 220, 152, 132, 88, + 156, 124, 132, 72, 176, 152, 144, 152, + 124, 120, 248, 88, 132, 132, 196, 220, + 212, 72, 80, 80, 212, 124, 72, 212, + 108, 212, 212, 220, 176, 212, 72, 72, + 212, 212, 220, 248, 212, 196, 196, 252, + 32, 108, 152, 100, 232, 72, 8, 104, + 124, 132, 244, 104, 40, 40, 104, 40, + 120, 132, 112, 40, 72, 132, 160, 204, + 100, 152, 132, 232, 104, 16, 116, 244, + 244, 140, 204, 40, 244, 104, 104, 244, + 116, 40, 40, 116, 124, 140, 232, 232, + 40, 132, 204, 124, 232, 152, 144, 116, + 108, 8, 28, 100, 148, 28, 148, 40, + 28, 124, 40, 148, 100, 40, 104, 28, + 28, 244, 28, 140, 40, 28, 124, 140, + 100, 28, 28, 104, 28, 40, 148, 148, + 232, 40, 124, 148, 120, 40, 148, 232, + 232, 60, 8, 80, 108, 72, 108, 212, + 144, 80, 108, 96, 160, 108, 212, 228, + 48, 80, 236, 80, 72, 8, 100, 108, + 108, 28, 100, 108, 236, 196, 112, 100, + 72, 108, 108, 112, 80, 100, 108, 32, + 32, 108, 32, 236, 108, 32, 232, 108, + 8, 100, 28, 148, 32, 44, 44, 44, + 236, 28, 204, 28, 96, 28, 44, 224, + 108, 232, 232, 232, 112, 204, 36, 200, + 188, 112, 192, 192, 180, 160, 160, 228, + 0, 144, 160, 200, 252, 160, 128, 200, + 192, 0, 204, 160, 0, 0, 160, 204, + 128, 192, 0, 200, 160, 0, 140, 200, + 200, 124, 236, 160, 140, 192, 200, 0, + 92, 200, 128, 224, 228, 140, 200, 224, + 228, 92, 84, 224, 228, 84, 192, 36, + 44, 32, 44, 224, 44, 200, 200, 224, + 84, 44, 224, 44, 20, 224, 200, 36, + 44, 44, 36, 84, 20, 224, 224, 148, + 12, 20, 20, 80, 188, 196, 180, 112, + 192, 4, 112, 192, 12, 196, 200, 32, + 108, 188, 212, 92, 212, 188, 124, 144, + 48, 36, 80, 36, 200, 36, 80, 200, + 188, 192, 36, 32, 192, }; -static encode_aux _vq_aux_lsp20_0 = { +static encode_aux_nearestmatch _vq_auxn_lsp20_0 = { _vq_ptr0_lsp20_0, _vq_ptr1_lsp20_0, _vq_p_lsp20_0, _vq_q_lsp20_0, - 1985, 1985 + 437, 437 }; static static_codebook _vq_book_lsp20_0 = { - 4, 256, 4172015, 2792400, 8, 1, - _vq_quantlist_lsp20_0, + 4, 64, _vq_lengthlist_lsp20_0, - &_vq_aux_lsp20_0, + 2, 1603965733, 1586933473, 8, 1, + _vq_quantlist_lsp20_0, + &_vq_auxn_lsp20_0, + NULL, }; diff --git a/include/vorbis/book/lsp20_1.vqh b/include/vorbis/book/lsp20_1.vqh new file mode 100644 index 0000000..d9e371d --- /dev/null +++ b/include/vorbis/book/lsp20_1.vqh @@ -0,0 +1,534 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/somethingorother + + ********************************************************************/ + +#ifndef _V_lsp20_1_VQH_ +#define _V_lsp20_1_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_lsp20_1[] = { + 143, + 129, + 147, + 126, + 151, + 124, + 153, + 127, + 165, + 149, + 186, + 132, + 176, + 101, + 198, + 75, + 127, + 72, + 124, + 52, + 190, + 34, + 137, + 109, + 135, + 124, + 166, + 126, + 190, + 147, + 176, + 132, + 170, + 129, + 158, + 117, + 115, + 21, + 130, + 93, + 140, + 128, + 144, + 122, + 146, + 138, + 160, + 117, + 153, + 148, + 182, + 130, + 173, + 119, + 147, + 111, + 148, + 6, + 126, + 92, + 170, + 135, + 166, + 129, + 151, + 141, + 176, + 129, + 178, + 135, + 210, + 154, + 164, + 110, + 147, + 106, + 114, + 37, + 136, + 102, + 145, + 22, + 130, + 99, + 142, + 135, + 181, + 137, + 202, + 150, + 214, + 127, + 184, + 141, + 163, + 125, + 122, + 50, + 138, + 109, + 200, + 9, + 131, + 93, + 139, + 141, + 149, + 129, + 147, + 144, + 169, + 120, + 149, + 93, + 168, + 80, + 171, + 92, + 156, + 56, + 126, + 114, + 128, + 117, + 120, + 137, + 131, + 128, + 137, + 127, + 171, + 135, + 130, + 129, + 184, + 160, + 143, + 81, + 139, + 76, + 157, + 33, + 134, + 104, + 118, + 127, + 130, + 129, + 153, + 131, + 158, + 137, + 191, + 118, + 217, + 82, + 152, + 73, + 135, + 40, + 195, + 118, + 157, + 107, + 134, + 121, + 137, + 123, + 127, + 74, + 153, + 119, + 128, + 122, + 169, + 154, + 175, + 102, + 219, + 92, + 255, + 27, + 139, + 108, + 138, + 124, + 141, + 119, + 121, + 114, + 164, + 140, + 193, + 116, + 200, + 63, + 178, + 0, + 127, + 89, + 160, + 84, + 148, + 54, + 167, + 41, + 139, + 114, + 209, + 130, + 212, + 71, + 190, + 51, + 140, + 118, + 122, + 142, + 134, + 129, + 128, + 124, + 129, + 124, + 142, + 137, + 189, + 152, + 176, + 100, + 177, + 62, + 229, + 15, + 134, + 100, + 139, + 132, + 178, + 128, + 137, + 120, + 150, + 133, + 163, + 124, + 204, + 158, + 125, + 149, + 140, + 130, + 137, + 91, + 211, + 118, +}; + +static long _vq_lengthlist_lsp20_1[] = { + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, +}; + +static long _vq_ptr0_lsp20_1[] = { + -1, -2, -3, -4, -5, -6, -7, 28, + -9, 29, 53, -12, -13, 28, 53, -16, + 41, 56, -19, -20, -21, -22, 28, 30, + -25, 5, -27, 30, -416, 44, -29, -32, + -33, -25, 33, 50, 30, -38, 36, -40, + -41, -42, -13, -34, -43, -46, 31, -48, + 31, 44, -51, 28, 47, -54, -55, -56, + -57, -58, 6, 28, -61, 28, 18, -64, + -65, 46, -67, -68, -69, 6, -71, 47, + -73, -74, 43, 33, 43, -78, -79, 62, + 47, 27, -83, -84, 10, -86, -62, 21, + 28, -90, 18, -92, -93, -80, -87, -96, + -84, -94, 54, -100, 62, -97, -103, -104, + -105, -106, 28, -108, -109, 41, -111, 46, + 53, -415, -101, -114, -117, -118, 31, -71, + -115, 15, -123, -124, -109, -121, 44, -126, + -129, -111, 12, -130, -113, -131, -133, -136, + -137, -138, -62, 44, 29, 29, 29, -144, + 29, -146, 45, 40, -149, -150, -151, -152, + -153, 25, 35, -156, -157, -158, 34, 42, + -161, 35, -147, 15, -165, -166, -167, 5, + -169, -170, 30, -163, -132, 8, 27, -176, + 5, 16, -179, 25, 34, -182, -183, -25, + -177, 45, 50, -188, -189, -190, 4, -192, + -193, 4, 20, -196, 14, -163, 9, -200, + -201, 4, 20, -204, 19, 16, -207, -208, + -209, -210, 4, -212, 4, 16, -215, 24, + 34, -193, 15, 39, 34, -222, -223, -224, + -225, -226, -227, -228, -229, -230, 1, -232, + 11, 26, 37, -236, 3, 11, -239, 3, + 11, -242, -243, -244, -245, -246, -247, 1, + 11, 1, -251, -252, -230, -218, -253, -172, + -213, 8, -259, -260, -237, -257, -261, -264, + 32, -262, -267, -233, -265, -255, 12, -270, + 6, -274, 1, 37, -277, -278, -279, 6, + -271, -282, 32, -280, 63, -286, -287, -288, + 33, 26, 43, -292, -293, -294, -295, -296, + -297, -249, -283, 6, -298, -302, -303, -304, + -305, -306, -307, 0, -300, -84, 45, 48, + -313, -69, 40, -314, -315, 43, -316, -320, + 6, 38, 26, 6, 10, -326, -327, 6, + -321, 11, 43, 63, 11, -279, 23, -336, + 6, -334, -339, -340, 11, -342, 13, -337, + -345, -346, -347, 1, -230, -343, -232, 38, + -351, -354, -355, -356, -236, 23, 15, 44, + -358, 33, -363, -364, -365, 21, -360, -288, + -366, -370, 27, 23, -373, -374, -375, -376, + -377, -378, 3, -380, 8, 8, 40, -384, + -385, 8, -387, -388, -389, 3, 12, 48, + -342, 15, 40, 45, -397, -398, -261, -269, + -393, -270, 23, -401, -403, -232, 38, 13, + 13, -410, -411, -412, -413, -414, -415, 2, + 38, -418, 17, -130, -421, -422, 7, 17, + -419, 45, -427, -428, 7, 22, -431, 17, +}; + +static long _vq_ptr1_lsp20_1[] = { + -221, -148, -53, -37, -18, -11, -8, 29, + -10, 58, 58, -15, -14, 55, 55, -14, + 55, 61, -31, -12, -24, -23, 42, 42, + -26, 53, 42, 53, -29, 61, -17, -36, + -35, 58, 61, 53, 50, -39, 42, -50, + 53, -45, -16, -17, -30, -47, 36, -16, + 55, 63, -52, 53, 53, -135, -82, -63, + -60, -59, 18, 46, -62, 63, 57, -77, + -66, 47, -72, -70, 63, 60, 63, 60, + -76, -71, 60, 44, 63, -71, -80, 54, + 54, 37, -91, -85, 60, -89, -88, 37, + 57, 53, 60, -102, 28, -95, -81, -99, + -98, 59, 60, -98, 60, 44, -116, -50, + -107, 53, 41, -110, 53, 60, -112, 60, + 60, -28, -75, -49, -122, -119, 54, -98, + -44, -17, -128, -71, -98, -29, 56, 61, + -119, -98, 61, -17, -402, -127, -125, -143, + -142, -141, -140, 48, 57, 53, 46, -145, + 45, -10, 58, 48, -187, -181, -164, -155, + -154, 39, 39, -154, -160, -159, 51, 51, + -159, 51, -139, 44, -178, -175, -168, 34, + -157, -159, 51, -162, -424, -139, 44, -36, + 50, 44, -180, 51, 50, -185, 50, 51, + -174, -186, 58, -206, -198, -191, 9, -195, + -194, 49, 49, -194, 49, -184, -199, -203, + -202, 24, 24, -202, 24, 27, -220, -217, + -214, -211, 34, -154, 39, 37, -216, 35, + 35, -219, 37, 49, 42, -409, -344, -291, + -241, -238, -235, -234, -231, 26, 37, -233, + 37, 37, 59, -237, 59, 59, -240, 13, + 13, -289, -285, -276, -272, -250, -248, 6, + -249, 26, -258, -231, -233, -213, -205, -404, + -81, 37, -266, -263, -234, -81, -256, -234, + 59, -254, -263, 59, -197, -368, 44, -163, + -273, -275, 43, 43, -284, -281, -76, 63, + -268, -76, 63, -173, 59, 37, 63, 43, + 59, -290, 62, -338, -332, -330, -325, -301, + -58, -299, -171, 26, -134, -323, -319, -317, + -312, -309, -100, 60, -120, -100, 52, 52, + -100, -84, 52, -311, -310, -307, -139, -322, + -290, 52, 62, -324, 18, -329, -322, 62, + -311, 26, -331, 60, -333, -335, 52, -62, + 57, 48, 45, -341, 57, -62, 57, -328, + -372, -353, -348, 3, -350, -318, -81, 48, + -139, -362, -361, -359, -284, 48, 48, -284, + -139, 63, -369, -367, -234, 59, -357, 37, + -352, -234, 59, 44, -396, -386, -383, -381, + -379, 27, 44, 27, 44, -382, 44, 45, + 48, 40, -394, -392, -391, -147, -371, 57, + 40, 61, -395, 57, -408, -405, -350, -349, + -29, 61, -416, -400, -390, -407, -29, 37, + 40, -308, -399, -425, -420, -417, -416, 61, + 61, -416, 61, 23, -418, -423, 38, 38, + -406, -426, -430, -429, 52, 52, -429, 52, +}; + +static long _vq_p_lsp20_1[] = { + 56, 40, 168, 120, 116, 116, 112, 112, + 116, 116, 212, 112, 112, 112, 212, 164, + 164, 224, 112, 120, 112, 112, 112, 120, + 20, 20, 120, 120, 152, 176, 176, 20, + 20, 212, 132, 200, 120, 168, 144, 144, + 164, 112, 112, 132, 132, 144, 124, 124, + 124, 176, 112, 112, 188, 112, 24, 112, + 24, 24, 24, 112, 252, 112, 72, 24, + 184, 184, 24, 24, 24, 24, 188, 188, + 188, 172, 172, 132, 172, 248, 248, 248, + 188, 108, 72, 40, 40, 112, 72, 84, + 112, 72, 72, 40, 40, 188, 84, 40, + 40, 84, 216, 248, 248, 84, 112, 184, + 112, 112, 112, 164, 164, 164, 184, 184, + 212, 8, 84, 132, 124, 124, 124, 188, + 84, 60, 164, 164, 164, 60, 176, 176, + 184, 184, 48, 48, 8, 48, 48, 72, + 72, 72, 72, 176, 116, 116, 116, 116, + 116, 180, 180, 160, 100, 100, 156, 100, + 100, 100, 140, 136, 136, 136, 136, 168, + 140, 140, 160, 60, 20, 136, 20, 20, + 120, 120, 120, 60, 8, 32, 108, 20, + 20, 64, 100, 100, 136, 20, 20, 20, + 64, 180, 200, 80, 56, 36, 16, 16, + 16, 16, 80, 56, 56, 60, 36, 16, + 16, 16, 80, 76, 76, 64, 96, 140, + 16, 136, 16, 16, 16, 64, 96, 96, + 136, 16, 60, 156, 136, 72, 0, 12, + 12, 4, 4, 44, 4, 4, 4, 44, + 44, 104, 148, 12, 12, 44, 12, 12, + 44, 128, 128, 4, 128, 24, 24, 4, + 44, 4, 4, 4, 4, 60, 60, 8, + 64, 32, 44, 44, 44, 32, 32, 128, + 128, 32, 104, 104, 32, 48, 48, 48, + 24, 4, 4, 148, 128, 24, 24, 24, + 48, 128, 128, 64, 252, 132, 172, 132, + 132, 104, 172, 4, 4, 24, 4, 4, + 4, 4, 32, 24, 64, 0, 0, 24, + 0, 0, 0, 0, 64, 40, 180, 192, + 24, 24, 160, 160, 160, 172, 160, 24, + 24, 152, 104, 24, 40, 24, 24, 24, + 152, 44, 172, 252, 44, 252, 92, 24, + 24, 92, 72, 44, 44, 52, 52, 92, + 4, 44, 12, 4, 4, 92, 44, 152, + 152, 12, 12, 12, 12, 92, 60, 176, + 60, 132, 84, 84, 84, 84, 60, 132, + 92, 108, 108, 92, 12, 32, 12, 12, + 12, 12, 12, 32, 32, 32, 160, 160, + 160, 32, 52, 12, 12, 12, 48, 192, + 52, 60, 160, 180, 32, 32, 32, 60, + 60, 48, 92, 48, 60, 44, 152, 52, + 52, 28, 28, 152, 8, 8, 8, 8, + 152, 68, 68, 48, 28, 28, 28, 68, + 48, 180, 28, 28, 28, 88, 68, 68, +}; + +static long _vq_q_lsp20_1[] = { + 88, 140, 252, 144, 200, 164, 212, 116, + 212, 232, 232, 164, 212, 220, 220, 212, + 220, 244, 200, 220, 212, 120, 168, 168, + 120, 212, 168, 212, 176, 244, 224, 120, + 200, 232, 244, 212, 200, 188, 168, 188, + 212, 144, 164, 224, 176, 220, 144, 164, + 220, 252, 188, 212, 212, 116, 40, 188, + 252, 112, 72, 184, 228, 252, 228, 248, + 240, 188, 172, 188, 252, 240, 252, 240, + 252, 188, 240, 176, 252, 240, 188, 216, + 216, 148, 184, 72, 240, 212, 112, 148, + 228, 212, 240, 184, 112, 240, 108, 248, + 216, 236, 240, 216, 240, 176, 124, 188, + 184, 212, 164, 184, 212, 240, 212, 240, + 240, 152, 132, 252, 164, 188, 216, 216, + 224, 224, 184, 188, 216, 176, 224, 244, + 188, 216, 244, 224, 92, 176, 60, 180, + 184, 212, 116, 192, 228, 212, 184, 212, + 180, 212, 232, 192, 196, 232, 200, 204, + 140, 156, 156, 156, 140, 168, 204, 204, + 168, 204, 176, 176, 100, 200, 204, 136, + 136, 168, 204, 160, 48, 176, 176, 120, + 200, 176, 200, 204, 200, 232, 200, 204, + 108, 232, 232, 140, 76, 56, 36, 56, + 80, 196, 196, 80, 196, 64, 76, 76, + 80, 96, 96, 80, 96, 108, 168, 196, + 96, 156, 136, 140, 156, 148, 136, 140, + 140, 156, 148, 196, 168, 244, 32, 228, + 252, 52, 12, 236, 44, 104, 148, 104, + 148, 148, 236, 44, 236, 236, 44, 52, + 52, 248, 132, 252, 172, 128, 104, 24, + 104, 104, 128, 44, 104, 64, 108, 60, + 108, 148, 104, 128, 148, 108, 64, 148, + 236, 60, 128, 236, 176, 192, 176, 60, + 172, 148, 172, 172, 236, 128, 172, 252, + 64, 172, 252, 192, 236, 148, 252, 172, + 236, 248, 248, 52, 228, 252, 44, 0, + 72, 24, 160, 104, 224, 72, 104, 172, + 24, 40, 248, 240, 84, 248, 208, 208, + 248, 40, 208, 192, 180, 240, 176, 104, + 248, 208, 248, 72, 72, 44, 104, 248, + 192, 104, 252, 240, 228, 228, 208, 72, + 228, 192, 180, 52, 228, 72, 228, 152, + 52, 236, 44, 12, 44, 160, 108, 192, + 176, 108, 132, 176, 252, 192, 192, 252, + 176, 252, 108, 132, 148, 236, 92, 148, + 152, 148, 236, 176, 44, 52, 192, 160, + 32, 108, 176, 108, 176, 160, 176, 180, + 192, 160, 180, 52, 228, 160, 92, 228, + 160, 244, 180, 228, 160, 52, 44, 160, + 176, 244, 152, 60, 92, 52, 176, 148, + 160, 132, 92, 208, 28, 68, 152, 244, + 244, 152, 244, 92, 244, 68, 152, 152, + 176, 208, 68, 88, 208, 208, 88, 208, +}; + +static encode_aux_nearestmatch _vq_auxn_lsp20_1 = { + _vq_ptr0_lsp20_1, + _vq_ptr1_lsp20_1, + _vq_p_lsp20_1, + _vq_q_lsp20_1, + 432, 432 +}; + +static static_codebook _vq_book_lsp20_1 = { + 4, 64, + _vq_lengthlist_lsp20_1, + 2, 1605458492, 1582935470, 8, 1, + _vq_quantlist_lsp20_1, + &_vq_auxn_lsp20_1, + NULL, +}; + + +#endif diff --git a/include/vorbis/book/lsp32_0.vqh b/include/vorbis/book/lsp32_0.vqh index 82c4e77..57c63b1 100644 --- a/include/vorbis/book/lsp32_0.vqh +++ b/include/vorbis/book/lsp32_0.vqh @@ -11,7 +11,7 @@ * * ******************************************************************** - function: static codebook autogenerated by vq/vqbuild + function: static codebook autogenerated by vq/somethingorother ********************************************************************/ @@ -20,2200 +20,3274 @@ #include "vorbis/codebook.h" static long _vq_quantlist_lsp32_0[] = { - 58, 41, 48, 34, - 55, 69, 86, 121, - 159, 246, 57, 31, - 62, 64, 138, 77, - 116, 41, 71, 133, - 171, 48, 140, 59, - 55, 129, 122, 93, - 36, 14, 0, 28, - 32, 29, 66, 90, - 61, 55, 114, 111, - 75, 107, 186, 55, - 78, 90, 109, 175, - 93, 24, 100, 94, - 130, 67, 159, 107, - 88, 53, 39, 63, - 83, 16, 62, 82, - 57, 53, 43, 70, - 61, 58, 93, 77, - 254, 154, 34, 23, - 62, 77, 95, 160, - 103, 35, 109, 79, - 192, 126, 118, 75, - 58, 95, 97, 60, - 86, 12, 53, 28, - 45, 37, 66, 62, - 42, 61, 94, 169, - 156, 45, 50, 108, - 125, 28, 57, 86, - 140, 55, 101, 72, - 107, 144, 139, 133, - 94, 48, 65, 38, - 60, 38, 82, 46, - 60, 29, 74, 112, - 58, 78, 151, 211, - 48, 63, 146, 133, - 38, 110, 74, 93, - 96, 74, 80, 83, - 190, 73, 92, 111, - 126, 77, 70, 72, - 59, 45, 29, 33, - 25, 45, 71, 52, - 45, 58, 126, 83, - 143, 92, 41, 77, - 148, 25, 61, 94, - 105, 84, 91, 72, - 143, 134, 112, 111, - 106, 36, 89, 53, - 63, 77, 32, 32, - 27, 43, 97, 74, - 58, 122, 83, 115, - 121, 45, 136, 92, - 107, 85, 51, 112, - 76, 52, 128, 40, - 235, 92, 64, 38, - 187, 53, 96, 17, - 8, 17, 45, 59, - 39, 51, 67, 73, - 109, 73, 25, 43, - 178, 143, 39, 22, - 142, 117, 37, 87, - 155, 100, 88, 48, - 95, 157, 96, 123, - 68, 78, 84, 55, - 48, 59, 74, 82, - 31, 61, 68, 93, - 77, 89, 58, 129, - 113, 79, 135, 103, - 71, 83, 103, 79, - 127, 39, 107, 70, - 103, 110, 178, 214, - 60, 114, 146, 29, - 43, 13, 50, 55, - 54, 18, 57, 65, - 87, 52, 73, 71, - 89, 146, 174, 43, - 96, 95, 72, 129, - 100, 37, 128, 99, - 88, 111, 120, 165, - 95, 59, 39, 77, - 54, 53, 63, 37, - 33, 65, 75, 102, - 148, 27, 43, 65, - 77, 150, 102, 88, - 125, 93, 51, 125, - 71, 86, 111, 143, - 89, 98, 136, 76, - 73, 125, 148, 31, - 11, 8, 31, 47, - 36, 70, 39, 47, - 38, 71, 87, 132, - 165, 110, 51, 97, - 65, 71, 98, 124, - 135, 43, 80, 131, - 80, 80, 166, 137, - 106, 54, 63, 41, - 70, 51, 55, 65, - 77, 14, 57, 62, - 35, 57, 78, 142, - 181, 133, 64, 107, - 125, 62, 102, 167, - 88, 80, 89, 51, - 129, 184, 107, 116, - 132, 101, 80, 39, - 70, 8, 39, 39, - 7, 38, 58, 146, - 71, 63, 67, 53, - 164, 115, 105, 35, - 103, 123, 42, 70, - 109, 166, 65, 28, - 85, 123, 213, 100, - 79, 80, 55, 52, - 89, 41, 53, 35, - 47, 51, 74, 74, - 80, 80, 52, 90, - 108, 173, 164, 51, - 60, 124, 68, 78, - 134, 68, 131, 46, - 93, 128, 149, 125, - 111, 97, 93, 29, - 24, 19, 44, 51, - 20, 44, 71, 121, - 33, 91, 81, 70, - 114, 169, 104, 81, - 41, 78, 147, 43, - 71, 75, 109, 117, - 165, 61, 73, 142, - 106, 73, 40, 70, - 77, 43, 44, 53, - 65, 47, 44, 38, - 48, 77, 95, 150, - 130, 106, 90, 128, - 88, 63, 84, 72, - 136, 92, 78, 91, - 172, 109, 118, 157, - 64, 149, 83, 27, - 60, 12, 18, 32, - 54, 24, 68, 94, - 69, 69, 93, 98, - 132, 93, 105, 83, - 117, 48, 85, 52, - 93, 181, 101, 33, - 82, 78, 150, 113, - 92, 74, 82, 31, - 65, 64, 55, 40, - 39, 84, 55, 59, - 62, 75, 117, 179, - 132, 65, 36, 74, - 105, 47, 98, 166, - 91, 79, 94, 100, - 117, 83, 99, 108, - 106, 67, 137, 46, - 72, 50, 25, 34, - 31, 27, 58, 66, - 65, 62, 94, 88, - 142, 142, 65, 110, - 110, 34, 64, 117, - 77, 71, 146, 87, - 224, 60, 56, 71, - 73, 128, 32, 35, - 87, 26, 56, 23, - 45, 42, 44, 36, - 80, 54, 58, 132, - 252, 67, 29, 11, - 196, 66, 36, 86, - 71, 121, 128, 121, - 89, 131, 136, 89, - 94, 57, 137, 38, - 77, 9, 46, 49, - 38, 42, 35, 34, - 58, 77, 46, 82, - 136, 201, 80, 25, - 120, 65, 72, 67, - 134, 110, 115, 72, - 146, 95, 95, 174, - 57, 91, 58, 72, - 100, 13, 44, 54, - 22, 69, 93, 31, - 90, 32, 92, 154, - 104, 125, 74, 131, - 94, 92, 86, 55, - 114, 149, 64, 93, - 167, 91, 161, 46, - 111, 97, 85, 77, - 8, 31, 51, 111, - 14, 40, 65, 77, - 47, 60, 82, 102, - 133, 109, 128, 102, - 180, 25, 34, 55, - 103, 119, 135, 47, - 92, 147, 52, 90, - 142, 84, 29, 60, - 115, 14, 47, 59, - 21, 51, 71, 81, - 54, 87, 136, 112, - 82, 113, 99, 77, - 79, 130, 78, 124, - 68, 101, 114, 66, - 172, 42, 77, 101, - 102, 119, 96, 70, - 87, 22, 18, 31, - 24, 47, 93, 117, - 53, 71, 173, 59, - 110, 20, 63, 82, - 228, 51, 21, 19, - 76, 129, 63, 83, - 76, 103, 193, 104, - 108, 84, 84, 21, - 94, 49, 30, 24, - 29, 56, 123, 90, - 41, 107, 105, 101, - 13, 44, 75, 173, - 157, 106, 23, 32, - 191, 51, 20, 22, - 70, 30, 87, 132, - 112, 155, 194, 107, - 115, 19, 19, 33, - 39, 68, 132, 36, - 95, 105, 45, 71, - 85, 29, 60, 105, - 162, 34, 90, 37, - 44, 115, 87, 27, - 56, 83, 163, 122, - 39, 64, 113, 213, - 60, 43, 95, 57, - 76, 159, 94, 27, - 160, 135, 27, 27, - 6, 25, 50, 75, - 47, 115, 126, 27, - 101, 60, 30, 31, - 53, 66, 84, 101, - 174, 167, 137, 103, - 167, 30, 17, 34, - 127, 85, 31, 31, - 75, 102, 55, 70, - 58, 56, 83, 79, - 84, 29, 94, 69, - 31, 104, 79, 25, - 63, 85, 185, 55, - 35, 62, 146, 105, - 94, 21, 72, 59, - 194, 32, 45, 70, - 105, 155, 40, 30, - 16, 31, 56, 63, - 63, 142, 58, 29, - 74, 57, 97, 31, - 130, 23, 43, 64, - 145, 133, 217, 183, - 143, 19, 20, 36, - 106, 135, 27, 25, - 110, 61, 57, 92, - 23, 50, 101, 176, - 31, 55, 115, 56, - 61, 108, 37, 35, - 87, 87, 112, 115, - 85, 94, 160, 201, - 68, 52, 83, 31, + 131, + 131, + 132, + 120, + 132, + 134, + 138, + 124, + 133, + 111, + 132, + 125, + 155, + 156, + 157, + 130, + 146, + 126, + 131, + 129, + 129, + 135, + 142, + 133, + 140, + 142, + 141, + 126, + 151, + 129, + 133, + 132, + 128, + 125, + 123, + 130, + 150, + 143, + 141, + 142, + 124, + 118, + 145, + 132, + 139, + 144, + 133, + 127, + 126, + 120, + 126, + 111, + 130, + 118, + 145, + 135, + 133, + 138, + 139, + 125, + 139, + 128, + 131, + 115, + 137, + 124, + 129, + 111, + 128, + 131, + 131, + 117, + 138, + 122, + 123, + 127, + 127, + 109, + 128, + 120, + 130, + 126, + 128, + 134, + 140, + 113, + 138, + 132, + 136, + 138, + 133, + 119, + 137, + 139, + 142, + 121, + 132, + 111, + 135, + 134, + 141, + 146, + 141, + 128, + 131, + 136, + 134, + 118, + 135, + 135, + 125, + 110, + 142, + 124, + 130, + 132, + 135, + 140, + 143, + 134, + 145, + 142, + 134, + 121, + 139, + 134, + 136, + 135, + 149, + 150, + 153, + 128, + 142, + 122, + 126, + 129, + 139, + 111, + 134, + 127, + 123, + 107, + 128, + 132, + 139, + 115, + 124, + 123, + 126, + 111, + 133, + 135, + 148, + 144, + 134, + 123, + 130, + 121, + 137, + 125, + 138, + 118, + 138, + 119, + 130, + 125, + 127, + 113, + 132, + 119, + 134, + 119, + 134, + 127, + 137, + 124, + 135, + 118, + 116, + 126, + 140, + 140, + 131, + 121, + 133, + 115, + 128, + 114, + 153, + 130, + 140, + 135, + 131, + 109, + 128, + 125, + 123, + 123, + 130, + 120, + 125, + 131, + 139, + 124, + 142, + 125, + 137, + 119, + 118, + 82, + 109, + 107, + 122, + 130, + 135, + 122, + 136, + 110, + 118, + 119, + 122, + 114, + 132, + 125, + 122, + 121, + 138, + 125, + 138, + 138, + 126, + 115, + 140, + 127, + 137, + 132, + 123, + 109, + 125, + 120, + 148, + 146, + 143, + 124, + 127, + 131, + 143, + 128, + 147, + 125, + 134, + 136, + 145, + 131, + 136, + 143, + 172, + 158, + 149, + 141, + 73, + 79, + 89, + 105, + 104, + 97, + 120, + 131, + 109, + 95, + 127, + 136, + 133, + 133, + 149, + 131, + 133, + 125, + 116, + 106, + 197, + 89, + 136, + 146, + 182, + 98, + 130, + 134, + 127, + 83, + 104, + 101, + 128, + 117, + 121, + 106, + 164, + 143, + 137, + 149, + 102, + 91, + 111, + 121, + 137, + 96, + 116, + 111, + 148, + 116, + 153, + 132, + 139, + 133, + 159, + 123, + 127, + 125, + 155, + 137, + 99, + 73, + 92, + 97, + 139, + 115, + 147, + 135, + 117, + 80, + 102, + 101, + 139, + 148, + 148, + 132, + 153, + 121, + 119, + 114, + 118, + 116, + 143, + 141, + 97, + 78, + 101, + 104, + 145, + 134, + 162, + 136, + 133, + 138, + 116, + 104, + 83, + 80, + 98, + 110, + 135, + 131, + 128, + 143, + 149, + 135, + 132, + 116, + 51, + 81, + 80, + 106, + 131, + 112, + 111, + 119, + 118, + 127, + 142, + 148, + 111, + 79, + 102, + 102, + 132, + 130, + 126, + 138, + 126, + 120, + 113, + 128, + 116, + 109, + 138, + 139, + 102, + 81, + 105, + 108, + 113, + 113, + 149, + 134, + 124, + 113, + 123, + 105, + 107, + 77, + 98, + 100, + 148, + 155, + 166, + 156, + 142, + 119, + 122, + 108, + 122, + 81, + 103, + 101, + 139, + 136, + 148, + 142, + 175, + 122, + 125, + 141, + 166, + 111, + 130, + 153, + 102, + 95, + 115, + 126, + 122, + 85, + 109, + 107, + 154, + 146, + 126, + 135, + 199, + 111, + 119, + 125, + 125, + 85, + 111, + 109, + 166, + 121, + 141, + 155, + 122, + 102, + 119, + 115, + 148, + 135, + 137, + 151, + 132, + 92, + 114, + 110, + 113, + 89, + 109, + 115, + 162, + 111, + 121, + 142, + 147, + 148, + 154, + 151, + 122, + 114, + 113, + 113, + 107, + 100, + 135, + 139, + 135, + 89, + 108, + 104, + 136, + 130, + 145, + 92, + 130, + 88, + 106, + 102, + 140, + 126, + 133, + 155, + 186, + 119, + 131, + 145, + 114, + 108, + 134, + 126, + 112, + 81, + 109, + 109, + 109, + 126, + 135, + 121, + 130, + 100, + 120, + 124, + 128, + 88, + 113, + 110, + 147, + 135, + 124, + 116, + 107, + 83, + 106, + 108, + 118, + 93, + 113, + 113, + 118, + 103, + 128, + 120, + 158, + 147, + 140, + 124, + 129, + 113, + 152, + 155, + 97, + 86, + 112, + 118, + 214, + 78, + 94, + 102, + 168, + 133, + 134, + 104, + 145, + 161, + 110, + 114, + 111, + 102, + 139, + 146, + 110, + 93, + 97, + 111, + 136, + 113, + 158, + 158, + 171, + 129, + 107, + 118, + 107, + 124, + 114, + 115, + 108, + 108, + 123, + 119, + 176, + 98, + 105, + 146, + 100, + 128, + 153, + 158, + 111, + 127, + 123, + 113, + 228, + 75, + 99, + 112, + 129, + 103, + 103, + 126, + 134, + 123, + 172, + 148, + 218, + 79, + 136, + 148, + 117, + 102, + 111, + 137, + 223, + 147, + 110, + 154, + 119, + 102, + 108, + 119, + 125, + 107, + 147, + 153, + 189, + 177, + 95, + 87, + 142, + 138, + 135, + 73, + 136, + 255, + 160, + 152, + 142, + 111, + 123, + 163, + 144, + 156, + 95, + 105, + 230, + 91, + 104, + 116, + 144, + 136, + 149, + 85, + 145, + 84, + 126, + 142, + 223, + 101, + 118, + 134, + 118, + 77, + 93, + 98, + 171, + 83, + 139, + 126, + 120, + 133, + 145, + 86, + 216, + 106, + 145, + 154, + 88, + 91, + 154, + 146, + 196, + 181, + 136, + 163, + 127, + 135, + 155, + 142, + 168, + 159, + 140, + 111, + 122, + 151, + 161, + 146, + 129, + 147, + 183, + 140, + 121, + 111, + 104, + 103, + 82, + 88, + 148, + 129, + 144, + 133, + 154, + 166, + 153, + 178, + 172, + 151, + 89, + 85, + 106, + 114, + 117, + 123, + 161, + 128, + 164, + 94, + 148, + 175, + 158, + 107, + 104, + 141, + 121, + 90, + 122, + 118, + 97, + 146, + 144, + 123, + 121, + 133, + 138, + 169, + 101, + 111, + 144, + 111, + 85, + 115, + 137, + 124, + 199, + 96, + 117, + 115, + 135, + 130, + 171, + 211, + 184, + 89, + 108, + 105, + 219, + 71, + 120, + 137, + 183, + 96, + 125, + 108, + 128, + 72, + 148, + 134, + 120, + 131, + 166, + 196, + 144, + 162, + 130, + 63, + 120, + 106, + 116, + 139, + 158, + 79, + 135, + 152, + 197, + 123, + 129, + 143, + 133, + 130, + 146, + 173, + 146, + 142, + 156, + 91, + 190, + 78, + 139, + 161, + 129, + 85, + 154, + 123, + 136, + 127, + 157, + 109, + 200, + 68, + 123, + 142, + 135, + 148, + 188, + 208, + 159, + 103, + 96, + 130, + 170, + 78, + 143, + 159, + 185, + 94, + 151, + 169, + 100, + 110, + 155, + 127, + 146, + 100, + 113, + 108, + 184, + 118, + 149, + 161, + 140, + 94, + 109, + 104, + 108, + 154, + 141, + 126, + 195, + 164, + 110, + 127, + 99, + 118, + 113, + 110, + 81, + 139, + 147, + 148, + 109, + 130, + 152, + 190, + 135, + 80, + 122, + 128, + 106, + 139, + 171, + 140, + 162, + 61, + 124, + 121, + 114, + 162, + 151, + 127, + 247, + 105, + 97, + 129, + 128, + 157, + 116, + 65, + 63, + 134, + 152, + 146, + 213, + 198, + 63, + 99, + 118, + 62, + 151, + 130, + 58, + 85, + 148, + 139, + 124, + 131, + 132, + 66, + 113, + 102, + 100, + 101, + 119, + 113, + 126, + 89, + 161, + 225, + 116, + 133, + 115, + 99, + 97, + 135, + 116, + 80, + 124, + 119, + 179, + 155, + 101, + 86, + 158, + 179, + 119, + 82, + 175, + 63, + 130, + 133, + 158, + 121, + 89, + 96, + 155, + 147, + 171, + 59, + 153, + 166, + 83, + 61, + 87, + 136, + 129, + 133, + 65, + 214, + 117, + 25, + 158, + 101, + 65, + 154, + 228, + 243, + 53, + 128, + 115, + 156, + 162, + 70, + 122, + 145, + 97, + 77, + 39, + 131, + 147, + 156, + 144, + 126, + 67, + 108, + 113, + 108, + 126, + 190, + 61, + 127, + 119, + 112, + 117, + 144, + 74, + 64, + 148, + 0, + 159, + 118, }; static long _vq_lengthlist_lsp32_0[] = { + 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10, + 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, + 10,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12, }; static long _vq_ptr0_lsp32_0[] = { -1, -2, -3, -4, -5, -6, -7, -8, - 9, -10, 22, -12, 22, -14, 35, 137, - -17, -18, -19, -20, -21, -22, 22, -24, - 52, -26, -27, 22, 35, 62, -31, 35, - -33, 123, 216, -36, 52, -38, 123, 220, - -41, -42, -43, -44, -45, 17, 62, 52, - -49, 52, 62, -14, 195, 92, -55, -56, - 35, -58, -59, -60, 41, 123, -47, 75, - -63, -64, -67, -68, -69, -70, 17, 216, - 121, -74, -75, 17, -77, -29, 182, -80, - -81, 35, 174, -84, 121, 195, -87, -88, - 174, 220, -91, -92, -93, -94, -95, -96, - 12, -98, 20, 52, 46, 41, -49, 194, - 131, -103, -107, 137, -109, -110, 12, 131, - 153, 17, -115, 113, 131, -118, 62, -50, - 75, 73, -123, -124, -125, -70, -120, 235, - 216, -100, -126, -132, 52, -130, -135, -136, - -137, -75, 149, 73, -141, 62, -143, -144, - 105, -70, -138, -148, -149, 73, 150, -152, - 105, 149, -155, -156, -157, -158, -159, -160, - -161, 1, 41, 1, 35, -166, -167, 9, - 12, -170, -171, 41, -173, -174, -175, 89, - 97, -178, 97, 208, -181, -182, -183, 41, - 85, -186, -187, -188, -189, 1, 89, -192, - -193, 41, 153, 50, -197, -198, 35, -195, - 41, 213, -203, -198, -199, -206, -207, -208, - 17, 208, -211, -212, 185, -214, -215, 17, - 185, -218, 121, -204, 208, -72, -219, -60, - -222, 208, -227, -228, -229, -190, 156, 194, - -233, 97, 150, -236, 89, 97, -239, -240, - -168, -234, 161, -113, -241, -246, -247, 1, - 194, -250, -189, 156, 148, -190, -252, -256, - 161, -254, -259, -198, -257, 174, -260, -264, - -265, -266, -267, 32, 49, 26, -268, -270, - 208, 234, -275, -276, -277, -278, -279, 121, - -215, -271, -283, 185, 229, -286, -287, 121, - -289, 169, 174, 73, -293, -294, 105, 150, - -297, -298, 218, -300, 17, 148, -303, -256, - 76, 218, -307, -216, -304, 213, -311, -312, - -313, -314, -315, 12, 218, 68, -319, 161, - 50, -322, 17, -324, 17, -309, -320, -328, - -329, -330, -331, -332, -333, -334, -335, 65, - 67, 115, 67, -340, -341, -342, -343, -344, - 3, -346, 20, -348, 9, 76, -351, -352, - -353, -354, 3, -356, 91, -358, 67, -360, - 91, 124, -363, -364, -365, 3, 91, -368, - 9, -326, -366, -369, 209, -374, 4, 20, - 76, -378, -379, -380, -381, -382, 3, 201, - -385, -386, 34, 193, -389, 34, 50, -392, - -393, -394, 19, 44, -397, 34, -395, -400, - 34, -398, -403, -404, -405, -406, -407, -365, - 68, 52, -411, -412, 22, -408, -415, 52, - -417, 20, -419, 20, 131, 51, -423, -424, - -425, 3, -427, -428, -429, -430, -431, 3, - -433, -425, -421, 22, 3, 52, 166, -440, - -441, 22, 67, -444, -36, 4, -445, 67, - -38, 68, 166, 201, 201, -454, -455, -456, - -12, 44, 123, 35, 209, -451, -457, -464, - -465, -466, 22, -462, 115, -470, 67, -467, - -337, 75, -475, -476, -477, -478, -479, 34, - 19, -482, -483, 19, -485, -486, 25, 129, - 129, -490, -491, -492, -493, -494, -495, -496, - 1, -498, 25, 75, -501, -502, -503, 9, - 129, -506, 25, 51, 25, -506, -507, -512, - 41, 89, 89, 238, -517, -518, -519, -247, - -510, 25, -508, 194, -242, -499, 177, 44, - -529, -530, -531, -532, -533, 9, 34, 129, - -527, -538, -539, -483, 44, -542, -483, -540, - -543, -546, 91, -544, 148, -550, -551, -552, - -553, -554, -555, -556, 1, -548, -269, 49, - -559, -562, 65, -560, -565, -566, 35, 9, - -563, -533, -568, -572, 65, -360, -570, 129, - -577, 1, 9, 35, -581, -582, 65, 137, - 161, 35, -587, -512, -574, 123, -591, -592, - -593, 12, 20, -596, -368, 156, 12, 137, - -601, -583, 141, -110, -602, 155, 12, -558, - 141, 85, -611, -612, -613, -614, -615, -616, - -617, -618, -619, -620, 14, 78, -621, -609, - 105, -626, 30, 78, -629, 73, -623, -632, - 78, 169, -635, -636, -637, 73, 161, 150, - -641, -642, -643, -644, 14, -646, 191, -648, - 14, 202, 218, -652, -653, 30, -655, 30, - -657, -658, 202, 85, 150, -662, -663, -664, - -665, -666, -667, 27, -669, -670, -671, 73, - 113, -674, 78, 50, 113, -678, -679, -680, - 27, -675, -603, -607, -681, -684, -687, -688, - 12, 155, -637, -659, -230, -694, -688, -609, - -697, 73, -695, -700, 46, -103, -703, -704, - -705, -706, -707, -708, -709, 30, -711, 30, - 105, -714, 30, 85, -717, -149, -715, 94, - -721, 78, -723, -724, 73, 6, -727, 78, - -725, -730, -731, -732, -709, -728, -735, 46, - 73, -655, -733, -738, 78, 94, -743, 30, - -739, -746, -747, 46, 43, -744, 86, -752, - -753, -754, 30, -756, -757, 78, -659, -760, - -761, 105, -763, 110, 174, 110, -767, -768, - -724, 86, -771, 78, 113, -774, 110, -776, - 73, -778, -779, -780, -781, -782, -783, 27, - 86, 27, -735, 85, -789, -790, -791, 57, - 94, 94, -795, -796, 78, -787, -797, -800, - -801, -802, -803, -804, 57, 126, -807, 81, - 70, -810, 81, -808, 51, -811, -813, -816, - -807, 6, 231, -820, 231, 245, -823, -824, - -825, -826, -827, -828, 30, -711, -784, 6, - -833, -834, 57, -831, -727, -835, 6, -754, - -838, -840, 158, -844, -845, -846, 14, -828, - -841, 228, -851, -852, -853, -854, -855, 30, - -857, 191, 228, -791, -848, -860, -863, 191, - -861, -790, 4, 134, 6, -870, 57, -868, - -873, -874, -875, -876, -877, -878, -804, 201, - 158, -805, 70, -882, 110, -886, -887, -793, - 193, -890, 126, 142, -893, -884, -660, -251, - -241, 94, 70, -900, 142, 158, -903, 94, - -152, -898, -763, 70, 244, -910, -763, -907, - 220, -764, -911, -912, -914, -918, -919, -920, - -921, -922, -923, -924, 46, 62, -927, 52, - -100, -916, 62, 131, -933, -934, 62, -936, - 73, 113, -939, -940, -941, -942, -141, 49, - -765, -943, -230, -948, -139, -268, 110, -949, - -139, -230, -950, -725, -955, -958, -959, -960, - -961, -962, 62, -950, -956, 174, 220, -29, - -964, -968, -969, -972, -973, -974, -975, -924, - -970, -978, 94, 139, -981, 46, -978, -976, - -985, -986, 110, 126, -989, -990, -991, -992, - -993, -994, -995, -996, -934, 156, 124, -1000, - -1001, -1002, 22, 131, -1005, -1006, 100, -998, - -1009, -962, 49, 142, -1003, -1010, -1013, -1016, - 35, -1018, -412, 76, -1021, 113, 115, -1024, - -1025, -1026, -1027, -22, 6, 148, -1016, -1029, - 158, -1011, 124, -1034, -901, -304, -1039, -1040, - 100, 49, -468, -1041, 220, 227, -1047, -1048, - -1049, 36, -1051, -1052, 36, 67, -1055, -98, - 84, 36, -1057, -120, -338, 49, -1061, -1064, - -1065, -1066, 36, 100, 100, -1062, -1071, -1072, - -1073, 52, -1069, -1076, -1077, -419, -1074, 52, - 100, -1082, 52, 100, -1073, 76, -1087, 46, - -1089, -1090, -1091, -1092, -1093, -1094, 52, -1096, - 20, 100, 20, -1085, -1101, -1102, 100, 142, - 84, -1106, -1107, -1108, -1109, -1110, -1111, 20, - 139, 131, -1104, -1097, 84, -1118, -1119, 36, - -1116, 131, -1123, -1124, 100, 84, -866, 76, - -1129, -1130, -1066, -1127, -1133, 217, 233, -1136, - -1067, -1131, 217, -1140, -1141, 126, -1143, -1067, - 19, 131, 145, -1148, -1149, 46, 131, -1152, - -924, 84, -1153, -987, 19, -1156, -1159, -1160, - -1161, 113, 126, -1157, 100, 131, 126, -1168, - -1169, -1170, -1171, -1172, -1173, -1174, -807, -1163, - 146, 139, -1179, -805, -1175, -1180, 139, 139, - 146, 139, -880, 92, -1189, -1190, -1185, 76, - 142, 206, 206, -1191, -1197, -1198, -1199, 100, - 142, 206, 4, -1204, 142, 158, -1207, -1205, - -1202, 233, -1138, -1208, -1213, -1214, -1215, -1216, - -1217, -1218, 4, 65, -1221, 20, -1223, -1224, - 36, -1226, -1219, 76, 137, -1230, 113, -1232, - -98, 147, 36, -1236, -1237, 113, 4, 155, - -1241, 35, -1243, 65, -605, 75, -672, -1245, - -583, -1247, 4, -1252, -1253, -1254, -1255, 12, - -96, -1250, 113, 124, -1261, -667, -1191, 147, - -1230, -483, -1267, 46, 131, -1270, -1271, -98, - -1265, 4, -1273, -937, 19, 155, -1276, -1280, - -937, -1278, -1281, -1284, -1285, -1286, -1287, -1288, - -1289, 27, -1282, -1292, -1293, 43, 147, -1296, - -1297, 43, 81, -1298, -608, -1166, -608, -1056, - -1221, -1303, -1293, -1305, 50, -1310, -1096, -1308, - -1311, -1087, -1312, -1316, -1317, -1318, -1319, -1320, - -1321, -1322, -1323, 0, 24, 24, 24, -1328, - -1329, -1330, 0, 88, -1333, 72, -1335, -1336, - 72, 160, 96, -1340, -1341, -1342, -1343, -1344, - 0, 128, -1347, 23, 23, 96, -1351, -1352, - 23, 141, -1355, -1356, -1329, -1126, -725, -1358, - -1361, 39, -1359, 39, -1343, -1357, -1056, 6, - 88, -1370, -1371, -1372, -1373, -1374, 0, 23, - -1367, -1378, -1379, -1380, 23, 151, -1383, 39, - -1056, -1383, -1384, 167, -1389, 151, 199, -1392, - -1393, -1394, -1385, -1365, 11, -1396, -1399, 103, - -1397, -1402, 103, -1400, -1405, 103, 160, -1408, - 135, -1410, -1411, -1412, -1413, -1414, 8, 183, - -1417, 104, -1403, -1420, 104, -1422, -1423, -1424, - -1425, -1426, 8, 72, -1429, 40, -120, -1432, - -1433, 8, -1435, 40, -1437, -1438, -1439, 24, - -1441, -1442, 40, 88, 40, 72, -1447, -1448, - -1449, 24, -1451, -1452, -1433, -1430, 120, 120, - -1439, -1308, 176, -1460, -1461, -1462, -1463, -1464, - 71, 103, -1333, -1457, 92, -1470, -1471, -1472, - 71, 135, -1405, 50, -1475, 168, -1479, -1480, - 40, -1482, -1483, 40, 75, -1486, 152, 11, - -1333, -1487, 152, 72, -1493, -1494, -1495, 152, - 184, -1498, 183, -1489, -1499, -1502, -1503, 7, - -1505, 119, -1500, -1508, -1509, 55, -1511, -1512, - 119, -1498, 221, 226, -1517, -1518, -1519, -1520, - -1521, -1522, -1523, -1524, -1525, -846, -597, 111, - -1529, 30, -602, -1532, -1533, 47, 111, -1536, - 143, -1530, -754, 156, -1541, -1542, -1543, -1544, - 47, 143, 144, 236, 236, -1550, -1551, -1552, - -1553, -1554, 15, 95, -1557, 31, -817, -1560, - -1561, 16, -1558, -1562, -1565, -1566, -1567, 14, - 111, -1555, 193, 84, -648, -1571, -1575, 31, - 95, 14, -1579, -1580, -1581, 47, 6, 31, - -1585, -1586, -1587, -1588, 16, 79, -1582, -1592, - -1533, -1590, 79, 6, -1597, -1598, -1588, -1595, - -1601, -1602, 31, -1599, -1605, 95, -1603, -1608, - -1609, -1561, 141, 79, -1557, 11, -1613, -1616, - 31, 6, 144, -1583, -1617, 95, -1623, -1624, - -1625, -1626, 47, 127, -1629, 111, 201, -846, - -1570, 30, -1527, -386, 207, -1638, -1639, -1640, - -1641, 111, 175, -1635, 127, -1646, 15, -1648, - -1649, -1629, 156, 191, -1653, -1654, 175, 191, - 207, -1658, -1659, -863, 76, 228, -1663, 207, - -1660, -863, -1664, 215, -1669, -1670, -1671, -1672, - -1673, -1554, 11, 96, 31, -1678, 16, 31, - 76, 15, 159, 127, -1685, -1686, -1687, -1688, - -1689, 16, 88, -1692, -1693, 47, -1695, 79, - -1680, -1698, -1699, -1700, 47, 128, -1703, 127, - 145, -1706, -1707, 79, -1104, -1703, 19, 47, - -1710, -1714, -1715, -1352, -1712, 145, -1352, -480, - -1721, 23, 159, -1724, -1725, 79, 19, -1395, - -1726, -1728, -1731, -1732, -1733, 96, 33, -1734, - -1737, -1683, 11, -1738, -1739, -1742, -1743, -1744, - 47, 127, -1747, -1627, -1740, 175, -1751, -1389, - -1748, -1752, -1755, -1756, 159, -1753, -1654, -251, - 193, -1762, -1763, -1764, -1765, -1766, -1767, -1439, - -361, -1770, -1771, 56, 196, 88, 56, 136, - -1777, 31, -1779, -1780, -1781, -1782, 48, -1784, - 56, -1784, 49, -1786, -1789, -1784, -1787, 64, - 64, 104, -1795, -1792, -1790, 148, 124, -1800, - -1801, -1802, -1803, -1804, -1588, -1798, 79, 31, - -1602, -1805, 112, -1812, -1813, 56, 64, -1816, - -1817, 16, -1813, 49, -1819, -1822, 31, -1820, - -1825, -1826, -1771, -1823, 144, -400, -1831, -1832, - 79, -1829, -1835, 88, -1837, -1838, -1839, -1840, - -1841, 16, 166, -1676, -1842, -1846, -1841, 76, - -1695, -1847, -1851, -1852, 16, 56, -1807, -1849, - 67, -1858, -1326, -1856, 79, 67, -1863, -1864, - -1865, -1866, 15, 96, -1676, -1861, -1871, -1872, - 16, -1869, -1873, -1876, -1877, -1817, -447, 56, - -361, -1882, -1883, 31, -1885, 56, 112, -1888, - -1889, -1890, -1891, 31, 176, -1894, 64, 112, - -358, -1898, -1899, -1602, -1896, 3, 144, -1901, - 64, -1546, -1903, 176, -1909, -1910, -1911, -1912, - -1913, -1914, -1915, 32, 120, -1918, 64, -1920, - -1921, -1922, 48, -1924, 64, -1906, 64, 200, - -1929, -1930, -1931, -1932, 32, 97, -1935, -1936, - -1937, 80, 208, -1940, 200, -1925, -237, -1941, - 200, -1946, -1947, -176, -1943, 210, 208, -1927, - 196, -1954, -1955, -1956, -1957, -1958, -1959, 32, - -1961, 15, 32, -1964, -1965, -1966, 63, -1968, - 95, 95, -1971, -1972, -1973, 15, 95, 32, - -1977, -1891, -1952, 112, -450, -1982, -1983, -1984, - -1985, -1986, -1975, -1952, 64, 63, -1991, -1992, - -1993, -1994, 63, 144, -1895, 70, -1937, -1997, - -1923, 75, -1999, -2002, -2003, -1895, 150, 223, - 144, -2010, -2011, -2012, 80, -1995, -997, -2016, - -2017, -2018, -2019, -2020, 32, 97, -2023, 80, - -2014, 185, -2027, -237, -2024, 185, -2031, -2032, - -2033, -2034, -2035, -648, -2028, 65, -653, 67, - -2039, -2042, -2043, 14, 65, -754, -2044, -1786, - 239, -2050, -2051, -2052, -2053, -2054, -2055, -2056, - 14, 105, -2059, 95, -1621, -2047, -2061, -620, - 76, -624, 65, 143, 14, 169, 91, 144, - 95, 169, -2075, -2076, -2077, -1621, 19, -2078, - -2081, 223, -2057, -2079, -2083, -376, -2087, 14, - -374, -2090, -316, -2088, 14, 235, -2095, -2096, - -2097, 216, -2099, 144, -2101, 144, 19, -2104, - -2105, -2106, -2057, -2102, -2107, 223, 105, -2108, - -2113, -2114, -2115, 63, -2111, 218, -2116, -2120, - -2121, -279, 134, -2124, -2114, 51, 115, -2126, - -287, -2127, 179, -287, -2130, 115, -2135, -2136, - 121, -2133, 121, -2140, -2141, -2142, 121, -2137, - 121, 115, -2147, -2148, -2136, 179, 236, -1102, - -2153, -2154, 216, 236, -2007, -2151, -2157, -2160, - -2154, 179, -2122, 216, -2165, -2166, -2136, -2162, - -2169, 216, 220, -2172, 121, -1547, -2145, 244, - -2177, -2178, -2179, -760, -2125, -2174, 169, -2184, - 174, -2186, -2187, -2057, -2181, -2188, -1547, 100, - 236, -2191, -2193, -2196, -2197, -2198, -2199, -2200, - -2201, -2202, -2203, 74, 140, -2206, -2207, 13, - -2209, -2210, 61, 74, -2213, -2211, 134, 172, - -2217, 165, -2214, -2220, -2221, -2222, -2223, 61, - -2225, 122, -468, -2228, 61, -2230, 140, -2232, - 154, -2234, -2235, -2236, 61, -2226, -2239, -2240, - -2241, 130, -2145, 154, -1856, -2246, -2247, 61, - 130, -2250, 13, -2244, -2253, -2254, -2255, -2256, - -2257, 37, 45, -2260, -2258, -2251, 154, 45, - -2258, -2261, 181, -2268, -2269, -2270, 106, -2272, - -2273, 122, -2265, 148, -2277, -2278, -2279, -2280, - 37, -2282, 90, 130, -2285, -2286, 5, -2288, - 37, 125, -2291, -2292, -2250, -2275, 173, 204, - -2297, 125, -2130, -2262, 51, 37, -2303, -2304, - -2305, 5, -2307, -2308, -2305, -2300, 36, -2312, - 37, -2310, -2315, -2316, -2317, 5, -2313, 172, - -2318, -2322, -2323, 37, -2133, -2310, -2327, -2328, - -2329, 37, -2331, 106, -2333, -2334, 90, 154, - -2331, -2325, -2337, 37, -2338, -2342, -2343, 90, - 5, -2346, -2347, 58, 106, -2350, 90, -421, - -2353, -2354, -2355, -2356, -2357, -2358, 2, 21, - -2361, 18, 115, 18, 21, 18, 21, 101, - -2369, -2370, -2371, -2372, -2373, -2312, 65, 53, - 45, -2378, -2379, -2380, -2381, 21, 170, -2384, - 98, -2386, -2375, -2374, 98, -2387, -2391, -2376, - -559, 49, -2393, -2396, 45, -2384, -2394, 101, - -2401, -2402, -2403, 45, -2398, -2406, -2399, -2145, - 122, -2410, 114, -1856, -2413, 170, -1856, -2416, - -2417, 114, 67, -2420, 122, -2422, 140, -2424, - 98, -2426, 106, -2418, -2429, -2430, -2431, -2432, - -2433, 37, -2427, 90, 98, -2438, -2439, -2440, - 53, 36, 38, -2441, 166, -2444, -2447, -2448, - -2449, 53, -2445, -2452, 58, -2454, -2384, 65, - -2426, -943, 154, -2460, 58, 157, -2463, -2464, - -2465, -2466, -2467, -2468, -2469, -2470, 29, 109, - -2203, -2457, -2473, 109, 29, -2478, 69, 109, - -2481, -2482, -2483, -2484, -2485, 21, 101, -2488, - 45, -2474, -2491, 21, -2376, 196, -548, -2496, - -2497, -2498, -2470, 179, -2499, 114, -2503, -2504, - 45, 134, -2505, -2508, -2509, 21, -2511, -2512, - 29, -523, -2515, -2512, -527, 133, -2519, 101, - -2516, -2522, -2523, -2358, 134, -2485, -2524, -2359, - -2526, 101, 114, -2532, -2533, 133, 230, -2536, - 214, -2528, -2539, -2540, -2541, -2542, 13, -2544, - -2545, -2546, -2547, -2548, 29, -234, 29, -2548, - -898, 117, -2504, -2552, 148, -2558, -2258, -2556, - 173, 150, -2563, -2564, -2565, -2566, 29, 109, - -2569, 74, 44, -2572, -2573, 13, -2211, -2570, - 44, -2442, -2576, -2578, -2581, -2582, -2583, -2584, - 29, 117, -2587, 109, -2579, -2590, 69, -2588, - -2590, -507, 173, -2596, -2597, -2301, 49, -2598, - -2263, -2599, -2603, 69, 133, -2606, -2607, -2608, - 13, 77, 33, -2612, 77, 205, -2615, -2616, - -2617, -2618, -2619, -2250, -2601, 139, -2241, -2621, - 171, -2626, -2210, 100, -2627, -2553, -2628, -2630, - -2633, -2246, -2577, -2631, 139, -2638, 77, -2640, - 77, 117, -2612, -2636, -2624, -2646, -2647, -2648, - -2649, -2207, 51, 117, 117, -2654, -2655, 74, - -2651, 51, -2657, -2660, -2661, 61, -2663, 61, - -2658, 171, -2667, -2668, -2669, -2670, -2671, -2672, - -2673, -2674, -2675, 10, 66, -2207, -2665, -1234, - -2681, -2682, 10, 165, -2685, 74, -2663, -2679, - -2676, -2687, -2691, 77, -2689, -2694, -2695, -2696, - 74, -2692, -2699, -2700, 140, 172, -2703, -2704, - 61, 165, -2707, -2708, -2709, 82, 165, -2697, - -2713, 140, 166, -2716, -2663, 68, -2719, 77, - -2721, -2722, -2723, -2724, 13, -2576, -2727, 66, - 130, -2730, -2731, -2676, 36, 130, -2735, -2676, - -2732, 82, -2739, -2740, 82, 165, 138, 82, - 130, -2746, -2747, 5, -2749, 138, 172, -2752, - -2753, -2754, -2755, 13, 51, -2710, -2756, 139, - -2761, 130, 68, -2764, -2765, -2766, 66, 68, - -1292, -2770, -2761, 36, -2773, 138, -2634, -1110, - -2775, -2778, -2779, -2780, 5, -2608, -2776, -2784, - 125, -2724, -2782, 66, 66, -2790, 50, 66, - -2793, 77, 43, -2796, -2797, -2798, -2727, -2794, - 149, -2802, 99, 4, 66, -2806, 125, -2808, - -2788, -2803, -2811, 130, -2813, -2814, -2815, 10, - -2817, 85, -2819, -2709, -2809, -2820, -2823, 86, - 140, -2821, -2827, -2828, -2829, 82, 178, 149, - -2749, -2825, 5, -2836, -2837, -2838, -195, 67, - -2841, -2791, 76, 138, -2845, 116, -2838, 38, - 20, -2850, -2851, 85, -2848, -2854, 116, -2856, - -2857, -2851, 20, 86, -2861, 116, 38, -2858, - -2865, -2866, -2867, -2868, -2869, -2870, -2871, -195, - -2863, -2872, 99, -2876, 66, 99, -2879, -2880, - -1396, 68, 36, -2882, -2885, -2886, -2887, 66, - -2889, 99, 178, 149, -2883, -2894, 99, 141, - -2892, -2898, -2899, -2900, -2901, 11, 141, 68, - -2905, 66, -1367, 68, -2909, 85, -2911, 6, - -2876, 4, -2862, -2913, -2915, -2918, -2919, 50, - 66, -2922, -2923, -2924, -2925, 10, -2927, -2928, - 66, 51, -2909, -2929, -2882, -2934, 10, -2936, - -817, -2932, -659, 51, 4, -2942, -2943, -2944, - -2925, -2940, -2945, -2948, 93, -2946, -2951, -2952, - 6, -2949, 164, 10, 6, -2953, -2959, -2960, - -2961, -2962, 6, 82, 86, -2911, -2881, -2968, - 10, -2934, -2576, 36, -2973, -2974, 82, 85, - -2971, -2978, -2851, -2976, 149, 195, -2983, -2984, - -2985, -2986, -2675, -2979, 164, -2737, -2987, -2990, - -2993, -2925, -2991, -2994, -2928, 243, 217, -3000, - -3001, -3002, 82, 164, 85, -2998, 134, -3008, - -2727, -3006, -3003, 206, -138, 190, -3013, -3016, - -3017, -3018, -3019, -2901, -1193, 171, 33, 93, - -1613, -3021, -3027, 33, -3029, -2887, 107, -3032, - -3033, -3034, -3035, 33, 93, 93, -3039, -2691, - 171, -3040, -3041, -3042, -3045, -3046, 61, -3043, - -2690, 42, -3025, 206, -3053, 164, 171, -3054, - -3057, -3058, -3059, -3060, -3061, -3062, 58, -3064, - -3065, 60, 139, -3068, -2334, -3066, -3069, 58, - -3073, 59, -3075, -3076, 60, -2230, -3070, 206, - -3081, 108, 190, -3084, -3085, -3086, -3087, 5, - -2749, -3082, -3091, -3092, -3093, 60, 217, 146, - -3097, -3098, 138, -2750, -3095, -3102, 108, 180, - -3105, -3106, 5, -3108, -3109, -2334, 139, -3110, - -2761, -3111, -2744, 43, -3115, -2806, -3116, 190, - -3121, -3122, -3123, -3124, -3125, -3126, 54, 60, - -3129, -3130, 59, 102, -3133, 60, 212, -3136, - 59, 102, -3139, 60, -3141, -3142, -3143, -3144, - 5, 116, 60, -3148, -3149, 54, -3151, -3152, - -3153, 60, 132, -2861, -3082, 187, -3157, -3160, - -3161, -3162, -3163, -3106, -3158, 60, -3167, 90, - 5, 157, -3171, -3144, -1176, 125, 157, 163, - -3177, -3178, -3179, -3180, 59, -3172, 212, -3167, - -3157, 125, -3187, 60, -3184, -3190, -3191, -3165, - -807, -3781, -3192, -3194, -2806, 146, -1297, 60, - -3198, -3202, -3203, 5, 54, -3206, -3062, -3200, - 60, 58, -3211, -3212, 54, 102, -3215, -3216, - 60, 108, -3213, 26, -3219, -3222, -3223, -3224, - 54, -3220, -3557, -3225, -3227, -3230, -3231, -3212, - 219, 163, 212, -3169, -3234, -3238, 162, -3233, - 211, 203, -3243, -3244, 60, 58, -3247, -3216, - -3240, -3250, -3251, 90, 203, -3254, -3255, -3256, - -3257, -3258, 102, 132, -3261, -2854, -3252, -3262, - -3259, -3240, 190, -3268, -3269, 83, -3271, -3272, - 59, 180, -3275, -3276, -3277, -3259, -3266, 189, - 180, -3282, -3283, 178, -3278, 42, -3287, -3288, - 138, -3285, 178, -3292, 83, -3294, -2843, -3289, - -3295, 83, -3299, -3002, -3296, 197, -3283, 212, - -3279, -3303, 187, -3308, -3309, -3310, -3311, -3312, - 108, 188, -2713, -3306, -3317, 82, 140, -3315, - -3321, -3322, -2709, -3266, -3325, -3326, -2964, 26, - 198, -3313, -3327, -3330, -2854, -3331, 188, 116, - -3337, -3288, -3333, -3338, -3103, -3339, -3343, -3344, - -3345, -3346, -3258, 241, -3312, 118, -3349, -3352, - 189, -3350, 116, -3353, -3357, -3280, -3006, 107, - -3361, -3362, -3363, -3364, -2802, -3359, -3367, 83, - -3369, -3370, 59, -3372, -3373, 83, -3365, -3376, - 132, -3378, -3379, 125, -3374, -3382, -3383, -3384, - 132, 211, -2843, -3385, -3098, 42, -2744, -3389, - -3365, -3394, -3395, 28, 50, 149, -2844, -3226, - 118, -3402, -3173, 107, -3405, -3406, 132, 42, - -3409, -3410, -3411, -3412, -3413, -3414, 44, -3416, - -3417, -3418, -3419, -3420, 75, -3407, -3423, 83, - -3421, -3426, 83, 149, -3426, -3424, 182, 189, - -3433, -2831, -3429, -3436, -3437, 182, 194, -3399, - -3434, 190, -3443, -3444, -3445, -3446, 50, 150, - 85, 116, -3451, -3452, 85, 116, -2831, -3441, - 118, -3439, -3456, -3458, -3461, -3462, -3463, -3464, - -457, 42, 118, -3465, -3469, 118, -3471, -3472, - 44, -3474, 118, -3476, 107, -3478, 118, 38, - -3481, -527, -3479, -3482, -3485, -3486, 107, 189, - -3489, -3490, 182, 26, -3487, -3491, -3493, -3496, - -3497, -3498, -3499, 70, 86, 194, 116, -3466, - -3494, -3506, -3507, -3508, -3509, 102, -3504, -3510, - -3513, 118, 116, -3511, -3517, 102, -3515, 118, - -3521, -3437, -2657, -3501, -1184, -3526, -3279, -1112, - -3501, -3527, -2794, -3532, -3533, 189, 108, -3534, - -3530, -3538, -3539, 118, 224, -3542, 134, -3536, - -3545, -3546, -3547, -3548, -3549, -3550, -3551, -3552, - 26, -3554, 28, 38, 42, 26, -3559, 28, - -3561, 42, -3563, -3564, -3565, -3554, -3543, -3479, - -2636, -3568, -3571, -3572, -3573, 28, 102, -3576, - -3479, -3095, 118, -3580, 102, -3574, -1102, 116, - -3585, -3586, -3327, -3582, 166, 83, -3591, -3592, - 42, 68, -3595, 59, 83, 68, -3599, -3600, - -3555, -2794, -3603, -3604, -3605, -3606, 38, 107, - -3609, 42, -3611, -3606, 51, 102, -3615, 102, - -3613, 51, 38, -3620, 102, -3622, 107, -3618, - -3625, -3626, -3627, -3628, 42, -3630, 59, -3623, - -3620, -3631, 189, -3636, 42, 182, -3633, -3640, - -3641, -3269, -3638, -3642, -3645, 132, -3647, -3648, - -3258, 217, 132, 116, -3653, -3654, -3655, -3656, - -3592, -1201, 179, 54, 102, -3662, -3663, -3389, - -3658, 211, -3620, -3664, 134, -3670, -3671, -3672, - 59, 211, -3668, -3620, -2122, 225, -3679, 54, - 102, -3580, -3676, 211, -3685, -3686, -3687, -3688, - -3689, -3690, 54, 118, -3252, 107, -3695, 163, - -3693, -3698, -3233, -3696, -3699, -3241, -3700, -3021, - -3095, -3706, 42, 51, -3301, -3707, -3709, -3712, - -3713, -3714, -3715, -3716, -3717, -3573, -3486, -3720, - 38, 44, -3723, 38, -3464, -3457, -527, -3726, - 68, -507, -3731, 26, -3733, 28, -2576, -3736, - -3737, -3738, -3739, 28, 38, 50, -3740, -3744, - -457, -3742, -3745, -3748, -3749, -3750, -3751, -3752, - 28, -3746, -3753, 50, -3754, -3552, -3756, -3760, - -3761, -3762, -3752, -3758, -3765, 83, 68, -3768, - 28, 92, -3426, 43, -3773, -3774, -3775, -3776, - 75, 38, -3765, -3777, -53, -3731, -3725, + -9, -10, -11, -12, -13, -14, 5, 14, + -17, -18, -19, -20, -21, 68, -23, 78, + -25, 78, 225, -28, -29, 77, 76, -15, + 121, 14, 77, 29, -14, 234, 79, -40, + -41, 68, 31, -44, -45, 29, 126, 31, + -37, -50, -51, -52, 77, 117, 29, 234, + -57, -58, -59, 78, 29, -62, 225, -55, + 175, -66, 154, -68, -69, 5, -71, 79, + 223, -74, 223, -72, 234, -78, 221, -76, + 14, -38, -79, -84, 225, 248, 207, -88, + -89, -90, -91, -92, -93, -94, 248, 225, + -97, 23, 123, -100, 78, -97, 179, 204, + -105, -106, 248, -108, 166, -110, 142, 166, + 248, -114, 142, 30, 242, -118, -119, -120, + 248, 124, -123, -124, 22, -102, -108, 123, + 117, -128, -131, -132, -133, -134, 14, 22, + 14, 22, 158, -140, 22, 57, -143, -144, + -145, -146, 11, -138, -136, 179, -151, -152, + -153, -154, -155, -156, 6, -149, -159, 23, + -157, -162, -163, 11, -160, -159, 153, -168, + 7, 11, -171, 78, -173, -156, -166, -174, + -177, -178, -179, 77, -166, -25, -30, -182, + -29, -183, 76, -100, 153, -190, -191, -192, + -193, 7, 62, -42, -188, -196, -199, 77, + -42, 222, 14, -204, -205, 11, -201, -45, + 179, -208, -211, -212, -213, -214, -15, -166, + -140, -215, 31, -220, -221, -222, -223, -224, + 7, 23, -227, -228, -229, 7, 91, 45, + -233, -234, 23, -217, 246, -238, -239, -240, + 11, -236, -243, 23, -241, -243, -244, -246, + 45, 91, -251, -252, 77, 187, -255, -256, + 142, 30, -259, -260, -240, -128, 179, -311, + -262, 158, -267, -268, -269, -97, -265, -272, + 23, -270, -275, 91, -273, -230, 222, -280, + -281, -15, -278, 219, -214, -4309, -283, -97, + 158, 45, -97, 156, -291, -294, -295, -296, + -297, -298, -299, -300, -301, -302, -303, 5, + 207, -306, 1, -308, -309, 81, 153, -1488, + -310, -314, -315, 79, -312, 81, -319, 68, + -321, -322, -323, 5, 61, -326, 79, 223, + -329, -330, 90, -309, 153, 90, -335, 81, + -337, 81, 1, -340, -341, -342, 14, -344, + 22, -346, -347, -348, -349, -350, -351, 22, + 26, 26, -353, -332, 1, -358, 28, 219, + -330, -359, 28, -364, -15, -361, 1, -368, + 81, 179, -371, -372, -373, -374, -375, -376, + 5, -378, 5, -380, -381, 68, 234, -38, + -382, 77, 79, 81, -29, 115, -391, -392, + -368, 179, -393, -396, -397, -398, -399, 5, + 207, -402, -403, -404, -405, 4, -37, -408, + -409, -410, 14, 45, -413, 22, -406, -416, + -417, 4, 147, -420, 51, -418, -423, -424, + 4, -421, -399, -425, -429, -430, -431, -417, + -427, 28, -435, 90, 76, -438, 22, -436, + 158, 4, 156, -444, 5, -446, -447, -448, + -449, -450, -451, -452, 5, -410, -442, 31, + -457, -458, 68, 147, 171, -459, -461, -398, + -460, 115, -369, -410, -138, -468, -471, 77, + 153, 77, 31, 77, -472, -478, -479, -480, + -481, -482, -483, 4, -485, 90, -487, -488, + 81, -476, -518, -489, 147, -494, -485, -492, + -497, -498, -499, -500, 5, 31, -503, 90, + -495, -506, -507, -508, 81, 58, -511, 126, + -504, -514, -515, -516, 90, -512, -1313, 222, + -519, -522, -474, -278, -476, 85, 76, -526, + -529, -530, 68, -471, -527, -532, -535, 77, + -533, -538, -539, -199, -536, -540, 158, -522, + -525, 147, -545, -548, 126, -550, -551, -552, + 68, 77, 147, -556, 77, -558, -559, 7, + -554, 147, -563, -564, -565, 81, -567, -568, + 90, 119, -571, 81, -561, -574, 81, 163, + 28, 170, -579, -580, 163, -582, 119, 126, + -585, -586, -587, -588, -589, -590, -591, -592, + 138, 163, -595, -503, -545, 189, -599, 163, + 219, -602, -571, -600, -603, -503, -604, -606, + -609, -610, -611, 79, -607, 100, 251, 123, + -4276, -102, 254, -620, -621, 81, -599, -618, + -625, -626, -627, -628, -629, 145, 245, 249, + -633, -634, 77, -631, -621, -283, 254, -640, + -641, 77, -638, -611, -642, -644, -647, 79, + -649, -650, -651, -652, -653, -69, -645, 132, + -657, -658, 68, 125, -611, -659, 179, -641, + -662, -666, -667, -500, 179, -668, -742, 236, + -671, 79, 236, -676, -677, -658, -674, -488, + 113, 77, 79, -488, -680, -686, -687, -688, + -592, -684, 223, -692, 145, -689, -695, -696, + -692, 233, 175, -690, 236, -700, -703, -647, + -701, 236, -670, -705, -662, -688, -706, 158, + -711, -714, 221, -712, -717, -718, -719, -720, + -721, -722, 149, -724, 140, 194, -727, -728, + 146, 164, -715, 149, 140, -734, -735, -736, + 140, -738, 152, 192, -741, -723, 150, -359, + -743, 140, -747, -748, 149, 196, -751, 194, + -149, -754, -755, -756, -757, 7, 71, 146, + -761, -762, -728, -752, 119, -766, -767, 146, + 119, -770, 91, 72, -773, -774, 71, 123, + -777, 91, 170, -780, 84, -768, 179, 196, + -785, -786, -787, -788, -789, 71, 208, -792, + 170, -782, -792, 254, -795, -798, -799, -800, + 149, -796, -803, 170, 130, 254, -805, -808, + -809, -810, -731, -806, 224, -814, 170, 222, + -817, -780, -815, -818, -1191, -98, 246, -824, + 170, -822, -827, -828, 142, -825, -829, 149, + 164, -834, -835, -836, -837, 142, -839, 141, + 146, -114, 255, 238, -845, -846, -847, -848, + 142, 91, 166, -852, -853, -854, -855, 141, + 166, -777, -842, -860, -861, 146, -858, -862, + -865, -866, 146, -856, 187, -870, -871, 141, + -873, 142, 91, -114, -868, -878, 141, 142, + 239, -882, -850, 237, -883, -886, -887, -888, + -889, -890, 142, 146, 142, 238, 238, -896, + -897, -898, 84, -900, -866, -884, -903, 196, + -905, 161, 199, -908, -909, 164, -674, -912, + -913, -914, -915, 142, -910, -767, -680, 236, + 164, -922, -923, -861, -919, -924, -850, 236, + 196, -930, -931, -932, -933, -934, -935, -879, + 158, 166, -939, -940, 91, -936, -941, -944, + -228, -820, -942, -919, 66, -950, -872, -945, + -948, -952, -953, -956, -240, -711, -951, 219, + -961, -962, -963, 142, -965, -140, -959, -966, + -969, -351, -948, 133, 45, -970, -975, -976, + 164, 219, -979, 166, -981, -982, -112, -977, + -985, -986, 161, 66, -987, -990, 199, -988, + -993, -994, -995, 71, -997, -229, -991, -1000, + 4, 67, -559, 230, 119, -1006, -1007, -1008, + -1000, 66, -230, -1009, -249, -1011, 255, -1016, + -1017, -1018, 4, -1014, -770, -1019, 166, -1024, + -1025, -1026, 163, 149, 28, 190, -799, -1069, + 224, 230, -4266, -1033, -1035, -1038, -1039, -1040, + -1041, -1042, 4, 84, -1045, -358, 230, -1048, + -1049, 84, 33, 33, -1053, -1054, 84, 117, + -1057, -1058, -1059, -1060, -1061, 4, -1063, 28, + 51, -1066, -351, 222, -1067, -1291, -1068, 234, + -1073, 4, -1075, 90, -1063, 219, -1079, -1080, + 84, -1082, 248, -1084, 161, 166, -1087, -1088, + 84, -1090, -969, 100, 234, 115, -979, -936, + 148, -1098, 161, -1179, -1096, -1100, -1103, -1104, + -1105, -1043, -1101, 219, -1107, -1110, -1111, -1112, + -1113, -1061, -1108, 147, -3249, -1115, 219, -1018, + -1118, 45, -1123, -1124, 4, -1120, -1127, -1088, + 190, 147, -1064, 115, 156, -1134, 84, -1132, + -1137, 84, 166, -1135, 4, -1142, -124, -1093, + -1064, 148, -108, -1145, 51, -1150, -1151, -1152, + -1153, -1154, -1155, -1156, -1157, -1158, -1159, 138, + 159, -1162, 150, -1147, 159, -1166, -592, -1163, + 147, -1170, -1171, 150, 189, -1174, 221, -1176, + -1177, 150, -1168, -1294, -1178, -1180, -1183, 85, + -1185, -1186, 159, -593, -1181, 94, -1191, 220, + -1193, -1194, -1195, -1196, -1197, -1198, 150, 94, + -1201, 159, -1188, -1204, -1205, -1206, 10, 122, + 100, -1207, -1145, -1212, -1213, 85, -1208, -1210, + -1132, 150, 100, -1220, -1221, -1222, 150, 188, + -1225, 184, -1145, -1228, -1205, 171, -1226, 156, + 94, -3676, 67, -1234, -327, -1235, 184, -1240, + -1241, -1242, -1243, -1244, -1245, -1246, -1247, -1248, + -1249, 10, 50, -1252, 39, -1237, -1255, -1256, + 20, -1253, -3240, -1168, -1259, -1262, -1263, 13, + 20, 20, -1264, -1260, 94, -1267, 94, 184, + -1273, -1265, 197, 34, -1277, 24, 222, -1280, + -1281, -1282, -1283, -1284, 10, 24, -1287, 85, + -1278, 20, 8, 85, -1293, -1294, 8, 53, + -1288, -1298, 10, 85, -1301, -1302, -1303, 10, + -1305, -1306, 10, 50, -1309, -1284, -1296, -1132, + -1313, 188, -1207, -1316, 171, -1234, -1317, -1320, + -1321, -1322, -1323, -1324, -1325, -1326, -1327, -1328, + -1329, 10, 13, 10, -1265, -1318, 21, 10, + -1337, -1338, -1339, 20, 24, -1333, -1343, 21, + -1341, -1346, 13, -1348, 20, 10, -1351, 159, + 20, 24, 163, -1356, -1357, -1358, -1359, -1159, + -1344, 163, -1160, 190, -1365, -1366, 13, 148, + -1160, -1367, 147, 163, 94, -1374, -1375, -1298, + -1370, 190, -1379, -1380, 13, 148, -1201, -1381, + -1385, -1386, 21, -580, -1383, 201, -1391, -1392, + -1340, 219, 163, -1396, -1397, -1398, -1399, -1400, + -1401, -1402, -1403, -1404, 138, -1159, -1393, -1406, + -1488, 228, -1409, -1412, -1413, -1414, 13, -1410, + -1075, 245, 191, -1420, 81, -1075, -1363, -1424, + -1425, -1426, -1427, -1159, 122, 79, 79, -1428, + -1433, -1434, 13, 90, -1437, -1438, -1439, -1440, + 13, 184, -1443, 94, -1445, -315, -1431, 156, + -3249, 173, -1451, -315, 228, -1452, -1455, -1456, + -1457, -1458, -592, -1453, 230, -647, 148, 79, + 122, -1429, 148, -1430, -1466, 223, -593, -1468, + -1473, -1474, 184, -1476, -326, 122, -1477, -1225, + 67, -1480, -1483, -690, -1481, -1484, -1487, -120, + 100, -1485, 184, 148, -1493, -1494, -308, -2224, + -987, -1496, -1497, -1500, -1501, -1502, -1503, 26, + 43, -306, -1498, 173, -306, -1507, 122, -1512, + -333, 173, -1513, -1516, -1517, 96, 230, -3766, + -1518, 173, -1523, 26, 1, -1526, -1527, -1528, + -1529, -1530, -1531, -1532, -368, 67, 43, -358, + -1533, -1536, -1539, 21, -1537, -1519, -1540, -1542, + 40, -1546, -1547, -1548, -353, -1543, -1549, -1552, + -356, -1550, -1534, -1553, -1535, -1541, -1555, 180, + -356, 180, 250, -1564, -1565, -1566, -1420, -1562, + -1567, 90, 163, -1572, -1573, -1574, -1575, -1576, + 81, -1449, 230, -1580, 21, -1582, 90, 96, + -1585, -1586, 81, 28, -1589, 21, -1578, -1592, + -1589, -1590, 33, -1596, 96, -1593, -1599, -1600, + -309, 173, 228, -1602, -1605, -1606, -1607, -1608, + 90, -1603, -1587, -1003, 109, -1583, 109, -1596, + -1614, -1616, 90, 191, -1621, 81, 219, -1624, + -1625, 21, -792, -1622, -580, -1627, 201, -987, + -1633, -1634, -1635, -1636, -1637, 20, -1639, 21, + 96, -1631, -1643, -1644, -1645, -1263, -1641, 39, + -1264, 245, -1649, -1652, -1653, -1263, -1650, -1656, + 39, -1658, 21, -1647, 180, 40, -1663, -1664, + -1665, -1666, -1667, 0, 43, -1670, 96, -1003, + -1673, -1674, 26, 255, 96, -1675, -1264, 236, + 118, -1682, -1683, -1263, -883, 236, 35, -1685, + -1687, -1690, -1691, -1263, -674, 233, -4276, -680, + 110, -1698, 21, -1700, 21, -1696, -1703, 10, + 40, 13, 39, -1701, -1674, -697, 124, -1712, + -1713, -1714, -1715, -1440, -1709, 50, 184, -1716, + -1199, -1719, -1721, -1724, -1715, -4377, 219, 254, + -1517, -1727, -1729, -1725, 109, 233, -1735, 248, + -1737, -1738, 184, 236, -1223, 75, -1307, -1741, + -1745, -1746, -1747, -1503, -1743, -1748, -1731, 233, + -1622, 26, -1752, 53, -1757, 248, 184, 124, + 50, -1762, -1763, -1764, -1765, -1766, -1767, -1768, + -1769, -1770, -1771, -1332, 55, -1754, -674, -1776, + -1777, -1667, -1774, 109, -2592, -1779, -1781, -1648, + -1780, -1782, -959, -1786, 21, -1787, -1791, -1589, + -674, 66, -1594, -1793, -1795, -1798, -1799, 20, + -1796, -1802, -1639, 75, -1920, 109, 75, -1808, + -1809, -1810, -1811, 18, -1813, -1814, 18, 34, + -1658, -1806, -1817, -1820, -1821, -1822, 20, -1818, + 34, -1009, -1827, -1334, -1825, -1815, -1828, -1830, + -1833, 20, 33, -1816, -2602, -1831, -1837, 52, + -1841, -1799, 237, 75, -1836, -1843, 255, -1848, + 16, 18, -1846, 21, 163, 33, -1855, -1856, + -1857, -1858, 0, 26, 16, -1862, -1863, -1864, + -1865, -1667, 255, -1661, 237, -1674, -1685, 248, + 26, 40, 110, -1876, -1877, 88, 248, 245, + -1881, -1882, -1883, -1884, -1885, -1886, -1887, -1888, + 16, -1890, 17, 27, -1893, 17, 88, -1896, + -1897, 16, -1874, -1900, 17, 18, -1803, -1904, + -1890, -1902, 40, -1905, -1909, -1910, -1911, -1912, + -1913, -1914, 17, 118, -1844, 110, -1917, 159, + -1923, 233, -1921, -1961, -1922, -1924, -1647, 236, + -1929, -1814, 113, 110, -1931, -1890, 233, 171, + -1937, -1938, -1757, -1934, 113, -1942, -1943, 171, + 110, -1946, -1913, -4381, -1944, 72, -1949, -1952, + 171, -1954, -1955, -1956, -1957, -1958, -1959, -1960, + 8, 171, -1950, 233, -1340, -1949, -1329, -1965, + -1967, -1970, -1971, 8, 18, -1332, 167, -1968, + 105, -1978, -1811, 72, -1979, -1982, -1811, -1980, + -1974, -1983, -1985, -1988, -1989, -1990, 18, 163, + 18, -1994, -1995, 20, -1976, -1998, -1999, 21, + 105, -2002, -2003, 24, 34, -1394, -2000, 144, + -2009, -2010, -1848, -2007, -2011, -2057, 82, -2007, + -2017, 104, -2019, -2020, -2021, 8, -2023, 8, + 44, -1992, -2015, 36, -2029, -2030, -2031, -2032, + 8, 36, 34, -2036, -2037, 24, -2026, -2040, + 34, -1979, -2041, -2044, -2045, -2046, 34, -2042, + -2049, 186, 240, -2052, -2053, -2054, -2055, -2056, + -2057, 88, -2059, 104, -2061, -2062, -2063, 8, + 18, -2066, -2063, 169, 36, -2057, 254, -2072, + -2073, -2074, -2075, -2076, -2077, 16, 171, -2080, + 104, -2082, -2057, 72, -2083, -2086, 104, -2088, + 88, -2090, 17, -2084, -2086, -2091, 89, 17, + -2097, 18, 18, 86, -2101, -2102, -2103, -1265, + -2099, -2106, 171, -2108, 171, -1309, -3769, -2104, + 255, -2114, -2115, 39, 42, 80, -2119, -2120, + 8, 41, -2123, -2124, -2125, -2126, 8, 39, + -1293, -4107, 65, -2130, -2116, -2131, -2133, -2136, + -1285, 99, 86, -2140, -2115, -2138, 169, 42, + 95, -1256, -2144, 24, -2146, -2150, -2151, -1914, + 80, -2152, -2155, 171, -2157, -2158, -2159, -2160, + -2161, -2120, 255, -2162, -1914, 231, -2167, -2168, + -2120, -2165, 42, -1252, -2169, -1675, -2175, -1914, + 231, -2094, -4102, -2177, 255, -2182, -2183, 17, + 183, -2186, -2187, 17, 99, -2190, 18, 99, + -2193, 8, 139, -2121, -2194, -2196, 18, -2127, + -2197, 40, -2203, -2204, -2126, -2200, -2205, -2208, + -2209, -2210, 8, -2068, -2206, -2214, 36, 41, + -2063, -2212, -2219, -2220, -1294, 139, 95, -2224, + 2, 95, -2136, -4251, 82, -2228, 37, -2229, + -2231, -2234, -2235, -2236, -2237, -2238, 140, -2240, + -2241, -2242, -2243, -748, 139, 255, -2245, -2248, + -814, 82, -751, -2015, -2253, -824, 254, 240, + -751, -2254, 144, -2260, -780, -2258, -1741, -814, + 139, -2264, 140, -2268, -2269, -2270, 84, -2272, + -2273, -2274, 104, -2276, 36, 186, -2279, 170, + -2265, -2282, -2283, -2284, 84, 104, -2287, -2288, + 104, 194, -2291, -2292, 186, 240, -2289, -2280, + 255, -2298, -2299, 161, -2296, -732, -2300, 194, + -2305, -2306, -2307, -2308, -2283, 97, -2302, -2310, + 164, -2314, 161, -2316, -2317, 84, 88, -2320, + 88, 164, -2323, -2320, -2311, 164, 224, -2328, + 104, -2330, 186, -2289, 222, 241, -2335, -2336, + 161, 227, -2339, -909, -2332, 241, -2337, -2340, + 246, -2346, -2347, -2348, -2349, 16, 131, -2352, + 16, 200, -2355, 16, -2353, -2358, -2359, -2025, + -2309, 115, -2361, -2328, -1132, -2364, -2367, 84, + -2369, -2370, -2371, 15, -1043, -1278, -2375, -2376, + -2377, 171, -1081, -1919, -2373, -2360, -2380, 200, + -2385, -898, -2332, -2388, -2389, -2390, -2391, 15, + -2393, 124, -1088, 156, 153, -1888, -2396, 84, + -2401, -2402, -2403, -2404, 161, -2406, -1888, -2398, + -2407, -2408, -2411, -2088, 147, 246, -2415, 161, + 161, -2381, -2413, -2420, -2421, -2422, -2423, -2424, + 84, 97, -1877, 93, -2427, -2428, -2431, -2432, + -2433, -1088, 121, -1891, -2434, -2438, -2439, 161, + -2398, -2442, 27, -2440, -2445, -1088, -2443, 147, + -976, 246, 224, 171, -2450, -2454, 161, 170, + -2457, 245, -2459, 248, 227, -2462, -2463, -2464, + -2336, 214, -30, -2337, -2466, -2468, -2471, -909, + 246, -2472, -2415, -2473, -2477, -2478, -2479, -2480, + -2481, -2482, -2483, 16, 18, -2486, -2097, 246, + -2487, 93, -2491, -2492, -1813, -2417, 121, 153, + -2379, -2493, 93, -2498, -2396, 33, 34, -2504, + 33, -2500, 170, -2508, 170, 124, -2511, -2512, + -2513, -2514, -2515, 149, 186, -2518, -2519, 163, + 76, -2522, -1051, -2520, -2396, -2520, -2527, -2528, + 163, -2530, -1343, -2525, 33, -2534, -1343, -2531, + -1999, -2535, 170, -2537, -2541, 149, -2543, -792, + -2539, 246, -2545, -2548, -2549, 248, -2551, 163, + -2553, -1596, -2546, -2556, -1592, 48, -2554, -2558, + -1535, -2581, 59, -2350, -1050, -2353, -2567, -2568, + -2569, -2570, -2571, -2572, -2573, 0, -2565, -2576, + 26, 121, -3250, -2577, -2579, -2598, -2580, -1131, + -2585, -2586, -2587, -2588, -2589, -2590, 15, -2583, + 37, -1131, -4385, -2592, 234, -2596, 171, -2597, + -2601, -1548, 97, -1131, 101, -2602, -2604, -2606, + -1587, -2577, -1131, -2612, -353, -2610, -2604, -1062, + -2605, -2614, 101, 33, -2621, 33, 76, -2624, + 40, -2622, -2627, -2628, 15, 0, -2625, -2632, + -2633, -2391, -2630, -2634, -2899, -2635, 151, -2640, + 248, -2642, -2643, -2644, -2645, 0, 15, -2648, + -2649, 15, -2638, -2650, -2653, -1858, 151, -2654, + -2577, 27, -2659, 0, -1168, 33, 37, -2660, + -2663, -2666, -2667, -1848, -2604, -1814, -2668, 151, + -2673, -2674, 0, -1990, -2671, 27, -1992, -2638, + -1168, -2682, -2683, -2684, -2685, -2686, -2687, -2688, + -2689, 218, 226, -2692, 157, -2680, -2695, 247, + -2697, 157, 226, -2700, -2701, 160, -2693, 165, + -2705, -2706, -2707, -2708, 160, 112, -2711, 165, + -2702, -2714, -2715, -2716, 160, 176, 176, -2716, + -2712, 112, -2723, 165, -2725, -2726, -2727, -2728, + 218, 160, -2731, -2732, 218, 176, -2735, 160, + 101, -2738, 168, -2740, -2733, 93, 127, -2744, + 112, -2741, -2747, -2748, -2749, 155, 172, -2752, + 168, 151, 112, -2749, -2753, -2756, -2759, -2760, + -2761, -2762, -2763, -2764, -2765, 70, 112, -2768, + 155, 101, -2498, -2772, -2773, 155, -2520, -2776, + 168, 112, -2779, -2780, -2781, 70, 205, 195, + -2785, 155, -2787, -2788, -2789, 152, 192, -2792, + -2793, -2794, 165, -2774, -2766, -2795, 200, -2800, + 112, 93, -2801, -2804, -2805, -2806, -2807, -2808, + -2809, 141, 239, 238, -2802, -2812, 112, -2816, + 111, 239, 242, -2820, -2821, -2822, 107, 127, + -2825, 112, 232, -2828, 111, -2830, -2831, -2832, + -2833, 70, 114, -2836, 107, 101, -2836, -2837, + 151, -2780, -2662, -2840, -2843, 127, -2847, -2848, + -2849, -2850, -2851, -2852, -2853, -2854, 64, 174, + -2857, 157, 172, -2689, 249, 245, -2863, -2864, + -2865, 218, 229, -2695, -2861, -2870, 157, 249, + -2873, -2874, 247, 174, -2877, -2878, 162, 235, + -2855, -2871, -55, -2884, -2885, -2886, -2887, 64, + 103, 3, -2618, -2890, 162, 182, -2895, -2896, + -2897, 218, 160, -3022, 121, 249, 3, 101, + -2905, -2906, -2907, -2908, -2909, 64, 3, -2910, + 93, -2914, 74, 202, -2917, 64, -2919, 74, + -2912, -2785, -2427, -2750, -2625, -2926, 155, -2924, + -2929, -2930, -2931, 64, 172, 172, -2935, -2936, + -2937, 103, 193, 212, 193, -2927, -2943, -2944, + -2945, -2946, -2947, -2948, 3, -2941, -2951, -2952, + -2953, 3, 32, 32, 103, -2958, 74, -2960, + -2954, 249, -2837, -2671, -2965, -2966, -2967, -2968, + 103, 193, -2963, 178, -2973, -2974, -2975, -2976, + -2977, 9, 181, -2980, 87, -418, -2983, -2984, + -2985, 9, 114, -2988, 74, -2981, -2991, -2992, + -2977, -2989, 32, -2980, -2993, -2998, 87, 32, + -3001, 181, 93, -3004, -2914, 151, 151, -3008, + 120, 73, -3011, -2998, -3009, 178, -3015, -2971, + -3012, -3018, -3019, 181, 193, -3007, -3125, -3016, + -3023, -3024, -3027, -3028, -3029, -3030, -3031, 74, + -4230, -3025, -3033, -3036, -2977, -3034, -3037, -3040, + -3041, 9, 114, -3044, -3045, 107, 111, 93, + 97, -2755, 2, 93, -3051, -3054, -2914, 54, + -3057, -2926, -2912, 73, -3061, 127, -3059, -2740, + -3050, -3062, -3065, -2716, -3066, -3070, -3071, 176, + 131, -3074, 239, -3072, -3077, -3078, -3079, -3080, + -3081, -3082, 152, -3084, -3085, -3086, -3087, -3088, + -839, 206, 35, -3092, 71, -3090, -3095, 141, + 107, -3098, -3099, -3100, 146, 97, -2741, -3104, + 71, -3102, 35, -840, -3106, -774, -3101, 192, + -3113, -840, 19, -3114, -3064, -3115, -3117, -3120, + -3121, -3122, -3123, -2765, -3118, -4244, -3106, -3101, + -3129, 71, -3131, 71, -3127, -3134, 70, -3132, + -3137, -738, -3135, 195, -739, 19, -3141, -3144, + -3145, -3146, -3147, -3148, 70, -3150, -3151, 141, + 71, -3154, 146, -3142, -3157, 7, -3159, 141, + 71, -3162, -3163, -3164, -3165, 7, -3167, -3168, + 7, 108, -995, -3155, -3171, 71, -3160, -3005, + 108, -3178, -3179, -871, -2736, 71, -3183, 146, + -3102, -3186, -3187, 7, -3189, -3190, -634, -2741, + -3193, -3194, 108, -3005, -2756, -3198, -774, 93, + 73, -3148, -3200, -3204, -3205, -3206, -3207, -995, + -3202, -3208, -3209, 19, -3213, 108, -3211, -788, + -3238, 73, -3217, -3220, 205, -3218, -3223, -3224, + -3225, -3226, -3227, -3228, -3229, 141, -114, -3221, + 239, -3234, -3235, -878, -3231, -3236, -3466, -3237, + 206, -3242, -3243, 239, 130, -990, 35, -3248, + -3230, 37, 167, -3250, -843, -3251, 130, 238, + -3249, 35, 97, -3260, -3261, -3262, -3263, 141, + -3265, -3266, -3267, 7, -873, -3258, 30, 38, + -3273, 142, 146, -3276, -3263, -3269, 142, -3280, + -3281, -878, -3257, 19, 142, -3286, -3287, -3288, + 141, -257, -3283, 38, -3293, -879, -3290, -3256, + -3294, 19, -3299, -878, 12, -3302, 7, -3304, + -3157, -3300, 38, -3308, 107, 111, -3311, -3312, + 25, -3314, -3159, -3305, 97, -3318, -3319, -3320, + -3321, 141, 151, -3273, 151, -3324, -3327, -3328, + 141, -3330, 38, 204, -3333, 111, 47, -3235, + -3295, -3325, 12, -3340, -3341, 141, 60, -3338, + -3345, -3346, -3347, 108, -3349, -192, -3336, -3343, + -3324, 77, -3217, -52, -3354, 108, 108, 111, + -3361, -3362, -3363, -3364, -3365, -3366, -3367, -3368, + 6, 11, -3371, 7, -3356, -3157, -3372, 30, + -3157, -3374, 77, -3380, 6, -3382, -3383, -3384, + 6, -3377, -205, 12, 171, 77, 151, 6, + -3390, -3378, 12, -3396, 78, 142, -3399, -3400, + -3401, -3402, -3403, 6, -3405, 11, 25, 25, + -3409, -3410, -3411, -3412, -3380, -3394, -3413, -3414, + -3417, 25, 151, -3420, 6, -3418, -3423, -3375, + 101, 73, -3425, -3428, 111, -3430, -3431, -3432, + -3433, -3434, -3435, -3436, -3437, -3438, -3439, 78, + 106, -66, -3426, -3444, 154, 106, -3447, -3448, + 225, 175, -3440, -3442, -3453, -3454, -3455, -3456, + 78, -3451, 87, -3460, -3461, 83, -3457, -3464, + 87, -3460, -4220, 200, 222, -3448, -3468, -3472, + -3473, 83, -3475, -3476, 87, 116, -3479, 106, + 197, -3482, -3483, -3484, -3485, -3486, 77, 29, + -3489, -3490, -3491, -3492, -3493, 6, -3480, -3496, + 25, 131, -3499, -3500, 78, -3250, -3501, -171, + 224, -3527, -3504, -2326, -62, 197, -60, -2332, + -3511, -3514, -3515, -52, -3512, 47, -3519, 106, + -3516, -3522, -3523, -3524, -3384, 246, -3525, -3772, + 131, -3051, -3531, -3407, -3529, -2472, -4385, -2520, + -3535, -3538, -3539, 78, -3519, -3536, 11, -2425, + -3545, -3546, -3547, 77, -3357, -3543, -3549, -3531, + -3534, -3550, 213, -3556, 116, 130, -3559, -3560, + -3561, -3562, 145, -3564, 221, 189, 189, -3568, + -3569, -3570, 145, -3572, -3573, 145, 175, -3576, + 154, -3557, -72, 128, -3448, -3579, -3574, -3581, + 177, -3586, -3587, -3588, -3589, -3590, -3591, -3573, + -1363, 126, -3595, 185, -3597, -3598, -3599, 145, + 77, 145, -3592, -52, 128, -3606, 185, -3608, + -3609, -3610, 77, 143, -3611, -3614, -3615, -45, + -3612, 228, -1409, -3620, 175, 106, -3623, 175, + -46, 220, 203, -3628, -3629, -3486, -3625, 185, + -3633, -3634, 108, -3630, -3637, -3638, -52, 143, + -3639, -3357, -3640, -3642, -3600, -3643, 185, -3645, + -3649, -3650, -3651, -3652, -3573, 100, 98, -3654, + -3576, 220, -3621, -3657, -3661, -3575, -3552, -3659, + 130, -3666, -3621, 100, 98, -3668, -3595, -3667, + 116, -3674, -3675, -641, 100, 185, -3679, -3213, + 220, -3677, -3680, -3682, -3677, -3683, -3685, -3688, + -3689, -3690, -3691, -3692, -3693, -3694, -3695, -3576, + 130, -3696, -3621, 100, -3699, -3621, -3700, 206, + -3705, 177, -3707, 181, 98, -3710, -3711, -3712, + 9, 181, -3715, 87, -3708, -3718, -3719, -3473, + -3716, 177, -3723, 106, -3720, -3726, -3715, 143, + 106, -3727, -3731, 87, -3729, -3734, -3735, -3736, + 154, -3732, 177, -3740, -3741, 87, 128, -3744, + -3745, 177, -3013, -3742, 181, -3750, -3751, -3752, + 108, 185, -3755, -3756, 114, 98, -3759, 185, + -3757, -3762, -3712, -3760, 114, 185, 98, -3768, + -3706, 167, -3769, -1519, 2, -3757, -3773, -3776, + -3756, 143, -3777, -3778, -3781, -3782, -3783, 154, + 181, -3779, -3787, -3788, -3789, -3790, 154, 181, + -3793, 178, -3785, -3796, -3797, 177, 188, -4002, + 245, 190, -3791, -3801, 193, -3806, 145, -3808, + 221, 223, -3811, -3599, 151, -3812, -3815, 185, + -3817, -3576, -3813, 198, -3584, -1370, -3821, -3824, + -3825, -3826, -3827, -3828, -3829, -171, 245, -3832, + 83, 225, -3830, -3836, -3837, -3838, -3839, 83, + -3741, 188, -3625, -2032, -3842, -1191, -3847, -3848, + 9, 83, -3849, -3845, 167, -3851, -3853, -3854, + -3857, -2810, 173, 197, -3861, -2954, 122, -3864, + -3865, 9, 87, -3868, -3041, -3862, -3611, -3872, + 32, -3870, -3875, -3876, -3877, -3878, -3879, -3396, + 173, -3880, -3883, -3884, -3380, -3881, -1428, -3396, + -3640, 228, -3611, -3892, -3893, 83, -3890, -3896, + -3897, 25, -3894, -3330, -3898, 167, 197, 78, + 83, -3906, -3907, -3908, -3909, -3910, -3911, 9, + 167, 116, -3912, -3476, 128, -3918, -3919, -3920, + 83, -3902, -3866, 122, -3852, 122, -3925, -3924, + -3579, -3639, -3896, -3927, -3929, -3932, -3933, -3936, + -3937, -3938, -3865, -3934, -3939, -3942, 116, -3944, + -3945, -3896, -3931, -3940, 35, 201, 19, -3950, + -3899, 240, -3951, -3757, 159, -3955, -3957, -3417, + 151, -3480, -2828, -3961, -3604, -3966, -3967, -3968, + -2977, -3611, -3969, -3970, -3973, -3974, -3041, 143, + -3975, -3976, -2997, -3956, 167, 143, -3981, -3984, + -3985, -3986, 70, -3988, 107, -3990, -3045, -3982, + -3176, -3991, -3995, -3996, -3997, -3998, 107, -3993, + -4001, -3868, -4005, -3999, -3509, 2, -4004, -1207, + -3250, -4007, -1278, -4012, -3045, -4010, -4015, 114, + -4013, -3309, 128, 114, -4021, -4022, -3308, -4018, + -3480, -4019, -4024, -1128, -4029, 114, -4027, -1128, + -4033, -4034, -3866, -1207, -4035, -4036, 35, -4040, + -4041, -4042, -4043, -4044, -4045, -4046, -4047, -4048, + 245, -4050, -4051, -4052, -4053, 69, 227, -2320, + -4038, -1363, -4054, -3812, 232, -4059, -4063, -4064, + -4065, -4066, -4067, 69, 241, -4070, 249, -2638, + -4073, 251, -4071, -4076, -4077, -4078, -4079, 69, + -4081, 73, -4083, 73, -4085, -4086, -4079, -1168, + 171, 88, -4087, -4092, -4093, -4094, -4095, -4096, + -4097, -4098, -4099, 69, 44, -4102, 41, -4090, + -2086, -4103, -4107, 104, -4105, -4110, -2057, -3925, + -4111, -4114, -4115, -4116, 69, -4112, -2288, -4117, + 147, -2318, -2364, 241, 210, -4126, -4127, -4128, + -4099, -1145, -1168, -4130, -4102, -4131, -4133, -4136, + -4137, -4138, -4139, -4140, -4067, 234, -4141, -4142, + -4145, -4081, -4143, -4146, -2594, 36, 2, -3051, + 167, -4154, -4155, 69, 44, -3048, -4152, 240, + -4161, -4156, 44, 46, -4165, -4166, 93, 251, + -3757, -4162, 36, -4172, 246, -4170, -2472, -4173, + -4177, -4067, -2059, -4178, -4068, -4179, 167, -4184, + 140, -4186, -4187, -3525, -4182, -4190, -4191, -4192, + 224, -4188, -4193, -4196, 240, 167, -2293, 246, + -3055, -4199, 46, -2285, 44, -4206, 194, -4208, + -4209, 194, -4204, -4168, 97, -4214, -4215, -4216, + -4217, -3217, 36, -3059, -4218, 19, -4223, -4224, + -4225, -4226, 12, -4228, -4229, 12, 48, -3258, + -2059, -4232, -4235, 19, 2, -4238, -4239, -4240, + -3283, 36, -4241, -3257, -2210, -4244, -4231, 24, + -1960, -4248, -4251, 35, 48, -4249, -4255, -3048, + 48, 167, -4259, -4260, -4261, -4262, 12, 97, + -4163, -4263, 167, -4268, -4156, -4266, -4269, -4247, + -4270, -4272, -4275, -3048, 49, -4276, -4271, -2116, + -2121, -4282, -4283, -4284, -4285, 73, -3338, -4280, + 49, 245, 41, -4292, 245, -3388, 171, 188, + -4297, -4298, -4299, -4300, -4229, -4294, -4301, -4304, + 49, -2220, -4307, -3258, -4305, 188, 37, 171, + -4311, -3388, -1285, 49, -4317, -4318, -4319, 12, + -4321, -4322, -4323, 12, 46, -4326, 41, -2224, + -4329, -4330, 171, -1294, -4331, -4334, 246, -4336, + -2450, -4332, 167, -4337, -4341, -4342, -3059, 48, + -4324, 44, -4345, -4348, -4349, -4350, -4351, -4352, + 8, -4354, -4355, -1183, -4346, 37, -1164, 2, + 159, 24, -4363, -4364, 220, -4359, -4367, -4368, + -4369, -4370, 150, -4365, -4373, -4374, -4375, -4376, + 85, 98, -4168, 98, -4371, 37, -4383, 100, + -4379, 8, }; static long _vq_ptr1_lsp32_0[] = { - -2195, -1315, -610, -327, -154, -90, -66, -16, - -9, -11, 52, -13, 35, -15, 153, 153, - -40, -35, -30, -25, -23, 123, 220, 123, - 220, -29, -28, 62, 62, 220, -32, 123, - -34, 220, 220, -37, 227, -39, 227, 227, - -54, -51, -48, -47, -46, 216, 216, 216, - -50, 153, 153, -50, 204, 149, -57, 153, - 216, -49, -62, -61, 216, 216, -61, 149, - -53, -52, -76, -73, -72, -71, 244, 244, - 216, 244, 62, 174, -86, -79, 194, -83, - -82, 220, 220, -82, 220, 253, -89, 236, - 244, 244, -122, -106, -101, -100, -97, 52, - 131, -99, 131, 131, 52, -102, -104, 253, - -15, -85, -114, -108, -113, -111, 161, -112, - 161, 153, -117, -116, 137, -119, 113, -121, - 253, 153, -134, -129, -128, -127, -85, 244, - 235, -131, -105, -127, 244, -78, -147, -142, - -140, -139, 195, 174, 73, 174, -145, 244, - 174, 234, -133, -151, -127, 244, 194, -127, - 244, 253, -263, -180, -172, -165, -164, -163, - -162, 89, 89, 213, 41, -169, -168, 213, - 213, 213, 238, 123, -177, -176, 213, 97, - 250, 250, -179, 238, -238, -202, -185, -113, - -153, -200, -196, -191, -190, 229, 229, -190, - -194, 229, 229, 149, -193, 89, 229, 182, - -201, 229, -226, -205, -184, -221, -210, -209, - 41, 213, -220, -213, 213, -217, -216, 229, - 229, -216, 229, -150, 229, -223, -146, -225, - -65, 216, -235, -232, -216, 213, 253, -230, - -212, 213, 196, -237, 208, 208, -258, -243, - -242, 194, 213, -245, 156, -249, -112, 161, - 196, -253, -201, 196, 196, -255, -251, -201, - 229, -248, -261, 161, -244, -215, -231, -274, - -272, -232, -212, 213, 253, 51, -103, 156, - -273, 235, -296, -292, -291, -285, -280, 185, - -282, -262, -284, 234, 234, -288, 185, 234, - -290, 234, 234, 169, 169, -273, 235, 156, - -310, -302, -299, -283, 234, -295, -306, -305, - 156, 229, -309, 218, -301, 218, 216, -321, - -318, -309, -316, 235, 235, 76, -309, 218, - 156, -323, 73, -325, 213, 235, 76, -474, - -402, -377, -373, -339, -338, -337, -336, 115, - 115, 209, 137, -372, -350, -347, -345, 67, - 76, 67, 76, -349, 20, 91, -362, -357, - -355, 124, 209, 209, 124, -359, 209, -361, - 209, 209, -370, -367, -366, 137, 137, -366, - 137, -317, 209, -308, 238, -375, 177, -376, - 177, -391, 76, -384, -383, 238, 201, 209, - -388, -387, 201, 201, -372, 238, 148, -399, - -396, -356, 124, -390, -356, 124, -371, -360, - 193, -281, -453, -426, -422, -416, -410, -409, - 92, 67, -414, -338, 137, 148, 67, 137, - -418, 67, -420, 52, -415, 148, 9, 20, - 52, 123, -452, -448, -439, -437, -432, 52, - -436, -435, -413, 123, 227, -438, 227, -443, - -442, 227, 227, -447, -438, 51, -434, 166, - -450, 148, -451, 227, 238, -461, -458, 209, - 137, 150, -459, -460, 227, -463, 148, -469, - -468, -337, 209, -449, 227, -472, -460, -446, - 227, 148, -590, -528, -489, 250, -481, -480, - 222, -484, 222, 177, -488, -487, 222, 222, - 177, -516, -514, -509, -500, -163, -497, 89, - 129, 89, 129, 204, -508, -505, -504, 238, - 238, -504, 238, 204, 213, -511, -499, -513, - 238, 238, -515, 250, 250, -488, -522, -521, - -473, 161, -524, 204, -526, -523, 213, 204, - -585, -549, -537, -534, 177, 129, -535, -372, - -525, -360, -541, 34, 148, -545, -488, -473, - -536, -488, 177, -520, 204, -579, -576, -569, - -564, -561, -367, -366, 137, -523, -2847, 204, - -523, -366, 137, -557, -567, 65, 209, -562, - -547, -571, -471, -573, 129, -575, -401, 209, - -578, 177, 177, -580, -584, -583, 161, 161, - 177, -586, 137, -589, -224, 238, -600, -595, - -594, 177, 177, -599, -598, 237, 137, 177, - -606, -603, 237, -605, -597, 161, -524, -3193, - 253, 253, -988, -872, -777, -661, -634, -628, - -625, -622, 252, -621, 169, 169, -624, -608, - 169, -627, 105, 105, -631, -624, -604, -633, - 218, 218, -640, -638, 235, 202, -316, -597, - -651, -650, -645, 202, 30, -647, 239, -649, - 239, 239, 239, -654, 105, 239, -656, 202, - -649, -316, 235, 237, 237, -702, -677, -668, - 46, 78, 126, 155, -676, -673, -672, 161, - 161, -672, 161, -660, 126, -693, -682, -637, - 202, -659, -686, -3771, -639, -630, -690, -689, - 202, 202, -689, -597, 194, -699, -696, 194, - -658, 235, -692, -637, 202, 195, -766, -751, - -729, -720, -716, -713, -710, 73, -712, 110, - 110, -152, 244, -85, -719, 110, -701, 110, - -722, 94, -726, -712, 110, 253, -712, 110, - -85, -742, -740, -737, -734, -701, -736, 94, - 94, -700, -718, -698, -741, 202, -745, -697, - -691, -148, 244, 235, 51, -150, 237, -765, - -755, 105, 252, -759, -144, 174, -750, -762, - 174, 252, -764, 252, 252, 244, -775, -770, - 78, 150, -773, -772, 174, 174, 113, 126, - 113, -822, -799, -788, -786, -785, -735, 94, - 194, 245, 126, 194, -794, -793, -792, 245, - 245, 126, -793, -792, 245, -784, -769, -815, - -790, -809, -806, -805, 232, 232, -805, 232, - 194, -793, 126, -150, 92, -798, -758, -819, - -818, 237, 232, -821, 247, 247, -850, -843, - -842, -839, -832, -829, 78, -719, 224, 224, - -836, -719, 110, 194, -719, -830, 194, -763, - -808, -837, 252, -849, -847, 78, 228, 228, - -817, 252, -865, -862, -859, -856, 228, 245, - -858, 245, 245, -858, -814, -749, -821, 247, - -685, -869, 92, 194, -867, -820, 247, -560, - -917, -902, -899, -885, -884, -881, -880, 237, - 232, -880, 237, -879, 158, -897, -892, -889, - -883, -891, 158, 158, -890, -891, -597, -248, - -895, -880, 196, -901, 220, 220, -909, -904, - -906, -248, -908, 156, 252, -913, -912, -905, - 252, -915, -896, 236, -894, -971, -938, -932, - -930, -928, -926, -925, 142, 142, 142, 62, - 244, -888, -931, 142, 244, -935, 131, -937, - 131, 131, -957, -952, -947, -944, 244, 196, - -88, -248, 193, -765, -950, -946, 174, -945, - -954, -103, -772, -103, -953, -89, -967, -965, - -963, 174, 233, 233, -597, -966, 233, -900, - -951, -929, -871, -984, -982, -980, -977, 139, - -864, -979, 142, 142, 142, 126, 244, -588, - -987, 142, 233, 142, -1212, -1088, -1070, -1046, - -1023, -1015, -999, 137, -937, 193, 193, -1008, - -1004, -1003, 233, 233, -1003, 233, 142, -997, - -1012, -1011, 193, 233, -1011, -997, -1007, -1017, - 115, -1022, -1020, -1014, 233, 137, 233, -1036, - -1032, -1030, -1022, 233, -1019, 253, 233, -230, - -1033, -966, 148, -1031, -1038, -1035, -1042, -468, - 227, 148, -1044, -1034, -1045, 243, -1063, -1050, - 131, 65, -1054, -1053, 100, 100, -1058, -1057, - 253, 131, -1060, -1056, -116, 75, -1059, -335, - -1068, -1067, 233, 233, 115, -1043, -1075, 220, - -925, 142, -1037, -1084, -1081, -1079, -1028, -1080, - 131, -1083, 166, 166, -1086, 124, 142, 131, - -1167, -1105, -1100, -1098, -1095, 131, 100, -1097, - 139, 139, -1082, 147, -979, -1103, 206, 206, - 193, -1139, -1128, -1117, -1115, -1113, -1112, 249, - 249, -1112, -997, 131, 124, -1122, -1121, -1112, - -1114, 249, -1113, -1112, 249, 156, -812, -1125, - -1135, -1132, 249, -1120, -1134, 249, 249, -1138, - 249, -1099, 233, -1158, -1147, -1142, -1145, 142, - 193, -1011, 147, -1151, -1150, 139, 139, -1155, - -979, 147, -1146, -979, 147, -1146, -1164, -1003, - -1162, 233, 233, -1154, -1165, -1166, 249, -1196, - -1188, -1186, -1185, -1183, -1178, -1177, -1176, -1144, - 232, 232, -1182, -1176, -1137, -1078, 146, -1184, - 249, 217, 217, 147, -1194, -1192, 206, 147, - -1193, 217, -880, -1187, -1203, -1193, -1201, -1200, - 243, 243, 147, -1206, -1205, 243, -1210, -1209, - -1187, 243, 243, -1195, -1283, -1251, -1240, -1222, - -1220, -1219, 155, 155, 65, 155, -1231, -1225, - 137, -1229, -1228, 148, 155, 137, 155, -1235, - -1234, -1227, 249, -1239, -1121, 249, -1233, 249, - -1246, -1242, -1244, 177, 177, 147, -1248, -1238, - -605, -1211, 65, -1279, -1269, -1260, -1256, 46, - -1258, -1249, -936, 147, -1264, -1230, -1259, 177, - -1266, -1263, -1268, 155, 155, -1275, -1221, -1087, - -1262, 124, -1272, -1277, 65, -1121, 49, -110, - 153, -1274, -1257, -1309, -1304, -1299, -1295, -1291, - -1112, 249, -1181, 146, -1112, 249, 253, 139, - -1298, 146, 146, -1301, -1294, -1184, -230, -230, - -1306, -1302, -1239, -1300, 253, -1313, -1149, -230, - -1294, 126, -1307, -1516, -1409, -1369, -1339, -1327, - -1326, -1325, -1324, 96, 96, 79, 88, -1334, - -1332, -1331, 160, 160, 88, 160, -1338, -1337, - 167, 167, 167, -1354, -1350, -1348, -1346, -1345, - 151, 151, 151, 128, -1349, 128, -1338, 167, - 151, -230, -1364, -1363, -1360, -748, 156, -1353, - -1331, 160, -1314, 167, -1368, -683, -85, 195, - 151, -1391, -1388, -1377, -1344, -1375, 167, 167, - -1366, -1385, -1382, -1381, 199, 199, -1381, 199, - 147, -1387, 145, 199, -1390, 215, 215, -1407, - -1404, -1401, -1398, -3766, 253, 147, -1387, 199, - -1386, -1337, 167, -1376, -1406, 168, 168, 168, - 199, -1459, -1421, -1419, -1416, -1415, 184, 184, - -1415, 184, -1362, 120, 210, -1446, -1436, -1431, - -1428, -1427, 152, 152, -1427, 152, 147, -1434, - 184, 192, 184, 192, -1444, -1440, 88, 192, - -1443, 192, 176, 176, -1445, 88, -1458, -1450, - 48, 136, -1456, -1455, -1454, -1187, 192, 136, - 136, -1294, 192, -1501, -1478, -1469, -1466, -1465, - 160, 160, -1465, -1453, 99, -1477, -1474, -1473, - 168, 168, -1473, -1468, -1467, 242, -1491, -1481, - 88, -1488, -1485, -1406, 99, -1406, 168, -1484, - -1490, -85, 160, -1492, -1477, -1497, -1496, 242, - 242, -1496, 242, -1476, -1418, -1507, -1504, 135, - -1473, 168, -1290, -1510, 87, 119, 168, -1513, - 242, -1515, 237, 242, -1908, -1761, -1668, -1622, - -1549, -1538, -1531, -849, -1528, -1527, -1514, 228, - 111, 228, -1514, -1535, -1534, 143, 143, -849, - 252, -1526, -1540, -1514, -1548, -1547, -1546, -1545, - 144, 144, 236, 255, 252, -1577, -1564, -1559, - -1556, -1555, 127, 127, -1555, 127, -1514, -1557, - -1555, 127, -1539, -1537, -1572, -1569, -1568, 127, - 127, -1568, 221, 221, -1574, -1570, -1576, 239, - 239, -1578, -1584, -1583, -1568, 127, 221, 255, - -1618, -1596, -1591, -1589, 144, -1545, -1570, -1544, - -1594, -1573, 143, 193, -1607, -1600, 31, -997, - -1604, -1545, 144, -1593, -1545, 144, -1563, -1615, - -1612, -1611, 221, 127, -1611, 221, -1610, -1594, - 143, -1614, -1619, -1621, -1606, 255, -1637, -1631, - -1628, -1627, 207, 207, -1627, 207, 221, -1633, - -1630, -1634, -1636, 221, 228, -1647, -1644, -646, - -1642, 191, 191, -1632, -1645, 175, 191, -1657, - -1652, -1651, 201, 207, -1656, -1655, 215, 215, - 215, -1665, -1662, -1661, -1650, 247, -1661, 247, - -1643, -1667, -1620, 247, -1741, -1684, -1681, -1677, - -1676, -1675, 147, 127, 96, -1679, 31, -1675, - 84, -1682, -1683, 175, -1713, -1711, -1697, -1691, - -1690, 128, 128, -1694, 128, 88, -1690, 128, - -1674, -1705, -1702, -1701, 159, 159, -1701, 159, - 193, -1709, -1701, 159, -1704, 128, 145, -1368, - 193, -1723, -1718, -1345, -1708, 222, -1720, -1717, - -1722, 175, 175, -1730, -1702, -1701, 34, -1297, - -1719, -1716, -1736, -1701, -1722, 175, 222, -1717, - -1701, -1722, 33, -1735, -1729, 247, -1746, -1745, - 151, 151, -1750, -1749, -1696, 207, -1754, -1656, - -1666, -1506, -1758, -1656, 215, -983, -1656, 201, - 209, -1887, -1799, -1793, -1776, -1774, -1769, 176, - -1760, -1773, -1443, 176, 209, 192, -1775, 192, - -1778, 176, -1788, -1785, -1783, 192, 176, 176, - 192, -1775, 209, -1772, -1792, -1791, -1760, 192, - 136, -1794, -1775, -1455, -1768, -251, 196, -1836, - -1821, -1811, -1808, -1807, -1806, 156, 144, 79, - -1810, -1797, 144, -1815, -1814, 144, 144, -1818, - 144, 112, -1810, -252, -1809, -1824, -1806, -1796, - -1830, -1443, -1828, -1759, 176, 201, -1834, -1828, - 176, -1827, 176, 144, -1862, -1857, -1850, -1843, - -1324, 96, 196, -1845, 201, -1848, 128, 201, - 96, -1650, -1854, -1853, 79, 79, -1853, -1844, - 196, -1690, -1860, -1034, 88, 76, -1875, -1870, - -1868, -1867, 136, 136, 136, 166, -1676, -1867, - 136, 148, -1859, -1881, -1872, -1879, 196, 112, - 196, -1884, 112, 136, -1886, 136, 136, -1897, - -1893, -1892, 251, 223, 251, -1892, -1895, 251, - -1772, -1904, -1902, -1806, -1880, 196, -1547, -361, - -1905, -1907, -1900, 236, -2030, -1953, -1928, -1927, - -1917, -1916, 112, 136, 200, -1919, 120, -1926, - -1923, 251, 112, -1895, 251, -1878, 200, 210, - -1945, -1934, 251, -1933, 200, 200, -1942, -1939, - -1938, 251, 251, -1938, 251, -1874, -1944, -1855, - 208, -1951, -1950, -1949, -1833, 250, 250, 208, - 227, -2015, -1981, -1970, -1963, -1960, 223, 63, - -1962, 218, 218, -1969, -1967, 169, 218, 218, - 169, 223, -1976, -1975, -1974, 112, 112, 112, - -1974, -1979, 201, 223, -1978, -2009, -2008, -2005, - -1990, -1989, -1988, -451, 112, 112, -2000, -1998, - -1996, -1995, 251, 251, 144, 227, 144, 201, - -1937, 83, -1987, -1980, -879, -2007, -1842, 251, - 169, -2013, 169, 251, 121, 236, -898, -2026, - 121, -2025, -2022, -2021, 185, 185, -2021, 185, - -2006, 218, 251, -2029, -2004, 208, -2094, -2049, - -2048, -2041, -2038, -646, -1948, 148, -646, 124, - 209, -2045, -849, 252, 67, -849, -2040, 65, - 255, -2086, -2074, -2071, -2068, -2063, -2058, -2057, - 143, 255, -2060, 143, -2057, -2046, -2037, -2065, - -356, -2067, -2064, 169, -2069, -1536, -361, -2072, - -2073, 252, -624, -2082, -2080, -2048, 209, -2070, - 239, 255, -2048, -397, -2066, 124, -2089, -289, - 124, -2092, 223, -2085, -2093, 239, -2164, -2119, - -2103, -2098, -2100, 223, -1547, 255, -374, -2112, - -2110, -2109, -2081, -2091, -346, 234, -316, -2084, - -289, -2117, -2109, 234, -2062, 234, -2036, -2139, - -2134, -2123, 243, -2131, -2128, 83, 243, 204, - -2109, -2122, 217, -289, 204, 217, -2138, -1546, - 236, -2132, 169, -2146, -2144, -2029, 208, -2129, - -2007, 179, -2159, -2152, -2150, 206, -2007, -2149, - -2156, -2155, 251, 251, -2155, -2145, -1201, -2163, - -2007, 227, -1045, 234, -2176, -2171, -2168, -2161, - -2170, 236, 236, -2173, 244, -2175, 227, 255, - -127, -2185, -2183, -2182, 107, 243, 174, 252, - 236, -2192, -2190, -2175, -2167, -2158, 244, -438, - -908, 206, -2189, -3408, -2666, -2462, -2352, -2252, - -2219, -2205, -2204, 114, 172, -2208, 74, 165, - -2212, -2211, 186, 186, -2216, -2215, 227, 186, - -2215, 186, -1952, -2245, -2233, -2227, -2224, 140, - -2204, 172, -1952, -2229, 180, -2231, 180, 172, - 180, -2238, -2215, 186, 154, -2218, -2243, 180, - -2215, 186, -2237, -2215, -1842, -2249, -2248, 173, - 173, -2241, 186, -438, -2341, -2276, -2267, -2264, - -2259, -2258, 186, -2263, -2262, -2242, 186, 173, - -2266, -2194, 186, -2271, 140, 154, 181, -2262, - -2266, 186, -2143, 179, -2302, -2290, -2284, -2281, - 90, -2283, 154, 154, -2287, 125, 130, -2289, - 130, 130, -2299, -2296, -2294, -507, -2241, 217, - -2248, 173, -2295, -2301, 179, 173, -2326, -2306, - 13, 181, -2314, -2311, -2270, 217, 217, -2270, - 181, 179, -2321, -2319, -2266, 186, -2309, -2266, - -2298, -2215, -2266, 186, -2130, -2130, -2339, -2332, - -2330, 154, 154, 172, -2336, -2335, 172, 172, - -2335, -2324, -2320, -2215, -2293, -2345, -2344, 125, - 157, -2349, -2348, 157, 157, -2348, 157, -2037, - -2368, -2366, -2365, -2363, -2360, -2359, 230, 230, - -2359, 230, 204, -2364, 98, 170, -2367, 114, - -2421, -2400, -2395, -2377, -2376, -2375, 204, 181, - 181, -2390, -2385, -2383, -2382, 181, 181, 181, - 170, -2384, -2388, -2362, 181, -2351, -2382, -2388, - -548, 115, -2392, -2397, 101, -2399, -2389, 170, - -2412, -2405, -2367, 114, -2340, -2409, -2408, 196, - 170, -2408, 170, -2407, -2415, -2270, -252, -2419, - -2382, 181, 179, 170, 181, -2428, -2423, -2425, - 122, -2408, 170, 166, -2459, -2446, -2437, -2435, - -2348, 157, -2414, -2436, 106, -2436, -2346, -2348, - 157, 179, 107, -2275, -2443, -2434, -2453, -2451, - -2384, 170, -2411, 90, 170, -2456, 154, -2450, - -2458, -252, 170, -2461, 162, 162, -2605, -2538, - -2521, -2480, -2476, -2475, -2472, -2471, 114, 114, - -2471, -2455, -2404, 181, -2477, -2479, 214, 214, - -2507, -2495, -2490, -2487, -2486, 133, 133, -2486, - 133, -2274, -2492, 114, -2417, 204, -2493, -2417, - -2502, -2501, -2367, 204, -2493, 122, -2367, 114, - 122, -2493, -2500, -2510, 133, 214, -2514, -2478, - 214, -2493, -2518, -2517, 196, 214, -2517, 214, - -2513, -2530, 114, -2525, 204, -2527, -2520, -2529, - -2506, 230, -2531, -2535, -2534, 246, 246, -2534, - 246, -2494, -2595, -2580, -2562, -2543, 117, -2557, - -2554, -2551, -2550, -2210, 186, -1842, 122, -2553, - -1842, 186, -2210, -2549, 166, -2247, -2560, -2555, - 186, 166, -2571, 45, -2568, -2567, 117, 117, - -2567, 117, 166, -2264, -2574, 74, -2553, -2561, - 179, 83, 148, -2575, -2592, -2589, -2586, -2585, - 254, 254, -2585, 254, -2559, -2587, 254, -2537, - -2594, -548, 254, -2600, 181, -2263, -2524, -2593, - -2602, -2591, -2604, 173, 173, -2614, -2610, -2609, - 125, 99, -2611, -2613, 254, 254, -2645, -2642, - -2632, -2625, -2622, -2560, -2489, 206, -2560, 171, - 179, -2629, -2560, 179, -2624, -2560, -2149, -2623, - -2639, -2637, -2180, 217, 171, 173, 130, -2641, - 173, 173, -2594, 249, 217, -2659, -2585, -2653, - -2652, -2651, -2644, 165, 205, -2656, 165, 205, - 205, 249, -1133, -2211, -2662, 74, -2651, 165, - 171, 249, -3056, -2864, -2812, -2777, -2693, -2686, - -2680, -2677, -2676, 165, 165, -2676, -1133, -1133, - -2684, -2683, 205, 205, 205, 165, -2688, -2678, - -2690, -2664, -2683, 205, -2650, -2720, -2715, -2698, - -2204, -2643, -2706, -2702, -2701, 180, -2705, 180, - 172, 172, -2712, -2701, -2710, 188, 188, -2635, - -2710, 188, 179, -2718, 178, -2714, 165, 178, - -2745, -2729, -2726, -2638, 130, -2717, -2728, 178, - 178, -2743, -2734, -2733, 166, 165, -2738, -2737, - -2725, 165, -2742, -2741, 178, 178, 178, -2744, - 180, -2751, -2748, 188, -2750, 188, 188, -2763, - -2760, -2757, -2750, 188, -2736, -2750, -2711, 166, - -2705, 172, -2759, -2769, -2749, -2710, 188, 139, - -2767, -2772, 165, -2767, -2748, 165, -2001, -1234, - -2771, -2789, -2783, -2781, 125, 66, -2768, -2788, - -2785, -2787, -2762, 130, 138, -2792, -2791, 149, - -2795, -2728, 171, -2805, -2804, -2801, -2800, 68, - 178, -2800, 178, 249, 125, -2807, 138, -2810, - 178, -1293, 178, 138, -2826, -2816, 74, 86, - -2818, 86, -2822, -2713, -1234, -2799, -2713, -2824, - 224, -2786, -2834, -2832, -2830, 198, -2831, 198, - 198, -2758, -2835, -2855, -2846, -2840, 116, -1227, - -2844, -2843, 166, 149, 138, 149, -2849, 51, - 166, -2853, -2831, 198, -2842, 149, 198, -2860, - 116, -2859, 36, 198, -2832, 138, 83, -1861, - -3015, -2958, -2897, -2878, 147, -2875, -2874, -2791, - -2852, -2839, 149, -2877, 141, 141, -2884, -85, - -608, 166, 148, -449, -2893, -2888, 178, 99, - -2891, -2890, 195, -2890, -2881, -2895, 253, -153, - -2873, -2917, -2904, -1613, -2902, 164, 164, -421, - -2910, -2906, -2908, -1227, 195, 164, -2912, 85, - -623, 68, -3049, -2907, -2903, -2921, -2920, 85, - 85, -2941, -2933, -2926, 85, 164, -2930, -2902, - 164, 65, -2902, 148, -2037, -2935, 237, -2938, - 141, -2931, -602, -2037, 148, -2955, -2950, -2947, - -2902, -2037, -2939, -2902, 164, -2937, -2954, -2902, - 164, -2916, 221, -2956, -1514, -2896, -2982, -2972, - -2965, -2963, 82, -2964, 224, -2967, -2561, -2969, - 85, -750, 51, 51, -2977, -2975, 85, -1367, - -2970, -2980, 195, -2966, -2981, 198, -3007, -2999, - -2992, -2989, -2988, -2957, 165, -2988, -2833, -2620, - -2996, -2909, -2118, -1757, -2909, 248, 248, -2817, - -3004, -3003, 195, 195, -3003, -2997, 248, -3012, - -3010, -3005, 178, 248, -2890, 248, -3011, -3028, - -3024, -3023, -3022, -2948, -3014, 217, 93, 99, - -3026, -1193, 145, 221, -3044, -3031, 217, -3023, - -3038, -3037, -3036, 254, 254, 205, -2612, -3037, - 190, -3030, -3025, -3020, -2802, -3048, -2719, -3009, - -3052, 83, 190, 219, -2683, 205, 219, -3051, - -3253, -3120, -3083, -3071, -3063, 90, 106, -3067, - -2331, 172, 219, -2232, 106, -3051, -3055, -3072, - -3074, 180, -3080, -3077, 180, -2701, -3050, 232, - -2230, 180, 232, -3104, -3101, -3090, -3088, 172, - 172, -3079, -3096, -2701, -2750, 188, -3089, 217, - -3099, 188, 180, 180, 190, -3103, 188, 188, - -3107, 125, 90, -3117, -3112, -2761, -3100, -3094, - -3114, -3078, -3098, 139, 146, -2811, -3113, 219, - -3201, -3159, -3140, -3135, -3128, -3127, 102, 102, - -3132, -3131, 108, 108, -3131, 108, 232, -3137, - 102, -3138, 197, 132, -3150, -3147, -3146, -3145, - 197, 197, 116, 60, 197, 116, -3145, -3155, - -3154, 138, 138, -3154, -3134, 232, -3134, 108, - -3176, -3170, -3166, -3165, -3156, 90, -3168, 163, - -3169, 163, -3174, -3173, -3082, 197, -3175, 197, - -3189, -3186, -3183, -3175, -3173, -3164, 231, -3185, - -818, 163, -3167, 163, -3182, -3199, -3196, -3152, - -3188, -3779, -3181, -3119, -3154, 190, 219, -3173, - -3197, -3221, -3210, -3204, -3205, -3209, -3208, -1298, - 106, 90, -3214, -3213, 225, 225, -3218, -3217, - 225, 225, -3217, 190, -3207, -3242, -3229, -2459, - -2461, -3195, -3049, -3118, -3047, -3235, -3169, -3233, - 240, 225, 240, -3237, -3232, -3239, 225, -3241, - 240, 225, -3246, 157, -3245, 225, -3249, 157, - -3236, -3169, 163, 225, 240, -3360, -3307, -3267, - -3260, -3259, 198, 198, -3264, -2831, -3234, -3248, - -2831, 219, 240, -3291, -3270, 189, -3274, -3273, - 189, 189, -3286, -3281, -3280, -3279, -3232, 198, - 198, -3273, -3279, 198, -3265, 240, -3290, -3283, - 198, 219, 180, -3297, -3293, -3283, 198, -3240, - -3284, -3298, -3302, -2890, -3263, 240, -3304, 219, - -2981, 240, 240, -3342, -3320, -3316, -3314, -3313, - 224, 224, 224, -3266, -3318, 180, -3103, -3232, - -3335, -3324, 224, 219, -3332, -3329, -3328, 240, - 224, -3328, -3232, -3323, -3334, -3319, 198, -3336, - -3340, -3334, -3305, -3301, 198, -3300, -3356, -3354, - -3351, -3348, 224, 248, -3328, 248, -3347, -3328, - 224, -3011, -3328, -3006, 195, -3279, -3347, 248, - -3393, -3377, -3368, -3366, 149, -3347, 178, 125, - -3371, 132, 178, -3375, -2800, 178, -3358, 178, - 149, -3381, -2728, 178, -3355, -3388, -3386, -2800, - 178, 248, 178, -3347, -3390, 241, -3290, -3387, - -3349, -3398, -3397, -3396, 116, 197, -3401, -2914, - 190, -3404, 149, 190, -2843, 149, 197, 190, - -2995, -3782, -3544, -3460, -3442, -3415, 75, -3432, - -3428, -3425, -3422, -138, 195, -3403, -138, 195, - -3400, -3427, 182, 182, -3430, -3392, -3431, 195, - -3435, 195, -3391, -3304, -3438, 198, 198, -2774, - -3380, 211, -3450, -3448, 194, -3447, 182, 182, - -3449, 150, -3436, -3453, 149, -3454, -3437, 219, - 211, -1727, 206, -3455, -3495, -3470, -3468, -3447, - -3466, 219, 150, -3119, 166, 179, -3480, -3475, - -3473, 134, 194, -3477, 134, -2524, 204, 219, - -3484, -523, -3119, -3467, -3488, -3487, 204, 204, - -3492, -523, 204, 219, -523, 190, -3407, -3531, - -3505, -3502, -3501, -3500, 116, 224, -3503, 194, - -3483, -3519, -3516, -3512, -2854, -3437, -3459, -3440, - -3514, 182, -3447, -3341, -3328, 224, -3228, -3520, - -3525, -3523, -2665, 198, 171, -3528, 224, -2665, - -3328, -3524, 249, -3535, -3534, 194, 241, -3537, - -3524, -3541, -3540, 241, 241, -3540, 241, -3529, - -3711, -3652, -3598, -3584, -3562, -3558, -3556, -3553, - 28, -3555, 42, 42, -3557, 83, -3560, 132, - 102, 132, -3581, -3570, -3567, 219, -3522, -3465, - 217, -2621, -3575, -3574, 219, 118, 118, -3579, - -3578, -3569, 219, 118, 219, -3583, -3577, 118, - -3590, -3589, -3301, -3566, 206, 197, -3594, -3589, - 197, 179, -3596, 197, -3406, 171, -3624, -3602, - 83, -3597, -3619, -3610, -3608, -3607, 182, 182, - 182, 107, -3614, -3613, -3601, 182, -3616, 107, - -3513, 68, 68, -3621, 241, -3539, 241, -3617, - -3639, -3635, -3632, -3629, 102, -3620, 241, -3612, - -3634, -3593, 241, -3269, -3637, 189, -3479, -3646, - -3644, -3637, -3588, -3587, 182, 189, -3651, -3650, - 182, 243, 182, 182, -3684, -3678, -3661, -3659, - -3595, -3649, 243, -3660, 197, -3669, -3666, -3665, - -3649, 241, -3665, -3657, -3649, -3675, -3630, -3673, - 225, 225, -3667, -3677, 204, 241, -3681, -3680, - 116, -3683, -2499, 219, -3705, -3232, -3697, -3694, - -3692, -3240, 240, 134, 211, 179, -3252, 240, - -3469, -3701, -3673, -3691, -3682, -3673, -3674, -2130, - -3703, -3708, -3175, 146, -3232, -2295, -3704, -3747, - -3735, -3730, -3724, -3722, -3719, 44, 179, -3721, - 118, 118, 68, 44, -3728, -3763, -2499, -3718, - -3466, -3727, -3732, 92, -408, 92, 118, -3743, - -457, -3741, -3449, 150, 179, 150, -2624, 118, - -3607, -3469, -3734, -3772, -3757, -3755, -3427, -195, - 149, -2970, -3729, -2845, -3710, -3759, -3702, -3770, - -3767, -3764, 92, -3643, -53, 149, 219, -3769, - 197, 197, 149, 68, -3778, 149, 189, -3426, - 182, 92, -3780, -408, 99, -408, -3518, + -4039, -2681, -1149, -716, -293, -87, -77, -56, + -39, -36, -33, -16, -15, 225, 207, 207, + -31, -27, -24, -22, 207, 225, 225, 207, + -26, 29, 29, 29, -23, 207, 216, 225, + -30, -34, -35, 31, -38, 121, 207, -49, + -43, -42, 63, -47, -46, 63, 63, -46, + -32, -54, -42, 62, 63, 216, -42, 216, + -65, -64, -61, -60, 175, -60, 175, -53, + 126, -67, 175, -73, -70, 175, -72, 175, + 175, -75, 225, 189, 179, -80, -74, -63, + -81, -83, -48, -85, 217, -86, 217, -142, + -117, -113, -109, -104, -99, -96, -95, 207, + -95, 207, 216, -101, 204, -103, 216, 207, + -107, 204, 207, 204, 207, -112, -111, 45, + 166, -115, 199, -116, 204, -130, -111, -122, + -121, 207, -126, -121, 207, -98, -121, 132, + 132, -127, -139, -137, -136, -135, 1, 1, + 217, -86, 117, -141, 45, 217, -210, -189, + -150, -148, -15, -129, 225, 123, -187, -170, + -167, -161, -158, -26, 29, 132, -26, 29, + -147, -165, -26, 29, -125, 225, 216, -169, + 23, 23, -172, 225, -176, -25, -102, -164, + -184, -181, -159, 29, -53, -159, -53, -180, + -97, -98, 222, 207, -186, -202, -198, -195, + -194, 63, 63, -194, -185, -175, -200, 62, + 62, 224, -203, -207, -42, 63, -197, -42, + 251, 216, -254, -219, -218, -216, 45, -98, + 207, -149, 45, -250, -248, -237, -226, -225, + 31, 31, -232, -231, -230, 45, 45, 62, + -230, -231, 62, -209, 216, -245, -242, -218, + 45, 251, -218, 45, -235, -230, -206, -82, + -249, 207, -97, 62, 23, 132, -279, -258, + -257, 204, -266, -245, -230, -253, 132, -490, + -128, 132, -277, -274, -271, 91, -128, -257, + 204, -264, 204, -108, -261, 30, 117, -290, + -284, -124, -276, 179, -287, -263, -282, -289, + 236, 207, -108, 236, -288, -477, -370, -339, + -328, -320, -318, -313, -307, -305, -304, 61, + 61, 207, 61, -305, -304, 61, 236, -1313, + -288, -317, -309, 61, -292, 207, 207, 79, + -327, -325, -324, 217, 217, 61, 217, 217, + -334, -331, 1, -333, 222, 61, -336, 28, + 51, -338, 43, -363, -345, -343, 90, 45, + 51, 217, -360, -357, -354, -353, -352, 57, + 57, 51, -356, -316, 51, -356, 51, 236, + -362, -355, 1, -367, -366, -286, 207, -121, + 51, 117, -395, -388, -387, -385, -379, -377, + 79, 207, 81, -383, -317, 207, 117, 81, + -369, -386, 81, 90, -390, 121, 170, 207, + -358, 121, -389, -443, -426, -401, -400, 58, + 58, -422, -415, -407, -140, 45, -389, -124, + -412, -411, 58, 58, 45, 58, -394, -419, + -400, 58, 121, -400, 58, -389, -218, 58, + 31, -394, -428, -414, -441, -437, -434, -433, + -384, 58, -433, 58, 234, -435, -433, -432, + 115, -420, 115, -445, 90, -475, -473, -470, + -463, -456, -453, 58, 31, -455, -440, 58, + -453, -455, 58, 115, -4295, -440, -454, -467, + -285, 117, -465, -400, -465, -466, -400, 58, + 117, -474, 62, -231, -465, -584, -562, -493, + -486, -484, 119, 28, 28, 119, -434, -433, + 58, -466, -616, -469, 153, -549, -496, 179, + -528, -505, -502, -501, 126, 126, -501, 126, + -459, -513, -510, -509, 62, 62, -509, 62, + -491, -521, -510, -509, 62, -462, -804, 115, + -442, -510, -509, -465, -523, 188, 117, -465, + -534, -531, 77, -488, -523, -524, -537, -488, + -520, -543, -511, -509, -517, -439, 179, -547, + -613, 179, -542, 62, 58, -555, -52, -553, + 31, 31, 148, -557, 119, -52, -199, 62, + -546, 156, -577, -566, 163, 21, -573, -569, + 163, -570, -503, 126, -560, -575, 119, -576, + 119, -578, -581, 126, 211, -583, 211, 211, + -685, -648, -624, -619, -608, -601, -594, -593, + 189, 189, -598, -597, 234, 126, -597, 126, + -76, -605, -599, -596, -572, -599, -541, -365, + -570, -595, -597, 126, -247, 188, 216, -614, + -804, -615, 251, -622, 126, 211, 211, -617, + -646, -639, -632, -583, -571, 126, 234, 179, + -636, -583, 211, -76, -583, -76, -637, -643, + -571, 126, -635, -571, -630, -623, 126, 189, + -675, -665, -663, -656, 126, -71, -612, 135, + -660, -64, 126, 135, -64, -655, 135, 175, + -661, -673, -595, -597, -127, -664, -613, -127, + -669, -597, 135, -682, -681, -679, 132, 126, + 135, 81, -683, 90, -655, -709, -694, -691, + -690, -678, 189, -690, 189, -672, -702, -699, + -698, 135, 189, -698, -697, 179, -699, -698, + -693, 132, -544, 135, -655, -713, -4295, 135, + -655, -690, 189, -708, -929, -833, -753, -733, + -732, -726, -723, -725, 196, 196, -731, -729, + 196, -725, -707, 196, 243, -740, -737, 208, + 192, -739, 208, 208, -746, -745, 188, 179, + -730, 208, -750, -749, 208, 208, -749, 208, + -744, -826, -784, -778, -760, -758, -759, 119, + -772, -765, -764, -704, 196, -769, -768, 133, + 133, -768, 133, -763, -776, -764, 196, 125, + 119, 196, -779, -781, 196, -783, 125, 133, + -807, -797, -794, -791, -790, 211, 211, -790, + 211, -775, -582, 125, -793, -791, -802, -582, + 211, -618, 211, 119, 56, 72, -801, -823, + -816, -813, -764, -771, 123, -764, 196, 236, + -813, -764, -671, -812, -742, 251, 123, -749, + 208, -812, -831, -767, -770, -821, -819, -832, + 133, -885, -880, -844, -841, -838, -840, 192, + 192, -843, 125, 199, -869, -851, -850, -849, + 166, 166, 199, -864, -859, -857, -856, 196, + 196, 166, -830, -856, -849, 166, -811, -654, + -867, 196, 199, 199, 135, -875, -872, 91, + -874, 30, 30, -877, -655, -879, 204, 204, + -881, -116, 204, 135, -655, -895, -894, -893, + -892, -891, 238, 238, 164, 243, 192, -911, + -899, 196, 161, -904, -902, -876, 199, 243, + -907, -906, 243, 133, -906, 243, -655, -921, + -920, -917, -832, 133, -901, -832, -883, 237, + 199, -926, -728, 133, -918, -916, -928, 187, + 199, -1023, -992, -980, -960, -943, -938, -937, + 187, 204, -257, -937, 204, -927, -253, -949, + -874, -710, -925, 135, 135, -955, -230, -464, + -883, -947, -946, -277, 30, -674, -1031, 135, + -974, -964, 166, 45, -968, -111, -674, -957, + -972, -971, -288, 57, -971, -967, -978, -971, + 57, 191, 133, 57, -989, -984, 164, 148, + -920, -850, 199, 191, -983, -116, 204, -973, + -1005, -996, 77, 119, -1002, -999, -954, -231, + 62, 230, -1004, 237, 62, -1015, -1012, -1010, + 45, 237, 62, -1003, -108, -1001, 113, -1022, + -1020, -768, 133, -1013, 119, -998, 133, -1078, + -1037, -1030, -1027, -1028, -1004, 197, -794, -1229, + -1029, 190, 240, 122, -1032, -1074, -1056, -1052, + -1044, -1043, 51, 119, -1047, 119, 187, -1051, + -1050, 51, 51, 119, -1043, 51, 170, 187, + -1072, 207, -1065, -1062, 51, 57, -1064, 57, + 57, -1062, -1064, -1055, -1046, -1099, -1036, 190, + 62, 119, -1076, 96, 33, -1071, -1102, -1086, + -1081, -1083, 161, -1085, 124, 124, -1089, 164, + 57, -1097, -1094, -3240, 115, 187, -971, -1093, + 187, -975, 164, -4332, -1093, -1095, -1109, -856, + 207, -803, -1092, -936, -1106, -1136, -1122, -1119, + -969, -971, -1077, 190, -1091, -1071, 147, -1121, + -1117, 133, -1133, -1126, -1064, -1114, -1130, -971, + 136, -1128, -971, 136, 136, -768, 133, -1131, + -1140, -1138, -121, -1093, -1141, -1146, -1144, 136, + 207, 136, -1148, 187, 207, -1761, -1395, -1239, + -1190, -1182, -1175, -1165, -1164, -1161, -1160, 94, + 94, -1160, 94, -1143, 252, -1169, -714, -1139, + 136, -1173, -1172, 252, 252, 189, 252, -713, + -690, 189, -1131, -1285, -442, -1167, -1184, 252, + -1187, 252, 163, -1189, -1129, 189, -1192, 188, + -1236, -1219, -1217, -1203, -1200, -1199, 184, 184, + -1199, 184, -1125, -1211, -1200, -1199, 184, 136, + 55, 190, -1128, -1200, 94, 184, -3249, -1209, + 122, -1218, 184, -1227, -1224, -1223, 217, 217, + -1223, 217, -1207, -1224, -1232, -1258, -1216, 122, + 188, -1214, 136, -1207, -1238, -1231, 188, -1319, + -1300, -1279, -1272, -1270, -1266, -1261, -1254, -1251, + -1250, 53, 53, -1250, 53, -1230, -1251, -1250, + 53, -1215, -1408, 190, 156, -1265, -1264, 50, + 50, 39, -1268, -1257, -1263, -1202, -1271, 50, + -1276, -1275, 136, 39, -1275, 39, 136, -1297, + -1292, -1289, -1286, -1285, 56, 56, -1285, 56, + -1131, -1290, -1291, 24, -1256, -1295, 56, 56, + -1135, -1299, 94, 94, -1304, 184, 100, 85, + -1315, -1308, -1307, 217, -1312, -1295, -1274, -1207, + -1295, 56, 197, -1223, -1271, -1274, -1314, -1384, + -1355, -1354, -1347, -1345, -1336, -1335, -1332, -1331, + -1330, 39, 39, 20, -1334, -1311, 39, 34, + -1342, -1265, -1340, 34, 34, -1310, -1340, 34, + -1269, 163, 21, -1350, -1349, 24, -1353, -1352, + 163, 163, 96, -1373, -1371, -1364, -1362, -1361, + -1070, 94, 163, 244, -1368, -1361, 94, 244, + -1361, -1363, -1363, -1372, 96, -1378, 184, -1160, + -1369, 191, -1382, -1199, 184, 191, 94, -1377, + -1390, -1387, 163, -1389, -1376, 211, 206, -1394, + 201, 148, 201, -1632, -1525, -1486, -1472, -1454, + -1423, -1411, -1365, -1405, 90, -1366, -554, -1388, + -1495, 244, -1407, -1419, -1416, -1354, 96, -561, + -1354, -1415, 244, -1421, 163, 163, -1418, -1432, + 90, -386, -1430, -1429, 244, 94, 184, -1418, + -1436, -1435, 81, 94, -1450, -1444, -1442, -1441, + 61, 61, 184, 61, -1442, -1441, -1422, -1446, + -3254, 191, -309, 184, 191, -1449, -1470, -1465, + -1463, -1461, -1189, -1447, -1377, 94, -1231, -690, + 190, -1467, 190, -1469, -1464, 184, 94, -1377, + -1482, -1475, 207, -1479, -324, 191, -1377, -324, + 191, -1377, -1225, 217, -1478, -1471, -1492, -1490, + 56, -1462, -86, 156, -1522, -1499, -333, -1694, + -1381, -1491, -1489, -1511, -1508, -1505, -1504, 61, + 61, -1504, -1460, 190, -304, -1464, 197, -1515, + -306, 197, -1510, -1505, -1504, 61, 173, -3254, + -1514, 122, -1524, 217, 217, -1620, -1563, -1545, + 207, -1544, -1538, -1535, -1534, 197, 51, -1534, + -1510, -1521, -1535, -1534, -1520, -1448, -1509, -1506, + 43, -1556, -1551, 207, -1534, -1459, -1417, -1554, + 207, -1360, 207, -1021, -1560, -1233, -863, 191, + -1534, 253, 253, -1598, -1571, -1569, -1386, -1561, + -1559, -1570, 28, -1591, -1584, -1579, -335, -1075, + 96, -1559, 191, -1581, 28, -1583, 28, 28, + -1588, -1587, 43, 43, -1587, 43, -1559, -1595, + -1594, -1577, 43, -1594, 43, -1568, -1604, -1587, + -1504, 250, 250, -1601, -1618, -1613, -1610, -338, + 43, -1597, -338, -1559, 253, -1615, 191, -338, + -1559, -1612, -306, 253, -1623, -580, 253, -1628, + -1626, 211, 201, -1619, -1630, -1617, -792, -1559, + -1711, -1702, -1642, -1354, -1638, 96, -1640, 33, + 33, -977, -1662, -1651, -1648, -1647, -1629, 50, + -1647, -1646, -1611, -1657, -1655, 40, -1609, 50, + 40, -1659, 40, -1661, 237, 50, -1681, -1678, + -1672, -1669, -1668, 50, 50, -1668, 50, -1660, + -1676, -1668, 50, 180, -1668, -1671, -1670, -1677, + 135, -1689, -1678, -1670, -1680, 118, 37, 135, + -1684, -1697, -1669, -1668, 118, -1692, -1772, -1680, + 135, -1699, 96, -1668, 50, -1680, -1708, -1704, + -1705, -1706, -1250, -1695, -1710, -1680, 50, -1734, + -1723, -1720, -1718, -1717, -680, 61, -1717, -1707, + -1717, -1693, -1688, -1678, -1728, -1686, 233, 233, + -1717, -1726, -1722, -1557, 118, -1732, -1756, -1736, + -1744, -1740, -1223, -1733, -1742, 253, 53, -1612, + -1755, -1753, -1728, -1717, 236, -1739, -1116, 253, + 236, -324, -1751, 217, -1758, 124, -1759, -1760, + 207, -2233, -1953, -1875, -1854, -1851, -1847, -1807, + -1797, -1790, -1788, -1775, 56, -1749, -1680, -1783, + -1659, -1661, -1684, 135, 130, -1680, -1684, -1656, + -1750, -1778, -1680, -674, -1544, -1785, -1794, -1544, + -883, -883, -1544, -1792, -966, -1801, -1639, 33, + -1789, -1595, 43, 237, -4273, 180, 180, -1840, + -1832, -1819, -1812, 39, -1816, -1815, 40, 40, + -1815, -1805, -1803, -1826, -1824, -1656, 40, 236, + -1656, -1823, -1829, 40, -1800, -1656, -1773, -1730, + -1835, -1834, 40, -1834, 37, -1679, -1654, 129, + -1638, -1640, -1839, 129, 35, -1842, 129, -1849, + 40, -1815, -1845, -1852, -1853, 186, -1871, -1861, + -1860, -1859, 27, 27, 27, 96, 217, -1869, + -1867, 43, 237, 43, 118, 43, -1868, -1872, + -1873, -1710, 237, -1880, -1878, 164, -1879, 227, + -1936, -1908, -1903, -1899, -1895, -1892, -1889, 27, + 124, -1891, 124, 124, -1894, 27, 27, -1888, + 171, 88, -1870, -1894, -1901, 27, -1898, -1814, + -1906, -1866, 124, -1850, -1933, -1928, -1926, -1254, + -1251, -1250, 53, 52, -1784, 52, -1915, 100, + -4339, 52, -1915, -2561, -1918, 113, 40, -1925, + -1265, -1656, 236, 236, -1930, -1935, 236, 124, + -1941, 188, -1935, -1932, 125, 27, -1945, -1223, + 125, -1951, -1755, -2557, -1940, 125, -1940, 53, + 217, -2051, -2008, -1987, 186, -1969, -1964, -1338, + 24, -2013, -1948, 125, -1966, -1963, -1277, -1962, + -1939, -1973, -1972, 20, 20, -1977, 48, -1927, + 52, -1981, -1265, 52, -1976, -1829, 40, -1975, + -4251, 255, -1907, -1993, -1991, 20, 33, -1992, + 186, -1997, -1353, 21, -1921, -2001, -1394, 201, + 129, -2005, -2004, 201, 201, -2004, -1839, 129, + -2016, -1813, -1815, -1839, -2006, -2129, 129, -2014, + -2043, -2018, -2028, -2025, -2022, 36, -2024, 186, + 186, -2027, -2012, 186, -2027, -2035, -2034, -2033, + 2, 2, 36, -2039, -2033, 2, -1996, -2033, + 2, -1921, -2038, -2048, 240, -2027, 186, -1843, + -2050, 201, 201, -2100, -2098, 186, -2071, -2060, + -2058, 41, 41, 44, -2065, -2064, 88, 41, + 88, -2069, -2068, -2047, 41, 44, -1934, -2095, + -2092, -2087, -2081, -2079, -2078, 41, 41, 41, + 171, -2085, -2078, -2070, -2067, 171, 41, -2089, + 171, -2057, 41, -1986, -2068, -1838, 183, -2096, + 88, 36, -1906, 183, -2202, -2149, -2118, -2105, + -2094, -2107, 188, -2109, 56, -2113, -1984, 253, + -2111, -1295, -2116, 56, 56, 89, -2122, -2121, + 53, 53, -2145, -2135, -2128, -2127, 42, 42, + -2132, -2178, 89, -2117, -1295, 92, -2112, -2139, + -2116, 102, 102, -2143, -1295, -2137, 102, -1295, + 102, -2147, -2142, -1252, -2141, -2156, -2154, -2121, + 86, -2148, 41, 53, -2198, -2192, -2181, -2166, + -2164, -1256, -2153, -2134, 20, 253, -2174, -2171, + -2170, -1561, 53, -2170, -1567, -2172, -2171, -2170, + 183, -2176, 44, -2165, -2179, -2185, -1972, 20, + 253, -2189, -2127, 42, 183, -2127, 42, 134, + -2195, -2170, 134, -2170, -2191, -2188, -2199, -2201, + -2184, 42, -2216, -2207, -2190, 255, -2180, -2213, + -2211, 41, 44, 44, -2173, -2215, 42, 42, + -2218, -2163, -2226, -2223, -2116, -2191, 169, -2116, + 56, 134, -2223, -2230, 134, -2225, 48, -2222, + -2221, -2476, -2345, -2297, -2266, -2239, 149, -2259, + -2252, -2247, -725, -751, -2014, -2244, -2232, -2250, + 208, 169, 196, -2249, -2256, -2255, -2251, 208, + -2255, -2246, 253, -2263, -725, 75, -1561, -725, + 180, 253, -2267, -2281, -2271, 170, 104, -2278, + -2275, 186, 240, -2277, 240, 240, -2277, 240, + -2262, -2286, 240, -2285, 194, 194, -2290, -2289, + 210, 210, -2294, -2293, 210, 210, -2293, -2261, + -2295, -2304, -2301, -725, 245, -2303, -2257, 243, + -2334, -2322, -2315, -2313, -2312, 48, -2217, -2093, + 194, 164, 194, -2319, 241, -2318, 104, -2321, + 241, 241, -2327, -2325, -1558, -2292, 131, -2329, + 186, -2331, 194, -2333, 131, 210, -2338, -2337, + 243, 243, -2342, -2341, -2326, 243, -2341, 197, + -2343, -2374, -2368, -2357, -2351, -1054, 136, -2354, + -2318, 136, -2034, 36, -2350, -2366, -2318, -2363, + -2230, 131, -2356, 36, -2353, -2362, 104, 186, + -2372, 170, 40, 84, 186, -2350, -2456, -2453, + -2384, -2378, 57, 206, -2356, -2227, -2365, 131, + -2400, -2387, -2383, -2397, -2394, -2392, 51, 57, + 51, 57, -2393, 200, 131, -2399, -2383, 124, + -2419, -2416, -2410, -2405, 104, -2080, -1935, -2395, + -2386, -2382, -2414, -2080, -2409, -2412, 104, 171, + -2317, -2110, -2344, -2451, -2430, -1084, -2426, -1098, + 164, 200, -1098, 121, 131, -2383, -2444, -2437, + -2435, 124, 131, 57, -2383, -2441, -2393, 57, + -2436, -2393, 57, -2429, -2448, -2442, -2425, -2446, + -2442, -2447, 214, -1084, 216, -2455, 196, 124, + -2461, -2458, -2460, 199, 199, -2474, -2470, -2467, + -906, 216, -2465, -906, -2452, -166, -2337, 199, + 214, -2450, 166, -2469, -2547, -2510, -2507, -2490, + -2485, 33, -2484, 34, 34, -1992, -2034, -614, + -2475, 251, -2503, -2501, -1835, -1947, 216, -2494, + 252, -1916, 131, -2434, -2434, -2502, 170, -2506, + -2046, -2499, 186, -2509, 40, 51, -2540, -2526, + -2521, -2517, -2516, 119, 119, -1853, 186, 119, + 131, -2506, -803, -2434, -2361, -2361, -2533, -2529, + 186, 186, -2532, -2524, 34, -2049, -2536, -2523, + -2538, -2505, 201, -2495, -2542, 170, -2050, -1389, + -2489, 93, 251, -2639, -2550, 217, -2566, -2552, + -2555, 28, -2544, -2560, 51, 206, -2488, -2449, + -2564, 206, 136, -2562, 43, -2562, -2626, -2584, + 57, -1794, -1595, -2575, -1596, 43, -2563, -1596, + 43, 136, -2557, -2562, -2563, -2636, -2574, -2350, + -2620, -2611, -2600, -2560, -2564, -1534, 51, -2582, + 49, 121, -4345, -4343, 136, 121, -4324, -2593, + -2608, -1535, 49, -2577, 136, -4343, -2603, -2599, + -1594, -2350, 131, -2615, -358, -2609, -2350, -2619, + -2595, -2613, 121, 57, -2623, -1534, 121, -1534, + 51, -2618, -2631, -1906, -2629, 124, -389, -1148, + -2392, -1064, -2617, -2607, -4148, -2591, 136, -2665, + -2641, -2661, -2657, -2652, -2647, -2646, 124, -2646, + -1848, 40, -2562, -2579, -1888, -1860, -2353, -2651, + -2353, -2658, -1834, 40, -2353, -2441, -4263, -2656, + -2655, -2678, -2672, -2669, -2577, -1834, -37, 121, + -2675, 27, 33, -2677, -2670, 33, -1894, 234, + 234, -3076, -2846, -2758, -2704, -2699, -2694, -2691, + -2690, 172, 172, -2690, 172, -2679, -2696, 229, + -2698, 229, 229, -2703, -2698, 229, -2676, 226, + -2722, -2713, -2710, -2709, 238, 238, -2709, 238, + -2664, -2719, -2718, -2717, 239, 239, 242, -2721, + -2637, 239, -2724, 112, -2746, -2737, -2730, -2729, + 168, 168, -2734, -2733, 202, 202, -2733, 202, + 59, -2739, 112, -2743, -2742, 59, 202, -2742, + 202, -2736, -2754, -2751, -2750, 202, 202, -2750, + 202, 59, -2755, -2742, -2736, -2745, -2803, -2786, + -2778, -2771, -2738, -2767, -2766, 195, 195, -2766, + 195, 131, -2769, -2775, -2742, 168, -2769, -2777, + 127, 127, -2784, -2783, -2782, 212, 212, 205, + 195, 212, -2738, -2791, -2790, 195, 195, -2799, + -2796, -2790, 195, -2770, -2790, -2757, 59, -894, + 192, 97, -2798, -2829, -2819, -2814, -2709, -2811, + -2810, 242, 242, -2810, -2797, -2720, -2815, -2817, + 239, -2818, 137, -2827, -2824, -2823, 137, 137, + -2823, 137, 234, 239, 137, -2841, -2838, -2835, + -2834, 127, 127, -2834, 127, 234, -2777, -2826, + 234, -2845, -2616, 232, -2839, 212, -2942, -2904, + -2894, -2883, -2862, -2859, -2856, -2855, 172, 182, + -2858, 174, 174, -2692, 232, -2860, -2872, -2867, + -2866, 235, 235, -2869, -2844, -2866, 235, 121, + -2876, -2875, 235, 235, -2880, -2879, 182, 182, + -2879, 234, 121, -2892, -2879, -2889, -2888, 182, + 182, -2888, -2882, -2881, -2893, 209, -2902, -2864, + -2898, 176, 176, -3216, -2465, -2900, -2717, 214, + -2928, -2921, -2916, -2911, -2910, 74, 74, -2913, + 214, -2915, 215, 215, -2918, 202, -2733, 202, + -2903, -2923, -2618, -2925, -2922, -2915, 215, -2920, + -2934, -2933, -2932, 215, 215, 182, -2893, -2940, + -2938, 193, -2939, 215, 209, -2901, -3026, -2964, + -2957, -2950, 103, -2914, 215, -2891, -2956, -2955, + -2954, 242, 242, 178, 178, -2959, 176, -2810, + -2718, 234, -2961, -2618, -2972, -2971, -2940, -2969, + 215, 215, -2840, 193, -3010, -3000, -2982, -2979, + -2978, 114, 114, -2978, 114, -37, -2990, -2987, + -2986, 120, 120, -2986, 120, -2970, -2997, -2995, + -2994, -2962, 114, 32, -2949, -2999, 120, 120, + -3003, -2939, 249, -3007, -2939, 97, 93, -2939, + 215, 93, -3014, -3013, -3006, 120, -3017, 120, + -3005, -3021, -3020, 212, 212, -2969, -4242, -2912, + -3002, -2996, -3063, -3049, -2742, -3035, -2835, 114, + -4304, -2868, -2813, -3039, -3031, -2559, -2418, -3043, + -3042, 137, 137, -2828, -3046, 114, 114, 101, + 54, -3053, 55, 54, -3048, -3056, 212, 214, + -3060, -2939, -3055, 54, -2939, 215, 214, -3067, + 49, -3058, -3052, -3069, -3047, -3073, -2818, 137, + 59, -2818, 137, 206, -3429, -3222, -3143, -3119, + 242, -3083, 238, -3112, -3107, -3097, -3094, -3091, + -2800, 59, -3089, -2800, 192, -3075, -3096, 112, + 112, -3103, -2800, -3096, 112, 59, -3072, -3096, + -2800, -3101, 59, -3109, -3072, -3111, -3106, 196, + -2799, -894, 59, -3106, -3032, -3110, -3108, -3136, + 149, -3133, -3128, -2796, -3105, -4005, -2798, -2798, + -3130, 112, -2790, 195, -3126, -3096, 112, -3124, + -3140, -3139, -3093, 208, -3139, 131, 167, -3185, + -3177, -3161, -3156, -3149, 71, -3153, -3152, 107, + 107, -3152, 107, 206, -3158, 47, -3160, 47, + 47, -3174, -3173, -3166, 119, 146, -3170, -3169, + 119, 119, -3169, -3138, -2562, 77, -3176, -3172, + 47, 204, -3182, -3181, -3072, 91, -3181, 91, + -3180, -3197, -3188, 77, -1004, -3192, 126, -3101, + -583, 211, 62, -3191, -2741, -3201, -634, -2736, + 59, -3203, -2736, -3215, -3212, -748, -3169, -2515, + -3199, -3196, -3195, 97, -582, 211, -2801, -3219, + -3799, 97, -2801, -790, 211, -3214, -3344, -3259, + -889, -3247, -3233, -3230, 199, 239, -3232, -3210, + 199, -3241, -989, -116, -3184, -3175, -3505, -3068, + 55, -3245, -116, 204, -3240, 242, 206, -3255, + -3252, 55, 206, -3246, -3232, -3244, 55, 242, + -4304, 55, 55, -3310, -3298, -3275, -3264, 146, + -3272, -3268, 142, 38, -3270, -3257, -3271, 111, + -3274, 111, 111, -3279, -3278, -3254, 146, -3285, + -3284, -940, -3254, 55, 91, -3292, -3289, 204, + 38, -3291, -3254, 204, -3289, 38, -3282, -3032, + -3277, 130, -3301, 107, 130, -3303, 108, -3307, + -3306, -3297, 47, -3309, 47, 47, -3335, -3313, + 204, -3317, -3308, -3296, 35, -3332, -3326, -3323, + -3271, 111, -3316, -3271, 19, -3115, -3329, 204, + 60, -3331, 60, 60, -3334, 60, 60, -3339, + -3116, -3322, 97, -2822, -3342, 137, 137, -3211, + -3360, -3358, -3348, 126, -3355, -3353, -2842, -3005, + 97, -194, -3211, -3357, -3352, 63, -3359, 116, + -3397, -3393, -3391, -3379, -3376, -3373, -3370, -3369, + 30, 30, -3369, 30, -3351, -3375, -3337, 47, + -3378, -3315, 47, -3381, 47, -3389, -3386, -45, + 63, -3253, -45, 232, 130, -45, 130, -874, + -3388, -3395, 151, 204, 47, -3398, -3427, -3408, + 78, -3407, -3404, 25, -3406, 38, 38, 63, + -3422, -3419, -3416, -3306, -3396, -3392, -3387, 19, + -3306, 47, 232, -100, 204, 101, -3291, -3306, + 232, 232, -3424, 47, 63, -3823, -3687, -3558, + -3481, -3471, -3452, -3446, -3443, -3441, -3440, 175, + 175, 106, -3421, -3445, 177, 177, -3450, -3449, + 177, 177, 177, -3415, -3465, -3459, -3458, -3445, + 177, -3385, 106, -3463, -3445, 177, -3239, 106, + 177, -3469, -4101, -2332, 197, 106, -3467, -3474, + 87, 116, -3478, -3477, 47, 47, -3477, 47, + 206, -3544, -3542, -3513, -3488, -3487, 106, 106, + -3508, -3503, -3498, -3495, -3487, 106, 131, -3487, + 106, 206, -3496, -3487, 106, -3497, -3494, -3499, + 206, -4101, -3502, 197, -3510, 131, -3440, -3509, + -3507, -3521, -3518, -3517, -3506, 63, -3517, 63, + -3470, -3537, -3530, -3518, -3517, 224, -3520, -4100, + 54, -3528, -3518, -3517, -3055, -3532, -4359, 214, + -2450, -3540, 47, 63, 47, -3533, -45, -3541, + -3551, 205, -3548, 108, -3517, -3526, -3462, -3555, + -4345, -3038, 244, -3517, 63, 244, -3585, -3566, + 126, -3563, 221, -3565, 203, 203, -3567, -3578, + -3571, 223, 154, -3575, -3574, 203, 203, -3574, + 203, -3554, -3580, 244, -3582, -3554, -3584, -3577, + 203, -3673, -3648, -3627, -3607, -3596, -3594, -3593, + -3554, 203, 126, 203, -3603, -3601, -3600, 185, + 185, -3519, -3583, -3605, 213, 63, 126, -3613, + -3440, -60, 175, 213, -3604, -3619, -3440, -3519, + -3602, 252, -3554, -3622, -3621, 203, -3624, 63, + -3626, 244, 63, -3646, -3632, -3631, -3554, 116, + -3636, -3631, 116, -3618, -3644, -3641, -46, 244, + -3554, -46, -3618, -3635, 63, -3617, -3593, -3616, + -3670, -3660, -3656, -3621, -3595, 252, 252, -3653, + -3658, 150, 185, 252, -3665, 177, -3350, -3655, + 213, -3449, -3574, 213, -3667, -3664, -3672, 188, + 203, -3684, -3678, -3677, 130, 211, -3681, 126, + 130, -583, 188, -3676, -3220, -3671, -3669, -3780, + -3749, -3733, -3709, -3704, -3701, -3698, 116, -3595, + 206, 213, -3672, 206, 213, -3584, -3697, 213, + -3706, 181, -3672, 203, 213, -3717, -3714, -3713, + 116, 116, -3713, 116, -3703, -3725, -3722, -3721, + -3664, 116, -3721, 116, -3702, -3730, -3728, -3703, + -3713, -3667, -3705, 181, -3724, -3739, -3738, -3705, + 181, -3686, 178, -3743, -3738, 178, 206, -3746, + 181, 120, -3748, -3696, 120, -3761, -3754, -3753, + 205, 205, -3758, -2782, 212, 206, -2782, 212, + -3696, -3767, -3764, -3747, -3765, -3477, 55, -3775, + -3670, 37, -3662, -3282, 46, -3771, -3763, -3631, + -3759, 128, -3774, -3737, -3805, -3786, -3784, 185, + -3759, -3663, -3802, -3795, -3792, -3791, 198, 198, + -3791, 198, -3647, -3792, -3791, 198, -3388, -4132, + -3798, 130, -3804, 244, 198, -3810, -3807, -3809, + 198, 198, -3814, -3783, 244, -3557, -3816, 198, + -3820, -3819, -3803, 203, -3819, -3818, 200, -3965, + -3874, -3856, -3835, -3448, -3831, 204, -3822, -3833, + 204, 204, -3800, -3448, -3846, -3740, -3840, 32, + -2955, 244, -3841, -2037, -3554, 130, -3850, -3849, + 87, 87, -2997, -3844, -3843, -1409, -3834, -3794, + -3860, -100, 252, 213, 239, -3863, 213, -3867, + -3866, 60, 60, -3871, -3342, -3859, 197, -3342, + 137, -3869, -3905, -3903, -3891, -3882, -3849, 87, + 213, 197, -3312, -3887, -3417, -3873, -3554, -3417, + -3886, 213, -3889, -3331, -3895, -3334, -3888, -3899, + -3334, 60, -3885, -3334, -3858, 252, 200, -3904, + 225, -3935, -3930, -3478, -3917, -3915, -3913, -3334, + 200, -3334, -3902, 60, 200, -3475, -3922, -3334, + 60, -3916, 47, -3921, -3770, 200, -3579, -2578, + 200, 200, -3477, -2497, -3928, -3926, -3923, -3962, + -3943, -3941, -3334, -3914, -3901, 47, 60, -3959, + -3952, -3332, -1034, -3900, 128, 206, 128, -3948, + -3332, -3949, -3742, -3246, 24, -3251, -3954, -3477, + -3958, -3742, -3342, -3703, -3703, -3983, -3972, -3731, + -2980, -3703, -3964, -3963, -3978, -2999, -3872, 206, + -3246, -3251, -3013, -3953, 197, -3980, -3977, -3994, + -3989, -3987, 107, 205, 108, -3992, 47, -3971, + 114, 252, -4032, -4020, -4011, -4000, -3342, -3960, + -3332, -3962, 46, -3947, -2383, 42, -2353, -2353, + -4381, -4006, -2353, -4017, -4014, -2364, -3334, 60, + -4009, -4019, 136, 47, -4028, -4025, -3477, 206, + 136, -3477, -4023, -1274, -3309, -3359, -4026, -4018, + -4019, -3477, -3334, -4018, -4031, -4030, -4037, -2324, + -4147, -4347, -4213, -4183, -4091, -4075, -4062, -4049, + 232, -2341, -4058, -4055, -4054, 241, 241, -4054, + -4016, -3579, -4060, -3579, 241, -4057, -2341, -4072, + -4069, 232, -4068, 214, 214, -4060, 241, -4018, + 214, 241, -4031, -4084, -4082, -4080, 214, 232, + 232, 214, 232, 249, -4089, -4088, 104, -4018, + 232, -4088, -4031, -4135, -4125, -4123, -4113, -4109, + -4104, -4101, -4100, 46, 46, -4100, 46, -4074, + -4106, -4061, -4100, 46, -2654, 44, -2086, -3916, + -3579, -4121, -4118, -2333, 210, -4057, -2333, -4108, + 244, 241, -4007, -4124, 214, 49, -2082, -2078, + -4102, 122, -4129, -4122, 42, -4120, -4119, -4164, + -4160, -4151, -4144, -3051, -3055, -4134, -4056, -4003, + -3058, -3055, -3855, -3553, -4380, -2050, 201, -4153, + -4150, -4157, -4156, 54, 54, -4156, -4149, -2292, + 214, -4163, 210, 54, -4171, -4140, -4167, 214, + -4381, -2292, 210, -4174, -4073, -2292, -4176, -4169, + -4180, -4124, 210, -4175, -4124, -4159, 240, -4185, + 241, -4189, 241, 214, 186, -4203, -4195, -4124, + -4068, -2293, -4181, -4198, -4197, 210, -4200, -4194, + -4124, -4158, 48, -4205, 48, -4207, 240, -4123, + -4124, 214, -4202, -4008, -4210, -4333, -4281, -4222, + 232, -4219, 46, -4221, -4100, 54, -4254, -4234, + -4227, 46, 206, -4231, -4230, 55, 55, -4230, + 46, -4220, -4237, -3250, 44, -4252, -4246, -4243, + -4230, 44, -4236, -4230, -4236, -4242, -4250, 167, + -4245, -4233, 55, 48, -3240, -4212, -4258, -4257, + 54, 54, -4274, -4267, -4264, -4256, 54, 44, + -4256, -4256, 201, -4264, -4256, 48, -4265, -4211, + -4253, -4201, -4268, -4256, 56, -1295, -3979, -4277, + 42, -4291, -4289, 171, -4286, 151, -3005, -4279, + 53, -4088, -4288, -4296, -4293, -4295, 49, 130, + -4316, -4313, -4306, -4303, -3254, -4290, -4287, -3254, + 55, -2215, -4303, -3254, -4302, 53, 130, -4309, + -4308, -4315, -2224, 130, 55, -4320, 49, 44, + -4328, -4325, -4324, 49, 49, -4324, 49, -4276, + -4294, -4102, 46, -4276, -4327, -4340, -4335, -4182, + -4338, -4314, 214, -4312, -3048, -4081, -3051, 49, + -4343, 49, -4343, -1804, -958, -3946, -4278, -4362, + -4353, -4360, -4358, -4357, -4344, 252, 37, 49, + -4361, 37, -4366, -1171, 252, -4343, -4384, -4372, + -1164, 252, 100, -4344, -2496, -3655, -4378, -4377, + 37, 37, -4382, 130, -4356, 206, 206, 37, + -4310, 49, }; static long _vq_p_lsp32_0[] = { - 252, 16, 164, 68, 88, 88, 208, 36, - 36, 208, 88, 88, 88, 140, 140, 548, - 88, 88, 208, 208, 88, 88, 88, 208, - 208, 88, 88, 88, 140, 248, 140, 140, - 492, 492, 864, 208, 208, 492, 492, 880, - 68, 68, 68, 68, 68, 68, 248, 208, - 208, 208, 248, 140, 780, 368, 140, 140, - 140, 164, 164, 164, 164, 492, 208, 300, - 300, 300, 864, 484, 68, 68, 68, 864, - 484, 248, 68, 68, 248, 248, 728, 140, - 140, 140, 696, 484, 484, 780, 696, 696, - 696, 880, 48, 208, 48, 48, 48, 48, - 48, 80, 80, 208, 184, 164, 208, 776, - 524, 776, 48, 548, 48, 48, 48, 524, - 612, 68, 548, 452, 524, 452, 248, 248, - 300, 292, 208, 68, 68, 68, 300, 940, - 864, 184, 300, 208, 208, 300, 68, 248, - 68, 68, 596, 292, 248, 248, 420, 420, - 420, 68, 596, 292, 292, 292, 600, 420, - 420, 596, 4, 36, 164, 4, 4, 356, - 4, 4, 164, 4, 140, 36, 36, 36, - 48, 164, 164, 164, 356, 356, 356, 356, - 388, 832, 388, 832, 484, 4, 68, 164, - 340, 356, 4, 4, 4, 4, 356, 164, - 164, 164, 612, 200, 140, 140, 140, 200, - 164, 852, 68, 140, 200, 68, 164, 164, - 68, 832, 740, 852, 740, 68, 68, 68, - 740, 484, 484, 200, 832, 484, 200, 164, - 200, 832, 740, 356, 356, 356, 624, 776, - 388, 388, 600, 356, 356, 388, 4, 48, - 48, 600, 644, 68, 600, 612, 4, 4, - 776, 4, 4, 624, 592, 356, 592, 644, - 644, 592, 140, 140, 592, 696, 592, 128, - 740, 128, 128, 128, 196, 104, 196, 196, - 832, 936, 676, 68, 68, 68, 484, 484, - 68, 196, 740, 740, 916, 484, 484, 484, - 676, 676, 696, 292, 420, 420, 420, 600, - 936, 68, 872, 68, 68, 592, 644, 644, - 304, 872, 740, 740, 304, 852, 68, 48, - 48, 48, 48, 48, 872, 272, 644, 644, - 200, 292, 68, 68, 68, 872, 200, 664, - 304, 548, 364, 260, 260, 260, 260, 260, - 268, 460, 268, 12, 80, 12, 12, 12, - 12, 80, 80, 80, 36, 304, 268, 12, - 12, 12, 12, 364, 364, 268, 268, 364, - 364, 496, 12, 12, 12, 12, 364, 36, - 36, 200, 364, 200, 836, 16, 16, 80, - 304, 12, 12, 12, 12, 12, 12, 804, - 804, 136, 136, 772, 136, 136, 200, 496, - 76, 76, 76, 176, 136, 136, 176, 136, - 136, 200, 12, 80, 88, 88, 12, 12, - 272, 208, 88, 88, 88, 368, 208, 208, - 268, 80, 80, 80, 524, 204, 12, 12, - 12, 12, 492, 12, 12, 12, 208, 12, - 492, 12, 204, 88, 12, 208, 664, 88, - 88, 88, 268, 208, 208, 16, 16, 268, - 492, 272, 664, 804, 804, 140, 88, 88, - 88, 176, 492, 140, 836, 804, 176, 88, - 88, 88, 88, 176, 460, 268, 268, 176, - 460, 300, 4, 100, 136, 888, 136, 136, - 76, 76, 76, 76, 100, 100, 100, 516, - 516, 36, 100, 36, 4, 100, 4, 4, - 4, 100, 100, 300, 36, 36, 36, 36, - 516, 100, 100, 204, 100, 100, 204, 164, - 164, 356, 356, 952, 100, 100, 4, 4, - 204, 100, 100, 776, 644, 300, 708, 176, - 36, 76, 36, 36, 36, 36, 136, 516, - 176, 516, 136, 76, 176, 76, 76, 176, - 592, 364, 364, 176, 592, 4, 364, 4, - 4, 4, 4, 4, 4, 592, 104, 196, - 196, 260, 260, 196, 140, 140, 140, 36, - 196, 36, 300, 260, 260, 364, 300, 516, - 4, 4, 36, 140, 260, 260, 260, 548, - 644, 140, 164, 164, 196, 492, 36, 80, - 48, 48, 80, 36, 36, 624, 48, 548, - 620, 548, 564, 48, 564, 620, 48, 204, - 564, 340, 120, 56, 808, 676, 312, 56, - 56, 56, 56, 56, 56, 312, 312, 340, - 420, 120, 120, 312, 420, 292, 340, 312, - 312, 676, 292, 808, 808, 292, 644, 600, - 56, 808, 120, 120, 56, 764, 764, 56, - 56, 808, 872, 420, 120, 120, 120, 120, - 940, 808, 808, 340, 600, 108, 312, 108, - 108, 108, 108, 108, 312, 292, 292, 292, - 452, 312, 312, 200, 452, 108, 108, 108, - 108, 200, 644, 104, 200, 200, 48, 48, - 48, 620, 292, 340, 624, 48, 48, 340, - 292, 292, 340, 184, 184, 776, 376, 292, - 420, 120, 120, 440, 292, 120, 120, 120, - 420, 120, 120, 340, 292, 292, 340, 376, - 376, 312, 292, 292, 292, 24, 312, 312, - 24, 808, 292, 292, 120, 24, 184, 184, - 292, 120, 24, 24, 312, 376, 120, 120, - 24, 184, 184, 184, 172, 340, 344, 420, - 120, 120, 120, 312, 312, 312, 340, 420, - 420, 420, 440, 440, 696, 440, 312, 292, - 292, 344, 312, 312, 452, 440, 440, 452, - 292, 324, 108, 108, 108, 376, 108, 108, - 344, 108, 376, 340, 228, 228, 228, 228, - 376, 376, 312, 312, 312, 340, 340, 228, - 324, 228, 228, 228, 228, 504, 324, 324, - 280, 324, 324, 280, 204, 280, 280, 324, - 324, 24, 924, 924, 924, 980, 312, 228, - 228, 228, 120, 312, 120, 120, 344, 24, - 228, 228, 228, 24, 312, 24, 24, 120, - 24, 280, 632, 120, 56, 56, 56, 120, - 280, 912, 120, 912, 120, 120, 120, 120, - 764, 764, 912, 228, 24, 344, 764, 764, - 24, 376, 16, 536, 24, 228, 228, 24, - 632, 632, 440, 228, 228, 228, 228, 804, - 632, 504, 280, 280, 440, 568, 376, 376, - 772, 504, 504, 568, 440, 440, 600, 624, - 600, 376, 280, 568, 568, 632, 420, 376, - 420, 280, 440, 280, 976, 440, 440, 624, - 880, 696, 280, 880, 280, 452, 184, 184, - 184, 248, 184, 184, 184, 248, 208, 208, - 184, 624, 248, 524, 292, 248, 248, 292, - 292, 452, 452, 248, 248, 248, 248, 196, - 440, 196, 624, 292, 292, 196, 440, 624, - 292, 624, 440, 24, 24, 248, 440, 248, - 248, 248, 248, 440, 24, 696, 880, 248, - 24, 24, 280, 376, 184, 376, 184, 184, - 536, 376, 376, 556, 504, 184, 376, 24, - 440, 440, 440, 504, 400, 140, 88, 88, - 248, 400, 452, 524, 248, 624, 496, 88, - 88, 88, 88, 524, 400, 400, 400, 496, - 248, 248, 196, 568, 524, 196, 196, 140, - 140, 88, 88, 304, 452, 452, 460, 932, - 460, 88, 88, 88, 24, 592, 140, 592, - 632, 568, 496, 496, 632, 304, 400, 400, - 400, 196, 460, 196, 880, 908, 268, 260, - 260, 144, 400, 144, 144, 268, 80, 80, - 336, 144, 144, 300, 268, 196, 196, 144, - 144, 144, 144, 400, 400, 336, 248, 208, - 208, 208, 336, 400, 80, 80, 336, 208, - 400, 208, 208, 400, 208, 304, 524, 184, - 80, 664, 664, 400, 208, 208, 208, 80, - 80, 400, 80, 304, 400, 400, 400, 568, - 336, 80, 524, 80, 80, 80, 80, 80, - 556, 524, 336, 400, 336, 144, 144, 144, - 496, 524, 400, 400, 400, 336, 16, 304, - 144, 144, 144, 304, 868, 868, 932, 400, - 400, 336, 868, 556, 400, 504, 400, 400, - 76, 524, 580, 524, 184, 184, 524, 184, - 184, 336, 336, 504, 76, 76, 932, 452, - 452, 452, 504, 76, 400, 524, 504, 504, - 504, 504, 504, 504, 324, 324, 324, 336, - 584, 556, 504, 504, 76, 76, 556, 556, - 584, 556, 632, 368, 568, 556, 556, 304, - 568, 824, 824, 304, 400, 400, 568, 400, - 568, 824, 16, 568, 568, 632, 632, 632, - 16, 932, 868, 16, 452, 144, 16, 16, - 16, 16, 16, 260, 80, 80, 260, 144, - 144, 260, 260, 304, 548, 452, 452, 80, - 80, 588, 144, 452, 452, 452, 16, 620, - 260, 140, 260, 260, 620, 300, 452, 300, - 548, 300, 16, 620, 48, 48, 184, 48, - 48, 260, 452, 496, 108, 108, 304, 588, - 452, 76, 184, 184, 524, 184, 524, 80, - 76, 16, 16, 452, 76, 620, 76, 452, - 452, 196, 496, 108, 108, 108, 108, 108, - 108, 108, 16, 172, 172, 172, 588, 324, - 172, 172, 324, 324, 564, 504, 564, 336, - 80, 336, 172, 336, 200, 80, 80, 200, - 200, 184, 200, 476, 604, 288, 96, 96, - 0, 0, 0, 0, 96, 96, 96, 0, - 0, 0, 0, 352, 288, 288, 288, 288, - 288, 640, 384, 92, 0, 0, 0, 0, - 0, 512, 92, 92, 92, 384, 92, 92, - 92, 564, 156, 0, 0, 16, 24, 24, - 156, 156, 24, 156, 0, 16, 336, 24, - 352, 92, 92, 0, 92, 0, 0, 92, - 24, 92, 92, 92, 92, 604, 156, 156, - 336, 156, 336, 668, 604, 604, 796, 412, - 156, 156, 156, 104, 44, 44, 412, 412, - 44, 412, 412, 44, 412, 412, 640, 540, - 540, 96, 416, 32, 32, 32, 32, 732, - 416, 416, 44, 416, 416, 288, 32, 608, - 32, 32, 32, 288, 160, 160, 300, 32, - 32, 32, 160, 160, 96, 96, 96, 96, - 160, 160, 160, 352, 160, 288, 192, 192, - 96, 96, 32, 32, 32, 300, 480, 480, - 96, 200, 704, 284, 284, 640, 284, 284, - 284, 412, 288, 200, 368, 284, 284, 284, - 284, 540, 412, 200, 396, 672, 160, 352, - 160, 160, 160, 160, 300, 608, 608, 44, - 288, 300, 608, 288, 608, 608, 608, 608, - 736, 732, 732, 44, 300, 28, 28, 28, - 476, 476, 200, 220, 220, 220, 476, 476, - 476, 732, 884, 904, 316, 380, 444, 576, - 120, 444, 56, 56, 56, 56, 624, 444, - 120, 120, 564, 188, 188, 188, 444, 572, - 572, 564, 120, 624, 572, 572, 572, 188, - 188, 572, 576, 944, 944, 956, 60, 60, - 60, 60, 60, 380, 124, 124, 24, 64, - 64, 64, 24, 24, 444, 56, 56, 56, - 444, 380, 772, 336, 56, 336, 124, 124, - 380, 56, 444, 444, 188, 188, 24, 124, - 572, 188, 64, 64, 64, 316, 24, 572, - 188, 24, 316, 24, 380, 64, 64, 24, - 124, 124, 124, 624, 380, 380, 336, 508, - 64, 64, 564, 316, 124, 44, 44, 124, - 124, 24, 576, 124, 44, 380, 56, 188, - 188, 188, 188, 508, 444, 444, 804, 56, - 772, 120, 444, 136, 828, 508, 444, 444, - 444, 444, 700, 136, 508, 60, 60, 444, - 444, 444, 624, 764, 700, 700, 700, 764, - 828, 828, 764, 764, 304, 912, 828, 828, - 624, 764, 804, 860, 92, 124, 384, 60, - 60, 60, 44, 384, 124, 64, 64, 124, - 304, 60, 636, 508, 64, 512, 64, 64, - 64, 64, 352, 188, 188, 188, 316, 316, - 336, 188, 188, 188, 188, 512, 508, 508, - 580, 316, 316, 316, 336, 508, 76, 188, - 76, 92, 512, 92, 76, 580, 604, 76, - 92, 92, 636, 316, 316, 316, 76, 104, - 136, 136, 384, 384, 384, 384, 132, 132, - 508, 508, 44, 44, 44, 860, 188, 188, - 188, 508, 508, 508, 580, 700, 604, 604, - 580, 884, 636, 636, 636, 76, 700, 624, - 772, 192, 192, 192, 96, 96, 96, 96, - 496, 224, 224, 224, 784, 352, 224, 544, - 124, 124, 192, 192, 192, 192, 192, 224, - 224, 224, 196, 196, 224, 224, 196, 256, - 256, 416, 480, 256, 196, 592, 496, 256, - 448, 124, 64, 64, 64, 496, 316, 124, - 124, 496, 448, 256, 224, 224, 256, 64, - 64, 64, 224, 196, 196, 124, 124, 624, - 224, 224, 224, 772, 576, 772, 316, 316, - 316, 136, 352, 352, 96, 64, 96, 96, - 64, 64, 664, 124, 784, 64, 64, 304, - 316, 304, 64, 64, 64, 224, 124, 304, - 268, 316, 96, 268, 316, 268, 60, 60, - 60, 60, 60, 384, 124, 304, 64, 64, - 64, 304, 304, 64, 224, 64, 268, 224, - 496, 124, 124, 124, 224, 224, 448, 448, - 124, 124, 124, 124, 704, 448, 256, 448, - 268, 124, 124, 124, 268, 12, 576, 12, - 256, 576, 12, 704, 60, 480, 256, 480, - 128, 128, 128, 128, 480, 480, 256, 192, - 192, 192, 192, 256, 256, 12, 256, 800, - 128, 128, 128, 128, 128, 388, 320, 320, - 320, 320, 832, 800, 800, 12, 388, 12, - 800, 388, 388, 388, 12, 840, 832, 800, - 784, 252, 60, 252, 60, 252, 128, 128, - 60, 60, 128, 252, 252, 252, 252, 380, - 380, 380, 60, 60, 60, 60, 380, 128, - 124, 124, 784, 448, 664, 252, 252, 252, - 128, 128, 128, 784, 256, 252, 252, 252, - 252, 252, 252, 576, 448, 280, 320, 280, - 256, 300, 280, 280, 280, 448, 600, 892, - 576, 320, 320, 484, 320, 576, 624, 320, - 320, 128, 128, 128, 128, 388, 320, 320, - 624, 740, 832, 388, 624, 740, 120, 120, - 120, 764, 56, 56, 280, 260, 120, 268, - 496, 56, 56, 56, 260, 120, 260, 196, - 956, 380, 56, 572, 420, 380, 56, 56, - 56, 420, 572, 380, 380, 196, 496, 56, - 304, 420, 260, 572, 56, 676, 364, 576, - 380, 676, 380, 380, 380, 380, 76, 76, - 892, 892, 420, 76, 76, 304, 676, 56, - 16, 872, 872, 16, 56, 940, 892, 420, - 576, 864, 892, 576, 576, 576, 76, 420, - 892, 420, 420, 76, 16, 892, 420, 16, - 252, 252, 252, 252, 76, 872, 76, 252, - 252, 740, 536, 252, 252, 204, 460, 460, - 484, 460, 716, 484, 716, 460, 576, 484, - 484, 460, 484, 832, 832, 484, 484, 868, - 484, 460, 484, 484, 484, 716, 944, 400, - 864, 864, 864, 944, 892, 400, 400, 892, - 864, 716, 536, 864, 484, 864, 484, 536, - 864, 864, 880, 484, 484, 944, 460, 976, - 420, 676, 420, 420, 204, 460, 676, 944, - 696, 420, 420, 420, 460, 536, 944, 400, - 944, 664, 664, 744, 180, 232, 52, 296, - 296, 560, 296, 296, 560, 52, 52, 52, - 244, 244, 244, 296, 296, 296, 536, 688, - 660, 660, 536, 616, 488, 488, 244, 244, - 488, 488, 460, 244, 244, 560, 560, 616, - 616, 244, 244, 244, 244, 460, 520, 520, - 520, 520, 716, 616, 268, 244, 244, 244, - 520, 52, 52, 784, 148, 488, 180, 148, - 148, 148, 180, 616, 180, 268, 616, 180, - 180, 268, 724, 424, 424, 424, 424, 488, - 488, 488, 400, 592, 520, 20, 360, 148, - 148, 360, 360, 520, 20, 20, 20, 148, - 148, 500, 520, 52, 52, 716, 692, 816, - 500, 500, 716, 616, 204, 148, 20, 52, - 20, 20, 424, 20, 20, 204, 144, 148, - 148, 144, 20, 20, 20, 20, 144, 688, - 204, 148, 148, 148, 460, 144, 616, 148, - 148, 148, 424, 424, 360, 360, 360, 616, - 424, 144, 460, 148, 144, 20, 360, 360, - 20, 232, 232, 232, 424, 360, 360, 204, - 72, 8, 8, 8, 8, 8, 8, 84, - 72, 72, 460, 72, 84, 72, 84, 404, - 180, 84, 84, 148, 148, 148, 260, 212, - 180, 84, 84, 84, 84, 84, 680, 392, - 392, 212, 212, 260, 392, 460, 392, 180, - 196, 196, 460, 180, 180, 392, 196, 404, - 180, 180, 180, 180, 196, 404, 404, 460, - 488, 456, 456, 268, 424, 680, 268, 456, - 456, 456, 268, 488, 488, 488, 560, 392, - 392, 424, 424, 268, 212, 148, 148, 148, - 148, 148, 664, 360, 392, 212, 212, 212, - 212, 144, 152, 144, 664, 144, 232, 212, - 212, 212, 144, 232, 232, 392, 392, 260, - 424, 196, 616, 232, 232, 628, 436, 404, - 276, 296, 456, 456, 116, 116, 116, 436, - 296, 196, 784, 436, 116, 276, 276, 436, - 456, 84, 404, 84, 84, 84, 404, 180, - 180, 144, 84, 84, 180, 784, 592, 180, - 116, 116, 116, 716, 716, 456, 180, 180, - 180, 536, 536, 84, 84, 84, 276, 116, - 116, 776, 116, 116, 176, 532, 404, 404, - 176, 404, 404, 8, 536, 532, 536, 84, - 176, 404, 456, 532, 532, 532, 920, 856, - 856, 176, 116, 180, 244, 52, 52, 116, - 116, 244, 244, 116, 116, 600, 116, 116, - 280, 468, 180, 280, 592, 180, 180, 592, - 692, 600, 116, 116, 116, 116, 116, 436, - 296, 296, 176, 296, 52, 52, 296, 176, - 176, 152, 176, 592, 116, 116, 116, 116, - 116, 468, 436, 436, 176, 276, 276, 280, - 276, 204, 692, 148, 148, 148, 196, 196, - 180, 196, 276, 276, 532, 396, 396, 52, - 52, 308, 132, 308, 308, 820, 308, 468, - 52, 52, 52, 52, 280, 556, 520, 556, - 684, 244, 244, 400, 400, 468, 400, 400, - 244, 244, 152, 400, 556, 308, 308, 308, - 308, 468, 308, 556, 716, 52, 820, 52, - 52, 52, 204, 468, 468, 296, 296, 296, - 468, 204, 204, 468, 296, 244, 244, 244, - 204, 684, 264, 52, 244, 40, 40, 52, - 52, 40, 40, 40, 264, 52, 684, 144, - 40, 40, 40, 660, 296, 296, 244, 144, - 264, 144, 308, 308, 144, 244, 328, 296, - 296, 144, 244, 560, 560, 688, 244, 244, - 244, 660, 328, 328, 328, 328, 660, 144, - 560, 560, 664, 244, 244, 272, 308, 308, - 328, 308, 308, 52, 52, 176, 264, 264, - 520, 712, 520, 264, 144, 520, 264, 264, - 144, 328, 328, 328, 328, 660, 552, 328, - 520, 20, 20, 20, 552, 552, 688, 52, - 52, 52, 52, 52, 204, 660, 272, 556, - 520, 520, 272, 264, 264, 264, 264, 272, - 172, 520, 520, 144, 660, 552, 204, 80, - 80, 52, 20, 20, 20, 52, 80, 520, - 500, 52, 80, 264, 264, 200, 200, 264, - 308, 308, 172, 396, 396, 264, 264, 172, - 596, 396, 396, 16, 264, 500, 500, 264, - 264, 16, 520, 520, 40, 40, 40, 40, - 340, 340, 328, 328, 16, 16, 344, 344, - 560, 16, 328, 328, 328, 328, 712, 596, - 752, 16, 20, 264, 264, 200, 200, 268, - 264, 264, 304, 552, 464, 464, 200, 152, - 80, 340, 340, 340, 80, 464, 464, 340, - 340, 340, 80, 344, 464, 464, 152, 144, - 40, 372, 588, 200, 396, 200, 200, 200, - 268, 144, 396, 264, 264, 396, 44, 44, - 44, 272, 144, 144, 264, 264, 396, 264, - 396, 396, 712, 596, 144, 396, 396, 564, - 272, 44, 44, 564, 44, 44, 564, 272, - 780, 264, 24, 272, 656, 340, 24, 24, - 264, 16, 152, 16, 16, 200, 200, 200, - 264, 264, 264, 40, 40, 40, 264, 264, - 264, 204, 340, 204, 144, 40, 40, 24, - 24, 144, 340, 204, 16, 564, 372, 40, - 40, 16, 16, 372, 372, 16, 564, 24, - 24, 144, 656, 40, 24, 16, 24, 344, - 328, 24, 24, 328, 344, 24, 272, 340, - 40, 40, 176, 144, 328, 328, 328, 340, - 144, 340, 340, 176, 596, 780, 328, 40, - 328, 40, 40, 176, 656, 328, 592, 172, - 40, 40, 460, 268, 264, 972, 868, 328, - 328, 328, 328, 656, 340, 868, 536, 264, - 264, 536, 656, 824, 596, 760, 760, 44, - 372, 44, 44, 44, 868, 684, 132, 372, - 44, 684, 132, 132, 372, 264, 428, 308, - 132, 132, 132, 132, 372, 372, 372, 308, - 684, 760, 428, 428, 308, 244, 244, 824, - 308, 168, 684, 824, 656, 656, 684, 684, - 240, 616, 560, 424, 232, 232, 232, 240, - 240, 240, 556, 360, 360, 556, 556, 232, - 236, 236, 240, 240, 240, 560, 556, 824, - 432, 432, 760, 240, 240, 20, 20, 20, - 552, 760, 240, 240, 240, 240, 868, 584, - 552, 552, 552, 688, 584, 432, 432, 720, - 20, 20, 20, 360, 360, 360, 556, 584, - 688, 584, 520, 172, 172, 500, 172, 760, - 236, 216, 408, 216, 216, 216, 216, 240, - 236, 236, 236, 408, 240, 240, 848, 236, - 236, 408, 528, 240, 20, 20, 20, 20, - 20, 464, 240, 216, 216, 216, 528, 240, - 240, 240, 528, 464, 760, 748, 748, 236, - 20, 360, 240, 20, 748, 240, 360, 360, - 20, 628, 500, 20, 584, 500, 628, 652, - 236, 236, 236, 236, 236, 584, 848, 360, - 748, 500, 240, 240, 748, 528, 360, 360, - 324, 104, 324, 748, 500, 584, 172, 240, - 172, 424, 232, 20, 216, 240, 232, 172, - 240, 232, 216, 216, 216, 408, 240, 240, - 240, 432, 408, 104, 104, 216, 232, 216, - 216, 172, 104, 748, 928, 216, 216, 216, - 876, 652, 848, 628, 848, 648, 648, 652, - 844, 812, 232, 232, 240, 232, 240, 240, - 844, 360, 360, 360, 812, 328, 236, 464, - 408, 408, 408, 528, 464, 464, 812, 812, - 528, 844, 760, 528, 332, 332, 236, 236, - 236, 720, 528, 528, 528, 528, 760, 756, - 720, 712, 712, 712, 760, 168, 552, 552, - 552, 168, 712, 596, 332, 596, 596, 168, - 168, 332, 328, 328, 760, 788, 712, 848, - 756, 848, 748, 328, 432, 432, 432, 432, - 432, 752, 560, 748, 328, 328, 560, 748, - 328, 328, 328, 760, 344, 344, 344, 104, - 792, 752, 104, 104, 464, 104, 752, 464, - 552, 552, 748, 104, 720, 104, 432, 408, - 432, 408, 408, 964, 432, 472, 472, 756, - 756, 472, 464, 472, 756, 720, 536, 428, - 332, 332, 500, 396, 396, 428, 500, 332, - 236, 236, 236, 332, 332, 332, 428, 528, - 528, 500, 500, 500, 428, 528, 528, 528, - 528, 844, 552, 844, 552, 168, 520, 168, - 428, 112, 112, 112, 200, 596, 464, 104, - 472, 500, 500, 428, 528, 528, 528, 168, - 168, 464, 280, 300, 176, 176, 176, 300, - 300, 300, 300, 300, 300, 168, 332, 332, - 428, 332, 332, 596, 332, 760, 728, 756, - 596, 596, 760, 728, 728, 728, 776, 168, - 168, 760, 200, 200, 600, 200, 200, 600, - 340, 464, 340, 340, 340, 464, 596, 760, - 472, 332, 472, 472, 816, 600, 176, 176, - 176, 168, 472, 168, 472, 472, 472, 176, - 176, 472, 472, 428, 428, 472, 472, 152, - 176, 176, 152, 152, 428, 428, 428, 756, - 728, 728, 728, 104, 756, 104, 104, 408, - 344, 344, 344, 280, 344, 776, 464, 600, - 104, 408, 472, 408, 408, 408, 152, 152, - 472, 472, 464, 152, 408, 408, 152, 472, - 728, 728, 204, 776, 584, 756, 756, 556, - 776, 556, 172, 756, 756, 756, 432, 432, - 172, 472, 472, 472, 896, 536, 536, 172, - 528, 756, 112, 112, 104, 152, 112, 104, - 104, 112, 112, 152, 168, 104, 112, 112, - 168, 168, 112, 168, 112, 112, 172, 152, - 684, 684, 112, 112, 112, 112, 408, 152, - 152, 584, 472, 408, 408, 408, 400, 464, - 104, 104, 104, 868, 664, 332, 168, 168, - 168, 272, 236, 236, 332, 272, 428, 332, - 168, 172, 168, 168, 152, 152, 152, 428, - 168, 168, 152, 152, 204, 408, 428, 408, - 408, 204, 152, 408, 408, 428, 428, 152, - 236, 236, 236, 168, 168, 236, 236, 152, - 408, 684, 756, 168, 168, 728, 272, 332, - 332, 332, 684, 152, 528, 528, 408, 408, - 408, 868, 528, 464, 236, 168, 216, 168, - 168, 824, 716, 216, 408, 168, 168, 168, - 716, 844, 408, 716, 536, 236, 900, 236, - 236, 844, 536, 408, 536, 900, 216, 216, - 408, 408, 536, 844, 216, 216, 216, 216, - 216, 216, 216, 472, 812, 428, 652, 652, - 428, 652, 652, 428, 428, 812, 428, 684, - 584, 652, 168, 204, 788, 204, 204, 152, - 152, 176, 112, 112, 112, 112, 428, 152, - 152, 176, 176, 152, 176, 104, 176, 176, - 272, 204, 104, 104, 112, 112, 176, 112, - 112, 112, 112, 112, 152, 200, 152, 176, - 176, 152, 152, 112, 200, 112, 112, 112, - 112, 152, 152, 200, 428, 104, 684, 112, - 332, 112, 112, 176, 332, 332, 272, 112, - 112, 368, 332, 172, 300, 332, 332, 300, - 300, 152, 332, 152, 368, 104, 300, + 256, 0, 28, 56, 92, 272, 20, 272, + 20, 272, 272, 20, 20, 20, 20, 56, + 272, 272, 272, 272, 272, 272, 312, 312, + 312, 312, 900, 308, 308, 308, 304, 56, + 484, 56, 308, 116, 20, 936, 316, 272, + 272, 272, 124, 116, 116, 116, 504, 124, + 936, 308, 308, 308, 308, 468, 116, 936, + 312, 116, 312, 312, 116, 900, 900, 936, + 700, 616, 616, 316, 20, 20, 316, 316, + 892, 900, 892, 700, 936, 892, 884, 716, + 56, 316, 716, 900, 900, 992, 828, 992, + 900, 992, 92, 92, 900, 992, 992, 900, + 92, 92, 492, 312, 312, 92, 716, 816, + 992, 992, 992, 664, 664, 568, 568, 664, + 992, 796, 568, 120, 968, 992, 88, 992, + 992, 496, 88, 88, 88, 716, 664, 492, + 468, 468, 56, 56, 88, 56, 56, 88, + 56, 88, 632, 88, 88, 228, 24, 92, + 56, 44, 44, 632, 56, 716, 92, 28, + 24, 24, 24, 24, 24, 492, 92, 92, + 716, 44, 44, 44, 468, 92, 612, 28, + 28, 44, 900, 312, 24, 24, 612, 612, + 312, 308, 308, 308, 612, 312, 304, 304, + 308, 468, 304, 312, 612, 28, 28, 28, + 28, 28, 248, 124, 888, 888, 308, 308, + 124, 888, 56, 44, 44, 44, 896, 116, + 716, 1004, 28, 56, 56, 56, 56, 612, + 88, 612, 124, 28, 92, 28, 124, 28, + 28, 92, 28, 28, 28, 28, 364, 180, + 92, 92, 92, 612, 984, 44, 44, 44, + 44, 984, 92, 92, 984, 92, 984, 612, + 180, 364, 308, 308, 308, 748, 44, 568, + 568, 120, 44, 44, 44, 468, 716, 400, + 716, 632, 92, 92, 364, 92, 632, 92, + 92, 632, 664, 364, 632, 364, 888, 88, + 88, 56, 888, 876, 56, 212, 876, 92, + 632, 180, 92, 624, 624, 4, 4, 20, + 20, 4, 20, 20, 20, 20, 20, 20, + 828, 4, 4, 324, 324, 324, 612, 400, + 612, 316, 316, 316, 612, 324, 272, 272, + 316, 20, 20, 20, 244, 316, 316, 892, + 360, 4, 360, 324, 612, 360, 112, 324, + 4, 324, 4, 88, 56, 56, 56, 88, + 88, 4, 88, 88, 88, 88, 88, 88, + 104, 104, 104, 888, 4, 112, 112, 876, + 360, 876, 112, 4, 56, 612, 4, 204, + 324, 716, 324, 360, 20, 272, 20, 316, + 20, 324, 20, 272, 272, 272, 936, 316, + 936, 308, 316, 324, 308, 460, 324, 324, + 324, 716, 716, 16, 56, 20, 20, 20, + 828, 56, 88, 16, 16, 16, 936, 56, + 56, 56, 56, 180, 88, 88, 936, 16, + 16, 16, 588, 204, 204, 588, 16, 16, + 16, 588, 20, 588, 112, 16, 16, 16, + 460, 112, 360, 360, 304, 88, 88, 304, + 632, 16, 624, 360, 20, 124, 232, 272, + 272, 20, 20, 20, 20, 56, 624, 124, + 272, 272, 272, 588, 684, 588, 588, 20, + 684, 460, 716, 56, 632, 632, 308, 308, + 612, 308, 124, 308, 612, 28, 308, 16, + 16, 16, 16, 16, 360, 360, 324, 324, + 324, 612, 752, 612, 588, 504, 476, 612, + 20, 20, 20, 20, 20, 124, 360, 360, + 612, 324, 324, 324, 324, 232, 504, 504, + 588, 360, 360, 360, 360, 612, 752, 888, + 888, 124, 124, 888, 612, 340, 304, 304, + 272, 272, 272, 308, 304, 304, 324, 308, + 612, 308, 308, 308, 304, 612, 632, 124, + 340, 588, 588, 504, 504, 124, 124, 272, + 272, 308, 588, 476, 308, 248, 28, 28, + 592, 588, 324, 84, 84, 324, 360, 652, + 360, 476, 324, 324, 624, 324, 324, 652, + 112, 680, 652, 652, 652, 476, 476, 504, + 272, 580, 552, 552, 552, 552, 552, 552, + 552, 652, 360, 360, 588, 756, 652, 652, + 876, 324, 324, 876, 876, 360, 592, 460, + 316, 316, 316, 316, 460, 400, 1004, 492, + 196, 716, 1016, 324, 324, 324, 652, 1016, + 580, 580, 580, 580, 580, 580, 980, 996, + 308, 308, 308, 996, 324, 876, 1016, 308, + 308, 308, 1016, 316, 1016, 996, 756, 316, + 20, 700, 272, 20, 20, 20, 1016, 528, + 272, 272, 272, 500, 316, 500, 716, 308, + 716, 20, 20, 20, 716, 492, 600, 944, + 944, 316, 944, 272, 272, 272, 944, 324, + 452, 308, 316, 324, 452, 580, 552, 552, + 552, 452, 892, 580, 580, 452, 580, 580, + 580, 932, 700, 892, 944, 932, 316, 316, + 932, 944, 600, 944, 716, 552, 400, 632, + 632, 884, 884, 632, 584, 596, 608, 584, + 656, 560, 596, 560, 560, 776, 584, 584, + 584, 656, 632, 596, 560, 768, 560, 560, + 560, 608, 608, 768, 560, 784, 600, 876, + 876, 560, 596, 596, 596, 784, 776, 776, + 492, 336, 584, 584, 28, 28, 284, 584, + 584, 784, 584, 876, 476, 584, 584, 584, + 476, 364, 364, 288, 284, 284, 284, 492, + 364, 364, 680, 336, 336, 476, 716, 784, + 284, 284, 284, 284, 284, 284, 832, 680, + 680, 716, 680, 1016, 1016, 596, 596, 596, + 596, 492, 680, 680, 520, 1016, 288, 596, + 596, 596, 596, 1016, 896, 680, 680, 888, + 336, 336, 888, 888, 880, 492, 984, 680, + 680, 984, 584, 568, 568, 984, 984, 596, + 656, 364, 564, 768, 584, 568, 564, 564, + 584, 568, 1020, 952, 664, 568, 568, 568, + 568, 364, 664, 564, 564, 564, 564, 564, + 664, 364, 1020, 584, 584, 584, 896, 288, + 584, 584, 584, 664, 748, 364, 564, 564, + 568, 568, 364, 796, 748, 564, 564, 568, + 956, 796, 796, 948, 948, 952, 584, 656, + 584, 568, 568, 584, 568, 952, 952, 644, + 336, 644, 336, 584, 584, 948, 784, 784, + 644, 644, 796, 656, 656, 656, 944, 568, + 568, 568, 568, 568, 944, 584, 452, 944, + 656, 584, 664, 664, 944, 452, 664, 944, + 784, 364, 568, 568, 364, 664, 568, 568, + 632, 664, 364, 364, 364, 632, 632, 28, + 28, 880, 632, 944, 264, 568, 568, 340, + 264, 264, 264, 44, 44, 632, 520, 876, + 568, 568, 568, 568, 664, 88, 876, 876, + 88, 88, 264, 532, 180, 264, 656, 656, + 656, 876, 664, 664, 664, 992, 992, 876, + 644, 644, 644, 264, 264, 796, 796, 592, + 28, 308, 284, 284, 16, 28, 876, 16, + 16, 268, 28, 920, 476, 180, 180, 16, + 16, 264, 364, 264, 364, 264, 1020, 364, + 16, 16, 16, 1020, 364, 920, 664, 112, + 596, 652, 652, 596, 112, 760, 596, 340, + 896, 920, 668, 920, 920, 16, 680, 112, + 16, 16, 16, 336, 112, 112, 920, 336, + 336, 336, 132, 132, 680, 680, 336, 468, + 112, 204, 16, 16, 16, 16, 112, 112, + 204, 88, 88, 888, 888, 340, 888, 936, + 16, 16, 360, 360, 112, 876, 656, 496, + 336, 992, 992, 644, 644, 664, 336, 336, + 336, 88, 88, 400, 936, 460, 664, 632, + 592, 644, 644, 96, 592, 592, 680, 680, + 680, 336, 592, 876, 876, 180, 88, 88, + 16, 16, 592, 588, 148, 588, 876, 16, + 876, 180, 16, 16, 16, 588, 336, 336, + 760, 588, 204, 460, 624, 336, 336, 624, + 496, 336, 664, 624, 16, 88, 88, 460, + 204, 592, 664, 592, 204, 884, 340, 600, + 552, 552, 552, 376, 600, 552, 552, 552, + 636, 600, 600, 592, 636, 552, 552, 592, + 588, 600, 600, 600, 756, 884, 884, 600, + 600, 600, 588, 32, 588, 588, 340, 340, + 636, 636, 636, 652, 592, 376, 880, 880, + 600, 340, 340, 600, 600, 600, 600, 376, + 636, 636, 624, 40, 40, 40, 40, 488, + 400, 488, 592, 340, 340, 340, 400, 592, + 624, 600, 400, 600, 600, 600, 600, 752, + 736, 736, 592, 376, 736, 684, 592, 624, + 376, 520, 268, 268, 892, 268, 736, 340, + 80, 52, 40, 40, 40, 40, 40, 40, + 40, 40, 200, 156, 156, 268, 80, 80, + 80, 268, 824, 588, 588, 52, 52, 52, + 80, 80, 80, 588, 376, 268, 376, 736, + 80, 80, 788, 136, 96, 96, 888, 80, + 40, 40, 40, 40, 40, 96, 340, 340, + 888, 80, 32, 340, 32, 32, 32, 212, + 888, 40, 40, 340, 340, 40, 340, 40, + 40, 200, 40, 200, 40, 40, 888, 624, + 752, 752, 488, 736, 684, 268, 268, 636, + 80, 80, 52, 80, 40, 84, 52, 52, + 40, 40, 52, 40, 80, 268, 84, 40, + 80, 96, 80, 80, 96, 268, 84, 84, + 888, 52, 52, 40, 80, 40, 636, 636, + 80, 96, 652, 552, 52, 552, 552, 552, + 268, 652, 636, 760, 52, 52, 52, 592, + 636, 592, 588, 652, 376, 40, 40, 40, + 588, 760, 52, 52, 52, 592, 636, 592, + 84, 84, 84, 652, 764, 804, 96, 96, + 96, 876, 652, 324, 52, 52, 376, 360, + 384, 376, 552, 360, 552, 552, 876, 876, + 400, 912, 912, 52, 52, 52, 52, 592, + 360, 980, 764, 324, 324, 360, 760, 552, + 552, 552, 552, 552, 488, 316, 316, 488, + 360, 324, 52, 360, 52, 52, 52, 52, + 52, 736, 376, 376, 316, 316, 488, 624, + 148, 692, 316, 316, 912, 912, 552, 552, + 552, 552, 552, 692, 920, 316, 592, 316, + 488, 376, 592, 316, 592, 892, 652, 592, + 316, 828, 736, 316, 316, 488, 488, 736, + 268, 268, 892, 892, 268, 268, 992, 992, + 400, 268, 736, 592, 244, 324, 324, 8, + 264, 264, 264, 104, 104, 104, 104, 104, + 172, 4, 268, 692, 4, 692, 488, 360, + 360, 692, 692, 384, 384, 384, 920, 392, + 920, 692, 104, 104, 4, 360, 104, 324, + 324, 84, 324, 324, 324, 268, 172, 112, + 268, 268, 84, 84, 268, 392, 920, 692, + 160, 104, 104, 104, 104, 268, 264, 4, + 4, 264, 172, 624, 112, 392, 692, 720, + 4, 720, 1000, 84, 652, 84, 324, 1000, + 1000, 360, 652, 112, 384, 324, 360, 324, + 324, 692, 920, 84, 84, 360, 360, 384, + 324, 324, 324, 112, 84, 84, 920, 84, + 84, 920, 132, 384, 384, 692, 324, 324, + 324, 692, 912, 912, 172, 360, 360, 360, + 360, 912, 112, 920, 436, 112, 436, 384, + 436, 720, 360, 764, 324, 324, 876, 84, + 84, 84, 680, 876, 652, 876, 804, 264, + 172, 80, 132, 84, 80, 80, 84, 84, + 384, 264, 160, 80, 52, 52, 264, 156, + 80, 980, 264, 52, 52, 52, 264, 156, + 156, 84, 84, 156, 720, 160, 0, 0, + 0, 0, 0, 0, 172, 384, 384, 920, + 104, 104, 104, 1020, 384, 1020, 80, 944, + 472, 80, 52, 52, 948, 944, 140, 944, + 944, 52, 52, 52, 944, 932, 196, 452, + 440, 384, 84, 84, 84, 440, 40, 40, + 160, 52, 156, 440, 104, 932, 496, 376, + 376, 52, 52, 52, 932, 200, 736, 932, + 376, 452, 452, 52, 52, 392, 876, 1016, + 384, 1016, 876, 140, 436, 932, 104, 992, + 736, 736, 736, 944, 752, 300, 200, 300, + 200, 200, 104, 104, 436, 300, 392, 932, + 876, 104, 876, 212, 992, 992, 736, 496, + 200, 32, 104, 0, 72, 80, 0, 0, + 0, 0, 0, 84, 220, 876, 944, 0, + 0, 0, 944, 436, 196, 436, 436, 80, + 196, 436, 876, 876, 84, 876, 84, 84, + 944, 264, 132, 264, 264, 80, 80, 80, + 264, 84, 84, 300, 684, 436, 300, 72, + 72, 72, 156, 72, 72, 72, 72, 136, + 84, 300, 436, 80, 80, 80, 80, 436, + 136, 264, 84, 84, 300, 136, 720, 436, + 80, 80, 132, 84, 388, 264, 472, 208, + 80, 80, 948, 300, 388, 300, 1020, 64, + 64, 72, 1020, 84, 652, 132, 0, 64, + 0, 0, 0, 104, 64, 0, 104, 0, + 0, 0, 1020, 160, 948, 104, 944, 992, + 104, 160, 440, 908, 352, 352, 992, 980, + 72, 64, 64, 64, 68, 64, 64, 64, + 64, 68, 68, 108, 68, 68, 352, 684, + 352, 64, 440, 72, 68, 72, 300, 68, + 68, 300, 160, 472, 160, 68, 68, 68, + 68, 68, 68, 472, 388, 440, 440, 636, + 184, 932, 932, 416, 932, 440, 156, 944, + 72, 72, 452, 440, 440, 68, 932, 684, + 992, 684, 992, 932, 452, 68, 752, 684, + 440, 68, 68, 148, 440, 288, 288, 684, + 684, 136, 80, 32, 72, 40, 80, 32, + 32, 684, 288, 932, 136, 288, 40, 932, + 288, 32, 32, 32, 72, 84, 668, 288, + 420, 80, 72, 288, 288, 72, 72, 420, + 668, 288, 452, 72, 80, 72, 72, 652, + 72, 80, 80, 80, 420, 84, 84, 84, + 420, 96, 96, 96, 136, 652, 420, 576, + 64, 64, 64, 576, 576, 352, 328, 576, + 96, 416, 72, 32, 144, 32, 32, 32, + 176, 72, 328, 144, 136, 32, 32, 32, + 32, 144, 136, 96, 96, 96, 576, 136, + 136, 288, 288, 136, 144, 136, 136, 576, + 744, 744, 960, 64, 64, 144, 32, 416, + 352, 352, 416, 416, 72, 32, 32, 32, + 72, 144, 32, 676, 144, 352, 1016, 64, + 64, 64, 64, 64, 64, 64, 684, 416, + 416, 352, 352, 288, 1016, 416, 416, 684, + 352, 68, 68, 576, 416, 676, 356, 68, + 72, 72, 72, 344, 68, 40, 40, 80, + 344, 752, 684, 684, 684, 40, 148, 344, + 1020, 156, 156, 156, 168, 320, 164, 32, + 32, 164, 32, 32, 156, 32, 32, 156, + 32, 416, 260, 260, 168, 260, 320, 96, + 96, 396, 344, 156, 156, 344, 676, 168, + 380, 80, 380, 96, 380, 684, 68, 68, + 320, 320, 684, 684, 68, 68, 32, 80, + 32, 32, 1020, 396, 68, 924, 32, 32, + 32, 924, 168, 156, 924, 1020, 68, 68, + 924, 356, 164, 732, 1020, 80, 68, 68, + 732, 68, 68, 68, 396, 72, 72, 396, + 32, 32, 556, 164, 556, 556, 72, 156, + 556, 160, 144, 72, 32, 556, 556, 32, + 32, 32, 32, 144, 556, 144, 144, 164, + 164, 556, 32, 32, 32, 556, 380, 8, + 8, 380, 96, 140, 328, 328, 148, 328, + 380, 336, 776, 596, 596, 560, 560, 596, + 596, 596, 596, 596, 556, 1020, 516, 680, + 680, 328, 776, 576, 680, 680, 1016, 960, + 776, 576, 576, 336, 336, 576, 300, 680, + 556, 556, 560, 680, 336, 336, 336, 416, + 416, 416, 416, 144, 144, 744, 680, 680, + 556, 336, 776, 336, 336, 416, 416, 416, + 416, 776, 744, 744, 744, 960, 776, 556, + 1020, 560, 644, 644, 556, 560, 300, 776, + 776, 336, 776, 336, 336, 388, 576, 732, + 656, 644, 644, 336, 416, 336, 352, 352, + 352, 656, 352, 352, 556, 656, 896, 416, + 416, 744, 744, 776, 888, 964, 644, 644, + 644, 908, 656, 656, 888, 964, 908, 888, + 984, 72, 64, 64, 336, 64, 524, 416, + 64, 800, 64, 64, 800, 72, 72, 72, + 388, 460, 460, 416, 624, 624, 336, 336, + 680, 336, 336, 60, 336, 888, 352, 336, + 992, 684, 496, 636, 888, 388, 888, 800, + 60, 644, 888, 60, 60, 60, 60, 60, + 496, 496, 336, 624, 612, 64, 612, 336, + 64, 64, 64, 644, 644, 64, 64, 612, + 612, 612, 352, 352, 588, 984, 644, 644, + 644, 388, 612, 352, 352, 352, 336, 336, + 336, 388, 352, 372, 372, 372, 644, 336, + 336, 336, 484, 108, 484, 644, 644, 644, + 612, 108, 108, 612, 336, 336, 372, 588, + 656, 984, 896, 684, 896, 644, 644, 680, + 992, 980, 992, 992, 908, 908, 644, 644, + 644, 856, 304, 908, 304, 304, 656, 656, + 984, 984, 644, 984, 960, 64, 64, 64, + 64, 72, 64, 64, 72, 144, 72, 984, + 1004, 372, 72, 84, 72, 668, 484, 612, + 636, 192, 372, 372, 612, 132, 136, 132, + 132, 612, 680, 680, 680, 496, 744, 596, + 596, 596, 596, 596, 744, 652, 652, 652, + 304, 132, 132, 304, 612, 304, 132, 652, + 652, 132, 84, 304, 132, 680, 136, 612, + 84, 304, 680, 304, 596, 596, 680, 680, + 484, 984, 984, 104, 992, 992, 84, 652, + 384, 384, 984, 84, 84, 192, 372, 304, + 112, 8, 236, 524, 132, 800, 104, 0, + 104, 0, 0, 0, 0, 0, 800, 104, + 104, 484, 668, 484, 484, 684, 484, 460, + 60, 60, 60, 60, 60, 60, 60, 460, + 148, 460, 32, 148, 936, 936, 684, 936, + 104, 104, 388, 460, 404, 388, 404, 404, + 112, 484, 460, 104, 104, 460, 404, 112, + 388, 404, 404, 132, 132, 132, 304, 160, + 160, 304, 160, 60, 60, 0, 304, 496, + 60, 60, 304, 304, 164, 404, 604, 60, + 992, 60, 60, 60, 0, 0, 60, 160, + 60, 60, 604, 604, 108, 0, 604, 800, + 484, 108, 0, 0, 588, 132, 148, 588, + 588, 64, 64, 64, 404, 72, 404, 604, + 0, 0, 0, 72, 604, 108, 72, 604, + 588, 808, 660, 704, 904, 872, 872, 872, + 872, 872, 904, 628, 628, 588, 988, 988, + 628, 628, 904, 640, 640, 640, 588, 660, + 956, 952, 640, 640, 640, 448, 660, 660, + 404, 704, 956, 640, 640, 704, 704, 640, + 588, 448, 660, 660, 872, 640, 672, 872, + 872, 640, 872, 872, 872, 704, 640, 640, + 404, 672, 672, 704, 704, 372, 508, 448, + 448, 372, 672, 620, 620, 620, 688, 672, + 672, 604, 448, 620, 604, 604, 672, 620, + 508, 280, 620, 280, 280, 280, 448, 620, + 620, 404, 372, 620, 620, 620, 304, 672, + 672, 448, 280, 280, 280, 280, 820, 780, + 620, 620, 660, 608, 608, 608, 768, 660, + 660, 660, 660, 304, 448, 524, 800, 448, + 448, 372, 372, 564, 564, 564, 564, 564, + 564, 564, 956, 952, 800, 372, 448, 444, + 444, 956, 968, 428, 428, 428, 428, 508, + 448, 448, 928, 444, 444, 456, 280, 280, + 280, 280, 456, 428, 428, 404, 428, 404, + 604, 280, 176, 604, 604, 508, 256, 872, + 256, 696, 256, 256, 256, 256, 256, 696, + 628, 628, 688, 872, 996, 980, 628, 872, + 872, 872, 916, 988, 996, 628, 628, 996, + 988, 988, 988, 696, 648, 648, 648, 940, + 696, 996, 936, 256, 256, 256, 256, 256, + 412, 12, 404, 404, 648, 728, 640, 704, + 872, 872, 640, 32, 484, 996, 12, 404, + 12, 256, 12, 256, 256, 256, 12, 12, + 372, 296, 296, 808, 256, 256, 296, 296, + 372, 848, 372, 688, 304, 620, 620, 304, + 256, 256, 256, 256, 688, 688, 412, 412, + 412, 412, 772, 848, 772, 304, 128, 12, + 12, 296, 12, 12, 12, 304, 12, 12, + 12, 12, 128, 128, 412, 296, 296, 704, + 128, 996, 404, 604, 412, 412, 412, 412, + 412, 772, 404, 712, 128, 456, 724, 36, + 36, 36, 724, 348, 348, 588, 296, 36, + 36, 36, 456, 296, 296, 588, 36, 36, + 36, 588, 128, 348, 604, 348, 348, 128, + 724, 724, 372, 296, 296, 604, 604, 480, + 480, 292, 348, 348, 292, 712, 712, 712, + 372, 724, 724, 724, 772, 480, 32, 292, + 292, 292, 296, 456, 296, 508, 296, 296, + 192, 292, 292, 296, 36, 996, 304, 36, + 36, 36, 456, 428, 428, 428, 444, 372, + 388, 808, 8, 372, 372, 296, 296, 216, + 620, 620, 372, 292, 508, 508, 292, 508, + 8, 292, 292, 640, 292, 704, 704, 704, + 524, 956, 956, 524, 584, 284, 780, 784, + 564, 608, 608, 564, 564, 564, 284, 564, + 564, 824, 140, 284, 284, 140, 564, 564, + 428, 584, 584, 584, 584, 388, 372, 284, + 284, 372, 140, 584, 140, 284, 388, 768, + 584, 584, 76, 76, 8, 76, 76, 284, + 284, 284, 280, 280, 76, 32, 140, 388, + 448, 284, 284, 284, 388, 280, 280, 800, + 608, 608, 76, 780, 768, 76, 76, 428, + 28, 428, 428, 280, 280, 564, 564, 564, + 284, 584, 584, 668, 28, 28, 564, 564, + 284, 28, 28, 584, 584, 28, 28, 28, + 28, 432, 284, 668, 524, 284, 284, 604, + 432, 564, 564, 564, 404, 284, 584, 584, + 372, 28, 28, 28, 432, 308, 308, 372, + 432, 432, 432, 604, 604, 308, 284, 372, + 292, 280, 292, 432, 284, 284, 284, 284, + 292, 292, 292, 76, 432, 432, 76, 284, + 144, 292, 292, 820, 820, 292, 564, 956, + 564, 564, 568, 564, 564, 564, 568, 76, + 956, 564, 564, 564, 76, 292, 144, 76, + 824, 956, 956, 956, 520, 796, 140, 956, + 568, 148, 668, 668, 952, 140, 520, 952, + 148, 140, 388, 364, 120, 28, 564, 564, + 28, 28, 28, 28, 568, 388, 120, 152, + 568, 568, 584, 584, 564, 388, 568, 364, + 564, 564, 140, 76, 568, 564, 564, 564, + 564, 120, 76, 152, 568, 568, 76, 148, + 76, 76, 564, 564, 48, 432, 28, 152, + 28, 48, 152, 428, 428, 444, 444, 100, + 100, 428, 564, 48, 388, 152, 444, 564, + 564, 564, 604, 568, 604, 604, 564, 564, + 564, 152, 152, 816, 444, 444, 188, 816, + 148, 76, 48, 564, 564, 564, 240, 48, + 432, 28, 504, 432, 28, 28, 8, 48, + 604, 308, 292, 308, 292, 432, 432, 444, + 28, 24, 28, 28, 24, 24, 24, 24, + 24, 44, 28, 28, 292, 28, 292, 120, + 28, 604, 308, 188, 24, 24, 24, 24, + 24, 76, 44, 48, 684, 308, 604, 24, + 604, 308, 48, 312, 312, 568, 152, 44, + 24, 24, 24, 24, 44, 44, 100, 100, + 24, 152, 24, 24, 24, 48, 604, 48, + 100, 100, 604, 24, 24, 604, 120, 120, + 404, 292, 292, 444, 444, 884, 116, 332, + 332, 312, 616, 312, 312, 312, 312, 312, + 424, 616, 292, 616, 616, 424, 900, 900, + 900, 700, 424, 292, 312, 312, 312, 312, + 312, 404, 348, 332, 332, 332, 48, 348, + 348, 332, 144, 800, 888, 900, 788, 332, + 332, 332, 348, 348, 348, 464, 424, 424, + 788, 424, 24, 116, 308, 308, 308, 116, + 312, 100, 24, 24, 24, 24, 788, 100, + 100, 524, 312, 312, 312, 668, 668, 900, + 896, 8, 896, 896, 900, 788, 116, 888, + 888, 308, 308, 308, 888, 188, 424, 424, + 668, 24, 24, 24, 24, 984, 984, 8, + 524, 372, 100, 100, 372, 984, 32, 304, + 304, 312, 312, 312, 424, 304, 44, 800, + 432, 432, 308, 308, 432, 372, 304, 100, + 32, 76, 852, 464, 464, 520, 884, 884, + 756, 580, 580, 884, 884, 756, 756, 616, + 892, 616, 580, 580, 580, 580, 700, 616, + 616, 520, 892, 512, 900, 512, 700, 512, + 708, 580, 308, 580, 580, 812, 580, 580, + 760, 504, 740, 740, 580, 308, 580, 580, + 308, 580, 760, 308, 512, 504, 740, 308, + 308, 308, 308, 572, 572, 116, 116, 116, + 572, 912, 912, 424, 700, 424, 700, 700, + 504, 880, 812, 464, 424, 424, 880, 740, + 464, 432, 432, 880, 432, 308, 308, 572, + 572, 432, 572, 572, 740, 880, 740, 880, + 424, 580, 580, 580, 580, 400, 392, 392, + 616, 880, 424, 880, 616, 616, 32, 880, + 520, 424, 424, 400, 392, 400, 740, 400, + 464, 432, 308, 308, 400, 740, 432, 432, + 880, 740, 880, 880, 740, 880, 880, 36, + 348, 36, 616, 616, 616, 616, 616, 616, + 520, 520, 424, 400, 400, 424, 400, 824, + 708, 708, 724, 724, 392, 36, 36, 36, + 36, 724, 348, 348, 392, 332, 332, 332, + 392, 708, 424, 424, 392, 424, 348, 572, + 424, 572, 348, 348, 572, 616, 616, 616, + 616, 572, 708, 348, 348, 348, 512, 708, + 708, 708, 712, 512, 724, 432, 432, 432, + 432, 740, 456, 456, 456, 392, 740, 740, + 392, 36, 36, 392, 456, 740, 392, 724, + 724, 668, 668, 392, 8, 824, 140, 456, + 456, 572, 572, 512, 724, 740, 616, 616, + 724, 572, 712, 616, 616, 616, 616, 724, + 712, 712, 392, 708, 708, 708, 752, 8, + 980, 760, 724, 760, 772, 884, 580, 884, + 884, 892, 580, 580, 604, 604, 740, 740, + 616, 616, 604, 792, 708, 588, 604, 100, + 128, 332, 312, 332, 312, 312, 980, 332, + 332, 900, 604, 332, 712, 332, 332, 332, + 348, 752, 880, 32, 880, 752, 36, 36, + 36, 332, 332, 520, 668, 880, 880, 604, + 816, 968, 692, 788, 128, 968, 488, 348, + 36, 36, 348, 36, 36, 488, 572, 128, + 128, 572, 816, 100, 312, 332, 312, 312, + 692, 692, 312, 24, 24, 692, 488, 312, + 572, 912, 572, 100, 332, 332, 912, 100, + 100, 100, 912, 152, 572, 668, 788, 312, + 332, 332, 332, 332, 36, 36, 36, 36, + 668, 464, 668, 348, 512, 332, 332, 332, + 332, 788, 348, 488, 96, 488, 488, 148, + 512, 572, 100, 96, 572, 572, 572, 36, + 36, 36, 36, 572, 572, 464, 464, 444, + 100, 100, 8, 512, 140, 804, 76, 76, + 152, 960, 140, 392, 636, 392, 392, 100, + 604, 788, 444, 788, 512, 128, 724, 36, + 36, 572, 572, 572, 36, 36, 36, 572, + 572, 572, 348, 96, 668, 572, 788, 432, + 280, 280, 280, 432, 428, 428, 428, 140, + 432, 572, 36, 36, 36, 428, 428, 572, + 36, 36, 8, 140, 788, 8, 788, 488, + 668, 488, 888, 428, 428, 888, 456, 456, + 888, 444, 512, 456, 428, 428, 428, 512, + 788, 456, 788, 760, 464, 456, 760, 760, + 348, 348, 348, 488, 488, 488, 140, 8, + 144, 292, 276, 292, 928, 908, 908, 980, + 980, 908, 276, 276, 276, 276, 908, 352, + 512, 760, 908, 604, 928, 604, 996, 996, + 276, 276, 276, 276, 964, 996, 996, 604, + 964, 1004, 604, 292, 276, 276, 276, 276, + 292, 292, 292, 292, 276, 276, 276, 588, + 684, 352, 588, 416, 416, 276, 176, 276, + 276, 276, 276, 276, 176, 164, 164, 588, + 164, 588, 416, 416, 512, 352, 352, 488, + 488, 276, 276, 276, 276, 488, 416, 488, + 588, 352, 624, 964, 840, 164, 276, 276, + 276, 592, 588, 588, 164, 800, 592, 176, + 276, 292, 276, 276, 276, 936, 588, 760, + 292, 292, 888, 512, 32, 144, 8, 372, + 668, 276, 276, 276, 176, 388, 668, 960, + 216, 176, 176, 184, 216, 372, 372, 1004, + 392, 176, 144, 1004, 984, 144, 984, 144, + 276, 276, 416, 416, 964, 144, 668, 560, + 560, 984, 984, 984, 668, 896, 896, 896, + 896, 668, 668, 668, 960, 668, 960, 984, + 216, 744, 184, 416, 176, 960, 776, 776, + 776, 776, 176, 392, 388, 184, 192, 292, + 292, 388, 144, 292, 144, 76, 76, 48, + 184, 48, 48, 48, 48, 48, 192, 388, + 416, 416, 668, 76, 8, 76, 76, 76, + 76, 144, 144, 140, 32, 32, 388, 96, + 96, 8, 140, 140, 192, 8, 668, 388, + 192, 668, 48, 48, 48, 48, 48, 388, + 184, 176, 668, 176, 176, 668, 668, 96, + 668, 32, 388, 388, 196, 196, 668, 168, + 164, 604, 292, 48, 292, 292, 48, 164, + 196, 980, 164, 752, 980, 684, 684, 752, + 388, 48, 48, 48, 48, 684, 684, 196, + 196, 32, 388, 388, 32, 752, 148, 684, + 752, 684, 96, 196, 196, 176, 176, 48, + 48, 48, 48, 48, 184, 164, 164, 8, + 164, 684, 684, 32, 32, 668, 984, 896, + 896, 32, 668, 8, 372, 216, 292, 192, + 184, 176, 176, 392, 148, 340, 600, 96, + 32, 340, 340, 340, 176, 148, 636, 8, + 636, 96, 880, 880, 880, 8, 400, 600, + 600, 600, 600, 8, 340, 340, 340, 340, + 340, 392, 392, 392, 8, 148, 400, 400, + 392, 32, }; static long _vq_q_lsp32_0[] = { - 528, 160, 504, 364, 356, 524, 976, 164, - 548, 612, 208, 548, 140, 548, 612, 612, - 612, 908, 864, 248, 208, 492, 880, 492, - 880, 880, 140, 248, 248, 880, 880, 492, - 864, 880, 880, 492, 908, 880, 908, 908, - 164, 140, 612, 208, 248, 864, 864, 864, - 248, 612, 612, 248, 816, 596, 164, 612, - 864, 612, 208, 492, 864, 864, 492, 596, - 368, 780, 880, 696, 484, 864, 976, 976, - 864, 976, 248, 696, 976, 696, 776, 484, - 696, 880, 880, 696, 880, 1012, 880, 944, - 976, 976, 940, 248, 612, 184, 80, 208, - 524, 208, 524, 524, 208, 612, 524, 1012, - 548, 780, 292, 612, 68, 612, 644, 612, - 644, 612, 612, 524, 548, 612, 452, 292, - 1012, 612, 248, 208, 864, 940, 780, 976, - 940, 976, 776, 940, 976, 728, 940, 976, - 248, 292, 780, 696, 292, 696, 936, 976, - 696, 936, 1012, 420, 940, 976, 776, 940, - 976, 1012, 872, 612, 832, 36, 140, 852, - 164, 356, 356, 852, 164, 164, 48, 852, - 852, 852, 952, 492, 832, 1000, 852, 388, - 1000, 1000, 832, 952, 696, 740, 916, 612, - 1012, 852, 140, 164, 356, 916, 916, 356, - 612, 916, 916, 596, 164, 356, 916, 728, - 916, 916, 388, 484, 1012, 864, 916, 832, - 164, 852, 832, 916, 852, 484, 740, 916, - 916, 740, 916, 600, 916, 832, 300, 832, - 368, 864, 832, 388, 740, 852, 1012, 1012, - 740, 852, 784, 388, 832, 832, 140, 612, - 644, 776, 852, 916, 624, 916, 612, 644, - 784, 644, 852, 784, 784, 644, 624, 852, - 916, 776, 696, 644, 600, 916, 1012, 872, - 936, 388, 740, 852, 1012, 204, 776, 624, - 936, 940, 872, 940, 292, 696, 936, 740, - 936, 592, 916, 936, 936, 696, 740, 936, - 696, 936, 936, 676, 676, 936, 940, 624, - 940, 916, 936, 740, 936, 600, 852, 872, - 624, 916, 852, 872, 600, 872, 864, 68, - 644, 852, 872, 940, 940, 304, 852, 872, - 624, 940, 292, 940, 852, 940, 304, 852, - 664, 772, 708, 364, 548, 836, 268, 460, - 460, 836, 548, 952, 548, 36, 80, 268, - 304, 268, 304, 304, 80, 364, 548, 268, - 364, 496, 836, 836, 496, 364, 836, 496, - 836, 836, 836, 36, 364, 548, 548, 364, - 548, 272, 836, 600, 952, 80, 708, 304, - 708, 496, 304, 136, 836, 952, 804, 836, - 952, 772, 804, 804, 836, 952, 592, 836, - 136, 364, 496, 592, 364, 496, 600, 836, - 772, 1012, 836, 664, 492, 524, 88, 268, - 368, 268, 208, 268, 548, 592, 268, 548, - 524, 268, 548, 208, 548, 592, 36, 80, - 208, 492, 952, 804, 268, 664, 492, 208, - 908, 88, 368, 492, 908, 664, 908, 208, - 268, 908, 908, 268, 664, 204, 368, 664, - 804, 592, 804, 908, 952, 460, 492, 836, - 548, 600, 836, 836, 908, 836, 592, 268, - 908, 460, 836, 272, 908, 460, 836, 368, - 908, 592, 48, 364, 952, 1000, 516, 888, - 888, 516, 888, 708, 708, 516, 888, 888, - 708, 708, 1000, 164, 36, 852, 100, 356, - 516, 356, 516, 816, 852, 100, 516, 952, - 952, 516, 952, 816, 852, 356, 300, 356, - 952, 952, 1000, 1000, 1000, 516, 708, 100, - 592, 644, 708, 816, 708, 776, 852, 816, - 164, 260, 364, 952, 708, 516, 952, 952, - 776, 836, 516, 136, 592, 364, 516, 300, - 776, 516, 708, 204, 816, 644, 708, 516, - 140, 260, 36, 364, 548, 776, 152, 816, - 776, 364, 548, 592, 548, 260, 836, 548, - 300, 364, 368, 364, 516, 516, 1012, 836, - 36, 708, 708, 548, 708, 548, 644, 644, - 708, 164, 548, 492, 780, 952, 644, 548, - 80, 708, 708, 708, 48, 948, 548, 708, - 708, 620, 948, 620, 624, 644, 708, 368, - 1012, 1012, 144, 880, 980, 696, 808, 872, - 120, 420, 1008, 312, 676, 676, 420, 564, - 676, 312, 420, 420, 872, 420, 948, 676, - 872, 872, 956, 872, 940, 808, 872, 624, - 420, 872, 956, 808, 120, 808, 956, 808, - 956, 956, 956, 940, 420, 956, 940, 808, - 956, 872, 940, 948, 948, 376, 808, 452, - 184, 312, 504, 620, 504, 312, 452, 644, - 644, 452, 644, 600, 504, 184, 620, 292, - 808, 340, 808, 172, 624, 564, 292, 620, - 808, 808, 620, 624, 776, 184, 292, 776, - 808, 940, 624, 292, 808, 780, 504, 696, - 940, 312, 376, 976, 440, 292, 420, 440, - 440, 420, 976, 1012, 376, 440, 776, 440, - 440, 376, 312, 420, 440, 1012, 420, 440, - 780, 940, 312, 808, 376, 776, 292, 376, - 376, 184, 340, 624, 808, 808, 976, 940, - 948, 292, 976, 940, 204, 600, 948, 976, - 440, 420, 1008, 440, 420, 696, 344, 440, - 696, 1008, 696, 1008, 1008, 976, 504, 452, - 312, 600, 440, 452, 696, 696, 452, 504, - 452, 912, 324, 312, 504, 980, 184, 376, - 776, 980, 504, 776, 312, 504, 376, 980, - 980, 504, 504, 376, 980, 344, 600, 924, - 980, 376, 324, 504, 928, 928, 504, 928, - 776, 376, 504, 600, 368, 344, 948, 980, - 924, 948, 928, 980, 988, 988, 980, 912, - 632, 1008, 228, 376, 312, 376, 896, 896, - 312, 376, 440, 776, 376, 344, 776, 440, - 280, 344, 1008, 1008, 120, 312, 912, 912, - 948, 1008, 376, 988, 228, 764, 912, 980, - 912, 980, 980, 912, 340, 1012, 980, 988, - 564, 924, 368, 776, 536, 924, 988, 196, - 932, 1008, 880, 376, 440, 504, 632, 948, - 928, 632, 948, 804, 632, 928, 440, 568, - 948, 568, 632, 632, 504, 568, 624, 776, - 624, 928, 784, 632, 880, 880, 696, 440, - 440, 776, 976, 624, 1008, 696, 880, 784, - 1008, 880, 600, 944, 948, 504, 440, 292, - 524, 976, 208, 248, 568, 568, 568, 248, - 976, 804, 524, 568, 976, 292, 524, 452, - 524, 524, 932, 452, 292, 440, 976, 784, - 696, 776, 772, 976, 440, 624, 696, 784, - 452, 776, 452, 776, 624, 976, 568, 880, - 440, 696, 932, 932, 948, 880, 932, 568, - 196, 280, 536, 440, 976, 504, 376, 556, - 896, 556, 568, 568, 568, 504, 976, 300, - 504, 568, 932, 568, 620, 584, 208, 268, - 880, 460, 932, 548, 452, 772, 772, 248, - 400, 524, 932, 932, 524, 932, 568, 624, - 524, 568, 772, 932, 568, 624, 496, 932, - 460, 460, 932, 624, 932, 548, 932, 972, - 632, 140, 460, 932, 772, 1012, 932, 624, - 932, 880, 592, 624, 972, 592, 972, 460, - 908, 592, 972, 496, 972, 972, 460, 268, - 524, 260, 524, 268, 400, 400, 268, 144, - 1012, 524, 268, 336, 524, 300, 336, 260, - 460, 400, 932, 932, 460, 496, 524, 880, - 248, 568, 624, 568, 664, 524, 772, 524, - 524, 400, 664, 664, 524, 496, 568, 524, - 928, 996, 824, 664, 556, 524, 400, 400, - 556, 556, 664, 588, 556, 568, 824, 824, - 772, 184, 932, 144, 400, 524, 556, 996, - 996, 556, 624, 524, 496, 400, 524, 996, - 772, 996, 524, 556, 996, 624, 204, 624, - 400, 868, 996, 496, 932, 996, 996, 868, - 996, 588, 932, 996, 556, 568, 524, 568, - 772, 568, 588, 568, 524, 556, 556, 504, - 556, 588, 580, 556, 588, 580, 996, 524, - 504, 932, 932, 336, 996, 996, 996, 932, - 568, 632, 868, 996, 504, 556, 584, 772, - 928, 928, 556, 584, 496, 196, 584, 996, - 996, 868, 868, 588, 928, 568, 824, 588, - 824, 868, 928, 368, 932, 868, 824, 568, - 972, 972, 588, 932, 632, 972, 868, 932, - 368, 972, 972, 304, 504, 184, 708, 996, - 80, 260, 620, 620, 260, 620, 996, 260, - 548, 452, 548, 592, 620, 548, 620, 620, - 996, 592, 996, 620, 524, 996, 592, 996, - 548, 260, 644, 708, 708, 588, 548, 592, - 620, 368, 260, 644, 80, 620, 524, 184, - 292, 300, 524, 588, 184, 452, 496, 708, - 524, 588, 524, 620, 620, 452, 620, 184, - 496, 496, 588, 996, 260, 996, 196, 644, - 612, 496, 592, 184, 620, 504, 324, 172, - 556, 996, 772, 584, 556, 996, 1012, 556, - 324, 584, 584, 504, 588, 584, 624, 624, - 996, 564, 620, 588, 1012, 504, 184, 624, - 588, 504, 564, 696, 736, 412, 512, 288, - 352, 316, 96, 384, 384, 316, 352, 668, - 288, 352, 640, 640, 352, 640, 384, 640, - 668, 668, 668, 156, 668, 384, 92, 512, - 604, 604, 604, 512, 384, 512, 384, 668, - 604, 624, 604, 668, 156, 172, 624, 564, - 352, 640, 336, 668, 352, 104, 780, 780, - 604, 412, 860, 156, 604, 92, 668, 668, - 336, 668, 156, 604, 796, 796, 604, 796, - 588, 668, 580, 796, 796, 860, 860, 540, - 672, 640, 412, 876, 1012, 588, 668, 796, - 336, 640, 668, 780, 640, 672, 672, 672, - 796, 640, 768, 480, 416, 732, 736, 736, - 732, 736, 564, 480, 840, 544, 96, 736, - 160, 288, 608, 608, 288, 608, 588, 160, - 736, 768, 736, 768, 288, 160, 352, 768, - 352, 768, 704, 704, 288, 352, 704, 768, - 192, 544, 96, 544, 480, 368, 768, 544, - 544, 588, 768, 476, 608, 672, 288, 412, - 640, 640, 412, 368, 396, 968, 412, 540, - 672, 672, 540, 396, 588, 968, 736, 640, - 352, 288, 608, 640, 396, 640, 672, 300, - 608, 780, 640, 608, 672, 732, 736, 968, - 968, 736, 968, 588, 336, 348, 476, 540, - 540, 672, 304, 904, 348, 476, 672, 904, - 968, 904, 948, 968, 936, 448, 636, 860, - 956, 1020, 572, 1008, 120, 444, 884, 912, - 444, 912, 884, 1008, 444, 572, 572, 912, - 1008, 624, 1020, 948, 1008, 1020, 944, 572, - 576, 576, 944, 1020, 1008, 1020, 956, 64, - 124, 380, 508, 508, 380, 508, 884, 124, - 380, 508, 624, 564, 956, 380, 444, 508, - 508, 444, 884, 884, 380, 772, 380, 956, - 956, 572, 572, 1020, 444, 508, 884, 1020, - 1020, 508, 188, 316, 576, 576, 772, 576, - 316, 336, 572, 772, 508, 380, 124, 624, - 380, 572, 576, 884, 572, 576, 564, 572, - 124, 316, 884, 508, 316, 884, 564, 316, - 572, 44, 1020, 380, 336, 1020, 764, 912, - 444, 508, 828, 828, 508, 828, 884, 444, - 804, 912, 828, 884, 912, 828, 508, 956, - 700, 764, 764, 772, 700, 700, 764, 912, - 700, 764, 804, 828, 828, 764, 860, 860, - 860, 860, 828, 912, 624, 988, 912, 988, - 772, 860, 948, 988, 860, 316, 700, 64, - 124, 384, 588, 508, 384, 508, 124, 508, - 336, 700, 700, 700, 384, 604, 508, 316, - 352, 512, 512, 316, 512, 352, 352, 512, - 588, 316, 508, 512, 636, 636, 512, 636, - 772, 508, 512, 636, 580, 512, 580, 604, - 772, 384, 636, 512, 336, 888, 636, 580, - 636, 700, 700, 384, 508, 512, 136, 584, - 580, 772, 508, 512, 636, 700, 888, 580, - 512, 636, 132, 580, 336, 988, 828, 508, - 604, 604, 636, 700, 588, 828, 636, 828, - 884, 1012, 700, 828, 860, 816, 828, 804, - 836, 1004, 448, 480, 192, 544, 224, 704, - 772, 768, 352, 704, 836, 768, 544, 768, - 192, 704, 256, 544, 224, 768, 704, 704, - 768, 544, 836, 784, 544, 256, 772, 768, - 544, 480, 768, 480, 496, 784, 784, 544, - 704, 224, 448, 124, 316, 624, 576, 316, - 448, 592, 576, 448, 256, 576, 576, 224, - 576, 448, 448, 784, 496, 704, 316, 772, - 316, 352, 576, 804, 704, 804, 352, 576, - 704, 496, 704, 576, 544, 352, 224, 316, - 96, 384, 784, 316, 804, 316, 512, 804, - 384, 624, 124, 224, 316, 316, 224, 664, - 784, 512, 316, 496, 352, 304, 448, 64, - 124, 384, 544, 544, 544, 664, 124, 384, - 544, 592, 496, 124, 544, 224, 784, 448, - 784, 224, 448, 544, 448, 544, 544, 576, - 448, 704, 1004, 892, 1004, 704, 448, 1004, - 784, 704, 1020, 316, 496, 784, 1020, 496, - 576, 704, 268, 944, 956, 676, 320, 840, - 256, 800, 448, 544, 800, 800, 480, 800, - 256, 1004, 448, 448, 1004, 664, 800, 840, - 840, 320, 1004, 388, 800, 800, 388, 800, - 832, 1004, 1004, 832, 1004, 304, 800, 804, - 832, 800, 832, 840, 772, 1000, 1000, 832, - 908, 740, 256, 448, 380, 872, 892, 252, - 128, 872, 872, 892, 380, 676, 872, 872, - 676, 892, 124, 128, 380, 448, 448, 448, - 380, 448, 804, 892, 784, 484, 676, 892, - 320, 252, 256, 804, 448, 448, 256, 320, - 448, 576, 1004, 1004, 576, 908, 576, 804, - 320, 332, 784, 664, 948, 892, 664, 1004, - 676, 576, 676, 1004, 484, 944, 784, 832, - 484, 872, 320, 388, 740, 740, 388, 740, - 664, 872, 1004, 740, 804, 832, 976, 420, - 1020, 912, 120, 764, 496, 592, 764, 496, - 836, 120, 912, 1008, 268, 912, 496, 260, - 1020, 872, 956, 576, 1008, 676, 380, 420, - 572, 1020, 1020, 572, 420, 496, 592, 420, - 496, 572, 496, 676, 1008, 1008, 496, 676, - 676, 1008, 676, 420, 892, 956, 836, 496, - 956, 1020, 956, 136, 260, 496, 872, 676, - 496, 956, 892, 304, 956, 956, 976, 484, - 676, 892, 1020, 892, 944, 1020, 708, 676, - 940, 936, 892, 496, 80, 936, 940, 260, - 676, 872, 892, 936, 196, 936, 772, 1004, - 576, 936, 972, 676, 484, 332, 972, 816, - 892, 536, 868, 676, 816, 868, 676, 576, - 944, 716, 676, 864, 1004, 740, 832, 972, - 1004, 716, 936, 864, 1004, 824, 1004, 716, - 892, 944, 1004, 1004, 944, 460, 972, 936, - 892, 908, 908, 936, 696, 976, 864, 716, - 880, 944, 944, 944, 976, 976, 908, 1020, - 940, 1020, 944, 676, 428, 972, 696, 1008, - 944, 1008, 944, 976, 536, 824, 976, 664, - 1008, 824, 716, 996, 792, 276, 84, 724, - 488, 660, 560, 456, 688, 744, 296, 660, - 660, 296, 744, 744, 660, 688, 908, 744, - 688, 744, 784, 692, 744, 616, 488, 560, - 560, 688, 784, 616, 720, 616, 720, 688, - 720, 520, 688, 744, 616, 536, 616, 720, - 688, 744, 784, 688, 664, 744, 520, 692, - 692, 520, 744, 908, 628, 688, 488, 724, - 616, 180, 744, 692, 616, 460, 744, 692, - 724, 400, 744, 488, 560, 616, 724, 616, - 724, 744, 868, 716, 688, 52, 500, 616, - 360, 520, 616, 616, 148, 500, 520, 500, - 520, 520, 616, 500, 520, 816, 744, 868, - 520, 692, 816, 692, 716, 692, 360, 744, - 52, 724, 688, 148, 424, 868, 868, 424, - 724, 716, 148, 688, 724, 744, 204, 744, - 816, 688, 724, 744, 716, 716, 744, 360, - 424, 616, 616, 688, 424, 616, 688, 688, - 616, 460, 816, 744, 592, 424, 628, 500, - 628, 360, 424, 628, 628, 424, 628, 260, - 212, 404, 680, 392, 72, 84, 920, 920, - 84, 920, 816, 84, 392, 680, 404, 456, - 616, 456, 404, 392, 180, 212, 816, 724, - 724, 180, 212, 392, 680, 724, 724, 724, - 680, 680, 392, 460, 724, 592, 680, 392, - 592, 460, 816, 392, 404, 404, 260, 680, - 724, 488, 404, 456, 868, 456, 488, 784, - 680, 488, 680, 460, 488, 724, 592, 488, - 680, 724, 716, 680, 724, 616, 680, 680, - 488, 488, 680, 664, 648, 616, 212, 392, - 424, 628, 784, 392, 424, 392, 232, 424, - 628, 716, 428, 592, 716, 268, 424, 232, - 392, 680, 460, 360, 680, 424, 616, 268, - 616, 592, 680, 628, 648, 648, 820, 692, - 984, 488, 856, 724, 296, 436, 456, 456, - 436, 460, 816, 724, 436, 436, 856, 856, - 856, 488, 456, 180, 404, 532, 532, 404, - 532, 400, 724, 456, 456, 816, 784, 724, - 180, 488, 404, 816, 784, 488, 404, 456, - 488, 816, 716, 404, 532, 856, 532, 276, - 856, 784, 404, 532, 784, 856, 532, 856, - 776, 856, 456, 404, 816, 920, 776, 404, - 716, 920, 856, 856, 920, 984, 984, 920, - 984, 592, 532, 276, 296, 744, 468, 692, - 180, 468, 488, 244, 744, 664, 488, 468, - 664, 744, 744, 600, 664, 244, 692, 784, - 744, 664, 744, 180, 296, 436, 468, 468, - 436, 468, 664, 724, 468, 296, 468, 600, - 716, 332, 592, 600, 692, 276, 436, 468, - 1016, 1016, 468, 1016, 784, 436, 1016, 536, - 692, 592, 1016, 532, 724, 180, 816, 592, - 532, 784, 532, 692, 692, 692, 1016, 308, - 500, 396, 1016, 820, 1016, 1016, 820, 1016, - 308, 468, 520, 692, 908, 824, 692, 684, - 716, 468, 692, 716, 684, 692, 824, 556, - 468, 308, 204, 868, 684, 692, 520, 468, - 692, 692, 692, 996, 868, 744, 1016, 296, - 820, 468, 716, 660, 820, 468, 660, 820, - 820, 996, 868, 744, 468, 296, 468, 660, - 684, 996, 528, 372, 896, 200, 752, 308, - 820, 52, 264, 660, 660, 264, 868, 868, - 296, 660, 820, 820, 820, 660, 308, 684, - 308, 204, 660, 820, 716, 520, 712, 660, - 560, 556, 328, 660, 688, 720, 660, 720, - 688, 688, 560, 720, 660, 752, 752, 400, - 660, 752, 716, 308, 712, 664, 660, 712, - 752, 660, 712, 308, 520, 272, 520, 712, - 712, 720, 712, 520, 664, 660, 712, 328, - 272, 660, 552, 660, 712, 712, 712, 720, - 720, 52, 688, 752, 688, 752, 752, 264, - 520, 660, 688, 752, 272, 688, 684, 664, - 660, 688, 664, 520, 552, 660, 752, 556, - 272, 552, 660, 272, 752, 660, 300, 144, - 272, 396, 552, 52, 500, 264, 172, 552, - 520, 264, 664, 520, 552, 396, 264, 596, - 396, 520, 684, 520, 500, 396, 596, 272, - 712, 596, 712, 996, 500, 520, 552, 520, - 712, 172, 712, 552, 264, 752, 296, 344, - 752, 344, 344, 560, 144, 272, 752, 896, - 896, 80, 340, 752, 712, 792, 792, 792, - 792, 204, 464, 752, 340, 264, 464, 592, - 464, 552, 664, 596, 552, 596, 340, 204, - 664, 464, 596, 792, 304, 596, 792, 752, - 464, 344, 144, 792, 752, 552, 332, 268, - 820, 660, 884, 1012, 588, 564, 396, 264, - 664, 592, 596, 396, 564, 564, 396, 780, - 564, 664, 592, 272, 564, 596, 712, 396, - 596, 712, 780, 780, 664, 564, 1012, 596, - 304, 372, 780, 884, 564, 656, 656, 592, - 1012, 656, 656, 304, 780, 656, 564, 340, - 340, 272, 168, 304, 204, 564, 264, 340, - 340, 372, 948, 264, 340, 656, 340, 564, - 656, 260, 564, 592, 260, 340, 948, 340, - 564, 204, 564, 260, 592, 948, 884, 372, - 564, 260, 204, 564, 656, 144, 884, 564, - 656, 272, 884, 948, 948, 80, 656, 792, - 340, 344, 328, 344, 896, 344, 600, 344, - 340, 344, 204, 204, 792, 780, 340, 780, - 176, 596, 780, 272, 780, 792, 712, 344, - 340, 328, 656, 592, 660, 656, 684, 536, - 264, 340, 836, 1012, 340, 992, 992, 344, - 340, 656, 780, 780, 656, 972, 992, 596, - 656, 972, 712, 992, 712, 992, 824, 308, - 884, 396, 132, 372, 992, 868, 372, 396, - 132, 824, 580, 884, 656, 372, 868, 396, - 308, 820, 372, 1016, 1016, 820, 1016, 372, - 760, 868, 824, 992, 396, 660, 308, 972, - 656, 332, 760, 876, 660, 820, 876, 824, - 792, 652, 752, 560, 240, 360, 424, 360, - 424, 688, 876, 720, 424, 824, 684, 432, - 432, 720, 432, 688, 720, 688, 868, 928, - 560, 720, 928, 360, 432, 240, 552, 688, - 688, 824, 552, 720, 688, 752, 928, 868, - 688, 752, 720, 720, 760, 720, 752, 752, - 688, 500, 360, 500, 720, 520, 584, 928, - 720, 684, 552, 556, 584, 520, 684, 876, - 900, 652, 464, 788, 236, 240, 408, 408, - 240, 408, 432, 432, 408, 432, 928, 528, - 408, 528, 788, 528, 552, 216, 240, 464, - 788, 788, 464, 240, 788, 464, 788, 464, - 528, 552, 552, 528, 848, 928, 848, 432, - 552, 500, 652, 240, 760, 360, 628, 652, - 628, 652, 652, 500, 760, 788, 652, 788, - 528, 240, 360, 652, 500, 748, 924, 500, - 924, 652, 360, 652, 848, 788, 500, 528, - 748, 152, 584, 876, 528, 760, 876, 788, - 760, 628, 900, 240, 240, 360, 240, 324, - 424, 360, 240, 408, 900, 900, 408, 432, - 900, 900, 432, 760, 172, 240, 900, 232, - 628, 748, 168, 824, 992, 812, 628, 652, - 960, 900, 960, 812, 876, 812, 900, 812, - 960, 900, 360, 628, 900, 900, 360, 628, - 848, 628, 652, 900, 960, 520, 432, 552, - 464, 528, 792, 792, 528, 596, 848, 844, - 596, 876, 960, 596, 528, 756, 528, 720, - 756, 756, 552, 712, 720, 756, 876, 792, - 792, 720, 756, 792, 844, 960, 720, 712, - 792, 876, 720, 780, 596, 712, 792, 844, - 760, 780, 756, 712, 848, 960, 780, 876, - 780, 960, 960, 756, 792, 720, 560, 752, - 896, 896, 896, 760, 560, 720, 720, 876, - 720, 792, 896, 876, 464, 752, 792, 960, - 896, 792, 876, 760, 752, 748, 792, 752, - 720, 752, 848, 788, 792, 168, 720, 464, - 756, 432, 896, 992, 792, 992, 964, 792, - 896, 824, 792, 536, 780, 756, 964, 992, - 788, 552, 528, 500, 596, 964, 712, 500, - 332, 528, 712, 528, 596, 712, 536, 712, - 596, 528, 520, 712, 472, 720, 552, 596, - 712, 992, 712, 964, 712, 964, 712, 844, - 472, 528, 788, 464, 464, 788, 528, 152, - 760, 528, 596, 760, 552, 596, 788, 760, - 496, 584, 876, 816, 600, 728, 300, 776, - 756, 728, 332, 596, 780, 428, 596, 780, - 472, 596, 728, 728, 756, 992, 756, 780, - 728, 780, 844, 756, 776, 792, 792, 428, - 536, 844, 596, 464, 776, 600, 728, 728, - 600, 600, 776, 792, 596, 792, 728, 876, - 844, 368, 824, 876, 896, 776, 716, 728, - 472, 876, 600, 760, 664, 716, 728, 816, - 472, 536, 776, 472, 536, 536, 816, 876, - 728, 776, 760, 168, 728, 756, 816, 816, - 756, 776, 816, 876, 776, 760, 168, 964, - 792, 600, 896, 344, 464, 896, 600, 776, - 152, 756, 896, 472, 464, 728, 472, 428, - 600, 728, 600, 960, 792, 896, 684, 728, - 756, 776, 684, 792, 684, 776, 896, 684, - 792, 584, 996, 896, 964, 776, 964, 896, - 584, 536, 896, 964, 964, 896, 964, 556, - 596, 900, 728, 788, 876, 408, 332, 152, - 112, 152, 168, 168, 332, 332, 168, 528, - 408, 528, 464, 408, 152, 876, 204, 168, - 868, 824, 152, 408, 876, 472, 472, 408, - 472, 684, 876, 472, 876, 464, 556, 472, - 168, 332, 788, 996, 824, 788, 236, 332, - 788, 716, 528, 788, 528, 684, 756, 728, - 332, 272, 964, 408, 168, 428, 728, 728, - 728, 428, 472, 408, 684, 728, 472, 428, - 472, 272, 272, 472, 964, 472, 964, 204, - 528, 332, 756, 236, 408, 408, 964, 684, - 756, 716, 964, 332, 756, 756, 876, 408, - 528, 728, 824, 584, 728, 756, 464, 528, - 728, 972, 728, 728, 652, 876, 844, 408, - 236, 868, 972, 408, 788, 236, 408, 844, - 868, 964, 844, 824, 972, 408, 964, 844, - 900, 900, 716, 900, 816, 964, 876, 408, - 464, 844, 716, 876, 788, 876, 900, 652, - 812, 844, 960, 536, 844, 716, 812, 960, - 472, 812, 844, 536, 816, 844, 868, 716, - 684, 960, 652, 584, 876, 868, 684, 332, - 728, 368, 600, 272, 152, 176, 716, 176, - 472, 472, 272, 176, 272, 684, 716, 428, - 600, 428, 112, 368, 272, 368, 472, 728, - 176, 200, 464, 600, 716, 600, 684, 472, - 728, 472, 176, 300, 368, 464, 728, 200, - 596, 204, 428, 464, 868, 368, 824, 728, - 788, 332, 368, 272, 368, 596, 876, 368, - 788, 788, 596, 272, 368, 596, 756, 332, - 728, 368, 368, 272, 396, 272, 844, + 344, 456, 168, 532, 232, 92, 868, 700, + 504, 316, 124, 272, 56, 900, 828, 828, + 56, 308, 116, 312, 828, 900, 900, 828, + 900, 116, 116, 116, 312, 828, 864, 900, + 864, 124, 124, 124, 316, 484, 828, 308, + 116, 124, 252, 124, 504, 252, 252, 252, + 864, 116, 124, 248, 252, 864, 252, 864, + 892, 504, 900, 700, 700, 116, 700, 468, + 504, 892, 700, 900, 316, 700, 892, 700, + 700, 700, 900, 756, 716, 868, 892, 864, + 868, 868, 484, 828, 868, 828, 868, 252, + 868, 796, 180, 664, 816, 92, 900, 828, + 900, 828, 864, 828, 816, 816, 864, 828, + 664, 816, 828, 816, 828, 992, 180, 180, + 664, 816, 796, 816, 816, 868, 180, 664, + 828, 828, 664, 496, 828, 492, 496, 528, + 528, 492, 180, 828, 868, 88, 4, 4, + 868, 828, 468, 228, 180, 868, 120, 124, + 92, 900, 56, 528, 900, 492, 816, 308, + 28, 44, 92, 900, 116, 528, 900, 116, + 468, 92, 900, 116, 864, 900, 864, 44, + 92, 92, 116, 900, 92, 312, 716, 468, + 828, 312, 92, 116, 468, 92, 468, 612, + 92, 492, 888, 828, 888, 44, 308, 124, + 248, 252, 252, 248, 468, 528, 124, 248, + 248, 896, 124, 116, 124, 252, 864, 124, + 1004, 864, 120, 92, 124, 88, 180, 492, + 828, 716, 180, 308, 828, 44, 248, 92, + 124, 124, 92, 248, 364, 180, 180, 248, + 364, 180, 248, 1004, 864, 364, 92, 124, + 180, 1004, 124, 180, 612, 364, 896, 484, + 828, 828, 828, 248, 92, 528, 56, 44, + 120, 816, 120, 92, 364, 748, 528, 520, + 468, 528, 180, 664, 120, 364, 468, 120, + 816, 716, 816, 664, 748, 120, 468, 664, + 180, 88, 748, 716, 92, 224, 632, 180, + 944, 828, 664, 944, 632, 504, 232, 56, + 360, 868, 272, 316, 324, 4, 828, 244, + 244, 828, 244, 4, 828, 244, 944, 752, + 632, 828, 324, 244, 624, 828, 828, 316, + 892, 316, 244, 868, 868, 244, 868, 868, + 112, 244, 4, 360, 888, 244, 4, 112, + 204, 4, 172, 828, 4, 88, 360, 180, + 204, 868, 360, 112, 4, 204, 104, 228, + 228, 204, 4, 624, 204, 4, 204, 944, + 112, 632, 4, 204, 4, 468, 828, 828, + 204, 468, 232, 112, 360, 308, 272, 324, + 316, 828, 324, 316, 324, 828, 468, 324, + 716, 324, 324, 360, 324, 484, 680, 828, + 112, 484, 460, 248, 360, 56, 828, 232, + 232, 124, 204, 232, 88, 180, 460, 828, + 88, 180, 232, 232, 180, 232, 716, 204, + 828, 232, 484, 828, 232, 460, 180, 232, + 124, 716, 360, 936, 204, 88, 360, 112, + 468, 232, 112, 232, 936, 360, 232, 460, + 460, 204, 460, 232, 360, 180, 248, 308, + 828, 272, 56, 232, 124, 124, 632, 232, + 56, 124, 232, 460, 752, 632, 624, 56, + 224, 468, 460, 828, 460, 716, 828, 232, + 468, 248, 248, 248, 460, 580, 844, 248, + 232, 360, 476, 112, 112, 476, 360, 112, + 232, 716, 196, 632, 612, 252, 248, 716, + 272, 232, 360, 124, 504, 504, 124, 504, + 460, 360, 504, 232, 248, 248, 232, 248, + 632, 124, 504, 232, 248, 624, 520, 460, + 624, 504, 232, 460, 888, 752, 468, 460, + 124, 232, 308, 324, 888, 612, 248, 324, + 624, 124, 504, 232, 716, 484, 716, 504, + 400, 716, 632, 248, 232, 248, 252, 308, + 124, 124, 592, 248, 476, 252, 308, 248, + 632, 624, 844, 112, 652, 84, 112, 504, + 652, 504, 360, 504, 632, 112, 476, 112, + 476, 844, 476, 504, 844, 504, 844, 844, + 892, 700, 580, 844, 316, 324, 504, 652, + 756, 756, 652, 756, 936, 504, 756, 504, + 716, 360, 652, 588, 632, 652, 460, 748, + 324, 360, 756, 504, 864, 752, 864, 1004, + 520, 1004, 1004, 652, 504, 844, 844, 716, + 756, 316, 308, 844, 324, 504, 936, 716, + 324, 504, 844, 936, 504, 936, 716, 316, + 324, 504, 996, 324, 980, 1004, 504, 756, + 324, 756, 308, 272, 504, 316, 748, 540, + 316, 700, 504, 540, 700, 528, 540, 700, + 500, 316, 360, 756, 492, 500, 400, 528, + 500, 756, 540, 316, 308, 324, 528, 504, + 540, 324, 324, 360, 528, 884, 316, 580, + 892, 944, 756, 892, 756, 500, 316, 892, + 700, 540, 756, 700, 540, 716, 892, 700, + 500, 528, 340, 540, 528, 884, 520, 540, + 528, 892, 756, 716, 88, 796, 844, 768, + 972, 584, 776, 776, 784, 784, 596, 656, + 784, 784, 944, 784, 972, 784, 608, 832, + 768, 768, 832, 832, 596, 832, 752, 716, + 540, 832, 776, 784, 832, 832, 784, 832, + 528, 656, 596, 336, 364, 476, 476, 476, + 284, 532, 476, 932, 784, 364, 476, 532, + 532, 476, 532, 500, 364, 476, 784, 500, + 476, 784, 784, 532, 784, 784, 500, 532, + 784, 596, 476, 680, 832, 844, 844, 832, + 844, 492, 476, 500, 716, 832, 680, 476, + 844, 1004, 844, 476, 224, 288, 500, 832, + 336, 680, 476, 876, 492, 476, 784, 944, + 680, 476, 528, 896, 600, 1004, 492, 784, + 832, 896, 656, 584, 364, 1004, 944, 656, + 532, 532, 968, 784, 952, 584, 584, 768, + 768, 952, 500, 796, 816, 584, 796, 364, + 664, 664, 796, 796, 584, 364, 664, 784, + 784, 664, 864, 784, 364, 664, 932, 484, + 664, 784, 796, 796, 540, 816, 568, 364, + 364, 120, 120, 816, 528, 568, 816, 816, + 796, 968, 816, 540, 528, 796, 768, 972, + 656, 584, 952, 952, 656, 972, 768, 664, + 656, 784, 644, 656, 784, 748, 796, 972, + 656, 796, 972, 532, 796, 972, 528, 664, + 796, 584, 656, 532, 748, 656, 948, 948, + 796, 796, 784, 532, 540, 528, 784, 748, + 796, 204, 476, 796, 532, 180, 364, 664, + 748, 816, 120, 664, 816, 944, 528, 44, + 120, 400, 540, 540, 540, 44, 180, 224, + 948, 944, 748, 364, 120, 944, 220, 540, + 656, 532, 664, 180, 532, 664, 944, 632, + 180, 532, 944, 228, 532, 876, 664, 532, + 228, 764, 532, 228, 816, 796, 656, 592, + 656, 664, 796, 764, 876, 968, 816, 632, + 364, 248, 308, 476, 476, 248, 748, 180, + 248, 920, 476, 948, 248, 532, 828, 364, + 180, 948, 248, 920, 664, 268, 452, 664, + 364, 476, 532, 920, 476, 748, 532, 532, + 336, 844, 476, 476, 476, 788, 680, 400, + 788, 760, 960, 488, 788, 360, 828, 680, + 112, 476, 204, 476, 132, 476, 748, 476, + 132, 204, 204, 476, 476, 204, 680, 748, + 476, 828, 88, 112, 204, 228, 204, 228, + 228, 112, 204, 748, 920, 224, 788, 760, + 248, 476, 112, 384, 132, 760, 476, 228, + 496, 664, 644, 664, 496, 496, 532, 656, + 228, 656, 664, 824, 460, 748, 532, 460, + 748, 228, 656, 8, 460, 632, 204, 784, + 828, 680, 936, 632, 592, 828, 204, 180, + 88, 532, 760, 760, 824, 936, 588, 180, + 760, 532, 476, 532, 204, 592, 204, 532, + 544, 760, 532, 544, 544, 476, 532, 460, + 204, 664, 496, 748, 204, 664, 204, 544, + 828, 544, 204, 748, 828, 964, 4, 136, + 736, 652, 892, 756, 1008, 600, 636, 376, + 376, 636, 376, 460, 1008, 600, 884, 624, + 544, 884, 756, 1008, 1008, 756, 1008, 884, + 892, 756, 460, 96, 624, 592, 636, 1008, + 376, 1008, 652, 376, 760, 756, 600, 752, + 892, 752, 400, 340, 636, 376, 736, 736, + 376, 736, 632, 340, 636, 376, 736, 544, + 220, 760, 760, 636, 376, 736, 148, 488, + 488, 400, 736, 376, 736, 752, 868, 868, + 752, 868, 488, 868, 752, 196, 624, 488, + 752, 220, 544, 488, 736, 624, 752, 636, + 752, 340, 96, 736, 376, 52, 80, 156, + 200, 212, 212, 200, 212, 592, 156, 200, + 212, 760, 224, 760, 624, 156, 80, 200, + 200, 156, 376, 592, 200, 748, 736, 200, + 96, 136, 544, 156, 136, 156, 544, 376, + 212, 80, 340, 96, 224, 224, 96, 224, + 460, 96, 96, 96, 80, 212, 224, 224, + 624, 340, 376, 376, 224, 736, 400, 340, + 736, 212, 200, 868, 752, 212, 788, 488, + 212, 224, 788, 752, 736, 788, 488, 804, + 376, 384, 636, 652, 96, 136, 84, 80, + 52, 156, 156, 80, 84, 624, 156, 136, + 84, 156, 96, 136, 136, 888, 96, 136, + 748, 652, 84, 636, 96, 96, 96, 652, + 652, 652, 384, 736, 384, 52, 636, 652, + 920, 376, 652, 976, 636, 652, 376, 976, + 652, 760, 976, 376, 384, 52, 736, 636, + 592, 764, 636, 376, 736, 764, 376, 760, + 136, 804, 652, 804, 976, 844, 824, 652, + 804, 592, 804, 156, 84, 172, 868, 756, + 244, 384, 652, 376, 360, 52, 588, 764, + 220, 976, 764, 324, 360, 652, 384, 624, + 652, 912, 976, 360, 652, 652, 764, 52, + 360, 324, 736, 316, 976, 376, 736, 764, + 244, 360, 324, 376, 324, 316, 376, 736, + 244, 244, 736, 244, 376, 736, 760, 976, + 520, 764, 324, 736, 764, 692, 652, 736, + 892, 316, 376, 488, 764, 376, 624, 892, + 760, 736, 760, 892, 488, 736, 376, 764, + 892, 244, 828, 736, 244, 764, 760, 244, + 764, 760, 736, 868, 488, 592, 104, 868, + 224, 624, 868, 624, 868, 172, 360, 196, + 592, 624, 268, 384, 828, 4, 172, 244, + 244, 172, 920, 760, 828, 488, 788, 384, + 4, 788, 488, 4, 172, 244, 692, 520, + 788, 488, 4, 868, 868, 804, 384, 4, + 828, 160, 84, 112, 172, 788, 204, 172, + 488, 692, 112, 172, 920, 148, 760, 764, + 172, 112, 4, 828, 172, 976, 876, 172, + 828, 748, 828, 944, 4, 400, 1004, 764, + 172, 1012, 1012, 4, 384, 112, 84, 720, + 764, 652, 112, 132, 172, 84, 112, 360, + 384, 720, 764, 384, 112, 384, 112, 112, + 84, 112, 172, 172, 112, 172, 720, 384, + 132, 692, 172, 132, 172, 1000, 360, 112, + 172, 1000, 1000, 692, 244, 384, 112, 4, + 172, 764, 4, 720, 1012, 172, 764, 4, + 720, 1012, 4, 1012, 84, 652, 1012, 652, + 680, 844, 804, 764, 804, 436, 844, 720, + 244, 212, 172, 652, 84, 384, 384, 132, + 132, 876, 172, 84, 80, 156, 436, 200, + 156, 1012, 920, 84, 156, 160, 692, 200, + 160, 156, 160, 160, 948, 200, 84, 80, + 104, 384, 172, 200, 200, 172, 200, 720, + 384, 172, 200, 720, 172, 920, 384, 948, + 540, 84, 80, 384, 472, 472, 148, 540, + 948, 84, 384, 172, 472, 944, 220, 472, + 540, 172, 384, 172, 200, 472, 496, 156, + 200, 200, 200, 452, 496, 472, 200, 868, + 384, 376, 736, 200, 452, 244, 200, 440, + 200, 944, 948, 80, 384, 140, 932, 932, + 200, 876, 540, 220, 472, 472, 496, 868, + 244, 200, 868, 472, 212, 1012, 212, 436, + 212, 868, 384, 200, 944, 472, 824, 1012, + 944, 868, 932, 868, 736, 496, 496, 200, + 828, 336, 8, 68, 108, 652, 64, 72, + 384, 132, 172, 160, 224, 436, 472, 80, + 156, 160, 948, 540, 520, 472, 948, 160, + 220, 944, 472, 944, 160, 436, 132, 160, + 948, 948, 160, 944, 876, 384, 84, 132, + 436, 384, 172, 948, 840, 720, 720, 384, + 132, 80, 160, 156, 84, 136, 160, 160, + 136, 436, 948, 84, 136, 156, 160, 944, + 156, 436, 136, 160, 472, 156, 1012, 452, + 84, 132, 160, 132, 148, 920, 764, 516, + 84, 384, 208, 516, 140, 208, 516, 72, + 160, 160, 948, 132, 132, 744, 496, 160, + 64, 104, 108, 108, 108, 384, 868, 104, + 160, 172, 948, 172, 472, 172, 948, 496, + 496, 496, 948, 684, 908, 656, 908, 908, + 868, 156, 160, 72, 684, 352, 68, 108, + 496, 108, 496, 496, 352, 108, 108, 496, + 684, 352, 472, 352, 72, 108, 472, 72, + 160, 1020, 496, 208, 496, 72, 160, 80, + 156, 200, 212, 208, 220, 208, 472, 400, + 224, 208, 472, 144, 440, 452, 160, 472, + 80, 156, 944, 944, 452, 684, 944, 496, + 868, 752, 684, 440, 500, 108, 212, 752, + 500, 684, 868, 192, 452, 500, 452, 212, + 868, 168, 144, 652, 744, 160, 156, 80, + 96, 164, 440, 500, 156, 932, 96, 440, + 944, 136, 72, 80, 80, 136, 192, 208, + 208, 136, 80, 208, 420, 136, 160, 440, + 140, 1020, 948, 136, 652, 80, 132, 744, + 744, 136, 652, 84, 932, 136, 652, 804, + 516, 652, 136, 804, 804, 136, 208, 516, + 144, 72, 136, 208, 420, 416, 516, 328, + 804, 144, 136, 72, 176, 144, 176, 744, + 744, 144, 420, 744, 744, 96, 136, 144, + 8, 8, 144, 136, 144, 8, 932, 144, + 8, 932, 420, 804, 960, 144, 744, 300, + 960, 804, 804, 168, 160, 744, 68, 144, + 416, 164, 164, 176, 144, 72, 352, 164, + 352, 176, 144, 420, 164, 176, 932, 72, + 144, 68, 352, 416, 684, 164, 164, 164, + 684, 416, 684, 932, 676, 684, 164, 164, + 684, 352, 164, 472, 144, 764, 732, 72, + 352, 144, 160, 732, 144, 160, 96, 212, + 356, 212, 752, 212, 224, 156, 192, 1012, + 344, 212, 168, 224, 224, 356, 168, 164, + 212, 212, 80, 96, 212, 156, 168, 168, + 168, 164, 356, 320, 212, 368, 344, 156, + 168, 408, 408, 168, 212, 396, 408, 224, + 408, 156, 676, 156, 396, 168, 684, 164, + 344, 408, 164, 212, 160, 164, 72, 156, + 68, 80, 320, 732, 80, 1012, 68, 156, + 168, 720, 212, 168, 1000, 924, 156, 168, + 732, 924, 176, 1012, 924, 156, 72, 80, + 1012, 72, 156, 168, 732, 156, 168, 536, + 164, 168, 536, 168, 396, 732, 168, 160, + 1012, 168, 8, 144, 72, 1020, 924, 168, + 144, 164, 176, 176, 720, 164, 168, 168, + 168, 408, 96, 8, 168, 536, 676, 168, + 224, 536, 8, 148, 536, 380, 192, 676, + 396, 132, 496, 656, 744, 776, 596, 336, + 960, 680, 784, 776, 516, 516, 536, 776, + 832, 676, 784, 676, 776, 960, 576, 832, + 960, 536, 1012, 680, 776, 300, 720, 776, + 720, 1012, 776, 776, 744, 680, 416, 680, + 144, 744, 960, 744, 960, 960, 744, 960, + 300, 744, 960, 416, 776, 776, 744, 776, + 840, 840, 776, 960, 840, 840, 960, 576, + 720, 964, 972, 776, 980, 776, 516, 972, + 972, 744, 964, 644, 656, 192, 732, 540, + 776, 656, 776, 656, 964, 416, 416, 656, + 964, 964, 416, 744, 304, 744, 524, 840, + 744, 840, 776, 964, 524, 840, 656, 908, + 972, 972, 908, 964, 896, 972, 964, 788, + 896, 108, 160, 72, 416, 336, 544, 144, + 416, 544, 136, 144, 524, 336, 352, 416, + 148, 524, 544, 144, 800, 460, 416, 744, + 744, 680, 160, 336, 744, 524, 908, 680, + 108, 496, 228, 824, 800, 140, 460, 524, + 108, 496, 800, 64, 336, 496, 204, 228, + 204, 228, 496, 800, 524, 336, 800, 496, + 108, 336, 352, 496, 416, 416, 684, 624, + 888, 460, 644, 416, 544, 612, 416, 684, + 416, 668, 896, 684, 108, 496, 352, 644, + 656, 800, 644, 484, 524, 800, 656, 644, + 108, 496, 524, 228, 800, 108, 496, 228, + 484, 496, 228, 372, 656, 108, 388, 612, + 108, 612, 856, 496, 864, 496, 784, 496, + 644, 908, 908, 796, 796, 684, 656, 908, + 796, 864, 856, 796, 896, 612, 908, 796, + 856, 896, 664, 612, 868, 804, 496, 160, + 144, 132, 72, 136, 136, 744, 136, 1004, + 856, 1004, 744, 680, 132, 824, 864, 864, + 1008, 220, 524, 484, 484, 680, 680, 680, + 744, 372, 744, 204, 160, 204, 960, 804, + 680, 652, 744, 476, 476, 132, 744, 476, + 524, 744, 680, 484, 460, 460, 680, 132, + 744, 744, 132, 612, 136, 744, 680, 484, + 680, 372, 804, 864, 804, 680, 960, 804, + 1004, 372, 1004, 108, 496, 868, 160, 112, + 132, 112, 612, 112, 204, 824, 856, 800, + 132, 824, 544, 236, 172, 236, 496, 60, + 228, 160, 132, 104, 384, 172, 524, 384, + 172, 544, 192, 236, 524, 164, 800, 524, + 160, 228, 104, 112, 132, 172, 204, 484, + 196, 484, 176, 192, 544, 484, 184, 460, + 132, 112, 196, 484, 544, 192, 484, 936, + 132, 524, 524, 228, 112, 484, 524, 132, + 148, 484, 484, 228, 160, 172, 484, 172, + 204, 404, 204, 160, 496, 496, 460, 828, + 496, 204, 524, 936, 196, 236, 544, 72, + 496, 228, 132, 108, 160, 60, 496, 496, + 64, 160, 236, 484, 496, 64, 800, 236, + 800, 132, 132, 160, 800, 228, 176, 484, + 604, 352, 108, 72, 484, 132, 936, 484, + 72, 108, 132, 108, 404, 132, 108, 936, + 936, 248, 412, 548, 672, 640, 916, 628, + 904, 688, 688, 904, 688, 604, 628, 916, + 904, 916, 916, 660, 904, 916, 484, 904, + 808, 956, 660, 448, 952, 952, 448, 952, + 236, 448, 968, 704, 956, 956, 968, 448, + 460, 956, 672, 448, 688, 448, 808, 640, + 672, 672, 640, 704, 808, 808, 704, 808, + 236, 808, 448, 448, 508, 236, 808, 508, + 808, 404, 508, 672, 688, 808, 808, 688, + 808, 236, 508, 508, 404, 372, 548, 660, + 848, 508, 672, 620, 448, 780, 780, 448, + 780, 524, 404, 448, 508, 672, 404, 448, + 508, 508, 620, 780, 820, 848, 848, 820, + 780, 848, 672, 660, 768, 780, 780, 952, + 448, 768, 780, 372, 768, 236, 236, 952, + 768, 388, 800, 280, 428, 548, 448, 952, + 956, 968, 968, 956, 524, 484, 548, 548, + 956, 548, 548, 444, 448, 508, 548, 548, + 508, 548, 936, 956, 548, 848, 448, 428, + 456, 508, 508, 456, 508, 936, 448, 928, + 936, 508, 192, 928, 404, 848, 128, 808, + 704, 836, 940, 872, 628, 728, 688, 728, + 688, 696, 696, 628, 928, 996, 696, 628, + 916, 940, 940, 628, 936, 916, 940, 484, + 648, 696, 940, 940, 696, 940, 728, 728, + 940, 936, 484, 836, 940, 12, 412, 728, + 728, 412, 936, 996, 728, 836, 956, 940, + 640, 704, 704, 164, 864, 864, 704, 856, + 412, 688, 704, 860, 12, 296, 296, 860, + 856, 808, 860, 860, 704, 808, 704, 808, + 404, 860, 404, 860, 372, 808, 860, 856, + 412, 728, 688, 860, 860, 728, 728, 836, + 860, 772, 860, 860, 836, 864, 548, 480, + 704, 128, 412, 296, 860, 936, 412, 712, + 128, 968, 968, 712, 712, 128, 704, 956, + 704, 936, 996, 404, 480, 712, 836, 772, + 860, 860, 936, 772, 712, 848, 480, 348, + 724, 456, 456, 724, 456, 936, 128, 296, + 456, 480, 480, 456, 480, 604, 480, 348, + 128, 996, 456, 128, 372, 128, 480, 480, + 480, 848, 996, 480, 848, 388, 372, 848, + 860, 372, 724, 712, 604, 480, 724, 480, + 388, 480, 772, 848, 848, 772, 144, 856, + 996, 404, 704, 848, 808, 548, 508, 456, + 196, 928, 236, 548, 296, 1004, 888, 444, + 456, 548, 548, 548, 444, 456, 456, 404, + 216, 860, 220, 216, 388, 508, 848, 856, + 508, 848, 216, 216, 848, 860, 856, 548, + 196, 372, 388, 704, 404, 956, 968, 548, + 236, 968, 548, 824, 724, 120, 820, 832, + 968, 768, 952, 952, 784, 584, 428, 284, + 448, 236, 824, 448, 768, 524, 428, 448, + 448, 284, 768, 428, 448, 236, 524, 428, + 768, 388, 236, 284, 524, 768, 140, 784, + 448, 952, 236, 140, 192, 388, 524, 832, + 596, 428, 284, 448, 372, 168, 800, 800, + 768, 448, 768, 780, 140, 428, 448, 524, + 768, 780, 824, 832, 780, 524, 668, 820, + 364, 432, 188, 428, 284, 584, 284, 428, + 428, 284, 428, 824, 564, 188, 284, 188, + 188, 188, 308, 284, 476, 584, 284, 432, + 476, 476, 432, 140, 544, 308, 432, 236, + 188, 816, 584, 284, 524, 364, 284, 364, + 404, 284, 432, 308, 476, 432, 504, 388, + 504, 844, 248, 236, 372, 432, 308, 236, + 236, 820, 404, 820, 844, 832, 432, 596, + 372, 604, 388, 388, 476, 844, 372, 820, + 168, 388, 372, 832, 844, 76, 308, 548, + 584, 952, 816, 568, 796, 956, 956, 236, + 796, 956, 796, 968, 524, 140, 8, 216, + 220, 796, 968, 816, 824, 968, 824, 968, + 952, 220, 824, 140, 956, 520, 220, 968, + 196, 220, 220, 240, 188, 364, 152, 584, + 584, 120, 568, 152, 152, 140, 152, 444, + 584, 444, 444, 364, 568, 520, 584, 120, + 568, 364, 520, 220, 364, 568, 120, 816, + 152, 152, 520, 816, 120, 152, 140, 192, + 388, 520, 152, 428, 520, 188, 432, 444, + 152, 76, 188, 444, 188, 188, 548, 152, + 816, 444, 428, 220, 140, 188, 240, 568, + 152, 444, 388, 152, 76, 236, 152, 816, + 240, 816, 240, 240, 188, 240, 240, 240, + 8, 388, 388, 428, 240, 548, 548, 76, + 188, 444, 252, 504, 432, 308, 176, 604, + 388, 252, 76, 432, 604, 252, 444, 464, + 152, 312, 364, 252, 308, 188, 28, 44, + 120, 120, 44, 120, 48, 120, 236, 188, + 308, 520, 188, 252, 188, 308, 44, 116, + 252, 824, 116, 928, 520, 252, 520, 120, + 684, 312, 604, 816, 188, 44, 444, 120, + 312, 252, 44, 100, 100, 152, 152, 252, + 120, 816, 100, 152, 312, 520, 928, 76, + 152, 188, 928, 312, 816, 404, 816, 152, + 928, 928, 404, 188, 252, 956, 724, 812, + 100, 188, 348, 900, 708, 616, 424, 700, + 700, 424, 604, 424, 708, 708, 424, 700, + 708, 708, 708, 48, 900, 332, 348, 424, + 708, 236, 424, 348, 424, 708, 372, 424, + 708, 900, 164, 524, 788, 424, 524, 424, + 348, 464, 424, 464, 188, 188, 464, 188, + 824, 464, 44, 252, 312, 116, 424, 424, + 700, 900, 312, 100, 116, 424, 524, 116, + 424, 824, 100, 116, 424, 524, 788, 116, + 824, 164, 668, 788, 116, 524, 424, 788, + 896, 312, 424, 188, 668, 252, 188, 252, + 800, 312, 100, 424, 188, 896, 668, 176, + 216, 524, 424, 188, 856, 372, 8, 856, + 896, 424, 188, 252, 188, 372, 116, 524, + 464, 820, 188, 432, 188, 668, 404, 464, + 176, 484, 976, 188, 252, 976, 740, 892, + 504, 812, 884, 756, 812, 812, 812, 708, + 700, 892, 616, 616, 700, 812, 812, 700, + 812, 852, 708, 976, 700, 852, 708, 520, + 812, 844, 616, 432, 700, 252, 740, 504, + 852, 812, 504, 812, 504, 424, 308, 740, + 740, 424, 512, 504, 852, 252, 504, 252, + 424, 116, 700, 852, 512, 504, 700, 424, + 976, 1008, 852, 252, 812, 812, 504, 252, + 812, 976, 252, 812, 252, 464, 852, 464, + 252, 740, 464, 912, 740, 432, 504, 976, + 852, 504, 912, 880, 252, 1008, 504, 520, + 464, 700, 616, 424, 740, 1008, 1008, 400, + 424, 600, 740, 1008, 424, 708, 148, 400, + 852, 708, 700, 852, 400, 520, 464, 752, + 812, 820, 432, 844, 520, 844, 740, 504, + 520, 504, 752, 400, 820, 852, 392, 792, + 456, 712, 348, 724, 708, 424, 464, 740, + 824, 852, 464, 824, 852, 708, 520, 852, + 812, 724, 464, 812, 852, 332, 348, 724, + 464, 464, 724, 464, 824, 348, 424, 708, + 520, 464, 708, 464, 400, 708, 424, 852, + 464, 400, 708, 724, 392, 348, 712, 708, + 724, 880, 712, 724, 708, 712, 824, 712, + 724, 480, 724, 520, 480, 464, 456, 740, + 820, 820, 740, 820, 848, 824, 820, 848, + 520, 724, 456, 512, 464, 464, 220, 456, + 740, 148, 192, 140, 184, 220, 512, 464, + 740, 512, 392, 852, 812, 792, 724, 740, + 740, 1008, 772, 708, 712, 724, 792, 792, + 724, 792, 976, 712, 724, 792, 520, 164, + 684, 520, 772, 976, 792, 812, 884, 892, + 792, 792, 812, 616, 976, 520, 812, 792, + 708, 792, 760, 812, 792, 604, 800, 456, + 444, 240, 348, 708, 332, 816, 588, 900, + 816, 816, 684, 900, 480, 708, 348, 128, + 128, 976, 752, 96, 852, 520, 128, 332, + 348, 348, 128, 976, 8, 912, 604, 512, + 240, 816, 1008, 852, 956, 548, 852, 128, + 348, 240, 240, 128, 240, 788, 788, 240, + 548, 488, 548, 900, 240, 100, 332, 348, + 852, 788, 816, 312, 100, 488, 852, 100, + 488, 852, 912, 816, 100, 240, 976, 152, + 188, 240, 692, 188, 1008, 1008, 800, 900, + 900, 444, 100, 424, 332, 348, 464, 240, + 800, 188, 788, 240, 800, 464, 348, 188, + 240, 512, 188, 788, 148, 800, 512, 824, + 800, 800, 464, 392, 512, 488, 788, 548, + 444, 464, 188, 668, 1008, 188, 240, 464, + 152, 444, 804, 852, 512, 824, 512, 140, + 444, 804, 824, 140, 96, 668, 512, 464, + 512, 512, 240, 852, 824, 240, 480, 724, + 348, 824, 512, 788, 348, 480, 128, 824, + 140, 668, 712, 804, 788, 788, 824, 464, + 456, 820, 428, 820, 432, 432, 188, 512, + 456, 1008, 348, 464, 456, 444, 240, 392, + 188, 444, 184, 800, 800, 168, 544, 800, + 148, 788, 800, 444, 188, 624, 188, 240, + 788, 456, 544, 188, 444, 456, 464, 824, + 544, 464, 512, 788, 188, 464, 512, 512, + 456, 464, 188, 512, 760, 788, 512, 472, + 544, 96, 48, 960, 184, 684, 996, 908, + 928, 972, 928, 352, 908, 964, 964, 908, + 800, 512, 928, 512, 964, 760, 972, 1004, + 996, 928, 964, 856, 856, 928, 964, 512, + 856, 964, 760, 684, 996, 292, 856, 928, + 928, 856, 928, 996, 352, 684, 416, 512, + 928, 684, 760, 216, 684, 856, 840, 352, + 416, 164, 176, 184, 184, 176, 184, 604, + 184, 976, 176, 184, 800, 176, 416, 512, + 976, 352, 416, 964, 840, 760, 964, 544, + 976, 964, 488, 840, 856, 196, 352, 684, + 164, 488, 592, 800, 168, 976, 760, 840, + 184, 388, 292, 372, 216, 760, 788, 852, + 372, 216, 752, 236, 8, 960, 804, 388, + 804, 388, 176, 216, 216, 176, 960, 840, + 856, 184, 840, 216, 840, 216, 856, 856, + 148, 744, 840, 856, 1004, 744, 840, 176, + 964, 840, 840, 144, 840, 960, 960, 776, + 964, 840, 964, 856, 744, 776, 960, 840, + 856, 840, 176, 216, 840, 840, 856, 840, + 840, 804, 192, 840, 192, 840, 960, 964, + 840, 856, 184, 668, 176, 856, 196, 48, + 928, 216, 184, 76, 176, 216, 216, 76, + 192, 184, 824, 388, 192, 220, 220, 192, + 184, 144, 192, 668, 176, 824, 388, 140, + 192, 176, 8, 192, 8, 144, 140, 668, + 8, 184, 220, 192, 824, 192, 192, 668, + 216, 216, 388, 176, 184, 192, 216, 176, + 192, 216, 804, 184, 192, 192, 176, 148, + 8, 744, 176, 192, 224, 212, 804, 196, + 168, 520, 928, 684, 48, 604, 604, 196, + 212, 684, 196, 196, 684, 752, 196, 520, + 176, 684, 388, 196, 520, 164, 224, 520, + 220, 164, 196, 520, 196, 212, 520, 752, + 196, 196, 8, 520, 220, 184, 196, 176, + 684, 164, 184, 196, 196, 184, 196, 196, + 196, 164, 184, 196, 8, 216, 668, 960, + 668, 96, 856, 168, 388, 856, 372, 196, + 192, 196, 192, 416, 224, 196, 960, 400, + 148, 96, 636, 148, 184, 1008, 148, 196, + 96, 148, 400, 600, 1008, 192, 520, 340, + 636, 1008, 400, 184, 636, 1008, 400, 392, + 148, 148, 400, 520, 176, 824, 824, 148, + 148, 196, }; -static encode_aux _vq_aux_lsp32_0 = { +static encode_aux_nearestmatch _vq_auxn_lsp32_0 = { _vq_ptr0_lsp32_0, _vq_ptr1_lsp32_0, _vq_p_lsp32_0, _vq_q_lsp32_0, - 3783, 3783 + 4386, 4386 }; static static_codebook _vq_book_lsp32_0 = { - 4, 256, 4099332, 2538097, 8, 1, - _vq_quantlist_lsp32_0, + 4, 256, _vq_lengthlist_lsp32_0, - &_vq_aux_lsp32_0, + 2, 1603593466, 1583043971, 8, 1, + _vq_quantlist_lsp32_0, + &_vq_auxn_lsp32_0, + NULL, }; diff --git a/include/vorbis/book/lsp32_1.vqh b/include/vorbis/book/lsp32_1.vqh new file mode 100644 index 0000000..9c9670f --- /dev/null +++ b/include/vorbis/book/lsp32_1.vqh @@ -0,0 +1,3638 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/somethingorother + + ********************************************************************/ + +#ifndef _V_lsp32_1_VQH_ +#define _V_lsp32_1_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_lsp32_1[] = { + 99, + 32, + 72, + 64, + 41, + 18, + 45, + 57, + 65, + 25, + 61, + 65, + 96, + 37, + 75, + 78, + 85, + 34, + 73, + 75, + 152, + 121, + 128, + 139, + 4, + 23, + 36, + 63, + 110, + 80, + 126, + 107, + 135, + 136, + 145, + 92, + 126, + 92, + 105, + 96, + 101, + 104, + 107, + 88, + 68, + 49, + 93, + 115, + 155, + 131, + 112, + 101, + 62, + 30, + 66, + 72, + 98, + 115, + 115, + 94, + 112, + 127, + 111, + 95, + 129, + 98, + 108, + 102, + 98, + 96, + 92, + 113, + 104, + 103, + 117, + 31, + 67, + 59, + 110, + 108, + 207, + 28, + 58, + 64, + 140, + 67, + 59, + 110, + 104, + 110, + 118, + 103, + 131, + 121, + 103, + 87, + 124, + 120, + 100, + 90, + 111, + 88, + 96, + 68, + 62, + 80, + 91, + 79, + 76, + 73, + 123, + 112, + 177, + 57, + 107, + 120, + 78, + 35, + 66, + 70, + 109, + 85, + 133, + 122, + 117, + 130, + 124, + 106, + 124, + 112, + 97, + 90, + 85, + 90, + 89, + 84, + 81, + 65, + 101, + 96, + 80, + 94, + 134, + 107, + 151, + 76, + 94, + 110, + 92, + 96, + 115, + 98, + 115, + 120, + 105, + 92, + 129, + 88, + 89, + 107, + 101, + 78, + 109, + 69, + 97, + 91, + 96, + 82, + 94, + 82, + 134, + 125, + 133, + 134, + 121, + 109, + 60, + 50, + 70, + 88, + 106, + 87, + 114, + 99, + 106, + 115, + 114, + 89, + 111, + 104, + 98, + 87, + 112, + 70, + 83, + 81, + 84, + 94, + 100, + 82, + 84, + 92, + 129, + 164, + 241, + 25, + 61, + 78, + 125, + 84, + 127, + 100, + 111, + 115, + 125, + 96, + 111, + 91, + 106, + 76, + 99, + 79, + 75, + 74, + 99, + 104, + 103, + 83, + 92, + 106, + 125, + 103, + 226, + 178, + 57, + 125, + 120, + 85, + 116, + 99, + 119, + 93, + 140, + 105, + 109, + 94, + 94, + 99, + 106, + 66, + 79, + 91, + 110, + 68, + 100, + 86, + 218, + 29, + 111, + 132, + 85, + 28, + 56, + 55, + 99, + 100, + 104, + 96, + 116, + 125, + 122, + 100, + 120, + 92, + 100, + 75, + 95, + 61, + 92, + 98, + 94, + 81, + 117, + 109, + 229, + 80, + 103, + 131, + 60, + 18, + 49, + 56, + 119, + 78, + 114, + 98, + 124, + 103, + 142, + 106, + 104, + 101, + 95, + 76, + 100, + 54, + 73, + 83, + 103, + 120, + 103, + 85, + 103, + 74, + 126, + 109, + 147, + 146, + 97, + 20, + 39, + 24, + 55, + 67, + 110, + 100, + 97, + 114, + 114, + 109, + 118, + 89, + 114, + 107, + 109, + 53, + 113, + 119, + 102, + 87, + 104, + 82, + 112, + 93, + 137, + 254, + 134, + 135, + 0, + 25, + 34, + 64, + 110, + 94, + 91, + 116, + 122, + 118, + 122, + 87, + 115, + 114, + 84, + 78, + 101, + 83, + 79, + 96, + 103, + 111, + 106, + 85, + 96, + 100, + 107, + 114, + 203, + 67, + 84, + 90, + 106, + 101, + 104, + 98, + 103, + 124, + 116, + 92, + 101, + 112, + 100, + 78, + 96, + 92, + 85, + 106, + 121, + 103, + 114, + 76, + 92, + 80, + 110, + 104, + 255, + 38, + 75, + 97, + 57, + 24, + 59, + 65, + 118, + 93, + 101, + 102, + 114, + 109, + 116, + 103, + 109, + 107, + 92, + 72, + 108, + 65, + 99, + 105, + 118, + 115, + 113, + 94, + 203, + 86, + 93, + 111, + 80, + 22, + 54, + 56, + 116, + 105, + 110, + 99, + 124, + 125, + 144, + 95, + 119, + 89, + 96, + 98, + 116, + 77, + 111, + 92, + 99, + 72, + 102, + 79, + 194, + 170, + 49, + 45, + 72, + 20, + 51, + 54, + 106, + 106, + 111, + 92, + 121, + 132, + 144, + 129, + 118, + 88, + 96, + 72, + 121, + 91, + 108, + 83, + 96, + 100, + 106, + 77, + 94, + 17, + 121, + 99, + 193, + 66, + 126, + 145, + 90, + 29, + 61, + 57, + 96, + 73, + 104, + 101, + 115, + 120, + 120, + 100, + 138, + 99, + 118, + 107, + 114, + 74, + 107, + 91, + 99, + 86, + 91, + 74, + 71, + 57, + 121, + 125, + 154, + 156, + 144, + 134, + 5, + 52, + 126, + 111, + 107, + 70, + 107, + 106, + 105, + 107, + 131, + 101, + 122, + 121, + 108, + 93, + 100, + 83, + 107, + 93, + 94, + 103, + 94, + 66, + 22, + 78, + 133, + 120, + 142, + 127, + 119, + 83, + 99, + 33, + 60, + 57, + 101, + 91, + 119, + 83, + 102, + 124, + 132, + 107, + 135, + 102, + 102, + 108, + 110, + 93, + 106, + 88, + 97, + 80, + 93, + 62, + 70, + 51, + 77, + 96, + 155, + 149, + 129, + 94, + 83, + 52, + 65, + 69, + 103, + 92, + 96, + 82, + 99, + 121, + 164, + 113, + 123, + 128, + 104, + 102, + 106, + 91, + 102, + 86, + 91, + 73, + 87, + 62, + 44, + 60, + 109, + 91, + 108, + 95, + 116, + 90, + 120, + 110, + 119, + 140, + 134, + 114, + 106, + 127, + 109, + 89, + 86, + 102, + 81, + 82, + 89, + 79, + 85, + 60, + 77, + 107, + 127, + 142, + 159, + 120, + 39, + 31, + 65, + 77, + 95, + 98, + 124, + 94, + 134, + 91, + 107, + 134, + 122, + 111, + 114, + 119, + 120, + 83, + 92, + 95, + 101, + 57, + 84, + 85, + 86, + 51, + 83, + 82, + 127, + 130, + 78, + 78, + 119, + 98, + 100, + 109, + 125, + 117, + 131, + 134, + 112, + 109, + 108, + 89, + 108, + 79, + 109, + 77, + 95, + 69, + 97, + 78, + 82, + 61, + 119, + 99, + 132, + 127, + 108, + 91, + 84, + 65, + 94, + 79, + 104, + 106, + 105, + 121, + 127, + 101, + 118, + 104, + 112, + 70, + 103, + 93, + 81, + 82, + 113, + 96, + 56, + 92, + 115, + 88, + 183, + 61, + 87, + 75, + 118, + 44, + 77, + 67, + 96, + 98, + 98, + 91, + 96, + 99, + 153, + 193, + 150, + 69, + 85, + 79, + 106, + 88, + 83, + 62, + 109, + 98, + 112, + 77, + 142, + 38, + 107, + 135, + 213, + 18, + 94, + 122, + 106, + 41, + 64, + 60, + 94, + 105, + 113, + 91, + 116, + 103, + 105, + 118, + 127, + 104, + 94, + 79, + 111, + 108, + 73, + 63, + 113, + 103, + 106, + 90, + 98, + 54, + 122, + 114, + 144, + 104, + 123, + 115, + 89, + 30, + 70, + 64, + 91, + 74, + 104, + 92, + 107, + 90, + 143, + 143, + 117, + 119, + 129, + 18, + 91, + 68, + 93, + 115, + 127, + 115, + 145, + 42, + 112, + 73, + 110, + 105, + 174, + 91, + 98, + 126, + 78, + 28, + 67, + 67, + 92, + 95, + 104, + 83, + 110, + 110, + 112, + 127, + 120, + 142, + 62, + 16, + 101, + 64, + 97, + 92, + 122, + 109, + 122, + 74, + 88, + 75, + 116, + 142, + 163, + 33, + 117, + 149, + 112, + 36, + 74, + 69, + 97, + 78, + 104, + 88, + 95, + 99, + 107, + 90, + 115, + 114, + 97, + 85, + 110, + 81, + 84, + 92, + 108, + 96, + 129, + 95, + 179, + 28, + 92, + 115, + 110, + 118, + 175, + 212, + 74, + 27, + 63, + 64, + 102, + 76, + 106, + 91, + 90, + 96, + 108, + 94, + 112, + 110, + 100, + 80, + 116, + 80, + 90, + 89, + 109, + 105, + 111, + 99, + 169, + 52, + 123, + 156, + 60, + 39, + 68, + 81, + 103, + 67, + 99, + 94, + 81, + 81, + 126, + 109, + 126, + 122, + 122, + 93, + 111, + 83, + 88, + 75, + 103, + 101, + 116, + 100, + 127, + 95, + 103, + 107, + 147, + 108, + 120, + 143, + 89, + 65, + 71, + 65, + 86, + 72, + 104, + 87, + 85, + 94, + 106, + 90, + 128, + 132, + 114, + 102, + 136, + 65, + 46, + 74, + 96, + 111, + 111, + 93, + 125, + 99, + 108, + 117, + 70, + 133, + 74, + 9, + 74, + 15, + 94, + 94, + 78, + 118, + 143, + 109, + 105, + 102, + 133, + 65, + 143, + 15, + 99, + 107, + 93, + 79, + 128, + 86, + 45, + 103, + 132, + 123, + 154, + 107, + 86, + 106, + 72, + 121, + 114, + 83, + 123, + 87, + 100, + 130, +}; + +static long _vq_lengthlist_lsp32_1[] = { + 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, +}; + +static long _vq_ptr0_lsp32_1[] = { + -1, -2, -3, -4, -5, -6, -7, -8, + -9, -10, -11, -12, -13, -14, 7, 42, + 178, -18, -19, -20, 30, 3, -23, 50, + 148, -26, -15, -24, 146, -30, 50, -23, + -28, 190, -35, -36, -37, 7, 57, -40, + 30, -32, -20, 247, -45, 81, -43, -48, + -49, -50, -51, 7, 30, -14, 132, -56, + 52, 59, 190, 247, -61, -20, -59, 215, + 42, -33, 132, 247, -69, -56, -67, -72, + -73, -74, -75, -76, 7, 81, -79, -80, + 59, 81, 44, -84, 117, -86, -81, -82, + 229, -90, 178, -87, -93, -94, -95, 59, + -97, -98, 81, 178, -101, 170, 247, -44, + -4260, -102, 44, -108, 170, -106, -111, -112, + -113, -99, -109, 221, -117, -118, 14, -114, + 61, -119, -121, -124, -125, -76, 246, 221, + -90, -126, 138, -132, -133, 57, -66, -120, + 11, -136, -139, -140, 52, 194, -143, -144, + -145, 30, 248, 50, -52, -137, -151, -152, + -153, -154, -155, -156, 14, 11, -159, 22, + -157, -156, -160, -162, 22, -166, -167, -168, + -169, 22, -163, -135, 148, 140, -175, 30, + 57, -178, -40, -173, 248, -38, 4, 148, + -185, -175, -183, 134, -189, 57, -191, 248, + 140, -194, -195, -196, -197, -198, -199, 14, + -169, -192, 248, -204, -205, -206, -159, -201, + 194, -99, 0, -210, 96, -214, -215, -216, + -217, -218, -219, -220, 22, 178, 194, -224, + -225, 30, -227, 248, -229, -230, 30, 134, + -227, 0, -235, 248, 96, -238, -239, -240, + -241, -242, 22, -233, -140, -243, -245, 52, + -102, -236, -248, -252, -247, -250, -255, -256, + 104, 247, -259, -52, -257, -262, -20, 200, + 208, -266, -267, -20, 29, -270, 194, 210, + -273, -16, -268, -222, -274, -276, -279, -280, + 77, -171, -192, 124, 178, -283, -287, -288, + -289, -247, 29, 170, -293, -294, 110, -290, + -101, -295, -299, -300, -301, -302, 52, 194, + -305, 110, 246, -308, 104, 110, -311, 104, + -313, 194, 237, -316, -317, 52, 170, -320, + -321, -322, 36, 255, -325, 52, -306, -323, + -326, -56, -328, 109, -333, -334, -335, -336, + -337, -338, -339, 9, -341, 16, 65, 102, + -345, -322, 102, 2, 52, -350, -351, 16, + -353, -354, -355, 32, 84, -358, 38, -347, + 110, -362, -363, -309, -359, -364, -367, -368, + -369, -370, -371, 16, 72, -313, -372, -281, + 132, 72, -302, 1, -309, -379, -383, 38, + -432, 6, -385, -388, -389, -390, -391, 16, + -386, -394, -395, -396, -397, 16, -399, 82, + 99, -402, -403, 52, -1282, -392, -405, -408, + -409, -341, 109, 2, 99, -414, 52, -411, + -417, -418, -419, -420, -421, 24, 38, -424, + 32, 208, 32, -428, -429, -430, -431, -354, + -2073, 224, -264, -436, 82, 124, -357, 61, + 65, -440, -439, -441, -443, 32, 247, -398, + -4834, -446, 65, -452, -453, 84, -450, -456, + -457, -458, -459, -460, 46, -268, -463, 84, + -461, -460, -59, 99, -435, -4608, 162, 13, + -473, 84, -471, -467, -54, -476, -479, -480, + -481, -482, -483, 46, 14, -486, -487, 14, + -156, -477, 117, -492, -487, 246, -495, 77, + 172, -498, 46, -500, 46, -493, -503, -504, + 249, 117, 117, -508, -509, -510, -511, -512, + -500, -501, -513, 160, 146, -518, 82, 249, + 99, -516, -523, 7, 249, -526, -527, 59, + 177, 168, -531, -84, -529, 26, -127, -533, + -537, -538, -539, -540, -541, 9, -535, -544, + 9, 160, -541, 26, -549, 9, -551, 110, + -302, -547, -553, -80, -554, 99, -559, -294, + 216, -529, -101, 192, -563, -566, -567, -568, + 52, 82, -517, -729, 3, -574, 110, -572, + -294, -575, -577, -580, -581, -582, -583, -584, + -585, -586, -587, 22, 148, 82, -591, -592, + 46, 96, -436, -588, -597, -598, 38, 84, + -436, -595, -603, -604, -605, -156, -601, -159, + 148, 146, 14, 46, -613, 77, -568, -609, + -617, -618, -619, -620, -621, -484, -615, 46, + 46, -626, -627, -628, 22, 46, -631, 22, + -518, 0, -633, -631, -634, -638, 82, -636, + -3901, -4770, 246, 146, -641, 146, -533, -648, + -484, -646, 249, -649, -653, -654, 248, 246, + -655, -656, -659, -660, -661, -662, -663, -624, + -657, 122, 96, -665, -669, 249, -671, -672, + -597, -644, 122, -674, 19, -678, -589, -676, + -679, -674, -683, -684, -685, 52, -687, -688, + 249, -399, -157, -666, -690, -694, -695, -696, + 249, -698, 203, 205, -701, -666, -692, -702, + -673, 3, 122, -708, -709, -710, -711, -628, + -706, -712, -704, 247, -715, -718, -719, -631, + -67, 104, -236, -720, 154, -726, -638, -516, + 122, 128, -728, -730, -733, -734, 96, 53, + 60, 11, -739, -740, -741, -742, -743, -744, + 16, 104, -436, -737, -747, -750, -414, -748, + -751, 166, -752, 168, -545, -758, -759, -598, + 122, -760, -763, -358, -761, -547, -4687, -765, + -767, -399, -760, 19, -383, -771, -775, -247, + -773, -776, -308, 26, -371, -779, -676, -784, + -785, -786, -787, -788, -789, -790, -791, -792, + -793, 59, 120, -796, 249, -782, -799, -800, + -801, 9, 59, 172, -805, 99, -157, -808, + -809, 9, 26, -766, -810, -747, -317, -813, + -815, -818, -819, -820, 9, 197, -816, -824, + 172, -826, 197, -828, -829, 249, 46, -832, + -833, 46, -835, -836, -796, -822, -837, -840, + 117, -838, -843, -844, 77, 192, -889, 250, + 246, -850, -851, -852, 77, -854, 99, -856, + 84, 184, -859, -860, -861, 9, 39, -864, + 7, -57, -857, 73, -869, -870, 59, 81, + -873, -874, -875, -876, -877, -809, 76, 170, + -881, 103, -878, -884, -793, -882, -881, 246, + -792, 88, -887, -890, -881, -891, 153, -896, + -897, -898, 39, 103, -901, 59, -894, 103, + -905, 170, 103, 76, -909, -910, 39, -907, + -45, -911, -553, -916, -917, -871, 3, 122, + -101, 184, -923, -95, 122, 197, -490, 76, + -927, -930, -931, -932, -933, -495, -928, -934, + -926, -4689, -935, -938, -496, -939, -941, -944, + -945, -101, -942, -937, 167, 160, -824, -760, + -951, -954, -98, -545, 159, -490, -956, -101, + -958, 159, -963, -964, -965, -966, -967, -968, + -969, 9, 52, 32, -973, -341, 69, -974, + -977, -978, 32, -948, -424, -956, -981, 159, + -985, -986, -987, -988, 9, 69, -991, 39, + -989, -992, -995, -996, -997, -998, -999, -988, + -983, 34, -978, -1001, 32, -1003, 32, 34, + -1009, 32, -1007, -1008, -1021, -1010, -1013, -1016, + -856, -1014, -907, -1020, 170, 166, -1018, 167, + -360, 250, 170, -1028, -1029, -1030, -1031, 9, + 250, -1034, -1035, -1036, 39, 59, 39, 85, + -1032, -1042, -1043, -1044, -1045, 36, 215, -1048, + 190, 122, -1051, -910, 69, -1052, -1053, -1056, + -1057, -1058, 39, 73, -1061, -1062, 39, 187, + 62, -1066, 20, -1068, 183, -1044, -1039, -1064, + -1071, 183, -970, 69, 249, -1078, -1079, -1080, + -1081, 79, -421, 122, -453, -1083, 169, -1070, + -1085, 76, -1091, -1092, -1093, -1094, -1095, -424, + -1089, -1096, -400, -1097, -452, -1180, -1099, 184, + 99, -1086, 250, -1106, -1109, 36, -1111, -1112, + 249, -1114, -1115, 77, -830, 167, 84, -1120, + 99, -453, -1089, 62, -1125, -1126, 36, -1045, + -1123, -1128, -1131, -1132, -1133, -1134, -1135, 36, + -1137, -1138, 32, -1129, -1138, 55, -1143, 32, + 99, -1146, 39, -854, 153, -1150, -1151, 90, + 195, -1154, 169, -1089, -1157, -1158, -1159, 77, + 55, -854, -1160, -1162, -1165, -1146, 246, -1166, + -1151, -1167, -1171, -1172, -1173, 99, 219, -1176, + 195, 159, -1179, 120, -1206, 153, -1181, -1184, + -1185, -1186, 249, 55, -1189, -1190, -1191, 83, + 195, -1194, -1144, -1187, -1195, -1144, 76, -1200, + 249, -1173, -1187, -1204, -1205, 77, -4051, -1202, + -1207, -1210, -1211, 169, -1213, -1214, -1215, 20, + -1208, -1218, 51, -1073, -983, 191, -1223, -1215, + -989, 62, 21, -1225, -1229, -1230, -1231, 83, + -1233, -1234, 169, 187, -1237, 183, -1227, -1240, + -1241, -1086, -1238, 183, 153, -1246, -1247, 183, + -1244, 203, -1251, -1252, -1253, -1254, 79, 203, + -1257, 183, -1248, -1260, -1261, 169, 55, -4360, + -1262, -1264, 115, -1268, -1269, -1270, -1271, -1272, + -1273, -1274, 113, -1276, -1277, 21, -1279, 39, + 88, 112, 21, -1215, -1265, -1286, -1282, -1284, + -1289, 21, 33, -1063, -1290, 153, -1295, -1296, + -1297, -1298, 39, 68, 68, -1302, -1303, -1304, + -1305, -1306, 47, 90, -1309, -1310, 68, 112, + 145, -1314, -1315, 68, 113, -1318, -1319, -1320, + 61, -1312, -1281, 55, -1323, -1326, 88, -1281, + -1324, 246, -1331, -1332, -1333, -1334, 68, 90, + -1337, -1320, -1329, 105, -1335, -1338, -1315, -1341, + 119, -1346, 90, 166, -1349, -1350, -1351, -1352, + -1353, -1354, -1355, 54, -1343, -1315, 246, 113, + 68, -1362, -1363, 61, 113, -1358, -1367, -1368, + -1369, 54, 144, -1372, 141, -894, -1364, -878, + 141, -1378, -1379, -1380, 56, 61, -1383, -1384, + 10, 66, -1387, 56, -1375, 61, -4971, 55, + -1391, -1394, -1395, -1396, 61, -1398, -1399, 47, + 97, -1335, -1392, -1402, -1405, -1406, -1407, -1408, + 10, 160, -1411, 97, -547, -1414, -1415, 47, + 153, -4381, -1416, -547, -1421, -1422, 47, 97, + -1363, -1419, -1425, -1428, -1429, -1430, -1368, -1417, + -1426, 159, -1411, 153, -1437, 68, 26, 61, + -1441, -1442, 68, 105, -1438, -1446, -1447, -1448, + -1449, 18, -1451, 113, 55, -1454, -1455, -1456, + -1457, -1458, 68, 83, -1461, -1462, -1463, -1464, + 47, 189, -1467, 97, -1437, 246, -1469, -1472, + 47, -1474, -1475, -1458, -1470, 90, -1479, -1459, + -1476, -1477, -1480, -1482, -1485, 90, -1431, 138, + 130, -1490, -1491, -1492, 68, -1369, -1488, 56, + 252, -1498, 54, -1486, -1496, -1500, -1503, -1504, + -1505, 18, 19, -1508, 83, -1506, -1511, -1512, + 54, -1282, -1509, -1514, -1369, 250, -1517, -1520, + 77, -1522, -1523, 18, -1518, -1526, 83, 175, + -1529, -1530, -1531, -1532, -1533, -1534, -1299, 130, + 119, 105, 119, -1540, -1541, 90, 105, 187, + -1545, -1546, 18, -1231, -1535, 122, -1551, 18, + 56, 69, -1553, -1556, -1557, -1522, -1552, -1554, + -1559, 187, -1525, 141, -1560, 34, -1561, -1565, + -1569, 90, -1567, -1298, 130, -1574, -1575, -1576, + -1577, -1578, 83, -1549, -1581, 90, 34, -1717, + -1582, 175, -1548, 54, -1585, 34, -1591, 20, + -1063, -1589, -1595, -1596, -1597, -1598, -1599, -1600, + -1601, -1602, 39, 112, -1059, -1593, -1605, -1059, + -1488, -1610, -1611, -1062, -1506, -1612, 73, -1587, + -1613, -1616, -1619, -1620, -1621, 73, -1617, -1326, + -1622, -1626, -1627, 73, 88, 190, 34, -1632, + -1633, -1634, -1635, -1636, -1637, -1638, -1058, 26, + -760, -903, -1001, -1642, -1645, -1646, 47, -771, + -1615, -1647, -1649, 39, 90, 47, 88, -1656, + -1657, -1658, 47, -1650, 103, -1662, -1663, 81, + -1654, -1659, -1667, 95, -1665, -1670, -1671, -1672, + 39, -1668, 120, -1581, 69, -1676, -1679, -1680, + -1681, -1682, -1384, 182, 95, -1422, 159, 33, + -1689, -1690, -1363, -1687, -1691, 88, -1695, -1696, + 88, -1698, -1684, 33, -1701, 73, 112, -1704, + 73, 69, -1707, 59, -1705, -1710, -1711, -1704, + -1708, -1714, -1658, 204, 175, -1839, 69, -1718, + -1604, -4994, -1719, 182, -1725, -1726, 103, -1716, + -1729, -1730, -1731, 73, 155, -1734, 120, -1736, + -1737, 47, -1414, -1721, 34, -1740, -1743, 120, + -1741, -1746, -1747, 95, -1744, -1370, -1748, -1750, + -1753, -1754, -1755, -1756, 39, -1758, -1759, -1760, + -1761, -1762, 47, 95, 174, -1766, 47, 159, + -1769, 92, 155, 95, -1773, 81, 95, 69, + 39, -1778, -1779, -793, -1775, -1780, -1783, -881, + 246, -794, -1001, -1786, -1789, -1790, 73, -1419, + -1726, -1791, -1793, -1796, -1797, -1798, -1799, 10, + 92, -1802, 47, -1794, 10, -1806, -1807, -1737, + -1803, 95, -1811, 92, -1813, 92, -1808, -1816, + -1817, -1818, -1205, -1814, -1821, -1459, -1819, -1822, + -1825, 120, 181, -1828, -1829, -1830, 47, -1832, + -1205, -1496, 98, -1836, -1477, 125, 98, -1846, + 91, -1840, -1843, 39, -1464, -1841, -1913, -1845, + 181, -1850, -1851, -1159, -1699, -1854, -1855, -1856, + 249, 77, -1859, -1860, -1861, -1862, 249, 125, + -1825, 91, -1865, -1862, 201, 181, -1871, -1459, + -1869, 125, -1825, -1873, -1875, 83, 49, -1880, + -1832, -4994, -1878, -1882, -826, -1883, -1885, -1888, + -1646, 181, 33, -1892, -1893, -1894, -1895, -1464, + -1890, 92, -1899, -1464, -1896, -1900, -1881, -1901, + -1903, -1463, -1902, 49, -1907, -1906, -1908, -1910, + -1785, 54, 217, 181, -1915, -1918, -1897, 125, + -1919, -1920, -1923, -1924, -1925, -1926, -1927, -1928, + -1929, -1930, 7, 45, -1933, 81, -1930, 225, + 88, -1938, -1939, -1940, -14, 100, 217, 7, + -1945, 73, -1942, -1614, 100, -1950, 88, -1948, + -1953, -1954, -1955, -1931, -1951, 78, -1956, 73, + -1961, -1962, 78, -1964, -1627, 98, -1965, -1968, + 78, -1970, -1971, -1972, -1973, 42, 50, 190, + 78, -1978, -1979, 88, 78, -1982, 93, -1984, + -1985, 249, -1987, -1988, -1989, 35, 93, -1992, + 78, -1966, -1995, -1996, 42, 98, 61, -1907, + -1999, 88, -2003, -2004, -2005, -2006, 37, -2000, + 17, -2007, -2009, -2012, -2013, 45, 233, -2008, + 254, 252, -2019, 78, -2021, -2022, -2023, -2024, + -2025, -2026, -1931, -2017, -2027, -2030, -1663, 233, + 93, -1693, -1915, 251, -2037, -2038, -2039, 73, + -2035, 95, -2040, -2044, -2045, 81, -1948, 128, + -2046, -2050, -2051, -2052, 45, -2048, -2053, -1626, + -1363, 49, -2057, -2060, 7, -2062, -2063, 45, + -1790, -2058, 144, -2068, -2069, -2070, -2071, -2052, + -2065, 113, -2072, 198, 61, -1628, 201, -2080, + -2081, -2082, 61, 66, -1848, 66, -2087, -2088, + -2089, -2090, -2091, -1682, -2143, -2084, 198, -1385, + -2094, -2098, -2099, 45, -1837, 66, -2103, 45, + -2105, -2106, -2107, -2108, -2109, 37, 93, -2112, + 66, -2100, -2115, -2116, 45, -2113, -4384, -1527, + -2119, -2122, -2109, 251, 163, -2110, -2123, 252, + -2129, -2013, -2127, 95, -2133, -2134, -2135, 10, + 95, -2112, 130, -2140, -2116, -2138, -2141, -2228, + -2142, -2146, 7, -1848, -2149, -2150, -2151, -2152, + -1408, -1527, -2153, -4880, -1527, -2156, -1684, -1848, + 27, -1811, -2160, -2162, -2165, -2166, -2167, 10, + -2163, -2170, -2136, -2168, -2173, 163, 193, -2176, + 155, -2171, -2179, 18, 249, 97, 163, -2184, + -2185, -2186, -2187, -2188, -2189, -2190, -2191, -2135, + -2177, 141, -2112, -2192, 130, -2198, -2199, 56, + 27, 66, -2135, -2200, 97, -1385, -2203, 252, + 141, -2210, 249, -2212, -2213, 249, -2193, 252, + -1376, -2017, -1372, 181, 27, 249, -2220, -2224, + 249, -2208, -2222, -2122, -2311, -2226, -2229, -2193, + -2230, 214, -2235, -2236, -2237, -2238, -2239, -2240, + -2241, 35, 198, -2244, 42, -2242, -2247, -2248, + 35, -2250, -2251, -2252, -2253, -76, 100, 163, + -2257, 93, -2254, -2260, -133, -2219, -2254, -4783, + -2262, -2220, 7, -2268, -2269, -1989, -2265, 57, + -1996, -2270, 251, -2271, -2274, -2262, -2279, -37, + -2277, -2282, -2283, 42, -2280, -2286, -2287, -2288, + -2289, -37, 98, 93, -2290, -2294, -81, -2292, + -2295, -2257, -2296, 125, 133, -2302, -2303, -77, + 198, -2306, -2307, -76, 100, -2308, -2253, -4891, + -2309, -2312, -2315, 95, -2317, 155, -2313, -1663, + -1914, -2322, 59, 81, -2325, -80, 125, -2326, + -84, 98, -2329, -2332, -2333, -2334, -2335, -118, + -2330, -1948, -2339, 249, -2341, -524, 98, -2344, + -84, -2342, -2345, -2317, -2346, 106, 106, -2352, + -2353, -2354, -2266, 100, -2355, 249, -2359, 249, + 155, -2362, -132, 61, -2356, 98, -2365, 249, + -2366, -2370, 77, -796, -2368, -2094, -2375, -2376, + 73, -2378, 59, 73, -2381, -2382, -2383, -2384, + -80, -1535, 117, -2385, -793, 198, 125, -2392, + -881, -2390, -2393, -840, 250, 106, -2399, -2400, + -2401, -2323, -2397, 95, -2405, -2315, 98, -2406, + -2439, -2407, -2409, -2412, -1809, 201, 117, -1726, + -2413, -2418, 81, 204, -881, -2390, -2421, -2424, + -2425, -2426, -2427, -2428, -2429, -2430, 14, 248, + -2433, -2434, -2435, -2436, -2437, -2438, 35, -1355, + -1865, -2440, -2271, -2441, -2445, 57, 248, -2448, + -2449, 93, 106, 254, -2182, -2450, -4381, 91, + -2455, -2357, -2456, -2460, -2461, -2462, -2438, -2458, + 57, 91, -2465, -2468, 81, -38, -2466, -2464, + 250, -2474, -2475, -2476, 77, -2478, -2479, -2480, + 81, 117, -2483, 95, -2472, -2484, -2487, -2488, + 93, -2485, -2491, -2492, -2493, -2494, -2495, -2496, + 249, 155, -2326, -2500, -2501, -2502, -2167, -2123, + 217, -2483, -2390, -2450, -2509, -2510, 92, -2507, + -1344, -2329, -2513, 155, 250, 254, -2167, -2516, + -2521, -2496, -2519, -2413, 121, 40, 251, -2528, + -2529, -2530, -2531, -2430, 63, -2532, -2496, 40, + -2535, -2538, -2539, 249, 92, -2542, -2543, -2544, + 77, -2510, -2536, -2546, -844, -2547, -2549, -2482, + -2524, -2550, -2553, -4919, -1316, 129, 106, 128, + 98, -2560, -2563, -2564, -487, 91, -1186, -2565, + -2567, -2570, -2210, -2568, 106, -2544, 91, -2510, + -2574, 97, -2579, -2580, 18, -1186, 129, -2584, + -2585, 249, 97, -2588, 97, -2574, 63, -2592, + -2593, -2594, -2595, -2596, -2597, -2598, -2599, -2600, + -2601, -2602, 52, 60, -2605, -2606, -735, -2590, + -2607, -2603, -2608, -2610, 82, -403, 21, 60, + 96, -2614, -2619, -2620, -2621, -2622, -2623, -371, + -2617, 179, -311, -1914, -2535, -2630, -2631, 52, + 40, -4381, -2632, -2634, -2637, 52, 38, -2640, + -2641, -2642, -2643, -2644, -2645, 15, -2647, 53, + 96, -1965, -2651, -2652, -2638, -2649, 209, -2656, + -2657, -2658, -2659, 53, 104, -2662, 96, 41, + -2665, -2666, 82, -2663, -2633, -2667, 40, -2659, + -2670, 107, -2672, -2676, -2677, 53, 104, 179, + 38, -2682, 107, 91, -2685, -2686, 38, 96, + -2683, -371, -2688, -2692, -311, -2663, 210, -313, + 49, -2696, -2699, -2700, -2631, 129, -2703, -2704, + 60, -2692, -2668, 41, -2707, -313, -2708, -2712, + -2602, -1878, -229, -2706, 41, -2716, -2719, 60, + -2717, -2722, 60, 96, -2725, -2726, 15, -2728, + 15, 53, 89, -2732, -2733, -61, -2715, -1878, + 40, -2976, -2736, -2738, -2741, -2742, -370, 113, + -2739, -2744, -2747, 36, -2745, -2750, -2751, 36, + 91, -2754, 52, 49, -2757, -2758, -2759, 36, + -2761, 164, -2755, 210, -2747, -2762, 255, -2768, + -2769, -2770, 52, 143, -2773, 60, 164, -2776, + -2777, -2778, 30, 52, 210, -2782, -2631, -2574, + 164, -2704, -2716, -2786, -2789, 30, 164, -2792, + -2793, -2794, -2795, -2796, -2797, -2798, 23, 79, + -2801, -2802, 79, -2787, -2805, 169, -2803, -2808, + -2809, -2810, -2798, -2806, 253, 143, 127, -2816, + -2817, -2818, -2819, 23, -2730, -2811, -2823, 23, + -2821, 137, -2827, -2805, 246, -2830, -2831, -424, + -2828, -2832, -2833, -2836, -391, 181, -2839, -2840, + -2841, 24, 143, -2837, 33, -2844, -2847, -2848, + -2849, 205, -2851, -2852, -2853, 15, 38, 107, + -2857, -421, -2837, -1716, -422, -2859, 204, -2864, + -2865, -2866, -2728, -2862, 135, -2730, -2867, 175, + -2873, -2874, -2730, -2138, -2868, -2875, -2879, -2855, + -2877, 201, -2883, 135, -2837, -2886, -2887, -2888, + -2889, -2890, -2891, -351, -1716, -2894, 24, -2892, + -2897, 24, 107, -2900, 16, -2895, -2903, -2682, + 174, -2906, 143, 114, -2909, -2897, -2907, 179, + -421, -2910, 143, -2916, -2917, -2918, -2919, -2920, + 28, -2907, -2751, -1687, -2923, -1135, 114, -2928, + -2929, -2930, 28, 143, -2933, 127, 33, -2936, + 28, 127, -2939, -2940, -2941, -2900, -2934, -2944, + 127, -2942, -2905, 144, -2881, -1687, -2784, -2949, + -1687, -2954, -2955, -2956, 36, -2952, -2959, -2960, + -2961, -2962, -2963, 23, -2965, 32, -2967, -2968, + -2969, -2823, -2957, -2972, 183, -2970, -2975, -2801, + -3060, 212, -2419, -2413, 183, -2982, -2983, -2984, + -2920, -2979, -2096, -2988, 36, 204, 175, -1135, + -2990, -2992, -2995, -2996, -2799, -2993, 114, -3000, + -3001, -3002, 28, -2998, 253, -3006, -3007, -3008, + 79, 94, -3003, 79, 250, -3014, 51, -3016, + -1218, -3012, -3017, -3020, 94, -3018, -3023, -3024, + -3025, -3026, -3027, -3028, -3029, -3030, 15, -2659, + 114, -256, -3032, -3036, -3037, -3038, -3039, -3040, + 53, 165, 142, -3044, -3045, 126, -3034, -3042, + -2455, -3048, -3051, -2719, -3049, 201, -3427, 114, + -3055, 33, -3059, -3051, -3069, -3057, -3061, -3064, + -2704, -3062, -1699, -3068, 179, -3148, 33, -3070, + -3073, -3074, -2784, -3071, 69, -3078, 165, -3076, + -2784, 201, 33, -3084, -3085, 248, -3087, -3088, + -3089, -3090, -3040, 174, -3076, -231, 62, -3094, + -3097, -3098, 96, -3095, -231, 33, -722, -1363, + -3101, -3104, -3105, -3108, -3109, -3110, 60, 134, + 62, 104, -3112, -3116, -3117, -3118, -3119, -3120, + -3121, 50, -3123, -230, -3114, 202, -227, -3124, + 250, -3130, 50, 202, -3133, 248, 150, -3128, + -3137, 186, 156, -3140, 202, -3142, -3143, -3144, + -3145, 60, 164, -3123, -3219, -3135, 40, -2719, + 114, -2683, -3155, -20, -2696, -2761, -3156, -2790, + 40, -3160, -3163, -3164, 28, 215, -3167, 164, + -3161, -3170, -3171, -3172, 150, -3174, -3175, -3176, + 60, 156, -3179, 142, 33, -3182, -3183, 74, + 49, -1387, 49, 33, -3178, -3185, -3187, -3190, + -3193, 150, -3191, -3196, -3197, -3198, -3151, -3189, + -3194, -3200, -3042, -3201, -3203, -3206, -231, 114, + -3207, 142, 129, -3212, -3213, -227, 48, -3214, + -3199, -3215, -3217, 75, -3160, 145, -146, 137, + -3223, -3226, -3227, -3145, 129, 74, -3228, -3232, + -3233, -2719, -3230, 164, -3237, 156, -3235, 137, + 40, -3242, -3243, 156, -3240, -3244, 60, -3245, + -3249, -3250, -3251, -3252, -3253, -3254, -3255, 15, + -3257, -3258, 23, 135, -3261, 24, 18, -3262, + -3265, -3266, -3267, -3268, -3269, -3270, 23, 253, + -3273, 151, -3275, 127, 246, 176, -3276, -3278, + -3281, -3282, -3283, -3284, -3255, -3279, 89, -3288, + -3289, 67, -3291, 89, 151, -3291, -3207, 176, + 127, -3295, 40, -3298, -3301, -3302, -3303, -3304, + 15, 96, -3307, 53, -3309, -3310, -3311, -3312, + -3313, -3314, -3315, 15, 107, 89, -3319, -3320, + 53, -3299, 49, -3324, -2677, -3298, 126, -3328, + 89, -3325, -3331, -3332, -3333, 15, 126, 165, + -3337, -3338, -3339, -3340, 15, -3334, -3329, 151, + -3317, -3342, -3347, -3348, -3349, -3328, 145, 49, + 127, -3351, -3296, -3353, 33, -3358, -3359, -3326, + -3356, -3360, -3363, 135, -3365, 127, 66, -3361, + 246, -3370, -3371, -3372, -3373, -3258, -3368, 143, + -3377, -3365, -3374, -3378, -3381, 143, 174, -3384, + -3385, -2944, 114, -2934, 164, -3387, -3391, -2905, + -3366, 145, -2926, -3078, 48, -3074, -1339, -3396, + -3399, 165, -2942, -3404, -2930, -3055, 253, -3408, + -3409, -2937, 48, -3410, -2813, 62, -3406, 48, + 157, -3418, -2937, -3415, 151, 127, -3423, -3424, + -3425, -3426, -3319, 56, -3419, 114, -3431, 60, + -2934, 60, 126, 60, 142, -3438, -3439, -3440, + 31, -3442, -3443, -3444, -3445, 67, -3291, -3187, + 205, -3450, -3451, 74, -3447, 74, 74, -3452, + -3457, -3458, -3459, -3460, 31, 142, -3463, 74, + -3455, -3466, 67, -3427, 55, 145, -3471, 74, + 33, -3474, 74, -3476, -3477, -3478, -3289, -3472, + 126, -3286, -1323, -3286, -3482, -1312, -3487, -3483, + -3467, -2934, -3489, -3492, -3493, 127, -3490, -3292, + -3494, -3496, 55, -3500, -3501, -3502, -3503, -2677, + 246, -3504, -3507, -3508, -2773, -3505, -3509, -3488, + -3510, -3512, -3334, -3513, 142, -3518, -3471, -3515, + 142, -2701, -3516, 91, 156, -3526, -3527, -2930, + -3523, -3240, -2565, -3532, -3533, -3534, -3328, 129, + 63, 126, -3536, -3538, -3541, -3463, -3539, -3544, + -3421, 91, 151, -3548, -3549, 156, -3551, -3385, + -3511, -3545, -3553, -2774, 48, -3556, -3559, 157, + 164, -3562, -3563, -3564, -3565, -3566, -3567, -3568, + -3569, -3570, 5, -3572, 12, 108, -3575, -3576, + 64, -3557, -3579, -3580, 71, 108, -3577, -3584, + -3585, -3586, -3587, 58, 115, -3580, 40, -3590, + 101, 58, -3595, 101, -3597, -3598, 12, 21, + -3581, -3599, -3601, -3604, -3605, -3606, 5, -3608, + -3609, 8, 43, 12, -3613, -3614, -3615, -3616, + -3617, 8, -3619, 12, 79, 250, 79, -3621, + 8, 43, -3627, -3628, -3629, 58, -3587, 63, + 131, 131, -3635, -3636, -3637, -3638, 5, 118, + -3641, -3642, -3643, 5, 147, -3646, 131, -3631, + -3633, 40, 161, 123, -3653, -3580, -2455, 63, + -3657, -3658, -3659, -3660, -3661, -3662, 5, 8, + 12, 12, 123, -3668, -3617, -3655, -3664, -3669, + -3673, -3674, -3617, 48, -3677, 43, -3679, -3680, + 43, 111, -3683, -3684, 43, 199, 111, -3675, + -3689, -3690, -3691, -3692, 64, 108, 101, -3696, + -3697, -3698, -3699, 12, 123, -3693, -3687, -3702, + -3572, -3703, -3707, 5, 40, -3710, -3666, -3708, + 230, -3714, 199, -3716, 207, -3711, -3719, -3720, + -3721, -3722, -3723, -3707, -3717, 118, -3727, 8, + 62, -3728, -3731, -3732, 118, -3734, -3735, -3736, + -3737, 111, 171, -3740, -3741, -3725, 188, 186, + -3738, -3523, 48, -3172, -3746, 171, -3743, -3748, + -3753, -3666, -3751, -3743, -3754, -3415, 186, -3760, + -3761, -3762, -3763, -3764, 51, 94, -1123, -3768, + -3769, 64, 101, -3772, 94, -3774, -3775, 64, + 94, -3778, -3779, -3780, -3781, -3164, -1141, 207, + -3785, 64, -3782, -3785, 48, 191, -3791, -3692, + -3788, 94, -3792, -3793, -3794, 253, -3799, -3800, + -3619, -3796, 108, -3804, -3805, -3806, -2802, -3801, + 139, -3810, 94, 94, -3811, -3807, 108, -3816, + -3817, -2936, -3813, -3795, -3869, 246, -3821, -3824, + 139, -3822, -3693, -3012, -3699, 91, -3829, -3832, + -3833, -3834, -3835, -3836, -3837, -3838, -3839, -3840, + 31, 199, 171, -3844, -3845, 157, -3094, -3846, + -3849, -3850, 111, -3847, 91, -3854, -3855, -3856, + 74, 157, -3829, -3860, 111, 48, -3863, -3864, + -3865, -3866, -3867, 43, -3861, -1320, -3868, -3870, + -3860, -3871, 139, -3876, -3877, -3878, -3879, 43, + -3873, -3844, -3944, -3728, 48, -3886, 171, -3884, + -3889, -3890, 157, 62, -3738, 21, -3893, 43, + -3894, -3898, -3899, -3900, -3854, -5072, -4439, -3896, + -3903, -3904, -3907, -3908, 156, -3857, -3905, -3910, + -3913, 74, -3915, 171, 199, -3918, -3919, 156, + -3911, -3922, -3923, -3924, 127, 196, -3927, 157, + -3925, -3927, 187, 211, -3785, 20, -3935, -3936, + -3890, -3933, -3937, 18, -3941, -3685, -3939, 250, + -3950, 20, -3933, -3948, -3949, -3459, 21, -3946, + -3951, 150, -3474, -3952, -3461, -3955, 188, -3960, + -3961, -3962, -3963, -3913, 196, -3919, 21, -3966, + -3969, -3919, 196, 21, -3973, 186, -3975, -3976, + -3193, -3971, -3977, -3177, 196, 235, -3983, 156, + -3893, -3984, -3987, -3988, -3989, 8, -3991, -3992, + 79, -3994, -3995, 139, -3997, -3866, -4783, -3742, + -3999, -4002, 139, -3893, -3849, -3998, -4003, -4006, + -4186, -4007, -4009, -3808, 228, 220, -4015, -4016, + 74, -4018, 31, -3466, -4013, -3460, -3980, -3549, + -3966, -4026, -4027, -4028, -4029, -4030, 127, 67, + -4033, -4034, -4035, 31, 157, -3546, -4024, -4040, + -3445, 119, -4041, -3292, 25, -4044, -4047, -4048, + -4049, 31, -4045, 21, -4053, -4054, -3451, -4051, + 199, -4055, -4059, -4060, 127, -4057, -4063, -4064, + -4065, -4066, -3493, -4061, -3925, -3295, 246, -4070, + -4073, -4036, -4070, -3958, 137, -3495, 128, -4076, + -4079, -4078, 25, -4082, -4085, -3845, -4083, 234, + -3841, -4086, 188, -4092, -3451, 137, -3860, -4093, + -3850, -1551, -4097, -4100, -3451, -4098, 246, -3275, + -4102, -3295, -4104, -4106, -4109, -4110, -4111, -4112, + -4113, -4114, -3164, -4107, -4115, 25, -4119, -2933, + 18, 157, -4120, -4124, -3421, -4122, 253, -4128, + -4129, -3781, -4081, -4125, 106, -3916, 250, -4134, + -4137, -4138, 157, -3916, 48, -4142, -3797, -2614, + -4143, -4138, -4144, 173, 127, -4150, -4151, -4152, + -3992, -4147, -4155, -3995, 220, 180, 253, 253, + 151, 176, -4163, -3611, -4157, -4166, -4167, -4168, + 43, 63, -3824, -4169, -4171, -4174, -4175, -4176, + -4002, 63, 207, -3841, -4177, 253, -4180, -4184, + -3797, -4051, 158, -4185, 63, -3844, -4219, -4188, + 21, -4161, -4192, -4194, -4197, -4198, -4199, -4200, + -4201, -4202, -4203, -4204, -4205, -4206, -4207, -4208, + -4209, -4210, 17, 85, -4213, 70, -3536, -4216, + -4217, 37, -3556, -4041, -4218, -3415, -4223, -4210, + 21, -4224, -4225, 61, -4226, -4230, -4231, 37, + 45, -4234, -4235, 37, 45, -4216, -4782, 40, + 41, -2052, -4240, -4242, -4245, -4246, -2071, -4238, + -4076, 137, -4211, -2701, -4251, -4254, 66, 91, + -4257, -4258, 61, -4260, 61, -4255, -4263, 66, + -4265, -4266, -4267, -4268, 17, 61, -4269, 41, + 45, -4271, 17, 41, -4277, -4278, -4279, -4280, + 17, -4275, 70, 41, -4285, -4286, 17, 88, + -2052, -4283, -4289, -4292, -4293, 17, -4177, -4972, + 173, 40, -4299, 78, 93, -1968, -4297, -1975, + -3535, -4306, -4307, 37, -4309, -4310, 37, -4312, + -4313, -4314, -4315, -4316, -4317, 37, 70, 78, + -2019, -4271, -4323, -4324, 85, -4321, 251, -4328, + -4329, -4330, -2006, -4297, 254, -2193, -4331, -4334, + -4337, -4338, -4339, 17, 85, -4342, 37, -4335, + -4345, -4346, -4347, -4348, 37, -4324, -4343, -4350, + 37, -4354, -4355, -4348, 40, 40, -4359, -4360, + 121, -4348, 25, -4352, -4362, 218, -4367, 121, + -3262, -4370, 254, -4368, -4373, -4374, -4339, -4371, + -4377, 254, -4379, -4380, -4381, 56, 193, -4384, + 141, -4386, -4387, 66, -4375, 166, -3746, -4339, + -4390, -4394, 121, 185, 254, -4398, -4399, -2201, + -4392, -4400, -4401, -4404, -4405, 17, 21, 180, + 133, -4410, 61, 85, 152, -4263, 251, -4340, + -4414, 251, -4419, -4420, -4421, -4422, -4423, 78, + -4417, 98, -4427, -4428, -4429, -4430, -4431, -2438, + -4425, 133, -4132, -1973, -4434, -1957, 98, 113, + 250, -4440, -1974, 149, -4443, -4446, -4447, -4448, + -4449, 17, -4451, -4452, -4453, -4454, -4455, 35, + -4457, 70, 78, -4460, -4235, 173, -4439, -4461, + -4463, -4466, -4310, -4443, -4467, -4470, 70, -4468, + -4473, -4470, 158, 78, -4474, -4455, -4444, -4480, + -4481, 35, 180, -2017, 158, -4484, -4487, -4488, + -4489, 37, 251, -4489, 149, -4494, -4495, 17, + 70, -4352, -2560, -4498, -2017, -4499, -4503, -4504, + 251, -4506, 254, -4508, 226, -4510, -4511, -4512, + -2006, -4501, 158, 78, 251, 141, 78, -4318, + -2558, 18, -4523, -4352, 98, -4524, -4527, -4504, + 21, -4528, 141, -4532, -4533, -4534, -4535, -4536, + -4537, -4538, -4495, -4188, 100, -4542, 98, -2350, + 98, -4546, -4547, 98, -4549, 100, 133, -4552, + -4553, -4554, -4555, -4556, 70, 251, -4559, 100, + -2532, -4562, -4563, -4496, -4560, 136, -4564, -4568, + -4540, 220, -4407, -4572, 251, -4574, 70, -2342, + -4577, -4578, -4579, -4574, -4575, -4580, -2254, 41, + -4583, 141, -4584, 217, -4589, 70, -2716, -4592, + -4495, -4590, -4593, -2274, -4560, -2035, -2535, -4600, + 254, -4598, -4603, -4604, -4605, -4606, -4607, -4608, + 17, 136, -4611, 133, 41, -4614, -4615, 98, + -4612, -5003, 40, -4618, -4621, -4622, -4623, -4624, + 85, -4619, -4625, -4628, -4629, -4630, 128, 158, + -4633, 136, -4635, 133, -4626, -4855, -4636, -4640, + -4633, -4600, 173, -4644, -4645, -4646, -4647, -4648, + -4495, -2825, 185, -4565, -1965, -2707, -4655, -4656, + 85, -4565, -4653, -4660, -4661, -4662, 17, 158, + -4665, 152, 173, -4624, 185, -4670, 152, -4672, + -4547, 149, -4675, 98, -4673, -4678, 136, 209, + 98, -4682, -4683, -4684, -4685, -4656, -4680, 136, + -4689, 121, 98, -4692, 85, 121, -4695, -4696, + -4340, 41, -4697, -4412, -4698, -4700, -4701, -4704, + -4705, -4706, -4707, 121, -4650, -2654, -2345, -4712, + -4565, 225, 209, -4637, -4461, -4583, -4707, 41, + -4719, -4722, -4723, -4724, -4417, -4720, 121, -4728, + 136, -4666, -2535, -4732, -4490, -4730, 121, -4736, + -4737, -4707, -4733, -4738, -4370, -2035, 40, -4742, + -4745, -4746, -4747, 106, -4749, 17, 133, 149, + -4753, -4754, -4755, -4756, 70, 41, -4759, 133, + -4757, -1975, -4760, -4762, -4715, -4763, 149, -4768, + -4769, -4770, 21, -4772, -2300, -4766, 21, 250, + -4777, -4778, -4779, -4780, 17, -4782, 61, 85, + -4785, -4608, 149, 88, -4789, 61, -4615, -4792, + -4793, -4794, -4608, -4790, 251, 136, -4799, -4800, + -4210, -4408, 158, -4787, -4557, 158, 136, -4808, + 85, 133, -4811, -4812, 128, -2035, -4815, -4816, + -4817, -4556, -4813, -2123, -4806, -4822, 85, -4458, + -2337, -1976, -4824, -4458, -4826, -4830, -4831, -4832, + -4211, -2342, 128, -2073, -4833, -4836, -4839, 251, + -4841, 251, -4843, -4834, -4837, -4844, -4845, -4848, + -4849, -4850, -4851, -4852, -4853, -4854, -4855, 54, + 128, -4858, 119, -4846, -4782, -4147, -4863, 75, + -4612, -4866, -4867, -4868, -4869, 18, 75, -4872, + -4873, 25, 149, 196, -4877, -4878, -4863, 98, + 121, -4879, -4693, -4881, 75, -4886, -4887, -4888, + -4889, 18, -4891, 54, 75, 75, 54, -4896, + -4897, -4894, -4884, 152, -4901, 75, -4044, -4764, + -1523, -4904, -4907, -4908, -4909, -4910, 75, -4905, + -4913, -4914, -4915, 121, -4070, -4903, -4916, 18, + -4921, -4922, -4923, 136, 173, -4926, -4673, 137, + -4927, -4930, -4931, -4910, -4673, -4757, -4665, -4933, + -4937, -4938, -4939, -4812, -4935, -4618, -4786, -4941, + -4618, -4946, -4687, 137, -4949, 149, -4873, -4952, + 128, -4954, 128, -4950, -4957, -4786, -4955, -4960, + -4961, 25, -4958, -4964, 75, -4443, 121, -4966, + -4969, -4970, -4971, -4972, 128, 75, -4443, -4973, + -4917, 137, 25, -4980, -4443, -4978, 121, -4474, + -4982, -4950, -4987, -4467, -4976, -4985, -4899, -4989, + -4993, 152, 18, -4996, -4997, -4998, -4999, -1551, + -4994, -5000, -5003, -4044, -5001, -5004, -4892, -5005, + -5009, -5010, -4919, -5007, -5013, -5014, 75, -5011, + -5015, -5018, -5019, -1551, -5016, -1538, 196, 97, + -1542, 21, -5025, -5028, -5029, 25, -4988, -5026, + -1546, -5034, -4443, -5032, 98, -5035, -5039, -5040, + -5041, -5042, -5043, 56, 187, 196, 250, -5046, + 54, 61, -5051, -5052, -5053, -1504, 97, -5047, + 21, 97, -5059, -5060, -5061, -5062, 54, -5056, + -5065, 56, -5063, -1498, -5066, 75, -1498, -1223, + 21, -5074, -5075, 18, 54, +}; + +static long _vq_ptr1_lsp32_1[] = { + -4196, -2591, -1267, -783, -332, -193, -142, -68, + -47, -34, -31, -17, -16, -15, 255, 255, + 255, -25, -22, -16, 255, 4, -16, 255, + 4, -29, -16, -21, 4, 255, 178, -33, + -21, 255, -42, -39, -38, 178, 178, -38, + 178, -27, -44, 146, -16, 255, -41, -60, + -58, -53, -52, 52, 52, -55, 231, -57, + 255, 255, -57, 231, -64, -63, -54, 255, + -65, -63, 154, 154, -110, -71, -66, -92, + -83, -78, -77, 178, 236, 178, -77, -81, + 236, 236, 154, -85, 236, -89, -88, -66, + 236, -88, 236, -70, -103, -96, 81, 229, + -100, -99, 229, 229, -99, 229, 4, -107, + -1021, -28, 4, -16, 255, -28, -138, -123, + -116, -115, -105, 229, -89, -88, 236, -91, + 128, -62, -46, -131, -128, -127, 154, 236, + -127, -122, 154, -128, -127, 236, -130, -104, + 138, 154, 229, -141, 221, 221, -148, -147, + -146, 202, 202, 248, -150, -134, -184, -165, + -164, -161, -158, -115, 229, 154, -115, 229, + -67, -99, 122, -149, 248, -177, -174, -39, + -38, 178, -129, -384, 192, 192, -176, 221, + 221, -181, -180, -172, 178, -180, 200, 200, + -188, -187, -182, 221, -190, 248, -187, 221, + 200, -278, -258, -213, -203, -202, -200, 178, + 96, -182, 96, -212, -115, -209, -208, -186, + 229, 194, 200, -182, 194, -237, -234, -228, + -226, -223, -222, -221, 194, 194, 210, 178, + 210, 194, 178, 210, -232, -231, 210, 210, + 134, 148, -236, 134, 134, -249, -236, -247, + -244, -187, 221, -211, -187, -207, -27, 194, + -21, -251, -246, -254, 134, -179, 134, -222, + 210, 208, -63, -261, 231, -265, -23, 208, + 231, -272, -269, 210, 231, -271, 255, 255, + -275, 210, -264, 255, -263, -260, -286, -284, + -100, -571, -183, 200, -33, -192, -315, -298, + -292, -291, 124, 194, -296, -208, 229, -285, + 194, -282, -310, -307, -304, -303, 237, 237, + -303, 237, -297, -309, 194, 194, -312, 245, + -314, 245, 245, -319, -318, 59, 237, -329, + -324, -323, 237, 237, -327, -314, -277, 245, + -253, -63, -170, 116, -579, -478, -387, -349, + -344, -318, -340, 52, -302, 237, -331, 116, + -348, -302, 162, 162, 215, -361, -352, 38, + -360, -357, -356, 110, 110, -356, 110, -346, + 172, -366, -291, 172, -343, -342, -382, -378, + -304, -373, -314, 245, 162, 237, -346, -846, + -374, 80, -380, 80, 237, -377, -304, 194, + -448, 87, 80, -416, -393, -358, 110, 213, + -381, -407, -401, -398, 213, 99, -400, 213, + 213, -398, 99, 213, -375, -376, -365, -413, + -412, -305, 224, 224, 110, -412, 110, -410, + -427, 169, -426, -423, -422, 213, 213, -422, + 213, -415, 84, -455, -447, -445, -438, -435, + -1021, 231, -433, -356, 110, 208, -435, -4812, + 208, -437, 88, -434, -425, -399, 124, -451, + -1021, -444, 124, 110, -400, 213, 140, 213, + -468, -465, -462, -360, 172, -454, -360, 172, + -449, -467, 132, 172, -472, -442, 231, 231, + -475, -360, -470, -360, -474, -347, -536, -522, + -507, -502, -485, -484, 221, -491, -488, 77, + -490, -466, 229, -497, -494, -489, -496, 229, + 229, -499, 77, -496, 229, -464, -506, -505, + 172, 172, 221, -463, -519, -517, -467, -496, + -115, -406, -330, 168, 168, 99, 221, -520, + 221, -515, -525, -524, 221, -530, -115, -88, + 239, 239, -534, -88, -528, 239, 229, -528, + -565, -555, -550, -543, -414, 110, -532, -546, + -95, 177, -548, 177, 229, 170, -552, 170, + -305, -545, -542, -557, -521, -558, -562, -496, + 239, -560, -496, 239, -560, -570, -569, 221, + 82, 99, -573, -753, 239, -576, -467, -560, + -115, -564, -561, -707, -658, -614, -602, -596, + -590, -589, -436, 110, 239, 96, -594, -593, + 110, 110, 96, -563, -600, -599, 96, 96, + 84, -529, -611, -610, -607, 46, -578, -500, + 3, 3, 96, -612, 84, 96, -616, -608, + -652, -647, -154, -625, -624, -623, -606, 221, + 96, -635, -630, -629, 82, 82, -632, 134, + -187, 192, -172, -637, -563, -236, 134, -622, + -5037, -469, -639, 154, -404, 148, -588, -650, + 96, -645, -187, -643, -236, -524, -187, 26, + -651, -642, -682, -670, -668, -569, -666, -589, + -556, 130, 213, 138, 82, 99, 169, -677, + -453, -1101, 154, 138, 154, -666, -599, -130, + -675, -130, -693, -686, 213, 249, -689, 134, + 213, -691, -130, 134, -681, -700, -697, 213, + 205, -699, 213, 213, -697, -699, -680, -667, + -1583, 168, 168, -738, -732, -717, -244, -568, + -705, -515, -640, 3, -609, -725, -722, -721, + 122, 134, -721, -716, 168, -722, -721, -705, + 146, 190, -727, -724, -736, 213, -735, 134, + -721, 168, -772, -757, -403, -749, -746, -745, + 110, 110, -745, -706, -674, -746, -745, -731, + -723, 190, -713, 177, -755, -769, -762, -589, + 177, -755, -746, -745, -756, -755, 173, -756, + -764, -666, -545, 177, -774, -545, -778, -308, + -770, -768, -780, 154, -313, 122, -674, -1077, + -1027, -962, -858, -827, -817, -814, -798, -795, + -794, 197, 197, -794, 197, -781, -807, -804, + -802, 59, -803, 197, -803, 197, -674, -792, + -794, 197, 168, -4899, -706, -812, -669, -806, + -797, -823, -794, -821, 219, 219, -777, -825, + 219, 219, 227, -849, -831, -830, 99, -834, + 77, 249, -842, -839, -803, -754, -703, -803, + 197, -664, -839, -803, 197, 243, -1012, -845, + -847, -853, 197, 219, 84, -855, 219, -824, + 219, 239, -915, -868, -863, -862, 59, -865, + 59, -867, -560, 255, -908, -872, -871, 170, + -904, -895, -888, -883, -880, -879, 239, 197, + -879, 197, -560, -886, 170, -866, 170, 239, + -892, 190, -563, -885, -794, -848, 239, -903, + -900, -899, 170, 170, -899, 170, -528, 120, + -906, 219, -821, 177, -912, -108, 255, 160, + -108, -902, -913, -929, -920, -881, 216, 160, + -922, 216, -926, -925, -921, 229, -925, 216, + -921, -953, -943, -936, -803, 197, -924, 177, + -940, -4665, -919, -918, -925, -914, -893, -950, + -940, 197, -841, -811, 177, -948, -821, -948, + -949, -957, -101, -948, 177, -959, -948, -925, + -955, 160, -984, -323, -980, -972, -971, 36, + -970, 99, 99, 99, -976, -322, -961, -960, + 99, -322, 237, 174, -400, 174, -979, 174, + -994, -910, -990, -318, 237, 174, -318, 237, + -983, -982, -1011, -1008, -1006, -1004, -1002, -305, + 177, 177, 110, 174, -318, -1000, -905, 167, + -854, 219, -1005, -1015, 190, -993, -975, -1019, + -854, -952, -545, -1024, -855, 206, -1017, 174, + -1026, 184, 172, -1065, -1055, -1041, -1033, -910, + 167, -58, -1038, -1037, 73, 73, 190, -4923, + 122, -1050, -1047, 255, -1046, 222, 222, -1046, + 222, 167, -1048, -33, 167, -1049, -1040, -1060, + 190, -1059, 120, 120, -1048, -1063, 222, 222, + 167, -1074, -1067, -1069, 191, -1073, -4693, -1032, + -1054, 222, -1076, 160, 187, -1209, -1124, -1090, + -697, -1082, -1084, -1075, -1086, -1072, 213, -947, + -1025, 184, -1110, -1108, -1105, -1100, -1098, -1086, + 160, -1088, 169, -1023, -1104, -1513, -1022, 243, + 169, -698, 243, -1103, 169, 213, -1113, 203, + 77, -1119, -1116, 99, -1118, 184, 99, -1121, + 203, -698, -1117, 184, -1130, -1127, 39, -1063, + -1122, -1103, -1183, -1156, -1145, -1136, 39, 169, + -1140, -1135, 169, -1107, -1142, 243, -1144, 195, + 195, -1147, 219, -1149, 184, -1153, -1152, 219, + 219, -1152, 219, -1148, -1164, -1161, -824, 219, + 153, -824, -1155, -1141, -1168, -1152, 184, 243, + -1170, -1163, -1178, -1175, -1174, 227, 227, -1174, + 227, 167, -1175, 195, -1390, 167, -1177, -1199, + -1188, -1120, 203, 167, -1197, -1193, -1192, 203, + 203, -1192, 219, -1177, -1182, 120, 167, -1203, + -1201, 120, -1198, -1172, 219, 227, -4474, -1196, + -1169, -1228, -1222, -1212, 203, -1217, -1073, 222, + -1139, -1219, 191, -1221, -1023, 222, -1226, -1063, + -1023, 174, -1063, -1023, -1250, -1239, -1232, 187, + -1236, -1235, 195, 195, -1235, 195, -1224, -1245, + -1243, 203, -1220, -698, 174, -1249, -1192, 203, + -1023, 205, -1266, -1259, -1256, -1255, 211, 211, + -1255, 211, -1220, -1256, -1255, 211, 174, 218, + -1023, -1220, 211, -1922, -1594, -1445, -1348, -1294, + -1283, -1275, 190, -1282, -1278, 166, -1280, 88, + -1281, 166, 190, -1285, -1258, -1288, 39, -1242, + -1291, -1048, -983, -1048, -1287, 159, -1330, -1301, + -1300, -1299, 187, 187, 90, -1299, -1313, -1308, + -1307, 112, 88, 112, -1307, -1311, 113, 113, + 159, -1317, -1316, 166, 166, -1325, -1322, -1316, + 166, -1293, -1316, 159, -1293, -1327, 113, 113, + -1321, 55, -1345, -1342, -1336, -1335, 105, 105, + -1340, -1339, -1328, 166, 166, -1292, -1344, -1216, + 166, -1347, 187, 187, -1393, -1377, -1366, -1361, + -1359, -1357, -1316, 166, -1102, 113, -845, -1360, + 144, -1316, -1364, 144, 144, -1141, -1374, -1371, + -1370, 189, 189, -1370, 189, -857, -1376, -857, + 144, -1389, -1382, -1381, 66, 66, -1386, -1385, + 144, 144, -1385, 144, -1373, -1371, -4983, -1089, + -1388, -1427, -1404, -1397, 97, -1401, -1400, 105, + 105, -1400, -907, 160, -1420, -1413, -1410, -1370, + 189, -907, -1370, 189, -1409, -1410, -1370, 189, + 177, -1263, -956, -956, -1424, -1423, 144, 144, + -1423, -1418, -1412, -1439, 119, -1436, -1434, -4395, + -1403, 182, 144, -1433, -1370, 189, 159, -1440, + -1400, -1443, 119, 119, -1435, -1528, -1519, -1453, + -1450, 249, -1411, 141, -1293, -1489, -1473, -1460, + 97, -1459, 227, 227, -1471, -1468, -1466, -1465, + 227, 227, 189, 227, -1411, 159, -1452, 105, + 68, -1484, -1478, -1477, -1444, 227, -1481, 97, + -1432, -1467, -1365, -1356, -1333, 97, -3427, 182, + 182, -1502, -1497, -1493, 97, -1495, -1487, -1411, + 182, -1441, 105, -1087, -1487, -1494, -1510, -1507, + -1400, 105, 182, -1400, 105, -1487, -1516, -1507, + 83, -4775, -1501, -665, -1411, 204, 130, -1521, + 203, -1525, -1255, 211, 122, -1255, 211, 204, + -1590, -1571, -1555, -1544, -1539, -1537, -1536, 204, + 187, -1538, 196, -1543, -1542, 196, 196, 196, + -1550, -1547, 187, -1346, -1527, 175, -1540, 196, + 141, 175, -1549, -1568, -1562, -1561, -4360, -1548, + -1524, 211, -1566, 173, -919, 160, 203, -919, + -1561, 211, 204, -1573, 175, -1260, -1261, -1568, + -1580, -1235, 195, -1572, -1235, 195, -1572, -2737, + -1579, 182, -1585, 141, 204, 204, -1592, 211, + 211, 182, -1752, -1631, -1372, -1618, -1609, 113, + -1607, -1604, -1603, 120, -1603, -1588, -1586, 187, + -1585, -1291, -1614, -1048, -1585, -1608, 190, -4360, + -1606, -1584, -1625, -1623, -1311, 113, -1570, 112, + -1564, -1629, -1628, 206, 206, 206, 182, -1678, + -1669, -1655, -1653, -1651, -1644, -1641, -1603, -1630, + 160, -1603, -545, -1640, -1641, -1603, 120, -760, + -1563, 160, -1643, -1652, 120, -1654, 112, -1661, + -1660, -1654, 112, -553, 112, -1664, 88, 95, + -1666, -1639, -1660, 112, -1624, -1675, -1674, -1179, + 195, -1515, 187, -1179, 204, 160, -1706, -1688, + 103, -1685, -1684, 240, 144, -1684, 240, 240, + -1694, -1693, -1684, -1686, -1683, 95, -1697, 95, + 103, -1703, -1700, 204, -1702, 144, 144, -1660, + 112, 159, -1709, -903, -1699, -1728, -1720, -1713, + -1692, -1666, -1660, 240, 240, -2092, 240, -1716, + -1724, 121, -1715, -1715, -1603, 120, 155, -1683, + -1735, -1733, -1732, 189, 189, 189, 155, -1745, + -1738, 155, -1742, -1648, 240, -1683, -1370, 189, + -1727, -1749, -1732, 189, -1723, -1732, -1722, -1712, + -1815, -1795, -1776, -1757, 81, -1772, -1768, -1765, + -1726, -1763, 103, 103, 175, -881, 197, -1764, + -1771, -1770, 197, 197, -1774, 197, -881, -1767, + -1777, -1788, -1782, -881, -1751, -1677, -1785, 155, + -1639, -1770, -956, -545, -1792, -1734, 155, -961, + -1734, -1787, -1686, -1805, -1804, -1801, -1800, 97, + 97, -1800, 97, -1784, 95, -1812, -1810, -1809, + -1781, 155, 155, 95, -1732, 189, -1673, -1849, + -1827, 203, -1820, -1483, -1824, -1176, -946, -514, + -1176, 227, 182, -1842, 169, -1831, 90, -1835, + -1174, -1826, 181, -1175, -1174, 204, -1837, -2056, + 204, 125, -1844, 47, -1824, -1838, 105, -1834, + 204, -1879, -1877, -1853, -1848, -1858, 197, -1857, + 83, 83, -1870, -1867, -1864, -826, 227, 201, + -826, 201, -1863, -1465, 217, 217, -1874, -1465, + -1868, 217, -1465, -1868, -1872, -1520, 217, -1887, + -1884, -4417, -1868, -1872, -1174, -1876, -1866, -1891, + -903, 201, -1889, -1917, -1912, -1905, -1898, -1897, + -1865, 227, -1864, -826, -1886, -1852, -1739, -1847, + -1833, -1874, -1558, 241, 137, -1499, 254, 98, + -1732, 61, 241, 241, -1914, -1813, -1467, 241, + -1914, -1916, -2234, -2020, -1983, -1969, -1952, -1937, + -1932, -1931, 93, 93, -1934, 88, -1936, 241, + 93, -1947, -1944, -1943, -45, -1935, 225, 88, + -1933, 88, -1941, -1949, 241, -33, 255, -1919, + -1960, -1959, -1936, -1957, -1946, 93, -1921, 78, + -1963, 190, 88, -1967, -1629, 241, -1920, 190, + 206, -1977, -1976, -1975, -1974, 214, 214, 214, + 190, -1980, 190, 214, -1981, 214, 255, -2001, + 254, -1986, -1994, -1991, -1990, 163, 163, -1990, + 163, -1958, -1991, -1990, 163, -1915, -4663, -1914, + -1916, -2002, -2018, -2011, -1991, -1990, 163, -1997, + 61, -1993, -1911, -1991, -1990, 163, -1915, -1998, + -2014, 233, 163, 141, -2086, -2067, -2059, -2049, + -2036, -2029, -1936, 254, -2016, -2033, -2032, 241, + 95, -2032, -2031, 241, -2043, -2041, -1693, 95, + 233, -1660, -2034, -1695, -1763, 103, 233, -2015, + -2034, -2055, -1701, -1627, 206, -2042, -2028, 112, + 113, 181, 254, -2061, 45, -2064, 144, 155, + -2066, -2054, 155, -2079, -2076, -1363, -1364, -2073, + -2010, 206, -1904, 201, -2077, 93, 204, -2085, + -2083, 144, 95, -1684, -2078, 88, -2178, -2145, + -2104, -2102, -2097, -2095, -2556, -2075, 204, 95, + 201, -2101, -1385, 144, -2078, 95, 95, 88, + -2128, -2121, -2114, -2111, -2110, 193, 193, -2110, + 193, -2096, -2111, -2110, 193, -2093, -4412, -2094, + -2117, -2125, -2124, 198, 193, -2124, -2120, 130, + -2132, -2131, 182, 163, -2139, -2137, -2136, 193, + 193, 95, 198, -2137, -2136, 204, -2119, -2408, + 182, -2148, -1790, 182, -2164, -2161, -2158, -1749, + -1732, 182, -2147, -2118, -1848, -2094, -1732, 198, + 204, -1732, -2094, -2159, -2169, -1809, 155, 244, + -2157, -2175, -2172, -2154, -2174, 244, 244, -2124, + 193, -2144, -2183, -2180, -2181, -2182, 254, -2223, + -2221, -2209, -2208, -2205, -2202, -2197, -2194, -2193, + -2130, 193, -2193, -2126, 214, -2201, -2193, 193, + 214, 141, -2204, 198, 193, -1376, -2196, 214, + 155, -2211, 97, -2216, -2214, 189, 189, -1826, + -2218, 181, -1732, 233, 233, -1813, -2219, -2225, + 141, -2227, -2217, -2231, -1441, -2215, -2207, -2124, + -2206, 233, -2423, -2301, -2278, -2249, -2246, -2243, + -147, 248, 233, -147, 248, -2233, 248, 249, + 57, -2267, -2266, -2259, -2256, -2255, 233, 236, + -2255, 236, -2245, -2256, -2255, 198, -2242, -2155, + -2261, -2242, 221, -2275, -2272, -2271, -2261, 163, + -2271, -2264, 233, -1990, -2242, -2276, -2285, -2281, + -2273, 255, -30, 178, -2258, -1936, -16, -2293, + -90, -2291, -2284, 178, 204, -2297, -90, -2232, + -2195, 178, -2074, 198, 198, -2369, -2331, -2305, + 214, -2319, -2310, -81, 214, -2304, -2314, -1443, + -2300, -2299, -2316, 236, -2255, 236, -2123, -2321, + 225, -2324, -2323, 117, -2328, -2317, 225, -2320, + -2317, 217, 241, -2351, -90, -2340, -2338, -127, + -2327, -1935, 221, 236, -2343, 155, 225, -2347, + -127, 241, -2337, -127, -2336, 133, 225, -2358, + -2357, -524, 155, 225, -2350, 163, -2361, -2360, + 163, -2367, -2255, -4665, -2349, 100, -2364, -127, + -2348, -2374, -2371, -840, -2318, 214, -2380, -2377, + 81, -2379, 103, 103, -2398, -2391, -2388, -2386, + 155, 214, -2317, -2373, -1770, 232, 232, -2395, + -1770, -2389, -2387, -1770, -2394, 204, -2417, -2411, + -2404, -2403, -1837, 117, -2328, -2317, 204, -1837, + -2512, -2402, -2329, -2415, -2414, 232, 155, 117, + 204, -2420, -840, 232, -840, -2419, -2416, -2473, + -2459, -2432, -2431, 249, 96, 254, 244, 249, + -2457, -2447, -2444, -2442, -2275, 163, 93, -2559, + 232, 204, 254, -2422, -2446, 254, 254, -2452, + -2451, -2174, 232, 244, -2172, -2419, -4395, 232, + 204, 254, -2453, -2467, -147, -189, -2464, -2443, + 93, -1873, -2463, -2469, 93, -2471, -2410, 244, + -2470, -2490, -2486, -2477, 117, -1693, -2482, -2481, + 244, 244, -2481, 244, -2396, -2372, 155, -2483, + 244, -2298, -2562, -2527, -2517, -2499, -1732, -2497, + 244, 244, -1942, -2515, -2508, -2505, -2497, -2498, + 232, -2497, -2504, -2504, -2505, -2497, 244, -2506, + -2559, -2511, 198, -1408, 198, -2518, -2520, -2514, + -2172, -2174, -2503, -2504, 218, -2523, 217, -2508, + -2551, -2537, -2534, -2481, 225, -1942, -2481, 225, + -1942, -2541, -2540, 117, 117, -2548, -2545, 117, + 244, -2481, -2533, -2526, -840, -2123, 220, 197, + -4412, -2525, -2522, -5054, -2559, 220, 220, 166, + 220, -2558, -2578, -2569, -2566, 220, -1520, -2558, + -2561, -2573, -1800, -2557, 217, -2575, 217, -2577, + -2572, 244, -2583, -2581, 203, 254, 217, -2587, + -2586, 254, 254, -2451, -2174, -2582, 217, -3561, + -3022, -2791, -2731, -2721, -2684, -2618, -2616, -2613, + -2604, -2603, 134, 134, -2612, -2609, -721, -2582, + -2589, -721, -2576, -2571, 104, -2615, 250, 213, + -721, -2611, -2639, -2638, -2636, -2629, -2626, -2625, + -2554, 245, -2625, -1935, -2627, -2626, -2625, 245, + 241, -4412, -2035, -2628, 213, 179, 104, -2680, + -2675, -2650, -598, -2646, 96, 104, -2648, 104, + 104, 225, -2655, 213, -2648, -2635, 241, -2671, + -2664, -2661, -2660, 107, 107, -2660, 107, 241, + -2661, -2660, 107, -2654, -2552, -1965, 41, -2673, + -2669, -666, -2653, -2679, -2678, 179, 179, 213, + -2681, -2625, 245, 129, -2698, -2689, -2687, -256, + 220, -2691, -2560, -2695, -2694, -1914, 245, -2694, + 129, 137, -2711, -2702, 60, 137, -2705, 210, + 245, -2709, -2454, 137, -2701, 210, -2697, -2714, + 210, -2582, -2718, -2363, 217, -2582, -231, 210, + -2713, -2724, -2723, 205, -2730, -2727, 96, -2729, + 213, 213, 213, -2767, -2740, -269, -2263, 129, + 217, -3882, -2582, -2735, -2753, -2749, -2746, -1385, + -2720, -2710, -314, 245, -2693, 245, -348, 215, + 98, -2756, -2751, 98, -2763, -2760, 215, 255, + -63, 255, -2752, -2764, -2766, -2574, 245, -2788, + -2775, -2772, -2771, 179, -2774, 179, 179, -2780, + 210, -2779, 60, 60, -2781, -2785, -2784, -2329, + 245, -2784, -2329, -2783, -2790, 215, 215, -2958, + -2915, -2846, -2826, -2807, -2800, -2799, 169, 169, + -2804, -1249, 205, -2765, -1249, 205, -1999, -2815, + -2814, -2813, -2812, -2748, 169, 253, 143, -1086, + -2822, -2820, 213, 127, 127, -2690, -699, 213, + -2674, 254, -2812, -2829, -2825, -2835, -1135, -1109, + -2824, -2624, -2489, -2838, 143, 240, -1086, -1138, + -2842, 169, 169, -1683, -1686, -2843, -2885, -2863, + 169, -2850, -2856, -2855, -2854, 107, 107, 213, + -2860, -2855, -1715, -1715, -2855, -2858, -1718, -699, + -2872, -2869, -2868, -2861, 213, -2868, -2845, 198, + -2878, -2876, 179, -2871, 179, -1585, -2882, -2679, + -2870, 240, 213, 179, -2881, -2911, -2908, -2902, + -2899, -2896, -2893, 107, -2881, -2854, 107, -2884, + -2898, 143, 143, -2771, 179, -2859, -2905, 179, + -1716, -2625, 245, 240, 38, 32, -2904, -2912, + -2914, -2901, 213, -2938, -2927, -2925, -2922, -2790, + 215, -2881, -2790, -2881, -2921, 253, 174, -2935, + -2932, -2931, 164, 164, -2931, 164, 174, -2937, + 253, 253, -2953, -314, -2946, -2943, -2926, -2771, + 179, -2924, -2950, 152, -1715, -1715, 179, -2948, + -1718, 52, -2931, 245, 143, -2951, -2981, -2966, + -2964, 36, 169, 24, 213, 36, -2974, -2971, + 183, 169, -2945, -699, 213, -2913, -2980, -2805, + -3820, 232, -2977, -2977, 205, -2994, -2991, -2987, + -2751, -2978, -2985, -1046, -1221, 212, 212, -2812, + -2989, -2094, -2999, 115, -2812, -2986, 175, -3013, + -3005, -3004, -2980, -2389, 183, -3011, -2802, -3009, + 253, 253, -2997, -3004, 212, -3015, 79, -3019, + -1068, 175, -2989, -1068, 191, -3010, -3248, -3115, + -3083, -3058, -3035, -3031, 210, 142, 53, -3033, + 232, 107, -2977, -256, -3050, -3043, -3042, -3041, + 210, 210, 210, -3047, -3041, 210, -2979, -3041, + -2977, -2979, -3047, -3041, -3046, 212, -2947, 212, + -3053, 212, -3072, -3063, -1542, -3053, -3056, -3067, + -2694, -3052, -1840, -2626, 210, -3398, 201, -3066, + -3080, -3077, -2625, -3065, 212, -2625, 245, -2989, + -2694, -3079, -3081, 205, -3086, 142, -3107, -3102, + -3096, -3093, -3042, 212, -3091, -3042, 212, -3091, + -3100, -3042, 210, -3092, 142, 69, -231, -1385, + 212, -3091, -3099, -3113, -231, -3111, 142, 142, + -3055, -231, -3106, -3169, -3136, -3132, -3129, -3122, + 248, 210, -3126, -3125, -3082, 210, -3125, -3075, + -3127, -3131, 215, 215, -3134, 186, -3131, -3021, + -3141, -3138, -3139, 210, 230, -3162, -3154, -3147, + -3146, 202, 202, -3151, -1344, -2973, -3149, -3125, + 129, -3152, -3159, -3157, -3152, 215, -3153, -3131, + 129, -3152, -3166, -3165, 230, 230, -3165, 230, + -3158, -3225, -3195, -3173, 186, -3188, -3181, -3178, + -3177, 202, -3177, 202, 181, -3178, -3177, 202, + 114, 66, 91, 91, -3192, -3103, -3186, -3184, + -3177, 202, -3180, -3222, -3211, -3205, -3202, -3054, + -1687, -3168, -3125, -3150, -2880, -3209, -3125, 145, + 129, -3125, 145, -3202, -3093, -3042, 145, -3210, + -2743, -3208, -3153, 166, -3218, 188, -3193, 188, + -3221, -3246, -3231, -3229, 188, -3177, -3221, -3241, + -3236, -3235, -3224, 210, -3238, 164, -3041, 145, + 188, -3125, -3235, 210, -3221, -3239, -2694, -3234, + -3422, -3369, -3280, -3264, -2799, -3256, 24, 151, + -3260, -3259, 151, 151, -3259, 151, 137, -3247, + -2802, -2812, -3277, -3274, -3272, -3271, 176, 176, + 253, 176, -3273, 176, 188, 205, -3221, 18, + -3300, -3297, -3296, -3287, -3286, -3263, 151, -3293, + -3290, 151, -3292, 234, 234, -3295, -3210, 234, + 151, -1249, 145, -3210, -3308, 205, -3306, -3305, + 142, 142, 142, 96, 205, -3336, -3330, -3323, + -3318, -3317, -3316, 126, 126, 126, -3316, -3317, + 126, -3294, 145, -3327, -3326, -3322, 179, -3326, + 179, -3321, -3335, -3334, 165, 210, 165, 179, + -3346, -3344, -3341, 151, 165, -3343, -3221, 165, + 151, -3285, -3357, -3354, -3352, -2883, 182, 137, + -2883, 145, -3259, 114, 145, -3364, -3362, -3335, + -3207, -3355, 179, 165, -3341, 165, 152, -3350, + 182, -3403, -3383, 210, -3376, -3375, -3367, 151, + -3380, -3343, -3345, -3220, -3343, 165, 240, -3390, + -3388, -3335, -3382, 69, -3335, -3386, -3397, -3395, + -4585, 174, -3393, 179, 174, -3401, -1344, -3393, + -3394, -2625, -3400, -3407, -3406, 174, 164, -3417, + -3412, -2813, -3405, -3095, -3414, 91, -3416, 91, + 164, -3421, -3420, -3413, 253, 157, -3499, -3437, + -3435, -3433, -3430, 152, -3411, -3091, -3317, 126, + -3429, -3434, 142, -3436, 205, -3475, -3473, -3456, + -3441, -3454, -3449, -3446, 205, 234, -3448, -3432, + 234, -3453, -3291, 234, -3428, 205, -3436, -3402, + -3470, -3465, -3462, -3461, 156, 156, -3461, 156, + -3389, -3462, 74, -4585, 91, -1683, -3434, 142, + 159, 205, 150, -3486, -3483, -3481, -3480, 240, + 151, 126, 174, -3296, -3393, 174, -3448, -3491, + -3392, -983, -3485, -3495, -3295, 234, -3484, -3295, + -3479, -3469, 145, -3525, -3517, 210, -3506, -2773, + 145, -3498, -3514, -3359, -3335, 182, -3497, -3216, + -3468, -3464, -3516, -3379, 165, -3522, -3520, -3204, + -3334, 188, -3524, 188, 165, -3531, -3167, -2933, + -3521, -3528, -2557, -3540, -3480, -3537, -2944, 235, + 235, -2944, 220, -3535, -3543, 127, -3530, -3547, + -3546, 235, 157, -3550, 164, 157, -3558, -3555, + -2734, 220, -3535, -3335, 235, -3535, -3560, 165, + 165, -3759, -3656, -3626, -3603, -3583, -3574, -3573, + -3571, 123, 147, 147, 123, 123, -3578, -3573, + 123, -3554, -3573, -3581, 147, 147, -3542, -3594, + -3592, -3589, -3588, 147, 147, -3588, 63, -3582, + -3593, 115, -3596, 115, -3600, -3588, 147, 91, + -3588, -3591, -3529, -3612, -3607, 12, 118, -3611, + -3610, 118, 118, 43, -3624, -3622, -3598, -3618, + 79, 139, -3620, 139, 139, 232, -3588, -2450, + -3625, 79, -3634, -3633, -3630, 86, -3632, 250, + 147, 223, -3652, -3651, -3640, -3639, 223, 223, + -3648, -3645, -3644, 161, 161, -3644, 161, -3623, + -3650, -3647, 223, 223, 123, -3632, -3032, 232, + -3718, -3688, -3667, -3665, -3664, -3663, 12, 12, + 238, -3666, 238, -3672, -3670, -3032, 139, -3654, + -3678, -3676, 111, 232, 139, 111, -3682, -3681, + 171, 171, -3686, -3685, 238, 238, -3685, -3032, + -3695, 230, -3694, -3693, 207, 207, 108, -3709, + -3704, -3701, -3700, 207, 207, -3700, -3654, -3671, + -3706, -2419, -3666, 238, 114, -3713, -3712, -3705, + 238, -3715, 207, -3712, 238, -3649, -3752, -3733, + -3730, -3643, -3726, -3725, -3602, 238, -3725, 238, + 243, -1107, 150, 223, 161, -3750, -3739, 150, + -3738, 238, 238, -3747, -3744, -3743, 243, 238, + -3743, -3228, 188, -3749, -3221, 186, 223, -3230, + -3758, -3755, -3745, -3712, -3742, -3468, 223, -3831, + -3798, -3773, -3767, -3765, 101, -3595, 243, -3771, + -3770, 191, 191, 191, 101, -3777, -3776, 108, + 108, -3795, -3790, -3787, -3784, -3783, -1103, 230, + -3783, 230, -3766, -3789, 243, 230, -3020, -3793, + -1103, 207, -3782, -3797, -3214, 207, -3815, -3803, + -3802, -3786, 139, -3812, -3811, -3809, -3808, -3757, + 205, 139, 205, 115, -3814, -3756, 115, -3826, + -3819, 207, -3729, -3823, 196, 243, -3742, -3797, + 207, -3818, -3828, -2989, -3824, 212, -2989, -3986, + -3947, -3897, -3862, -3853, -3848, -3843, -3842, -3841, + 242, 242, 199, -3842, -3841, 242, -2989, -3830, + -3842, -3841, 242, -3827, -3152, -3859, -3842, -3857, + 199, 199, -3055, -3842, 199, 212, -3875, 207, + -3872, -3849, -3841, 242, -3055, -4186, -3858, -3852, + -3874, -3012, 199, -3895, -3888, -3881, -3842, 199, + -3851, -3885, -4406, 250, 250, -3841, 242, -3883, + -3892, -3685, 238, 250, -3685, 243, -1106, -3716, + -3891, -3932, -3917, -3912, -3906, -5071, -4856, -3887, + -3880, -3825, -3909, 171, 199, -3842, -3724, -3519, + -3914, 230, -3916, 230, 230, -3921, -3167, 230, + -2834, -3929, -3926, -3916, 230, 243, -3916, 230, + 211, -3167, -3928, 243, -3934, 243, -3940, -3783, + -3712, -3931, -3930, -1591, -3715, -3712, -3938, 187, + -4008, -3943, -1106, -3959, -3954, -3953, -4041, 222, + -3894, 156, -3956, -3945, -3953, -3942, 235, -3167, + -3974, -3968, -3965, 171, -3958, -3915, 235, -3964, + -3972, -3140, -2565, 220, 230, 202, -3982, -3979, + -3973, -3970, -3967, -3973, 235, 243, -3749, 186, + -3981, -3980, -4108, -4014, -3990, 111, -3993, 205, + 176, -4011, -3996, 176, -4004, -4001, -4856, -3925, + -3985, -3841, 242, -3788, -4001, -3902, -3966, -4000, + -4190, -3978, -3894, -3277, 235, 235, -4025, -4017, + 127, -4021, -4019, 165, -4012, -4023, -4020, 165, + -3980, -4099, -4091, -4062, -4046, -4032, -4031, 157, + -4039, -4037, -4036, 234, 234, 234, -4022, -4043, + -4036, 228, 196, -4036, 196, 228, -4052, -4036, + -3857, 199, -4042, 228, -4058, -3857, -4056, 196, + 234, -4050, 234, -3857, 199, -4038, -4084, -4077, + -4072, -4069, -4056, -4010, -3931, -4056, 211, -4068, + -3857, -3295, -1523, -3980, 235, -4073, -4782, -3980, + -4075, -4005, 235, -3980, -4088, -4087, -4075, 242, + -4087, -4080, 196, -4094, 199, 196, -4096, -4090, + -4087, -4090, -4095, -4103, -3448, -4089, 196, -4105, + -4090, -3448, -4095, -4101, -4149, -4148, -4127, -4123, + -4118, -3927, -3167, -4074, -4071, 119, -4121, 230, + -4117, -3167, -4116, 164, -4126, -4067, 157, -4141, + -4136, -4133, -1451, -3957, 180, -3783, 180, -4132, + -4139, 230, 207, 207, -4135, -4145, -3714, -3884, + -1106, -3714, -4140, 228, 205, -4162, -4159, -4154, + 253, -4020, -4158, -3271, 228, 228, 205, -4160, + -4161, 242, -4165, 207, -4156, -4173, -4170, -3714, + 207, 228, -3714, -4156, -4164, -4183, -4181, -4179, + -4178, 173, 242, 207, -4172, -4178, -4153, -4189, + -4145, -4157, 166, -4182, 106, -4193, -4295, -2561, + 106, -3841, -4191, -4187, -1823, -5020, -4847, -4531, + -4418, -4311, -4305, -4264, -4229, -4227, -4222, -4215, + -4212, -4211, 206, 206, -4211, 206, -4013, -4212, + -4211, 206, -4013, -4389, -4214, -4220, -1968, -4217, + 48, -4221, -4195, -4211, -4146, -4244, -4233, -4232, + 113, -4237, -4236, 78, 78, -4241, -4439, -2590, + 98, -4211, -4239, -4228, -4256, -4253, -4250, -1364, + -3958, -4013, -2073, -4249, -4248, -4211, 206, 137, + -4262, -4259, 113, -4211, 206, -4252, 113, 85, + -4276, -4274, -4270, -4269, 88, 88, -4272, 235, + -2085, -4013, -2052, 129, -4301, -4298, -4284, -4282, + -1957, -4273, -1957, 63, -4291, -4287, 78, -4288, + -1968, 129, -4281, -2026, -1936, 93, -4290, -4389, + 235, 235, -4300, 214, 214, -4303, -4296, 206, + -4076, -4308, 78, 45, 254, 193, 93, -4372, + -4327, -4320, 163, -4319, -4318, 85, 85, 85, + -4322, -4076, -4326, -1451, 141, -4304, 141, -4336, + -4333, -4332, 193, -4076, 193, -4332, -4304, -4325, + -4344, -4341, -4340, 218, 218, -4340, 218, -4302, + -4353, -4352, -4349, 251, 141, -4326, -4294, -4261, + 226, -4358, 226, -4326, -4177, 137, -4366, -4361, + 141, -4363, 137, -4365, -4357, 226, -4369, -4365, + -4357, -4365, 226, -4364, -4397, -4391, -4376, -4356, + -4378, 218, -4385, -4383, -4382, 218, 218, 193, + 218, -4383, -4382, 218, -4351, 228, 63, -4393, + 250, -4396, -4395, 218, 185, -4403, -1451, -4324, + -4388, -4243, -4131, -4409, -4338, 66, -4617, 225, + 225, -4413, -4411, -4412, 218, -4415, -4408, -4412, + -4407, 173, -4509, -4486, -4426, 251, -1975, -2304, + -4416, 180, -4445, -4442, -1972, -4435, -4300, -1957, + -4424, 180, -4433, -4437, 198, 214, -4436, 152, + -4438, -4432, -2207, 228, -4156, -4477, -4450, 214, + 93, 35, -4472, -4465, -4459, -4456, 78, 251, + -4458, 251, 251, -4456, 251, 225, -4585, -4407, + 228, -4469, -1957, 173, -4464, -1957, 93, -4444, + -4475, 214, 228, -4300, -4156, -4479, -4476, -4483, + -2233, 233, 220, -2233, -4482, -4478, -4500, -4491, + -4490, 254, 254, -4493, 220, -4497, -4496, 226, + 226, -4496, -4482, -4492, -4502, -4485, -4505, 233, + 226, -4507, 233, 233, 241, -4521, -4518, -4515, + -1992, -4471, 220, -4516, -4517, 163, -4519, 251, + -4514, -4522, -4526, -4370, 106, -4520, -4530, -4370, + -4525, -4513, 254, -4744, -4602, -4591, -4551, -4545, + -4544, -4541, -4540, 220, 226, -4540, 226, -4407, + 214, -4548, 133, 136, -4550, 136, 136, -4576, + -4573, -4561, -4558, -4557, 133, 133, -4557, 133, + -4407, -4567, -4504, -4565, -4543, 226, -4539, -4571, + -4565, 225, -4569, 226, 136, -2274, 233, 220, + -4588, -2245, -4582, -2233, -4570, -4566, -2233, 225, + -2342, 152, -2560, -2532, -2300, 198, -4587, -4595, + -4542, -4586, -4581, -4597, -4463, -4599, -4461, -4508, + 241, -4596, -4721, -4643, -4620, -4613, -4610, -4609, + 158, 158, -4609, 158, 220, -4610, -4609, 158, + 173, -5045, 173, -4616, -4639, -4627, -4550, -4609, + 158, -4601, -4594, -4634, -4632, -4631, 180, 180, + 158, 180, -4632, -4631, -4529, -4585, -4441, 158, + -4642, -2654, 180, -4681, -4671, -4659, -4654, -4651, + -4650, -4641, 226, -4650, -4649, 98, -4657, 226, + 185, 185, -4652, -4667, -4664, -4663, 185, 185, + -4663, 185, 209, -4669, 209, 185, 158, -4677, + -4674, 209, -4663, 185, -4668, -4650, -4679, 226, + 209, -4703, -4694, -4691, -4688, -4687, -4676, 185, + -4687, 185, 149, -4693, 173, 173, -4687, -4699, + -4395, 149, -4690, -4395, -4686, -4666, -4658, -4718, + -4711, -4708, 209, 226, -4679, -1935, -4709, -4708, + -4679, -2663, 225, -4462, -4714, -1942, -4365, 209, + -4717, -4731, -4550, -4726, 209, -4716, -4727, -4666, + 209, 225, -4714, -4735, -4734, -4729, 254, -4508, + -4740, -4679, -4725, -4713, -4679, 173, -4741, -4739, + -4776, -4767, -4752, -4748, -1975, -4750, 190, 173, + -2245, -4761, -4758, -2304, 214, 173, -2304, 214, + -4751, -2304, -4743, -4710, -1374, -4702, 225, -4774, + -4771, 106, 158, 158, 180, 173, -4775, 190, + -4814, -4791, -4784, -4781, 85, -4783, 152, 152, + -4788, -4787, 158, 158, -4787, 158, -4786, -4807, + -4798, -4556, -4611, -4773, -4461, 225, -4805, -4803, + -4802, -4797, 206, 206, -4801, -1629, 241, -4810, + -4809, 206, -4611, 206, 158, -4806, -4825, -4823, + -4821, -4819, -4797, 133, -1935, 251, 133, 198, + -4820, -4827, -4818, -4829, -4804, -4840, -4838, -4835, + -4834, -4797, 206, -4834, -4801, -4828, 113, 206, + -4842, 128, -4433, -4809, -4796, -4795, -4765, -714, + -5038, -4995, -4906, -4865, -4860, -4857, -4856, 152, + 152, -4856, 152, -4638, -4862, -4157, -4858, 152, + -4478, -4885, -4871, -4870, 173, 121, 121, -4876, + -4874, 149, -4693, 220, -4882, -4693, -4880, -4875, + 152, -4864, -4751, -4861, 196, -4895, -4893, -4890, + 119, 75, -4892, 119, 119, -4894, 173, -4878, + -4900, -4899, -4093, 173, -4899, 173, -4898, -4247, + 196, -4093, -4956, -4929, -4912, -4689, 185, -4902, + -4920, -4676, -4668, 209, 137, -4130, -4911, 254, + -4925, -4924, 209, 173, 185, 185, -4666, 209, + -4673, -4936, -4934, -4663, 173, 209, 158, -4932, + -4951, -4945, -4942, -4670, -4928, -4927, -4670, -4940, + 137, -4948, 158, 149, -4663, 185, -4947, -4953, + 136, -4899, 173, -4751, -4968, -4959, -4944, -4963, + -4147, 228, -4943, -4965, 228, -4147, 149, -4947, + -4986, -4979, -4974, -4157, 228, 149, -4861, -4967, + -3552, 173, 173, -4983, -4157, -4977, 137, -4157, + -4981, -4984, -4992, -4990, -2047, -4975, 228, -4962, + -4474, 228, 173, -5027, -5017, -5008, -5002, -4884, + -4618, -4978, -5006, -1538, -4991, -4919, 196, -4918, + 196, -5012, 121, -4883, -2825, -4982, 137, -4859, + -4402, -5023, -5022, -1542, -3920, -1543, 211, -5024, + -1538, 196, -1543, -5033, 196, -4931, -1909, -5021, + -1542, -5036, 185, -5031, -4663, -1523, -5030, -5050, + -5048, -4909, -4689, 185, -1048, 228, 222, -1048, + -5049, 75, -2555, -5073, -5058, -5057, -4734, -5044, + 222, 121, -5070, -5067, -5064, -4870, 121, -1048, + -4870, 121, -1291, -5069, -5055, 105, -1400, -5068, + 119, -5076, 121, 141, -4360, +}; + +static long _vq_p_lsp32_1[] = { + 48, 216, 64, 416, 200, 28, 168, 120, + 200, 168, 168, 28, 28, 28, 28, 168, + 712, 120, 120, 120, 120, 12, 200, 200, + 592, 168, 168, 592, 584, 200, 200, 200, + 584, 760, 28, 28, 28, 28, 228, 120, + 120, 584, 120, 988, 324, 324, 988, 208, + 28, 120, 28, 28, 120, 28, 528, 208, + 208, 236, 760, 988, 120, 120, 988, 860, + 168, 760, 528, 988, 236, 208, 988, 28, + 236, 28, 28, 28, 28, 324, 236, 236, + 236, 324, 176, 468, 468, 324, 324, 176, + 916, 712, 712, 176, 236, 236, 236, 236, + 324, 324, 324, 712, 680, 680, 988, 324, + 244, 988, 176, 680, 680, 176, 712, 56, + 884, 712, 176, 884, 56, 56, 56, 584, + 244, 176, 176, 28, 28, 28, 984, 884, + 712, 984, 552, 228, 228, 228, 528, 512, + 44, 44, 884, 208, 208, 776, 200, 120, + 120, 120, 992, 200, 208, 44, 88, 56, + 56, 88, 56, 56, 56, 44, 88, 88, + 44, 56, 988, 988, 88, 88, 88, 88, + 88, 88, 44, 244, 592, 560, 120, 120, + 228, 120, 120, 560, 992, 228, 16, 592, + 120, 120, 592, 536, 228, 228, 992, 992, + 560, 88, 884, 56, 56, 88, 56, 56, + 88, 560, 992, 88, 88, 88, 88, 560, + 776, 712, 0, 0, 384, 120, 88, 88, + 88, 88, 88, 88, 88, 712, 776, 120, + 120, 120, 992, 992, 120, 120, 120, 536, + 992, 0, 992, 992, 384, 88, 88, 88, + 88, 88, 88, 592, 208, 0, 0, 208, + 988, 384, 988, 208, 208, 0, 416, 416, + 416, 988, 120, 208, 988, 200, 120, 800, + 832, 120, 120, 120, 116, 776, 776, 840, + 712, 712, 116, 776, 116, 116, 712, 680, + 308, 452, 560, 496, 712, 496, 776, 680, + 208, 208, 116, 680, 440, 440, 440, 116, + 680, 116, 208, 208, 208, 208, 208, 776, + 440, 440, 984, 416, 416, 440, 416, 416, + 776, 776, 948, 680, 208, 208, 680, 144, + 144, 144, 144, 1020, 208, 208, 496, 1020, + 116, 208, 116, 436, 36, 128, 36, 36, + 64, 36, 36, 36, 64, 64, 260, 408, + 144, 144, 408, 8, 208, 128, 64, 64, + 336, 128, 128, 128, 336, 152, 152, 8, + 440, 680, 440, 440, 8, 8, 64, 64, + 64, 64, 64, 64, 288, 776, 288, 244, + 528, 288, 208, 4, 440, 4, 152, 152, + 452, 24, 24, 64, 152, 64, 64, 64, + 24, 328, 64, 64, 64, 64, 328, 328, + 396, 208, 208, 208, 84, 320, 288, 64, + 64, 64, 436, 8, 396, 208, 208, 8, + 96, 96, 152, 96, 96, 96, 152, 128, + 128, 832, 128, 152, 128, 152, 128, 128, + 452, 896, 832, 328, 328, 496, 152, 244, + 260, 260, 244, 260, 260, 128, 988, 328, + 512, 988, 260, 336, 336, 336, 260, 396, + 184, 336, 184, 184, 184, 116, 336, 336, + 116, 184, 988, 396, 328, 68, 648, 52, + 336, 336, 52, 396, 528, 52, 184, 56, + 308, 184, 884, 184, 56, 468, 308, 56, + 56, 52, 468, 56, 56, 984, 308, 308, + 688, 308, 184, 184, 184, 52, 996, 996, + 996, 468, 468, 184, 184, 184, 184, 184, + 184, 52, 408, 640, 584, 328, 328, 996, + 396, 584, 996, 28, 996, 236, 236, 236, + 708, 672, 468, 468, 672, 104, 884, 104, + 236, 36, 36, 208, 36, 36, 104, 236, + 36, 640, 440, 104, 680, 36, 680, 440, + 208, 104, 640, 236, 104, 396, 440, 440, + 864, 672, 680, 768, 768, 208, 208, 208, + 208, 328, 328, 512, 12, 688, 440, 12, + 440, 12, 12, 184, 88, 440, 440, 184, + 88, 88, 88, 88, 592, 328, 184, 184, + 184, 384, 328, 592, 152, 152, 152, 336, + 328, 592, 56, 184, 56, 56, 592, 88, + 592, 584, 56, 184, 308, 308, 208, 584, + 56, 184, 184, 56, 56, 56, 584, 184, + 184, 184, 184, 88, 88, 184, 88, 88, + 328, 0, 0, 88, 592, 328, 328, 0, + 80, 84, 984, 584, 632, 584, 104, 56, + 56, 104, 996, 104, 992, 992, 992, 984, + 984, 104, 676, 184, 184, 184, 328, 184, + 12, 488, 384, 520, 996, 996, 152, 152, + 152, 664, 488, 488, 76, 328, 328, 76, + 76, 488, 208, 208, 208, 208, 996, 996, + 996, 328, 44, 384, 44, 996, 996, 996, + 996, 812, 812, 820, 384, 384, 44, 76, + 68, 12, 488, 88, 208, 208, 328, 88, + 488, 488, 664, 988, 988, 88, 88, 88, + 988, 416, 384, 488, 616, 328, 328, 584, + 488, 512, 488, 584, 384, 212, 384, 212, + 240, 44, 440, 64, 328, 64, 64, 64, + 64, 416, 328, 44, 44, 208, 208, 44, + 44, 664, 44, 672, 640, 152, 384, 152, + 488, 488, 152, 152, 488, 104, 544, 104, + 104, 328, 488, 76, 152, 76, 208, 208, + 76, 76, 416, 104, 64, 104, 76, 36, + 184, 996, 396, 36, 396, 36, 996, 236, + 236, 236, 480, 996, 996, 76, 396, 36, + 36, 36, 236, 688, 396, 396, 44, 36, + 36, 36, 104, 544, 104, 44, 236, 104, + 44, 36, 36, 36, 36, 788, 44, 688, + 688, 788, 788, 184, 396, 996, 184, 184, + 184, 184, 996, 996, 996, 104, 104, 468, + 468, 488, 308, 308, 308, 768, 352, 1000, + 984, 308, 308, 308, 308, 396, 396, 336, + 336, 736, 36, 292, 156, 36, 156, 28, + 28, 236, 736, 292, 236, 324, 236, 324, + 36, 36, 36, 36, 36, 36, 304, 680, + 412, 412, 304, 236, 236, 304, 412, 984, + 236, 352, 984, 768, 412, 736, 612, 156, + 156, 156, 156, 412, 236, 236, 612, 412, + 680, 680, 412, 304, 156, 156, 156, 304, + 324, 304, 104, 236, 324, 324, 12, 488, + 680, 736, 236, 236, 488, 788, 468, 304, + 304, 308, 308, 308, 308, 308, 304, 304, + 468, 484, 304, 304, 688, 864, 12, 680, + 680, 680, 304, 484, 668, 640, 688, 488, + 488, 324, 324, 640, 636, 468, 636, 680, + 636, 636, 144, 144, 64, 36, 36, 36, + 36, 36, 208, 128, 64, 64, 276, 276, + 128, 128, 128, 668, 128, 636, 636, 636, + 156, 680, 36, 36, 36, 276, 156, 156, + 276, 276, 36, 36, 36, 36, 36, 36, + 636, 136, 128, 136, 128, 136, 128, 136, + 128, 128, 668, 128, 664, 136, 136, 396, + 336, 136, 304, 336, 680, 664, 304, 668, + 440, 1000, 680, 156, 144, 36, 36, 36, + 1000, 156, 236, 156, 156, 236, 156, 340, + 1000, 144, 144, 144, 144, 144, 860, 760, + 760, 488, 156, 156, 276, 276, 276, 480, + 292, 156, 156, 292, 156, 156, 156, 748, + 248, 144, 80, 764, 732, 144, 340, 248, + 248, 732, 208, 276, 996, 144, 336, 96, + 676, 316, 96, 488, 336, 640, 676, 340, + 668, 304, 128, 128, 396, 128, 128, 128, + 304, 304, 396, 276, 336, 512, 248, 736, + 396, 676, 1000, 1000, 144, 144, 996, 996, + 996, 308, 308, 308, 184, 668, 336, 396, + 396, 336, 304, 248, 748, 156, 144, 144, + 248, 248, 676, 128, 128, 156, 144, 144, + 144, 128, 128, 248, 676, 220, 128, 128, + 396, 156, 156, 396, 612, 360, 360, 360, + 780, 676, 676, 304, 308, 308, 308, 308, + 220, 396, 220, 736, 156, 156, 984, 984, + 360, 984, 396, 396, 396, 396, 876, 780, + 780, 636, 480, 480, 84, 612, 612, 332, + 996, 996, 996, 220, 332, 332, 332, 332, + 780, 396, 396, 220, 220, 396, 304, 996, + 996, 396, 220, 308, 308, 308, 84, 304, + 668, 80, 732, 676, 732, 80, 80, 80, + 220, 204, 204, 732, 636, 764, 80, 80, + 276, 248, 84, 248, 748, 332, 332, 332, + 676, 676, 676, 748, 732, 732, 248, 676, + 676, 676, 248, 732, 612, 732, 732, 732, + 612, 812, 316, 316, 316, 316, 316, 812, + 732, 732, 612, 676, 676, 676, 220, 484, + 220, 220, 460, 272, 272, 244, 448, 84, + 664, 452, 452, 664, 84, 84, 156, 156, + 352, 448, 84, 80, 220, 156, 84, 220, + 84, 84, 132, 748, 132, 612, 188, 156, + 156, 156, 156, 272, 272, 448, 188, 188, + 188, 188, 188, 360, 272, 272, 272, 448, + 580, 272, 272, 272, 452, 244, 244, 244, + 244, 580, 448, 220, 220, 352, 352, 448, + 220, 984, 272, 420, 272, 272, 272, 360, + 244, 244, 984, 420, 360, 580, 272, 132, + 476, 360, 360, 664, 224, 216, 244, 216, + 216, 216, 216, 216, 612, 272, 984, 452, + 272, 244, 244, 244, 452, 984, 216, 216, + 216, 216, 576, 564, 564, 612, 452, 304, + 564, 224, 244, 224, 224, 244, 40, 40, + 40, 264, 224, 224, 304, 244, 512, 220, + 220, 188, 420, 244, 244, 188, 188, 188, + 388, 360, 612, 304, 40, 40, 40, 40, + 40, 640, 388, 388, 104, 188, 188, 188, + 612, 224, 612, 104, 188, 188, 188, 388, + 244, 104, 636, 216, 272, 216, 216, 484, + 104, 636, 388, 612, 272, 272, 104, 244, + 272, 272, 272, 420, 104, 452, 756, 996, + 996, 72, 564, 452, 220, 188, 188, 332, + 332, 272, 272, 332, 388, 188, 188, 188, + 188, 756, 388, 388, 272, 984, 984, 272, + 188, 332, 272, 272, 984, 360, 332, 332, + 984, 360, 736, 104, 388, 360, 484, 552, + 520, 272, 388, 272, 272, 216, 520, 224, + 1008, 216, 216, 564, 1008, 1008, 72, 72, + 72, 72, 76, 332, 332, 76, 332, 216, + 216, 84, 76, 76, 216, 1000, 1000, 308, + 308, 72, 72, 72, 1000, 332, 332, 700, + 72, 272, 784, 272, 272, 272, 272, 520, + 476, 420, 476, 360, 360, 360, 420, 748, + 332, 72, 72, 332, 520, 488, 72, 72, + 224, 276, 276, 332, 72, 72, 224, 276, + 276, 748, 332, 564, 276, 136, 748, 136, + 360, 360, 136, 156, 520, 332, 360, 332, + 332, 332, 332, 488, 360, 360, 136, 452, + 136, 700, 520, 216, 700, 136, 80, 80, + 748, 136, 448, 452, 452, 156, 452, 292, + 156, 156, 156, 448, 292, 136, 136, 480, + 520, 156, 156, 156, 76, 76, 292, 216, + 76, 76, 452, 292, 292, 292, 76, 352, + 136, 352, 292, 292, 352, 760, 136, 156, + 188, 156, 156, 188, 156, 156, 156, 104, + 488, 412, 136, 136, 188, 188, 188, 76, + 216, 76, 76, 156, 360, 188, 352, 188, + 188, 188, 188, 76, 412, 324, 324, 324, + 352, 76, 380, 380, 104, 156, 156, 156, + 156, 104, 480, 360, 276, 276, 40, 188, + 380, 40, 40, 728, 380, 188, 636, 132, + 244, 244, 244, 132, 636, 352, 352, 352, + 352, 380, 380, 132, 292, 292, 448, 292, + 292, 276, 236, 236, 276, 448, 188, 292, + 276, 188, 188, 816, 700, 244, 276, 276, + 292, 72, 276, 728, 412, 412, 412, 700, + 292, 292, 292, 292, 620, 480, 480, 188, + 620, 188, 188, 72, 136, 136, 480, 480, + 136, 380, 380, 380, 136, 576, 136, 136, + 324, 480, 188, 156, 156, 188, 188, 380, + 380, 188, 188, 380, 696, 188, 188, 636, + 368, 368, 620, 380, 324, 324, 380, 276, + 156, 236, 236, 236, 696, 136, 412, 412, + 984, 480, 136, 136, 292, 292, 292, 104, + 412, 104, 136, 40, 188, 40, 40, 40, + 368, 188, 188, 636, 40, 188, 188, 188, + 104, 380, 368, 368, 368, 368, 132, 360, + 332, 332, 308, 520, 332, 332, 132, 708, + 480, 480, 724, 360, 360, 188, 188, 308, + 308, 1008, 392, 360, 360, 500, 392, 216, + 364, 364, 156, 156, 188, 364, 244, 500, + 724, 332, 996, 876, 132, 308, 308, 996, + 996, 308, 996, 480, 996, 996, 996, 500, + 480, 364, 364, 996, 804, 724, 332, 332, + 724, 500, 480, 500, 500, 332, 196, 308, + 308, 72, 196, 196, 788, 196, 196, 412, + 188, 724, 132, 188, 368, 368, 368, 188, + 132, 368, 188, 188, 132, 804, 1004, 196, + 196, 188, 216, 196, 196, 216, 196, 196, + 480, 216, 868, 724, 724, 388, 368, 500, + 500, 500, 180, 168, 28, 28, 28, 180, + 180, 28, 28, 180, 324, 324, 28, 900, + 352, 28, 28, 324, 28, 400, 868, 28, + 292, 292, 868, 292, 400, 352, 352, 400, + 180, 180, 180, 180, 500, 312, 400, 292, + 352, 352, 312, 292, 292, 392, 392, 312, + 312, 168, 168, 168, 168, 168, 200, 760, + 312, 352, 352, 352, 312, 372, 372, 140, + 140, 996, 140, 140, 140, 140, 372, 312, + 312, 392, 168, 168, 168, 392, 244, 196, + 196, 352, 180, 148, 148, 148, 148, 196, + 68, 196, 400, 180, 180, 180, 932, 68, + 1016, 1008, 312, 312, 452, 292, 380, 380, + 180, 180, 180, 1008, 1008, 324, 324, 932, + 372, 352, 724, 1004, 292, 292, 292, 292, + 1004, 380, 1004, 324, 324, 324, 400, 512, + 400, 180, 180, 180, 180, 400, 1004, 352, + 244, 196, 196, 28, 28, 180, 180, 180, + 292, 196, 576, 180, 180, 180, 180, 180, + 1004, 452, 1016, 792, 244, 352, 804, 244, + 244, 244, 244, 264, 724, 264, 180, 180, + 352, 264, 40, 40, 216, 724, 792, 264, + 792, 180, 180, 180, 500, 264, 352, 180, + 372, 180, 148, 148, 148, 148, 372, 264, + 264, 500, 180, 180, 180, 500, 564, 700, + 700, 148, 148, 1004, 652, 372, 1004, 1008, + 652, 180, 1008, 380, 40, 40, 40, 40, + 380, 264, 520, 180, 180, 520, 520, 272, + 520, 28, 28, 724, 368, 40, 40, 40, + 40, 700, 700, 484, 700, 700, 380, 724, + 108, 368, 108, 108, 40, 40, 40, 40, + 108, 380, 380, 108, 652, 652, 772, 620, + 620, 108, 1016, 72, 996, 388, 652, 40, + 40, 40, 40, 40, 224, 40, 40, 40, + 108, 564, 264, 108, 520, 224, 224, 224, + 108, 264, 40, 108, 388, 264, 108, 1008, + 564, 388, 996, 996, 996, 996, 564, 1008, + 576, 1008, 564, 724, 108, 996, 108, 996, + 996, 620, 108, 148, 216, 108, 108, 564, + 1008, 856, 944, 372, 228, 992, 168, 140, + 140, 140, 792, 168, 168, 792, 228, 228, + 140, 28, 228, 28, 28, 28, 400, 652, + 372, 372, 400, 228, 228, 724, 400, 340, + 400, 108, 28, 168, 140, 140, 108, 228, + 168, 108, 1004, 228, 1004, 400, 168, 28, + 1004, 168, 168, 168, 108, 324, 324, 28, + 28, 28, 392, 372, 108, 324, 324, 400, + 400, 372, 792, 500, 532, 28, 236, 712, + 792, 28, 324, 28, 400, 400, 28, 216, + 400, 400, 380, 380, 620, 620, 400, 380, + 868, 324, 236, 324, 236, 236, 500, 500, + 468, 392, 392, 56, 56, 56, 56, 56, + 392, 400, 996, 996, 996, 996, 392, 468, + 468, 392, 392, 620, 400, 424, 424, 28, + 28, 28, 28, 400, 400, 996, 620, 996, + 620, 228, 228, 244, 400, 392, 392, 996, + 424, 996, 308, 996, 424, 792, 292, 324, + 292, 236, 236, 292, 236, 236, 468, 236, + 236, 520, 468, 520, 236, 792, 500, 412, + 412, 500, 500, 468, 1000, 424, 380, 324, + 324, 324, 424, 380, 380, 380, 392, 392, + 216, 392, 500, 380, 380, 804, 468, 412, + 804, 324, 324, 816, 412, 500, 500, 228, + 56, 56, 56, 56, 56, 56, 56, 992, + 228, 228, 140, 140, 140, 140, 140, 216, + 364, 364, 228, 364, 228, 228, 992, 372, + 372, 372, 424, 1016, 1016, 424, 224, 364, + 364, 996, 364, 140, 140, 140, 140, 424, + 228, 364, 868, 324, 324, 712, 364, 372, + 1000, 324, 324, 308, 308, 324, 324, 324, + 324, 468, 380, 380, 424, 804, 380, 372, + 372, 424, 40, 756, 620, 996, 996, 996, + 996, 620, 500, 368, 40, 40, 40, 1004, + 868, 380, 500, 424, 368, 368, 368, 424, + 476, 392, 424, 620, 1000, 1016, 40, 1000, + 996, 996, 424, 804, 484, 160, 1004, 468, + 368, 56, 56, 56, 252, 252, 996, 160, + 160, 996, 996, 996, 368, 368, 308, 308, + 308, 368, 160, 160, 308, 252, 252, 380, + 484, 252, 252, 72, 452, 516, 424, 512, + 392, 392, 308, 56, 56, 364, 996, 364, + 364, 996, 996, 364, 424, 308, 364, 368, + 364, 388, 72, 72, 72, 996, 516, 996, + 996, 996, 388, 388, 388, 364, 252, 716, + 64, 120, 212, 208, 428, 240, 212, 212, + 208, 208, 208, 240, 212, 212, 212, 252, + 252, 240, 252, 252, 328, 208, 84, 240, + 384, 84, 64, 64, 64, 64, 64, 64, + 364, 716, 416, 868, 160, 208, 208, 208, + 160, 224, 160, 1004, 208, 208, 152, 416, + 428, 60, 60, 60, 60, 60, 212, 212, + 384, 392, 152, 152, 152, 392, 836, 328, + 212, 212, 212, 212, 416, 384, 384, 164, + 328, 328, 328, 164, 224, 164, 160, 212, + 160, 428, 164, 212, 212, 212, 416, 716, + 152, 428, 428, 364, 64, 152, 152, 384, + 364, 64, 364, 416, 416, 164, 840, 776, + 196, 196, 416, 208, 208, 516, 240, 240, + 240, 416, 608, 164, 164, 776, 164, 208, + 536, 196, 120, 224, 164, 164, 240, 240, + 164, 820, 240, 384, 212, 384, 60, 60, + 60, 212, 356, 64, 776, 120, 224, 196, + 160, 300, 160, 160, 64, 64, 64, 452, + 160, 160, 144, 144, 196, 208, 144, 144, + 364, 208, 208, 196, 656, 144, 144, 144, + 656, 656, 196, 840, 144, 196, 1020, 208, + 716, 208, 208, 572, 240, 240, 656, 120, + 120, 120, 120, 208, 840, 208, 208, 364, + 656, 240, 164, 164, 120, 120, 656, 716, + 60, 92, 92, 316, 92, 92, 92, 316, + 316, 316, 316, 164, 676, 676, 164, 1012, + 92, 92, 92, 364, 1012, 572, 508, 92, + 356, 92, 92, 92, 356, 164, 92, 92, + 196, 548, 572, 820, 984, 144, 128, 128, + 1016, 164, 160, 64, 64, 724, 96, 96, + 96, 96, 572, 724, 132, 132, 540, 96, + 96, 820, 60, 60, 60, 60, 152, 428, + 96, 96, 724, 700, 152, 700, 816, 356, + 60, 60, 60, 276, 540, 356, 700, 700, + 356, 356, 356, 520, 540, 520, 428, 428, + 520, 804, 540, 540, 724, 64, 64, 64, + 428, 64, 64, 64, 700, 96, 96, 700, + 96, 96, 428, 64, 64, 804, 428, 428, + 696, 572, 572, 456, 96, 96, 456, 716, + 96, 456, 572, 112, 144, 112, 112, 112, + 112, 456, 144, 132, 132, 144, 456, 572, + 112, 112, 112, 572, 508, 508, 132, 112, + 112, 508, 64, 64, 64, 64, 132, 508, + 508, 696, 572, 576, 804, 132, 656, 132, + 132, 144, 144, 144, 144, 276, 92, 144, + 92, 96, 96, 92, 144, 128, 92, 92, + 676, 92, 276, 732, 732, 132, 316, 316, + 300, 848, 816, 804, 732, 144, 112, 112, + 112, 804, 792, 764, 144, 816, 700, 144, + 700, 700, 676, 316, 316, 700, 456, 112, + 112, 112, 112, 456, 1012, 376, 376, 316, + 316, 376, 456, 316, 1000, 316, 204, 204, + 204, 1000, 1000, 376, 376, 1000, 120, 60, + 60, 212, 60, 60, 60, 212, 60, 212, + 456, 416, 456, 212, 212, 212, 212, 212, + 212, 660, 568, 504, 504, 504, 456, 568, + 364, 364, 240, 240, 364, 804, 224, 456, + 456, 132, 240, 660, 476, 132, 132, 240, + 240, 132, 132, 840, 716, 300, 132, 804, + 660, 656, 656, 816, 276, 660, 660, 276, + 656, 804, 132, 212, 992, 992, 212, 212, + 212, 212, 212, 696, 276, 536, 248, 248, + 384, 384, 384, 248, 536, 132, 416, 244, + 132, 132, 132, 240, 240, 240, 240, 536, + 248, 416, 456, 120, 200, 200, 120, 200, + 200, 200, 120, 120, 248, 808, 992, 248, + 1000, 200, 200, 808, 744, 992, 600, 248, + 624, 744, 624, 808, 808, 808, 240, 656, + 240, 240, 656, 120, 300, 848, 160, 240, + 456, 364, 120, 120, 196, 656, 196, 656, + 160, 160, 112, 112, 112, 860, 656, 656, + 160, 568, 624, 744, 600, 296, 240, 240, + 240, 624, 568, 568, 132, 296, 296, 296, + 196, 224, 196, 132, 568, 224, 132, 132, + 600, 600, 196, 568, 240, 240, 240, 244, + 196, 132, 568, 196, 196, 536, 536, 456, + 456, 568, 516, 992, 992, 992, 192, 192, + 244, 192, 192, 300, 160, 580, 992, 548, + 548, 656, 296, 240, 516, 296, 516, 240, + 240, 240, 516, 656, 624, 624, 656, 548, + 160, 624, 624, 624, 160, 160, 240, 160, + 96, 540, 92, 60, 96, 60, 60, 60, + 92, 92, 92, 540, 96, 96, 72, 72, + 92, 92, 92, 92, 92, 92, 92, 1012, + 604, 604, 508, 508, 984, 704, 984, 984, + 268, 356, 356, 60, 60, 984, 356, 604, + 268, 268, 356, 356, 604, 356, 456, 704, + 508, 704, 160, 160, 384, 60, 60, 60, + 60, 384, 212, 212, 356, 428, 212, 428, + 60, 60, 60, 60, 428, 356, 212, 212, + 212, 160, 196, 212, 212, 160, 504, 356, + 356, 196, 504, 60, 60, 60, 504, 660, + 60, 60, 60, 60, 60, 504, 516, 604, + 504, 196, 356, 356, 356, 356, 580, 196, + 508, 196, 508, 196, 132, 540, 504, 504, + 132, 132, 540, 540, 508, 508, 264, 132, + 984, 92, 604, 660, 92, 92, 984, 572, + 508, 508, 132, 132, 572, 572, 696, 508, + 508, 508, 456, 132, 656, 132, 572, 572, + 264, 580, 456, 660, 192, 656, 420, 192, + 192, 660, 132, 112, 112, 456, 1012, 572, + 508, 508, 192, 192, 572, 248, 1012, 192, + 628, 604, 508, 192, 604, 508, 268, 240, + 356, 212, 212, 224, 364, 456, 240, 240, + 132, 240, 504, 240, 568, 296, 568, 356, + 124, 268, 268, 268, 268, 268, 356, 364, + 820, 356, 296, 296, 132, 296, 296, 248, + 268, 124, 124, 124, 124, 568, 296, 296, + 248, 268, 268, 224, 220, 580, 296, 296, + 132, 600, 296, 268, 268, 268, 268, 132, + 504, 356, 220, 356, 220, 580, 356, 356, + 224, 132, 132, 508, 508, 508, 132, 604, + 696, 132, 220, 240, 240, 660, 212, 212, + 984, 984, 240, 240, 240, 984, 984, 564, + 132, 220, 504, 220, 568, 296, 296, 580, + 568, 516, 568, 364, 624, 112, 112, 112, + 364, 160, 364, 504, 356, 356, 356, 516, + 252, 504, 252, 252, 296, 296, 252, 604, + 508, 364, 604, 624, 624, 624, 508, 508, + 264, 364, 364, 656, 192, 192, 628, 628, + 656, 20, 588, 32, 432, 256, 20, 48, + 20, 20, 20, 48, 48, 432, 256, 256, + 256, 192, 284, 284, 284, 432, 192, 284, + 284, 232, 232, 232, 460, 284, 160, 160, + 404, 232, 404, 404, 48, 48, 48, 84, + 432, 84, 192, 20, 20, 20, 20, 32, + 32, 32, 172, 48, 48, 48, 32, 32, + 32, 32, 48, 48, 316, 1000, 316, 1000, + 32, 172, 232, 344, 344, 232, 232, 252, + 524, 524, 20, 20, 472, 20, 20, 472, + 20, 20, 20, 20, 588, 524, 524, 252, + 524, 160, 644, 492, 284, 284, 364, 252, + 172, 172, 20, 20, 20, 20, 20, 32, + 48, 48, 492, 48, 32, 252, 48, 252, + 32, 32, 32, 192, 172, 172, 684, 172, + 172, 444, 172, 172, 172, 796, 444, 192, + 256, 256, 256, 256, 256, 432, 404, 48, + 828, 48, 48, 48, 492, 432, 192, 192, + 48, 364, 20, 20, 160, 492, 492, 160, + 920, 796, 796, 828, 828, 192, 20, 32, + 20, 472, 20, 20, 456, 472, 32, 32, + 248, 248, 472, 472, 472, 472, 444, 444, + 444, 444, 684, 472, 472, 472, 752, 744, + 684, 364, 192, 600, 192, 684, 744, 192, + 492, 492, 192, 744, 192, 192, 744, 404, + 256, 404, 204, 204, 204, 376, 248, 256, + 256, 256, 404, 376, 376, 432, 256, 256, + 376, 112, 112, 112, 112, 112, 220, 828, + 256, 256, 220, 256, 192, 764, 256, 256, + 192, 376, 192, 376, 220, 1012, 316, 48, + 48, 192, 432, 316, 316, 316, 316, 248, + 556, 376, 376, 376, 376, 220, 432, 376, + 112, 1012, 192, 376, 244, 984, 984, 556, + 556, 984, 432, 1000, 48, 364, 364, 684, + 444, 124, 124, 124, 124, 124, 124, 124, + 124, 796, 684, 628, 628, 628, 248, 248, + 444, 444, 444, 248, 364, 296, 296, 296, + 296, 628, 364, 444, 444, 192, 444, 796, + 172, 172, 172, 172, 192, 244, 192, 192, + 444, 192, 556, 796, 172, 172, 172, 172, + 192, 628, 664, 248, 192, 684, 684, 192, + 628, 628, 628, 248, 684, 84, 84, 172, + 84, 684, 296, 624, 296, 476, 452, 84, + 84, 456, 624, 624, 624, 628, 848, 84, + 296, 296, 684, 684, 796, 624, 624, 624, + 456, 508, 508, 508, 508, 784, 628, 628, + 784, 628, 748, 844, 256, 80, 628, 628, + 628, 80, 80, 72, 796, 796, 72, 1000, + 84, 80, 80, 124, 124, 124, 84, 80, + 80, 600, 296, 84, 568, 84, 752, 624, + 296, 296, 296, 296, 784, 624, 84, 84, + 624, 624, 784, 84, 744, 744, 600, 600, + 600, 84, 880, 624, 784, 940, 624, 624, + 84, 84, 444, 556, 32, 32, 316, 316, + 316, 444, 704, 556, 172, 172, 340, 752, + 752, 556, 556, 84, 444, 340, 192, 192, + 632, 192, 192, 556, 912, 880, 624, 508, + 296, 296, 124, 296, 880, 124, 784, 628, + 84, 444, 124, 124, 268, 508, 508, 268, + 124, 124, 124, 124, 628, 604, 84, 268, + 268, 476, 476, 604, 100, 100, 124, 124, + 124, 124, 100, 84, 296, 296, 296, 84, + 796, 84, 508, 508, 508, 100, 704, 508, + 508, 508, 508, 100, 784, 704, 984, 984, + 704, 628, 984, 752, 548, 604, 512, 548, + 548, 244, 100, 100, 628, 628, 100, 936, + 796, 100, 752, 296, 296, 548, 796, 548, + 444, 72, 72, 296, 296, 72, 984, 508, + 984, 704, 984, 984, 508, 112, 508, 112, + 112, 112, 112, 784, 752, 100, 508, 508, + 72, 628, 476, 628, 508, 548, 1012, 112, + 112, 112, 340, 476, 424, 796, 1000, 1000, + 628, 628, 628, 796, 192, 1012, 1012, 84, + 84, 628, 84, 692, 508, 604, 556, 316, + 316, 692, 704, 556, 880, 720, 1012, 1012, + 604, 704, 48, 48, 720, 172, 172, 172, + 172, 252, 556, 252, 252, 556, 556, 556, + 556, 252, 828, 796, 692, 1012, 252, 1012, + 1012, 84, 632, 84, 252, 628, 476, 252, + 84, 704, 84, 424, 576, 180, 280, 148, + 244, 180, 264, 148, 68, 68, 280, 68, + 68, 68, 68, 340, 280, 280, 252, 148, + 148, 148, 192, 476, 192, 364, 148, 68, + 84, 84, 192, 244, 252, 148, 452, 148, + 180, 312, 148, 148, 180, 148, 244, 160, + 164, 180, 164, 164, 180, 180, 180, 244, + 548, 548, 340, 516, 516, 264, 264, 364, + 244, 452, 244, 244, 244, 364, 264, 264, + 264, 352, 68, 68, 68, 244, 244, 164, + 180, 164, 68, 164, 352, 68, 280, 68, + 68, 516, 280, 164, 312, 68, 68, 352, + 180, 252, 252, 68, 68, 68, 692, 512, + 692, 160, 312, 312, 372, 312, 160, 760, + 516, 312, 148, 148, 148, 148, 148, 148, + 280, 148, 148, 148, 148, 148, 280, 312, + 312, 164, 340, 340, 340, 164, 1004, 772, + 148, 148, 148, 160, 1016, 564, 160, 160, + 68, 68, 68, 68, 340, 148, 148, 164, + 340, 340, 148, 148, 148, 340, 160, 160, + 148, 1004, 1004, 148, 160, 160, 148, 484, + 484, 564, 100, 148, 100, 872, 484, 484, + 72, 1016, 1016, 72, 224, 264, 68, 100, + 1016, 1016, 224, 224, 224, 224, 772, 564, + 564, 264, 264, 264, 100, 664, 192, 68, + 192, 484, 484, 740, 1016, 564, 340, 264, + 192, 100, 164, 68, 264, 68, 84, 720, + 532, 244, 244, 340, 608, 264, 1004, 340, + 532, 1004, 140, 140, 792, 312, 312, 312, + 692, 392, 168, 140, 140, 140, 140, 140, + 392, 532, 424, 168, 532, 312, 392, 452, + 1000, 424, 200, 596, 596, 280, 68, 68, + 68, 68, 140, 140, 140, 140, 140, 140, + 280, 280, 312, 148, 148, 692, 452, 692, + 720, 148, 148, 596, 596, 280, 280, 720, + 280, 280, 632, 312, 632, 1004, 596, 140, + 140, 140, 720, 1008, 632, 720, 280, 1004, + 148, 148, 1004, 1016, 596, 68, 68, 68, + 280, 148, 392, 392, 1008, 392, 1004, 1004, + 1004, 1016, 1016, 904, 904, 652, 148, 148, + 148, 392, 632, 312, 1004, 564, 312, 340, + 424, 72, 148, 148, 392, 392, 1004, 1004, + 84, 424, 564, 544, 280, 400, 68, 68, + 68, 68, 68, 424, 400, 392, 392, 424, + 392, 392, 392, 392, 400, 400, 532, 1004, + 400, 532, 280, 280, 280, 1004, 400, 400, + 252, 280, 280, 280, 252, 544, 720, 400, + 400, 880, 720, 1004, 1004, 280, 280, 392, + 400, 400, 280, 280, 392, 392, 400, 164, + 164, 564, 164, 868, 280, 280, 164, 392, + 68, 252, 164, 932, 252, 1004, 160, 1016, + 1016, 160, 340, 532, 68, 68, 68, 68, + 68, 544, 532, 532, 164, 392, 392, 392, + 164, 476, 160, 160, 512, 340, 340, 340, + 340, 164, 160, 512, 512, 512, 512, 632, + 544, 544, 532, 532, 164, 216, 160, 544, + 544, 1016, 692, 68, 68, 544, 68, 68, + 68, 548, 740, 544, 392, 164, 340, 340, + 340, 544, 164, 68, 68, 68, 68, 632, + 608, 608, 692, 340, 740, 608, 608, 392, + 544, 596, 392, 392, 596, 544, 544, 836, + 392, 340, 484, 544, 340, 340, 392, 544, + 484, 484, 392, 340, 340, 484, 340, 340, + 340, 164, 164, 608, 164, 596, 740, 740, + 484, 484, 484, 484, 740, 836, 392, 544, + 544, 900, 836, 216, 692, 164, 484, 164, + 836, 544, 1004, 1004, 1004, 164, 484, 544, + 544, 692, 160, 1004, 1004, 160, 484, 836, + 484, 484, 160, 836, 1016, 1004, 160, 1004, + 424, 68, 68, 424, 68, 68, 532, 596, + 280, 532, 280, 280, 280, 164, 532, 532, + 164, 760, 596, 164, 216, 160, 596, 532, + 424, 84, 84, 532, 532, 596, 84, 1000, + 244, 244, 340, 68, 68, 244, 244, 340, + 68, 68, 596, 352, 244, 244, 392, 68, + 532, 68, 68, 392, 1004, 544, 352, 68, + 68, 532, 632, 352, 1004, 632, 544, 340, + 340, 532, 512, 512, 512, 1004, 280, 280, + 280, 280, 1004, 1004, 544, 340, 340, 312, + 400, 760, 400, 312, 400, 340, 340, 340, + 340, 392, 512, 452, 392, 392, 1004, 1004, + 1004, 1004, 512, 512, 544, 544, 544, 608, + 100, 216, 476, 512, 216, 216, 216, 216, + 512, 476, 476, 544, 244, 692, 300, 300, + 164, 100, 72, 72, 72, 72, 300, 100, + 100, 100, 596, 784, 300, 300, 300, 392, + 484, 784, 484, 596, 300, 476, 476, 72, + 72, 72, 216, 216, 300, 300, 216, 216, + 216, 216, 300, 608, 300, 300, 100, 216, + 72, 72, 544, 484, 300, 300, 300, 72, + 484, 484, 484, 484, 984, 216, 984, 72, + 544, 544, 544, 544, 692, 596, 596, 548, + 548, 300, 300, 300, 596, 164, 608, 164, + 596, 608, 512, 512, 164, 160, 596, 160, + 160, 544, 544, 548, 596, 596, 100, 544, + 512, 512, 512, 100, 100, 632, 100, 100, + 100, 100, 100, 300, 300, 596, 484, 484, + 512, 512, 512, 512, 512, 300, 596, 300, + 216, 548, 100, 596, 596, 100, 484, 632, + 484, 596, 596, 596, 608, 100, 608, 484, + 608, 608, 72, 420, 300, 100, 72, 72, + 72, 72, 100, 100, 72, 548, 300, 596, + 300, 72, 72, 100, 484, 300, 300, 100, + 596, 72, 72, 72, 476, 476, 784, 388, + 420, 84, 84, 300, 300, 100, 512, 84, + 72, 596, 596, 72, 392, 784, 300, 244, + 224, 224, 224, 224, 748, 784, 1000, 1000, + 216, 244, 224, 224, 72, 72, 388, 1000, + 84, 388, 224, 224, 216, 216, 216, 84, + 224, 224, 84, 216, 84, 300, 216, 80, + 84, 72, 72, 72, 216, +}; + +static long _vq_q_lsp32_1[] = { + 584, 796, 224, 780, 812, 980, 992, 884, + 860, 228, 760, 120, 712, 168, 1020, 1020, + 1020, 168, 200, 712, 1020, 16, 712, 1020, + 16, 200, 712, 12, 16, 1020, 712, 760, + 12, 1020, 1020, 120, 228, 712, 712, 228, + 712, 592, 712, 584, 712, 1020, 16, 860, + 760, 1020, 120, 208, 208, 236, 924, 236, + 1020, 1020, 1020, 924, 760, 860, 528, 1020, + 760, 860, 616, 616, 884, 236, 528, 1020, + 916, 236, 324, 712, 944, 712, 712, 324, + 944, 944, 616, 916, 944, 712, 916, 528, + 944, 916, 944, 988, 1020, 680, 324, 916, + 680, 712, 916, 916, 712, 916, 16, 680, + 664, 584, 16, 712, 1020, 584, 776, 228, + 944, 884, 988, 916, 712, 916, 944, 616, + 512, 924, 592, 228, 712, 884, 616, 944, + 884, 592, 616, 712, 884, 944, 552, 664, + 552, 616, 916, 776, 884, 884, 228, 200, + 992, 808, 808, 992, 884, 528, 536, 228, + 992, 712, 88, 884, 916, 616, 884, 916, + 988, 712, 488, 528, 992, 992, 884, 120, + 228, 712, 584, 452, 768, 768, 228, 884, + 884, 228, 992, 592, 712, 992, 800, 800, + 992, 536, 16, 884, 884, 992, 536, 884, + 800, 440, 1020, 536, 916, 992, 88, 712, + 384, 16, 384, 384, 884, 712, 776, 592, + 916, 776, 800, 16, 776, 208, 384, 536, + 992, 120, 840, 712, 776, 776, 840, 712, + 840, 776, 712, 840, 992, 536, 840, 840, + 536, 592, 384, 536, 536, 416, 384, 776, + 208, 536, 884, 16, 536, 560, 12, 776, + 12, 416, 800, 416, 536, 768, 536, 776, + 840, 832, 860, 776, 924, 840, 200, 832, + 924, 712, 776, 840, 924, 840, 1020, 1020, + 776, 840, 832, 1020, 800, 988, 776, 1020, + 680, 760, 592, 800, 1020, 560, 1020, 948, + 440, 680, 496, 776, 680, 776, 916, 800, + 776, 592, 980, 416, 440, 776, 948, 948, + 776, 948, 496, 440, 776, 776, 776, 980, + 948, 980, 980, 1020, 948, 236, 948, 860, + 208, 1020, 948, 948, 1020, 948, 832, 980, + 16, 860, 176, 464, 536, 468, 396, 440, + 144, 680, 948, 208, 208, 948, 436, 464, + 860, 208, 648, 648, 860, 948, 128, 152, + 688, 152, 336, 440, 440, 336, 440, 408, + 688, 948, 680, 688, 464, 436, 152, 208, + 440, 776, 948, 980, 648, 948, 408, 352, + 648, 320, 440, 320, 948, 288, 440, 776, + 512, 348, 320, 128, 328, 152, 440, 852, + 4, 440, 208, 328, 852, 396, 396, 852, + 852, 328, 396, 852, 664, 648, 464, 208, + 396, 440, 896, 896, 440, 396, 440, 436, + 328, 676, 336, 128, 152, 852, 852, 152, + 852, 896, 336, 184, 396, 852, 152, 328, + 664, 924, 896, 336, 440, 832, 328, 632, + 832, 496, 352, 896, 436, 852, 496, 336, + 664, 832, 496, 440, 396, 852, 560, 852, + 328, 396, 336, 440, 688, 260, 440, 688, + 832, 396, 528, 688, 396, 244, 924, 924, + 396, 440, 648, 440, 648, 8, 440, 944, + 336, 996, 916, 884, 884, 688, 468, 308, + 468, 988, 916, 184, 916, 924, 688, 916, + 916, 688, 308, 688, 916, 896, 884, 468, + 688, 688, 884, 336, 996, 328, 396, 688, + 884, 408, 584, 672, 672, 396, 884, 396, + 884, 640, 916, 884, 884, 468, 884, 916, + 956, 956, 884, 916, 708, 956, 916, 708, + 884, 688, 948, 236, 208, 440, 672, 680, + 236, 708, 680, 708, 916, 680, 948, 680, + 440, 640, 672, 916, 584, 688, 680, 688, + 956, 864, 688, 956, 864, 440, 396, 884, + 328, 396, 440, 664, 956, 916, 688, 864, + 884, 768, 672, 416, 852, 884, 916, 336, + 184, 384, 328, 440, 956, 384, 328, 384, + 440, 440, 384, 768, 328, 336, 384, 384, + 336, 672, 308, 384, 88, 184, 12, 184, + 12, 12, 384, 308, 336, 384, 884, 592, + 992, 996, 916, 88, 384, 184, 672, 884, + 384, 384, 884, 184, 328, 328, 884, 536, + 536, 768, 592, 384, 956, 384, 536, 12, + 844, 352, 768, 616, 664, 592, 592, 996, + 384, 584, 884, 616, 384, 996, 536, 104, + 956, 672, 820, 336, 996, 396, 852, 328, + 640, 520, 852, 552, 328, 396, 676, 328, + 852, 912, 616, 552, 616, 852, 336, 552, + 488, 552, 812, 328, 852, 996, 328, 536, + 852, 384, 552, 536, 488, 384, 812, 852, + 820, 820, 852, 852, 812, 820, 76, 520, + 420, 672, 672, 440, 240, 416, 536, 208, + 12, 640, 748, 12, 584, 328, 384, 416, + 488, 536, 416, 12, 672, 384, 416, 12, + 584, 760, 672, 616, 416, 852, 536, 536, + 536, 672, 776, 152, 852, 208, 328, 416, + 440, 440, 416, 488, 616, 328, 416, 584, + 988, 760, 640, 708, 672, 852, 416, 328, + 708, 672, 328, 416, 640, 672, 692, 640, + 488, 384, 640, 708, 416, 640, 980, 416, + 488, 104, 980, 616, 776, 488, 488, 780, + 888, 852, 680, 184, 876, 208, 396, 996, + 480, 788, 788, 480, 788, 104, 480, 396, + 688, 236, 688, 788, 688, 788, 488, 236, + 480, 788, 672, 608, 488, 104, 996, 616, + 76, 688, 480, 788, 876, 876, 640, 788, + 876, 876, 908, 336, 688, 396, 396, 688, + 308, 996, 308, 468, 688, 584, 552, 688, + 788, 864, 468, 688, 788, 972, 664, 768, + 768, 688, 788, 876, 336, 688, 876, 688, + 876, 956, 688, 412, 292, 156, 236, 292, + 236, 292, 864, 1020, 1020, 412, 324, 680, + 876, 156, 480, 236, 412, 680, 956, 788, + 680, 788, 864, 412, 680, 736, 680, 956, + 412, 760, 768, 864, 480, 972, 956, 480, + 236, 412, 680, 680, 412, 680, 708, 480, + 788, 876, 788, 708, 324, 680, 1020, 640, + 680, 956, 956, 688, 916, 412, 864, 640, + 788, 864, 468, 788, 736, 916, 788, 864, + 736, 324, 876, 468, 688, 788, 488, 708, + 688, 608, 640, 12, 788, 956, 768, 876, + 688, 788, 672, 692, 708, 708, 788, 668, + 640, 468, 680, 668, 708, 788, 668, 788, + 640, 640, 156, 1020, 852, 948, 128, 144, + 208, 396, 396, 396, 128, 144, 640, 668, + 396, 144, 948, 696, 396, 696, 668, 696, + 876, 1020, 156, 680, 948, 696, 680, 948, + 636, 668, 688, 396, 876, 680, 128, 440, + 708, 708, 440, 696, 948, 636, 876, 668, + 396, 876, 708, 336, 760, 276, 640, 688, + 396, 488, 640, 440, 876, 824, 668, 696, + 680, 736, 688, 732, 748, 144, 236, 156, + 668, 1020, 760, 236, 292, 292, 760, 692, + 488, 156, 760, 1020, 860, 888, 888, 860, + 888, 668, 888, 760, 668, 488, 1000, 748, + 760, 292, 480, 480, 760, 748, 888, 888, + 668, 208, 888, 888, 764, 732, 484, 1000, + 276, 888, 996, 640, 748, 732, 876, 128, + 812, 676, 676, 640, 676, 668, 852, 608, + 736, 736, 184, 144, 812, 336, 396, 676, + 640, 668, 676, 696, 676, 760, 636, 972, + 676, 812, 972, 736, 676, 852, 396, 812, + 308, 812, 336, 396, 336, 736, 396, 852, + 812, 812, 668, 736, 780, 748, 156, 748, + 668, 972, 812, 688, 876, 780, 156, 676, + 780, 144, 676, 1000, 780, 972, 396, 780, + 780, 780, 876, 780, 736, 676, 780, 876, + 876, 780, 876, 612, 908, 396, 688, 876, + 612, 688, 736, 972, 480, 780, 736, 972, + 780, 612, 480, 780, 876, 908, 908, 876, + 908, 668, 908, 780, 720, 668, 636, 908, + 332, 396, 812, 668, 480, 396, 780, 812, + 812, 812, 876, 636, 612, 480, 668, 308, + 396, 480, 304, 396, 876, 908, 632, 612, + 736, 844, 748, 732, 812, 204, 732, 888, + 248, 732, 764, 764, 668, 888, 84, 748, + 668, 696, 748, 668, 844, 812, 780, 748, + 732, 748, 780, 780, 748, 780, 276, 780, + 732, 812, 636, 812, 696, 820, 780, 812, + 668, 820, 460, 676, 732, 812, 844, 844, + 812, 844, 636, 732, 812, 844, 696, 872, + 668, 636, 844, 652, 480, 332, 576, 360, + 748, 664, 760, 760, 156, 664, 664, 352, + 664, 664, 760, 748, 612, 748, 156, 248, + 748, 888, 636, 760, 220, 636, 420, 448, + 360, 272, 748, 748, 360, 748, 244, 272, + 360, 448, 352, 448, 360, 448, 452, 452, + 636, 448, 452, 664, 664, 352, 448, 452, + 664, 612, 452, 636, 612, 448, 452, 452, + 580, 220, 748, 476, 664, 360, 420, 420, + 360, 420, 612, 664, 664, 696, 476, 304, + 664, 664, 748, 748, 388, 224, 564, 244, + 576, 272, 452, 664, 708, 452, 972, 576, + 576, 664, 452, 576, 576, 220, 452, 564, + 576, 756, 756, 576, 756, 736, 564, 736, + 576, 564, 576, 244, 264, 264, 224, 264, + 576, 576, 264, 576, 612, 576, 632, 736, + 612, 272, 576, 420, 388, 360, 388, 420, + 420, 388, 708, 640, 244, 188, 388, 576, + 756, 708, 576, 756, 640, 388, 576, 756, + 708, 484, 636, 636, 244, 388, 576, 576, + 388, 612, 640, 420, 476, 272, 388, 740, + 956, 728, 576, 636, 576, 756, 636, 420, + 388, 420, 476, 476, 612, 748, 812, 332, + 756, 996, 756, 564, 612, 216, 360, 756, + 388, 332, 908, 908, 420, 272, 388, 756, + 908, 908, 756, 908, 388, 636, 612, 420, + 272, 420, 332, 360, 104, 908, 360, 388, + 956, 388, 972, 136, 420, 388, 608, 728, + 728, 332, 420, 756, 388, 388, 552, 388, + 728, 272, 420, 692, 552, 520, 216, 332, + 388, 420, 728, 388, 420, 552, 756, 420, + 332, 1000, 520, 488, 388, 816, 520, 332, + 812, 332, 812, 844, 488, 812, 844, 816, + 80, 780, 844, 332, 360, 420, 476, 816, + 748, 476, 784, 748, 420, 784, 784, 784, + 420, 332, 748, 360, 700, 700, 420, 784, + 564, 700, 488, 360, 332, 748, 484, 816, + 1000, 844, 748, 692, 640, 640, 812, 488, + 748, 844, 816, 360, 700, 812, 676, 844, + 360, 748, 780, 520, 748, 780, 700, 912, + 488, 728, 728, 564, 816, 816, 748, 844, + 844, 728, 788, 576, 564, 352, 760, 452, + 748, 292, 448, 480, 448, 700, 520, 748, + 700, 748, 292, 760, 700, 520, 760, 484, + 136, 488, 824, 352, 448, 452, 640, 448, + 276, 760, 352, 824, 824, 824, 728, 292, + 780, 324, 352, 360, 188, 412, 448, 728, + 640, 448, 640, 488, 412, 448, 480, 488, + 692, 640, 136, 360, 480, 448, 448, 380, + 412, 352, 448, 104, 448, 412, 352, 380, + 412, 728, 412, 448, 520, 360, 748, 480, + 780, 552, 748, 480, 816, 640, 756, 448, + 412, 188, 380, 960, 576, 380, 960, 960, + 448, 352, 380, 636, 728, 380, 448, 380, + 412, 412, 448, 816, 448, 576, 576, 412, + 448, 636, 292, 412, 816, 576, 480, 412, + 960, 380, 412, 960, 960, 664, 960, 700, + 412, 484, 816, 816, 448, 480, 620, 728, + 576, 480, 620, 756, 756, 756, 620, 380, + 756, 620, 480, 216, 960, 728, 576, 756, + 700, 576, 620, 756, 816, 620, 276, 636, + 876, 756, 480, 412, 324, 324, 368, 788, + 620, 380, 412, 412, 700, 412, 788, 696, + 380, 788, 788, 788, 412, 788, 412, 696, + 412, 292, 480, 412, 960, 640, 480, 620, + 728, 620, 636, 640, 412, 480, 620, 640, + 480, 136, 960, 756, 380, 188, 368, 388, + 388, 368, 388, 728, 380, 756, 368, 380, + 816, 620, 620, 380, 620, 756, 520, 368, + 360, 812, 332, 736, 480, 780, 584, 924, + 780, 908, 728, 480, 676, 908, 360, 360, + 876, 724, 724, 780, 876, 816, 500, 576, + 816, 500, 480, 188, 480, 392, 420, 724, + 816, 388, 812, 908, 724, 908, 788, 308, + 332, 332, 332, 756, 480, 788, 908, 804, + 788, 804, 500, 756, 868, 868, 480, 756, + 804, 868, 756, 804, 724, 812, 868, 368, + 788, 1004, 804, 724, 876, 500, 364, 788, + 412, 804, 804, 388, 620, 756, 788, 368, + 364, 908, 480, 788, 196, 816, 564, 392, + 728, 480, 224, 964, 548, 608, 1016, 392, + 756, 244, 964, 964, 868, 756, 388, 964, + 868, 724, 944, 388, 652, 168, 312, 292, + 352, 180, 372, 372, 372, 352, 352, 964, + 372, 760, 292, 352, 324, 964, 900, 352, + 324, 352, 964, 352, 964, 760, 1020, 500, + 824, 292, 352, 312, 868, 372, 724, 312, + 824, 760, 352, 312, 760, 964, 500, 760, + 824, 372, 312, 760, 200, 856, 856, 856, + 760, 372, 760, 856, 372, 856, 1020, 148, + 1016, 652, 168, 312, 372, 652, 652, 372, + 652, 400, 312, 372, 652, 964, 632, 868, + 724, 372, 564, 180, 312, 372, 652, 392, + 244, 500, 548, 312, 372, 652, 964, 632, + 964, 932, 652, 564, 564, 452, 620, 576, + 292, 380, 352, 1016, 724, 352, 372, 964, + 380, 372, 932, 964, 324, 412, 352, 380, + 932, 412, 724, 352, 380, 412, 932, 632, + 724, 352, 576, 292, 824, 1004, 1016, 448, + 452, 724, 1016, 292, 180, 292, 576, 620, + 576, 964, 620, 264, 352, 244, 576, 452, + 900, 824, 728, 804, 352, 372, 816, 352, + 264, 576, 380, 576, 804, 352, 564, 620, + 372, 352, 180, 264, 452, 792, 816, 380, + 804, 380, 264, 576, 804, 380, 380, 352, + 380, 652, 180, 264, 372, 772, 772, 372, + 772, 792, 264, 372, 772, 724, 608, 792, + 804, 372, 652, 792, 772, 652, 500, 520, + 772, 380, 728, 652, 180, 264, 380, 772, + 772, 380, 792, 264, 380, 816, 700, 664, + 728, 652, 620, 728, 976, 368, 380, 576, + 620, 728, 724, 564, 724, 792, 620, 792, + 816, 756, 792, 724, 772, 380, 620, 976, + 700, 620, 976, 728, 772, 976, 976, 652, + 772, 520, 772, 996, 1016, 1016, 1016, 652, + 368, 756, 620, 576, 388, 224, 264, 564, + 1008, 772, 564, 500, 856, 264, 564, 772, + 856, 564, 388, 792, 772, 564, 520, 856, + 620, 756, 388, 620, 564, 756, 756, 728, + 756, 724, 620, 932, 932, 756, 724, 652, + 564, 652, 1008, 564, 272, 728, 856, 652, + 520, 932, 976, 380, 712, 944, 228, 168, + 200, 992, 932, 200, 992, 856, 992, 996, + 228, 168, 884, 228, 372, 652, 932, 944, + 652, 944, 792, 372, 652, 792, 792, 564, + 724, 792, 884, 372, 168, 228, 724, 652, + 228, 400, 932, 372, 792, 1004, 372, 168, + 724, 1020, 200, 712, 856, 352, 1020, 324, + 944, 372, 400, 712, 816, 372, 712, 1008, + 500, 712, 900, 792, 792, 292, 884, 944, + 856, 236, 380, 324, 856, 792, 620, 420, + 532, 500, 620, 944, 652, 944, 1004, 944, + 900, 944, 324, 468, 468, 620, 900, 868, + 620, 868, 964, 228, 712, 468, 996, 884, + 500, 900, 884, 944, 468, 620, 900, 620, + 884, 964, 400, 884, 500, 532, 900, 944, + 652, 996, 620, 900, 424, 652, 944, 620, + 652, 996, 652, 608, 532, 400, 424, 884, + 500, 620, 468, 468, 792, 856, 620, 412, + 324, 292, 412, 412, 324, 412, 788, 468, + 620, 856, 620, 792, 620, 928, 928, 468, + 620, 792, 816, 620, 792, 816, 788, 412, + 944, 380, 500, 468, 468, 620, 816, 500, + 476, 424, 868, 412, 468, 928, 620, 468, + 816, 412, 468, 928, 468, 816, 804, 368, + 712, 228, 992, 996, 384, 1016, 976, 996, + 996, 976, 992, 1016, 228, 652, 372, 512, + 928, 816, 1016, 500, 992, 1016, 1016, 652, + 1016, 976, 928, 976, 772, 816, 740, 928, + 816, 1016, 424, 324, 200, 992, 228, 500, + 372, 868, 928, 976, 372, 976, 392, 976, + 424, 368, 372, 324, 468, 352, 380, 468, + 976, 976, 468, 976, 792, 964, 620, 380, + 976, 724, 388, 788, 652, 368, 756, 620, + 976, 976, 868, 756, 368, 380, 620, 900, + 928, 620, 868, 868, 380, 620, 976, 500, + 512, 424, 792, 756, 792, 772, 772, 424, + 652, 772, 900, 868, 872, 868, 868, 620, + 380, 308, 996, 468, 900, 868, 468, 900, + 868, 308, 368, 468, 468, 788, 368, 468, + 976, 468, 252, 1004, 468, 792, 880, 788, + 608, 928, 424, 484, 512, 880, 880, 664, + 880, 424, 1016, 976, 996, 880, 308, 424, + 392, 308, 368, 516, 868, 368, 868, 388, + 424, 976, 388, 996, 812, 1016, 868, 772, + 388, 1016, 1016, 1016, 772, 516, 868, 796, + 660, 1012, 656, 820, 776, 716, 384, 852, + 416, 240, 536, 536, 328, 240, 416, 516, + 364, 416, 424, 880, 416, 240, 1000, 852, + 536, 364, 428, 152, 852, 208, 416, 716, + 928, 980, 716, 900, 868, 416, 716, 980, + 964, 608, 1004, 900, 852, 716, 416, 980, + 716, 428, 152, 212, 384, 416, 384, 416, + 416, 900, 428, 852, 384, 868, 964, 852, + 328, 384, 416, 428, 428, 416, 428, 964, + 384, 416, 428, 836, 484, 392, 164, 852, + 836, 852, 868, 852, 416, 716, 716, 852, + 428, 716, 980, 516, 208, 980, 416, 416, + 880, 416, 392, 776, 840, 868, 980, 840, + 516, 548, 536, 416, 240, 548, 416, 840, + 980, 776, 740, 548, 516, 840, 196, 240, + 840, 516, 240, 244, 868, 516, 536, 840, + 196, 852, 820, 820, 356, 852, 384, 212, + 852, 852, 852, 716, 980, 840, 564, 516, + 868, 912, 516, 196, 656, 208, 144, 576, + 164, 548, 948, 980, 964, 980, 208, 860, + 392, 980, 860, 392, 980, 656, 860, 1020, + 860, 1020, 364, 980, 1020, 868, 980, 860, + 980, 240, 716, 716, 656, 716, 716, 980, + 840, 208, 240, 240, 980, 240, 656, 392, + 980, 656, 392, 364, 656, 860, 860, 732, + 656, 540, 96, 1012, 820, 316, 676, 676, + 676, 812, 820, 196, 812, 820, 964, 820, + 508, 572, 1012, 516, 676, 1012, 572, 676, + 820, 356, 852, 508, 508, 880, 820, 852, + 836, 1016, 1012, 852, 1016, 572, 676, 144, + 964, 252, 724, 96, 572, 960, 852, 128, + 572, 676, 676, 728, 960, 728, 572, 540, + 676, 852, 96, 852, 152, 428, 428, 852, + 152, 428, 816, 816, 428, 724, 960, 820, + 428, 356, 540, 700, 852, 540, 728, 792, + 428, 540, 716, 700, 716, 728, 540, 716, + 816, 960, 852, 716, 804, 852, 128, 980, + 716, 572, 96, 428, 804, 152, 428, 724, + 428, 572, 572, 572, 716, 816, 572, 716, + 700, 716, 980, 960, 152, 128, 696, 852, + 572, 804, 852, 208, 572, 1012, 144, 656, + 860, 804, 656, 804, 456, 1012, 696, 1012, + 508, 572, 656, 656, 572, 656, 696, 508, + 1012, 1012, 144, 948, 980, 572, 456, 572, + 716, 960, 656, 608, 816, 816, 716, 804, + 276, 208, 656, 980, 572, 816, 1012, 732, + 852, 144, 676, 96, 852, 144, 316, 820, + 732, 676, 696, 820, 852, 724, 732, 676, + 632, 928, 848, 848, 820, 732, 1012, 764, + 144, 816, 928, 860, 764, 848, 848, 1012, + 816, 792, 732, 460, 1012, 804, 700, 764, + 376, 1012, 732, 928, 732, 732, 820, 376, + 1012, 1012, 804, 732, 848, 376, 316, 376, + 732, 700, 816, 732, 764, 792, 704, 808, + 384, 716, 504, 416, 840, 568, 212, 416, + 928, 428, 848, 416, 240, 504, 568, 660, + 840, 840, 840, 568, 660, 840, 804, 660, + 848, 804, 568, 660, 456, 848, 576, 848, + 804, 848, 656, 716, 784, 804, 456, 716, + 840, 364, 364, 980, 840, 420, 804, 816, + 840, 660, 716, 848, 848, 716, 980, 816, + 840, 848, 848, 820, 536, 568, 240, 416, + 384, 536, 568, 848, 696, 568, 848, 696, + 536, 568, 840, 276, 568, 276, 840, 264, + 848, 696, 248, 416, 840, 536, 568, 568, + 848, 840, 696, 536, 656, 744, 860, 808, + 992, 840, 992, 808, 816, 840, 808, 364, + 848, 808, 860, 860, 808, 744, 808, 792, + 656, 808, 808, 840, 920, 920, 860, 840, + 656, 808, 808, 240, 476, 960, 456, 808, + 516, 456, 808, 656, 456, 860, 364, 808, + 516, 456, 656, 860, 920, 920, 860, 920, + 196, 660, 840, 808, 744, 600, 296, 568, + 808, 808, 624, 808, 724, 568, 624, 808, + 456, 264, 364, 364, 600, 244, 196, 456, + 624, 808, 724, 600, 992, 536, 568, 608, + 960, 516, 808, 804, 728, 568, 808, 580, + 516, 840, 580, 808, 536, 568, 580, 516, + 452, 456, 364, 664, 456, 752, 600, 752, + 580, 980, 660, 296, 752, 624, 580, 808, + 660, 656, 548, 840, 660, 656, 660, 580, + 752, 808, 656, 840, 580, 548, 840, 516, + 296, 572, 356, 704, 676, 540, 96, 604, + 96, 540, 604, 604, 540, 604, 548, 160, + 316, 676, 820, 508, 604, 1012, 704, 704, + 1012, 704, 604, 704, 752, 820, 580, 72, + 504, 820, 508, 268, 356, 548, 604, 704, + 356, 604, 604, 936, 936, 704, 516, 936, + 604, 820, 580, 516, 428, 820, 212, 384, + 568, 568, 568, 384, 820, 540, 660, 716, + 212, 356, 428, 504, 504, 504, 428, 356, + 504, 456, 580, 356, 504, 196, 716, 504, + 716, 516, 716, 504, 660, 840, 660, 716, + 540, 356, 504, 604, 660, 604, 752, 660, + 604, 548, 504, 604, 508, 540, 728, 548, + 716, 580, 540, 456, 580, 604, 540, 660, + 456, 196, 716, 660, 604, 660, 608, 728, + 728, 1012, 716, 840, 508, 572, 580, 604, + 572, 604, 516, 364, 604, 660, 960, 572, + 656, 660, 696, 276, 660, 960, 656, 660, + 564, 696, 580, 716, 696, 660, 476, 580, + 456, 716, 580, 508, 1012, 696, 656, 604, + 656, 572, 848, 248, 656, 364, 628, 364, + 656, 628, 604, 248, 1012, 628, 660, 296, + 820, 568, 240, 608, 848, 848, 356, 504, + 456, 568, 568, 820, 820, 508, 600, 504, + 268, 568, 296, 356, 820, 936, 820, 456, + 936, 820, 356, 936, 248, 820, 568, 580, + 504, 268, 296, 568, 624, 624, 568, 624, + 276, 568, 296, 564, 364, 728, 504, 568, + 636, 820, 600, 936, 508, 356, 504, 960, + 604, 504, 696, 508, 580, 696, 820, 936, + 264, 636, 580, 604, 704, 936, 220, 704, + 960, 728, 580, 508, 296, 840, 504, 240, + 580, 220, 568, 504, 660, 728, 132, 576, + 364, 248, 568, 752, 660, 624, 660, 804, + 660, 752, 624, 752, 660, 660, 920, 508, + 516, 516, 516, 660, 604, 504, 508, 940, + 940, 716, 880, 516, 660, 508, 364, 660, + 604, 940, 628, 660, 656, 628, 628, 656, + 872, 880, 516, 660, 940, 516, 656, 660, + 660, 508, 796, 644, 556, 404, 284, 432, + 48, 492, 588, 588, 492, 492, 284, 432, + 492, 364, 492, 432, 588, 588, 252, 432, + 404, 284, 460, 588, 588, 460, 252, 516, + 460, 460, 432, 460, 432, 460, 588, 364, + 460, 192, 752, 588, 32, 48, 472, 48, + 172, 472, 472, 172, 172, 460, 588, 48, + 316, 556, 316, 556, 556, 928, 460, 424, + 172, 316, 284, 892, 524, 344, 524, 1000, + 588, 892, 284, 492, 644, 472, 892, 892, + 892, 524, 588, 644, 644, 588, 644, 928, + 644, 252, 892, 892, 492, 524, 456, 928, + 472, 828, 172, 492, 952, 32, 48, 48, + 952, 492, 952, 172, 48, 456, 556, 364, + 952, 172, 444, 928, 556, 444, 952, 444, + 684, 684, 444, 796, 952, 952, 952, 456, + 492, 920, 404, 432, 828, 828, 432, 796, + 952, 432, 492, 828, 828, 492, 364, 252, + 952, 816, 492, 952, 456, 828, 920, 252, + 952, 952, 828, 920, 952, 1000, 492, 444, + 892, 644, 32, 472, 516, 952, 472, 952, + 972, 1000, 600, 892, 644, 892, 472, 600, + 684, 952, 952, 600, 684, 744, 972, 952, + 744, 516, 752, 684, 580, 744, 892, 516, + 892, 920, 364, 920, 972, 220, 892, 600, + 556, 432, 764, 376, 404, 404, 972, 376, + 404, 764, 764, 764, 404, 828, 376, 432, + 432, 1012, 376, 764, 256, 828, 736, 920, + 828, 920, 248, 764, 972, 920, 764, 376, + 736, 828, 220, 1012, 580, 828, 1012, 316, + 432, 248, 556, 432, 460, 376, 556, 364, + 820, 556, 820, 460, 432, 752, 460, 432, + 376, 828, 1000, 556, 784, 972, 752, 1012, + 828, 220, 556, 816, 556, 848, 816, 704, + 600, 624, 172, 296, 444, 628, 684, 796, + 968, 968, 796, 684, 796, 968, 816, 364, + 684, 796, 968, 1000, 516, 444, 684, 628, + 796, 796, 456, 684, 796, 848, 684, 828, + 556, 444, 796, 968, 456, 632, 364, 516, + 556, 1000, 796, 828, 952, 968, 684, 796, + 248, 684, 784, 1000, 1000, 796, 968, 248, + 684, 796, 952, 1000, 796, 972, 1000, 828, + 248, 952, 508, 920, 624, 748, 512, 192, + 816, 580, 628, 684, 796, 684, 928, 728, + 796, 920, 796, 920, 920, 628, 656, 920, + 868, 656, 628, 796, 920, 972, 796, 920, + 844, 656, 784, 972, 828, 972, 796, 828, + 920, 844, 748, 844, 828, 920, 784, 748, + 664, 748, 1000, 684, 296, 600, 912, 888, + 84, 624, 624, 748, 600, 784, 940, 656, + 600, 808, 624, 684, 940, 684, 940, 784, + 744, 808, 880, 880, 920, 808, 684, 624, + 744, 364, 940, 744, 940, 972, 684, 744, + 940, 784, 828, 936, 556, 444, 556, 820, + 704, 820, 968, 704, 444, 556, 512, 784, + 940, 796, 968, 192, 556, 452, 940, 752, + 912, 880, 1000, 704, 940, 940, 936, 628, + 508, 628, 296, 660, 912, 628, 912, 660, + 784, 820, 444, 968, 296, 936, 628, 628, + 268, 604, 628, 936, 936, 936, 912, 604, + 628, 912, 784, 628, 784, 912, 296, 936, + 628, 796, 476, 912, 508, 628, 796, 784, + 936, 476, 936, 628, 796, 940, 968, 604, + 628, 704, 796, 752, 844, 796, 844, 972, + 796, 704, 72, 784, 940, 628, 608, 784, + 752, 452, 940, 784, 796, 936, 752, 968, + 936, 548, 784, 444, 796, 784, 968, 752, + 936, 752, 548, 508, 820, 100, 784, 936, + 752, 820, 548, 72, 704, 820, 796, 1012, + 508, 628, 656, 844, 972, 476, 628, 920, + 100, 656, 784, 656, 1012, 880, 628, 1012, + 628, 796, 564, 748, 720, 828, 720, 424, + 796, 920, 828, 828, 1000, 628, 796, 192, + 972, 796, 424, 912, 820, 628, 968, 556, + 1012, 940, 820, 1012, 912, 912, 820, 704, + 704, 968, 556, 828, 880, 968, 556, 796, + 828, 912, 796, 880, 720, 704, 1012, 796, + 828, 692, 968, 828, 720, 828, 940, 704, + 628, 720, 664, 880, 424, 704, 512, 880, + 424, 796, 880, 720, 584, 456, 476, 544, + 932, 564, 772, 372, 264, 244, 312, 148, + 280, 340, 824, 824, 340, 824, 880, 280, + 340, 824, 880, 664, 252, 880, 312, 148, + 192, 880, 720, 824, 1000, 264, 824, 180, + 452, 824, 180, 312, 312, 180, 452, 252, + 392, 340, 252, 880, 244, 264, 340, 576, + 752, 940, 452, 940, 752, 340, 824, 548, + 264, 824, 452, 340, 824, 940, 452, 340, + 372, 824, 264, 244, 352, 352, 264, 940, + 264, 880, 824, 516, 760, 856, 824, 280, + 372, 940, 312, 252, 372, 824, 312, 824, + 312, 516, 940, 180, 352, 372, 940, 664, + 940, 940, 372, 856, 856, 760, 692, 824, + 548, 372, 312, 180, 1016, 772, 372, 264, + 904, 564, 652, 312, 280, 340, 340, 340, + 340, 548, 1004, 452, 564, 516, 564, 872, + 564, 1016, 772, 548, 772, 1016, 516, 164, + 904, 148, 340, 872, 872, 340, 872, 692, + 872, 904, 340, 1004, 564, 1004, 252, 752, + 904, 872, 904, 1004, 692, 548, 1016, 872, + 564, 872, 548, 872, 160, 904, 1016, 872, + 160, 872, 904, 100, 608, 740, 264, 692, + 772, 872, 264, 564, 772, 872, 872, 772, + 872, 564, 772, 872, 940, 912, 252, 740, + 1000, 1016, 872, 872, 740, 872, 452, 340, + 940, 912, 784, 244, 872, 264, 784, 900, + 900, 264, 608, 608, 872, 872, 532, 608, + 720, 692, 652, 1016, 932, 1004, 760, 856, + 720, 720, 280, 1008, 200, 168, 856, 312, + 532, 720, 532, 312, 792, 856, 424, 608, + 424, 900, 1008, 912, 880, 932, 280, 856, + 372, 140, 856, 372, 148, 280, 312, 1004, + 312, 1004, 1004, 280, 1004, 900, 564, 720, + 912, 280, 312, 692, 720, 312, 372, 880, + 312, 856, 912, 856, 880, 932, 632, 1008, + 856, 932, 880, 856, 720, 912, 932, 904, + 1004, 1016, 1016, 904, 880, 148, 280, 904, + 904, 280, 720, 596, 1016, 632, 1016, 932, + 904, 904, 932, 932, 964, 1016, 340, 1004, + 312, 900, 880, 564, 564, 652, 1004, 1004, + 632, 1016, 1004, 1016, 424, 632, 564, 1016, + 424, 720, 1016, 824, 340, 964, 280, 532, + 856, 392, 400, 880, 904, 400, 904, 720, + 856, 400, 532, 544, 532, 544, 544, 792, + 932, 544, 400, 1004, 532, 532, 1004, 532, + 720, 400, 1004, 544, 424, 904, 880, 1004, + 544, 900, 880, 904, 544, 1004, 932, 880, + 532, 792, 400, 856, 720, 424, 856, 900, + 392, 608, 880, 900, 532, 792, 900, 964, + 392, 880, 720, 964, 692, 904, 692, 904, + 964, 252, 1004, 904, 340, 392, 532, 544, + 632, 632, 544, 632, 880, 532, 544, 632, + 692, 912, 692, 164, 692, 512, 532, 544, + 632, 900, 868, 532, 544, 632, 720, 720, + 632, 720, 544, 720, 596, 564, 1004, 632, + 692, 836, 720, 872, 392, 632, 340, 544, + 740, 836, 904, 740, 836, 392, 544, 904, + 740, 740, 836, 340, 608, 632, 740, 740, + 632, 740, 836, 608, 836, 740, 632, 904, + 740, 836, 632, 740, 740, 740, 904, 904, + 836, 904, 872, 692, 484, 544, 740, 740, + 544, 740, 596, 484, 692, 692, 544, 608, + 740, 596, 392, 740, 836, 692, 964, 872, + 544, 740, 836, 904, 836, 900, 836, 740, + 836, 964, 900, 452, 836, 868, 872, 836, + 900, 904, 532, 544, 836, 692, 836, 692, + 836, 900, 836, 904, 484, 692, 1016, 964, + 1016, 836, 164, 964, 836, 692, 1004, 836, + 512, 632, 280, 532, 856, 532, 760, 692, + 932, 760, 532, 792, 856, 692, 792, 856, + 596, 792, 836, 392, 576, 548, 900, 760, + 532, 424, 632, 632, 720, 692, 760, 760, + 452, 824, 632, 244, 340, 340, 608, 608, + 244, 352, 632, 632, 352, 632, 596, 340, + 824, 280, 532, 900, 692, 900, 760, 352, + 632, 544, 824, 824, 544, 760, 964, 512, + 824, 824, 532, 824, 632, 544, 824, 312, + 340, 1004, 900, 532, 900, 1004, 532, 792, + 544, 824, 1004, 824, 532, 532, 1004, 452, + 512, 544, 824, 512, 532, 400, 452, 824, + 532, 512, 720, 532, 692, 596, 836, 664, + 564, 420, 912, 692, 300, 476, 512, 608, + 608, 512, 608, 720, 300, 720, 476, 608, + 596, 476, 100, 300, 692, 484, 484, 300, + 692, 596, 692, 880, 596, 692, 484, 784, + 608, 912, 596, 692, 784, 608, 692, 216, + 476, 300, 300, 476, 476, 692, 692, 484, + 300, 608, 548, 692, 608, 692, 548, 244, + 784, 548, 720, 608, 596, 484, 740, 100, + 692, 596, 740, 836, 548, 512, 72, 1016, + 596, 740, 836, 692, 740, 740, 692, 836, + 596, 596, 608, 632, 692, 836, 632, 596, + 692, 740, 596, 608, 548, 548, 608, 164, + 548, 596, 632, 596, 632, 740, 548, 692, + 544, 608, 692, 692, 512, 912, 160, 596, + 692, 912, 164, 596, 912, 692, 596, 548, + 608, 632, 692, 720, 912, 596, 692, 548, + 224, 692, 692, 632, 720, 548, 548, 720, + 692, 692, 632, 608, 632, 300, 912, 836, + 632, 912, 692, 632, 420, 484, 100, 300, + 160, 100, 300, 476, 548, 1016, 784, 784, + 784, 300, 484, 912, 1016, 484, 548, 900, + 940, 476, 844, 420, 960, 748, 844, 420, + 476, 784, 748, 596, 784, 300, 692, 476, + 784, 632, 740, 476, 632, 844, 608, 420, + 244, 300, 484, 740, 760, 912, 888, 760, + 244, 300, 1016, 564, 216, 484, 1016, 748, + 888, 484, 388, 420, 224, 300, 484, 760, + 300, 484, 748, 300, 1000, 420, 388, 84, + 476, 216, 484, 564, 484, +}; + +static encode_aux_nearestmatch _vq_auxn_lsp32_1 = { + _vq_ptr0_lsp32_1, + _vq_ptr1_lsp32_1, + _vq_p_lsp32_1, + _vq_q_lsp32_1, + 5077, 5077 +}; + +static static_codebook _vq_book_lsp32_1 = { + 4, 256, + _vq_lengthlist_lsp32_1, + 2, 1603705124, 1582427982, 8, 1, + _vq_quantlist_lsp32_1, + &_vq_auxn_lsp32_1, + NULL, +}; + + +#endif diff --git a/include/vorbis/book/res0_0a.vqh b/include/vorbis/book/res0_0a.vqh new file mode 100644 index 0000000..d563cf5 --- /dev/null +++ b/include/vorbis/book/res0_0a.vqh @@ -0,0 +1,103 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0a_VQH_ +#define _V_res0_0a_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0a[] = { + 0, + 4, + 5, + -4, + 6, + -5, + 3, + 8, + 2, + -6, + -8, + -2, + 7, + -7, + -3, + 11, + -11, + -9, + 1, + 10, + 9, + -1, + -10, + -12, + 12, + -13, + 13, + 14, + -14, +}; + +static long _vq_lengthlist_res0_0a[] = { + 2, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, + 6, 6, 6, 6, 6, 6, 7, 8, 9,10,11,12,12, +}; + +static long _vq_ptr0_res0_0a[] = { + -1, -2, -3, -4, 15, 26, 7, 19, + -9, -10, 1, 8, 2, 12, -15, -16, + -17, 16, 25, 10, 17, -22, -23, 9, + 3, -26, 11, 21, +}; + +static long _vq_ptr1_res0_0a[] = { + -14, -8, -6, -5, 24, 27, -7, 20, + -12, -11, 6, 18, -13, 4, -21, -19, + -18, 23, 28, -20, 22, -25, -24, 13, + 5, -27, 14, 0, +}; + +static long _vq_p_res0_0a[] = { + 15, 15, 15, 15, 15, 26, 7, 19, + 1, 1, 1, 8, 2, 12, 16, 16, + 16, 16, 25, 10, 17, 9, 9, 9, + 3, 11, 11, 21, +}; + +static long _vq_q_res0_0a[] = { + 16, 1, 19, 27, 24, 27, 20, 20, + 2, 18, 6, 18, 4, 4, 3, 22, + 28, 23, 28, 17, 22, 21, 5, 13, + 5, 21, 14, 0, +}; + +static encode_aux _vq_aux_res0_0a = { + _vq_ptr0_res0_0a, + _vq_ptr1_res0_0a, + _vq_p_res0_0a, + _vq_q_res0_0a, + 28, 28 +}; + +static static_codebook _vq_book_res0_0a = { + 1, 29, 1, 1610612736, 1614282752, 4, 0, 1, 1, 4, + _vq_quantlist_res0_0a, + _vq_lengthlist_res0_0a, + &_vq_aux_res0_0a, +}; + + +#endif diff --git a/include/vorbis/book/res0_0b.vqh b/include/vorbis/book/res0_0b.vqh new file mode 100644 index 0000000..bd8777b --- /dev/null +++ b/include/vorbis/book/res0_0b.vqh @@ -0,0 +1,184 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0b_VQH_ +#define _V_res0_0b_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0b[] = { + 0, 0, + 4, 0, + -4, 0, + 0, -3, + -7, 0, + -5, -7, + 0, 4, + 0, -7, + -4, -4, + 8, 0, + 0, 7, + -4, 3, + -8, 6, + -8, -7, + 5, 5, + -7, 4, + 3, 5, + 7, 8, + 5, 2, + 4, -5, + 3, 3, + -2, 6, + 4, -2, + -8, -4, + 2, -4, + 8, -6, + -8, -6, + -5, 6, + 8, 3, + 9, 8, + 4, -8, + -2, 9, + -7, 7, + 7, -8, + 5, 9, + -5, 9, + -7, 8, + 9, -8, + 7, 6, + 7, -4, + 6, -9, + -9, 4, + -9, 0, + 7, 5, + 5, 7, + 5, -7, + -4, 6, + 3, 7, + 9, -3, + 5, -4, + 6, -2, + -7, -9, + 2, -8, + 9, 5, + -9, 9, + 3, 9, +}; + +static long _vq_lengthlist_res0_0b[] = { + 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 8, +}; + +static long _vq_ptr0_res0_0b[] = { + -1, -2, -3, -4, -5, -6, 21, 46, + -9, 6, 0, -12, -13, 31, 21, -16, + 31, 35, -19, 54, -21, -22, 12, 15, + -25, 32, 27, 54, 35, -30, -31, -32, + 1, 20, -35, -36, -37, 14, 16, 18, + 20, -42, 18, -44, 18, -46, 43, 53, + -49, -50, -51, 29, 38, -54, -55, 14, + 38, -58, 17, 34, -61, 16, -63, 55, + 47, -66, -67, -68, -69, -70, -71, 4, + 42, -74, 15, -76, -77, 3, -79, 1, + 22, -82, 2, 9, -85, 3, 42, -88, + 4, 23, -91, -92, 5, 7, -95, -96, + 13, 5, 5, -100, -101, -102, -103, -104, + 30, 19, 19, -108, 7, 24, -111, -112, + 33, 40, -115, -116, 45, -118, 33, 37, + -121, -122, -123, 39, 45, 45, 48, -128, + 1, -130, 22, 49, -133, 48, +}; + +static long _vq_ptr1_res0_0b[] = { + -65, -29, -18, -11, -8, -7, 11, 11, + -10, 11, 11, -15, -14, 10, 10, -17, + 46, 46, -24, -20, 11, -23, 41, 41, + -27, -26, 11, -28, 36, -48, -41, -34, + -33, 0, -40, -39, -38, 20, 20, 20, + 6, -43, 9, -45, 28, -47, 28, 28, + -60, -53, -52, 53, 53, -57, -56, 44, + 44, -59, 44, 44, -62, 10, -64, 10, + 10, -99, -84, -75, -73, 11, -72, 23, + 23, 41, 11, -81, -78, 0, -80, 0, + 0, -10, 11, 50, -90, -86, -87, -89, + 8, 8, -94, -93, 8, 8, -98, -97, + 51, 51, 26, -114, -110, -107, -106, -105, + 52, 52, 45, -109, 52, 52, 37, -113, + 45, 45, -127, -120, -117, -119, 25, 25, + -126, -125, -124, 25, 25, 49, 25, -132, + -129, -131, 50, 50, -83, 50, +}; + +static long _vq_p_res0_0b[] = { + 110, 24, 92, 12, 42, 42, 42, 92, + 12, 12, 0, 42, 62, 62, 42, 62, + 62, 70, 24, 108, 30, 24, 24, 30, + 64, 64, 54, 108, 70, 36, 2, 2, + 2, 40, 32, 28, 28, 28, 32, 36, + 40, 18, 36, 36, 36, 86, 86, 106, + 28, 58, 58, 58, 76, 28, 28, 28, + 76, 34, 34, 68, 32, 32, 110, 110, + 94, 6, 4, 8, 8, 8, 8, 8, + 84, 30, 30, 6, 6, 6, 2, 2, + 44, 4, 4, 18, 6, 6, 84, 8, + 8, 46, 16, 10, 10, 14, 26, 26, + 26, 10, 10, 38, 60, 38, 60, 60, + 60, 38, 38, 14, 14, 48, 66, 66, + 66, 80, 78, 66, 90, 66, 66, 74, + 78, 78, 78, 78, 90, 90, 96, 2, + 2, 44, 44, 98, 96, 96, +}; + +static long _vq_q_res0_0b[] = { + 14, 106, 54, 20, 12, 92, 22, 22, + 0, 22, 22, 92, 42, 20, 20, 70, + 92, 92, 64, 24, 22, 30, 82, 82, + 72, 54, 22, 72, 72, 68, 18, 36, + 40, 0, 12, 36, 32, 40, 40, 40, + 12, 56, 18, 86, 56, 106, 56, 56, + 32, 34, 76, 106, 106, 68, 76, 88, + 88, 68, 88, 88, 94, 20, 94, 20, + 20, 48, 16, 4, 30, 22, 84, 46, + 46, 82, 22, 4, 44, 0, 44, 0, + 0, 0, 22, 100, 14, 16, 46, 46, + 16, 16, 52, 14, 16, 16, 52, 10, + 102, 102, 52, 98, 80, 48, 90, 38, + 104, 104, 90, 48, 104, 104, 74, 80, + 90, 90, 100, 78, 50, 74, 50, 50, + 96, 98, 90, 50, 50, 98, 50, 18, + 44, 98, 100, 100, 18, 100, +}; + +static encode_aux _vq_aux_res0_0b = { + _vq_ptr0_res0_0b, + _vq_ptr1_res0_0b, + _vq_p_res0_0b, + _vq_q_res0_0b, + 134, 134 +}; + +static static_codebook _vq_book_res0_0b = { + 2, 56, 1, 1610612736, 1614282752, 4, 0, 1, 1, 4, + _vq_quantlist_res0_0b, + _vq_lengthlist_res0_0b, + &_vq_aux_res0_0b, +}; + + +#endif diff --git a/include/vorbis/book/res0_0c.vqh b/include/vorbis/book/res0_0c.vqh new file mode 100644 index 0000000..150293a --- /dev/null +++ b/include/vorbis/book/res0_0c.vqh @@ -0,0 +1,2752 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0c_VQH_ +#define _V_res0_0c_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0c[] = { + 0, 0, 0, 0, + 0, 5, 0, 0, + 0, -1, -3, 0, + 0, 0, 0, 5, + 5, 0, 0, 0, + -5, 0, 0, 0, + 0, 5, 0, 5, + -4, 0, 0, -4, + 0, -3, 4, 0, + -3, 3, 1, 0, + 0, 1, -6, 0, + 3, 4, 0, 0, + -1, 0, 2, 3, + 0, -4, 0, -5, + 2, 0, 0, -4, + 0, 4, 4, 0, + 0, 5, -4, 0, + 3, -4, 0, 0, + 0, -5, 0, 1, + 0, 0, -3, -4, + -1, 0, 4, -3, + 0, 0, -5, 3, + 0, 0, 4, 0, + 3, 0, 4, 0, + -3, 0, -5, 0, + -5, 0, 2, 0, + -5, 0, 0, 3, + 1, 1, -1, 0, + 1, -5, 0, 5, + -1, 3, 0, -3, + 4, 0, 0, 5, + 4, 0, -5, 0, + 0, 0, 0, -6, + 0, -5, 5, -3, + 0, -3, 0, -2, + -3, -4, 0, 0, + 5, 4, 4, 0, + -3, 0, -3, 3, + -3, -1, 4, -6, + 3, -2, -3, 2, + -2, 3, -3, 2, + 5, 0, -1, -7, + 4, 5, 1, -3, + 5, 7, -1, 0, + -4, -6, 5, -5, + -5, 3, -1, -3, + 6, -4, 4, 0, + 5, 5, 4, 3, + -4, -7, 3, 0, + 0, 5, 6, -4, + 0, 3, -5, 5, + -6, 4, 4, -5, + 0, 0, -6, -4, + 0, 3, -6, -4, + 5, 4, 1, 5, + 2, 5, 3, 4, + 2, 5, -1, 5, + -6, -3, 4, -2, + -7, -7, 0, 0, + 4, -5, 6, -3, + 5, 5, 1, -6, + 4, -5, 0, -5, + -3, -3, 6, 0, + -5, -3, -3, 1, + -4, 0, 6, 0, + -3, 4, 6, -2, + -6, 0, -2, 6, + 0, 4, -3, -5, + 1, -4, 4, -6, + 4, 3, 5, -5, + -2, 5, -6, -4, + 4, -4, 6, 0, + 1, 8, 1, 0, + -4, -6, 1, 3, + 0, -7, 6, 0, + 7, 0, 0, -5, + -4, 0, -6, 5, + -6, -6, 5, 0, + -3, -3, 6, -3, + 3, -4, 3, 5, + 0, 3, 4, 6, + -6, -5, 1, 4, + 4, -5, -4, 4, + 5, -4, -3, -1, + -5, 4, -2, 5, + 6, 0, 3, -5, + -5, -3, 4, 2, + 5, 0, -4, -3, + 0, 4, 6, 3, + 0, 3, 3, -3, + 0, -4, -6, 0, + -5, -6, -5, 3, + 5, 2, 3, 3, + 6, 0, 4, 0, + 4, -6, 3, -4, + 5, -7, 4, 0, + 4, 4, 5, 6, + 0, 0, 5, 5, + 4, 0, -5, 5, + -7, 0, -4, 0, + 0, -5, -5, 3, + -5, 6, 0, -1, + -5, 0, 4, 5, + 6, -4, -5, 0, + 4, 3, -4, 0, + 5, 0, 6, -4, + 4, 0, -6, -5, + 3, 0, 4, 4, + -4, -5, -1, 6, + 7, -5, 0, 5, + 5, -2, 0, 2, + 0, -3, -5, 5, + -2, 6, -5, 5, + 6, -4, 0, -4, + 6, -4, 4, -6, + -4, 2, 6, -6, + 0, -6, 4, 3, + -6, 4, 5, 0, + -5, 4, -5, -1, + 6, 0, 5, 5, + 5, 5, 5, -3, + 4, 4, -3, -3, + -6, 4, -3, 0, + 5, 5, 0, 3, + 0, 5, 0, -5, + -2, -2, 0, 5, + 1, 0, 7, 0, + 0, 6, 7, 0, + -4, -4, -3, -4, + 5, 7, 5, 0, + 0, -5, -3, -4, + 7, -5, 0, 0, + 1, 0, 6, -6, + -5, 4, -6, 3, + -3, 6, 3, -4, + 5, 0, -2, 0, + 8, 4, -1, 0, + -8, 6, 0, 1, + -3, 4, 0, 5, + 4, 4, 6, 1, + 2, -4, -4, 0, + -4, 0, -6, -6, + 5, 3, -4, -5, + 6, -4, -4, -5, + -4, -6, 1, -3, + -7, 5, 0, -5, + 0, -3, 5, 5, + -4, -4, 5, 5, + -6, 0, 4, -4, + -6, 0, -1, -7, + 0, -7, -1, -1, + -4, -4, -6, 0, + 3, -4, -6, -4, + 2, 0, 2, -2, + -3, 4, 0, 2, + -5, -4, 0, -6, + -5, -4, 3, -6, + -3, -3, -5, 5, + -5, -6, -3, 0, + 7, 0, 0, 8, + 0, -6, 6, 6, + 3, -7, -6, 0, + 4, -6, -4, -4, + -3, 0, 6, 3, + -1, -3, -4, -7, + 0, -4, 7, 2, + 4, 3, -2, 6, + -6, -4, -5, 5, + 5, -7, 0, 4, + -8, 0, 0, -3, + 5, -7, -4, 0, + 3, 6, -5, 5, + 3, 5, -3, 2, + -6, -5, -1, 6, + -3, 2, 4, 3, + -6, 0, 5, 4, + -6, 5, 3, 4, + -5, 3, 5, 3, + -8, 0, 0, 5, + -6, -4, -4, -6, + -4, 7, 3, 1, + 4, -4, 7, 3, + 3, 3, -6, 5, + -7, 4, 3, -2, + -1, -4, -6, -4, + -6, 7, -3, 1, + -4, 6, 6, 0, + -5, 4, 5, 6, + 4, -2, 4, 3, + 6, 6, -5, 3, + 8, 0, -3, 3, + -8, 1, -3, -5, + 8, 0, -3, -7, + 3, -4, -4, -6, + 4, 0, 4, 8, + -3, 0, 6, 7, + 5, -4, -6, 4, + 7, -4, -2, 4, + 7, -4, 4, 5, + -5, -4, -5, -2, + 3, 5, -7, 0, + 4, 8, -5, 0, + 3, -3, 6, 4, + 0, 7, 6, 4, + -1, 7, -2, -2, + 5, 3, -6, -1, + -5, -1, -3, -3, + -5, 1, -4, -3, + 0, -5, -4, 6, + 4, -7, 4, 4, + 5, 4, -5, 5, + 2, 6, -5, -3, + 3, -4, -5, 7, + 7, 4, 0, -3, + 6, 4, -3, -3, + -4, 5, -3, 2, + 0, 5, -8, 3, + -1, 8, -6, 0, + 7, 2, 0, 6, + -6, 2, 1, 6, + 1, -2, 0, 8, + -3, 8, -1, 3, + 7, -8, 0, -1, + 1, 4, 4, -7, + 4, 4, -6, -5, + -4, -5, -6, -5, + 5, -1, -6, 3, + 6, 6, -5, -3, + 6, 3, -4, 3, + -4, -1, -6, -4, + -3, 6, 4, 5, + -7, -6, 4, 3, + 0, -6, -7, -5, + -4, 3, 0, -7, + -3, -7, -3, -4, + -7, 4, -3, 6, + -3, -3, 2, 6, + -6, 4, -4, -6, + -5, 4, -6, -5, + -4, 6, -3, -5, + -8, -4, 0, -3, + -1, -8, -7, 0, + -7, -8, -3, 0, + -8, -1, 4, 6, + -7, 8, -4, -2, + -5, 6, 6, 4, + -8, -5, -1, 6, + 6, 6, 5, 5, + 4, -7, -6, 4, + 8, -3, -4, -2, + 6, -4, -4, 7, + 8, 4, 3, 6, + 8, 7, 2, -3, + -5, -7, -6, -3, + -7, -6, -3, -3, + 0, -8, -5, 4, +}; + +static long _vq_lengthlist_res0_0c[] = { + 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9,10,10,10,10,10,10,10,10,10,10,10,10,10,10, +}; + +static long _vq_ptr0_res0_0c[] = { + -1, -2, -3, -4, -5, -6, -7, -8, + -9, -10, -11, 55, -13, 6, -15, 55, + 72, -18, -19, 43, 11, -22, -23, 54, + 55, -26, -27, -28, 55, 11, -31, 56, + -33, 56, 190, -36, -37, -38, -39, -40, + -41, 47, 247, -44, 55, -46, 203, -34, + -15, 197, -51, 72, -53, 72, 43, 55, + -57, -58, -59, 54, 247, -62, -63, -64, + -65, -66, 36, 252, 129, -70, 43, 190, + -73, -74, -75, -76, 36, 93, -79, -80, + 11, -82, -83, -84, -85, 47, -71, -86, + 92, -90, -91, 54, 123, 92, 123, -96, + -97, -98, -99, -100, -13, 131, 113, -104, + 1, 72, 112, -108, -109, -110, -111, 1, + 16, 172, -105, -102, -18, 253, 110, -118, + -121, 6, 56, -124, -80, 17, 27, 172, + -129, -130, -131, -132, -133, -134, 6, -136, + -137, 54, -125, 55, -141, -142, -143, 55, + 92, 107, -147, 27, -149, 6, -151, 166, + -153, 56, 30, -156, 6, -158, -159, 54, + -33, -138, -163, -164, 11, 123, 27, -168, + -169, 159, -171, 166, -173, 159, -175, -176, + -159, -161, 218, -180, 194, 92, -183, -184, + -185, 80, 110, 54, 96, 92, 194, 80, + 96, -194, -195, -196, -197, 55, 11, 11, + -29, 83, -203, -204, 36, 23, -207, -76, + -201, -208, -211, 23, 17, -214, -124, 234, + -212, -216, -219, -220, 11, 27, 23, -211, + 87, 92, -227, -228, -229, 36, -231, -232, + 47, 129, 247, -236, -237, -238, -15, -224, + 88, 80, 15, 88, -245, -246, -247, -248, + -232, 249, 203, -252, -232, -201, -253, -256, + 96, -258, -259, -260, 55, 96, 96, -264, + -265, -15, 31, 103, -269, -243, -267, 83, + -256, -271, -275, -59, -273, 55, -279, -280, + -281, -229, -276, -284, 92, 36, -287, -288, + -289, 23, 107, -292, 92, -294, 92, -296, + -297, -298, -299, -300, -301, 47, 54, -304, + -84, -4670, -282, -306, -309, 96, 162, -312, + -91, 162, 249, -305, -314, 83, 113, -320, + -321, -91, 249, 83, -325, -88, 249, 119, + -309, 75, -329, -277, -330, -334, -292, -332, + 119, -256, -335, -340, 194, -338, -343, -277, + 110, -346, -256, 197, 168, -290, -348, 83, + -353, -354, 80, -356, 96, -358, -359, 96, + 107, 194, -363, -364, -365, -366, -367, -368, + -369, -370, 42, -372, 60, -374, -375, -376, + 42, 69, 69, -380, -381, -382, 49, -377, + 17, 120, -387, 69, 89, 132, -391, -392, + -393, -394, 49, 72, -397, 15, -399, -400, + 42, -402, 49, -384, 49, -406, -407, -408, + -409, -410, 42, -403, -411, -414, -415, -416, + -417, 36, 196, 127, -421, 42, 120, -424, + -425, -410, 170, -426, -429, 120, 197, -432, + 60, 196, -435, -436, -437, -438, 36, -433, + 15, 82, -443, -444, 1, 15, -20, -441, + -447, -450, -451, 15, -453, -454, 15, -426, + -457, -454, -455, -458, -461, 127, 170, -464, + -51, 170, 127, -468, -250, 170, 168, -470, + -473, -474, -475, -476, -477, -478, -479, 36, + 42, 36, 36, -229, -471, -484, -487, 85, + 93, -490, -491, -492, -493, -494, -480, -485, + 83, -498, 60, 103, -501, 42, -487, 83, + -505, -506, -410, -503, 213, -429, 170, -510, + -513, -514, 60, -511, -517, 85, 105, -515, + -521, -522, -523, -524, -525, -526, 69, 105, + -529, 85, -310, -532, 69, 85, -535, 93, + -537, -538, -539, -540, -229, -530, 93, 93, + -545, -546, -289, 140, 126, -542, 17, 93, + 105, -554, -555, 69, -550, -558, 105, 120, + -561, -378, 170, 36, 89, 93, 105, -568, + -80, -562, -220, -569, 168, -574, 14, 69, + -572, -578, -579, -580, -581, -582, 42, -444, + -576, -586, -587, 1, 204, -590, 72, 103, + -593, -594, -376, 161, 124, -382, -595, 89, + 124, -602, 49, 72, -605, -606, -607, -608, + -609, -400, -598, -610, -613, 14, -378, -611, + -617, -618, 42, 14, -621, -376, -615, -599, + -622, -624, -627, -377, 140, 85, 132, -632, + -633, -634, -372, 31, -377, -635, 103, -640, + 14, -642, 124, -644, -645, -646, 41, -638, + 60, 60, -651, 14, -647, -654, -655, -656, + -657, 42, -659, 11, 124, -662, 14, 27, + -220, 2, -221, 83, 4, -670, -671, -672, + -673, -674, -675, 67, -677, -678, -679, 53, + 211, -682, 67, -667, -685, 67, 70, -688, + 53, 67, 53, 16, 27, -694, -695, -696, + -697, -698, 14, 67, -699, 162, -646, -701, + 67, -706, -707, -708, 41, -710, 14, 19, + 87, 121, -715, -716, 41, -718, 41, 106, + 19, -722, -723, -724, 52, 87, -720, -703, + -729, 53, -731, 53, -733, 19, -735, -736, + 53, 67, -739, 53, 106, -742, 53, 205, + -678, -315, -727, 106, 121, -737, -747, -752, + -725, 52, -755, 87, -753, -758, 205, -756, + -761, -762, 53, -764, -765, 52, 10, 2, + -769, 104, -771, -772, -773, -774, 14, -759, + -777, 19, 87, -780, -767, 232, 27, -224, + 193, -784, -787, -788, -224, 193, 104, -789, + 205, -794, -769, 130, 205, -795, -799, -800, + -801, -802, -803, -804, -805, -506, -978, 161, + -807, -70, -808, 90, 161, -814, 11, 213, + -432, -812, -817, 93, -80, -818, 136, 135, + -825, -826, -827, -828, 41, 130, -828, 130, + -833, 41, 75, -836, -480, 162, 14, -498, + -837, -842, -843, -844, 75, 213, -840, -487, + -846, -850, -851, -852, -853, 42, -855, 43, + 121, -858, -859, 60, -831, 121, 211, 14, + -588, -550, -867, -675, -840, 121, -871, 211, + -868, -874, -875, 14, -877, -878, 11, 170, + 27, 214, 135, -884, -885, -886, -887, -888, + -889, -716, 162, 87, -893, 75, 162, -755, + -894, 192, 162, -900, -901, 75, -903, 87, + -905, -906, 87, -908, 190, -898, -911, -912, + 14, -914, -915, -224, 161, 104, -755, -916, + -919, 104, -920, -924, -925, 67, 121, -718, + -922, 60, -931, -932, -859, -928, -935, -936, + 75, 213, 192, -933, -941, -942, -718, -939, + 234, -946, 75, -944, -949, -929, 130, -950, + 214, -954, -955, -956, 104, 205, -959, 214, + -961, -962, -737, 150, 211, -966, -862, 130, + 224, -970, -971, -972, 205, 214, -975, 121, + -967, -757, -1936, 90, -979, -982, -713, -980, + 227, -986, 224, -983, -989, -990, -991, -992, + -993, 50, 21, -996, -997, 10, 104, -1000, + -1001, 172, 16, -987, -1005, -1006, -1007, -1008, + -1009, 10, 104, 21, 13, -1001, 130, 182, + 172, -1018, -1019, 182, 2, 200, -1023, -1024, + 104, -1020, 2, 19, -1029, -1030, -1031, -1032, + -1033, 171, -1035, 172, 200, 217, -1039, -1040, + 50, 16, -1043, -1044, -1045, -1046, 50, 182, + 172, -1050, -1051, 171, -1027, 172, -1055, -1051, + 150, 200, -1059, 172, -1061, 16, -1014, -1064, + 16, 112, -1067, -1053, 13, -1070, -1059, -1068, + 189, -1071, -1075, -1076, 189, -1073, 200, 232, + -1081, -1082, -1083, -1084, -1085, 53, 200, 130, + -1089, 70, 211, -1092, -1093, 16, -1087, 204, + -1097, -1098, -1064, -1094, 201, 90, -1103, -1104, + 200, -1106, 201, -1108, -1109, -1110, -1111, -1112, + -1113, 43, 16, -1035, -1101, 184, 43, -1120, + 1, -1117, -1123, -1124, -1125, 11, -1121, 16, + -4647, 52, -1129, -1132, -1133, -1114, -1130, -1136, + -1137, 43, -1139, 204, 204, 184, -1143, -1144, + -1114, -1141, 19, -1148, -1001, -1141, 201, 164, + -1153, -1104, -1151, 164, -1157, 16, -1155, -1160, + -1161, -1162, -1163, 200, -1158, -1166, -1167, 205, + -680, -1164, -1171, -1172, -1173, 43, -1169, -1359, + -1174, -1176, -1179, -956, 143, -975, -747, -1184, + -972, 87, -1185, -1186, -1189, -1190, -1191, -1192, + -1193, -1194, -1195, -1196, -1197, 166, 123, -667, + 56, -1202, 171, -1204, -1205, 189, -701, 210, + 190, -1210, 98, -1206, -1213, -1214, -1215, 190, + -1217, -1218, -1219, 189, -1211, -1222, -1205, 249, + -1207, -638, 218, 159, -1229, -1215, -638, -1232, + -91, -1185, 218, -1236, -94, -1233, 251, -1234, + -271, -1242, -1243, -159, -1240, -1244, -1245, 123, + -1249, -1250, -1251, -1252, -1253, -1113, 249, 192, + -1257, -1258, 171, -1255, -1035, -903, 87, -1264, + -1265, 172, 113, -1268, 189, -1270, -33, 75, + -1265, -1271, -1273, -1276, -1277, -1202, -1274, 172, + -1281, -1265, -1278, 14, -1205, 87, -1285, 171, + 172, -1290, -1291, -1113, 106, -1294, 189, -1219, + -1255, 227, -1299, -1300, 43, 41, -1301, -1304, + -1305, -1306, 43, 11, -1309, -814, 41, -1247, + -1310, -1312, -1300, 193, -1265, 87, -1319, -1215, + -1310, -1322, -1323, -1324, 104, -1320, -1327, 228, + 205, -1330, -1331, -1332, -1333, -1334, -1335, -1336, + -1337, -1338, 50, -1301, -1341, 171, -1310, -122, + 87, 171, -1347, -1348, -1349, -1350, 166, 182, + 41, -1354, -1355, 171, -1352, 172, 14, -1410, + -1310, 61, 50, -1351, -1361, 98, -1367, -1053, + 41, 21, -1371, -1372, -1046, -1368, 112, 171, + -1051, -1373, -1379, -153, -1377, -1380, -122, -1381, + -1383, -1386, -1387, -1388, -1001, -1283, -1277, -4706, + -1361, 83, -1395, -1265, -1393, 182, -4836, -1391, + 193, -313, -1399, -1401, 61, -1406, -1407, -1397, + -1404, -313, -4675, -1409, 83, -1210, -313, -1024, + -1414, -1418, 226, 31, -1421, -1422, -1423, -1424, + -1425, -1426, -1427, -1428, -1429, -1430, -1431, -1432, + -1433, 38, 115, -1436, 20, -1438, 7, 7, + 233, 89, -1443, -1444, 20, -1446, -642, -1416, + 29, -1450, 7, -1452, -1453, -1454, -1455, -1456, + -1457, -1458, 49, -1460, -1461, 20, 115, 89, + -1465, 115, -382, -1447, 249, -636, 128, 83, + -1471, -599, -1472, -1474, 20, 126, -1479, -1480, + -1481, 89, 223, -642, 17, -1484, -125, -1488, + -1489, -1490, -1491, 7, 9, -1494, -1495, 65, + 14, -1498, -1499, 9, -1501, -1502, -1503, 64, + 65, 117, -1507, -1508, 183, 25, -1511, 7, + 115, 51, -1515, -1516, -1517, -1518, 64, -1496, + -1521, -1522, 78, -1283, -1436, 17, -1361, -1528, + 65, -1495, -1526, -1530, -1533, 65, -1535, -1536, + -1537, -1538, -394, -1531, 65, 126, 65, 126, + 15, -1539, -1547, -1548, 9, -1550, 65, -224, + -1553, -1554, 15, 9, -1557, -1558, -1559, -1560, + -623, -4815, 87, 2, -1565, -1566, -602, -1563, + 223, -1465, 162, -599, -1570, -1574, 115, -1572, + -1577, -1578, 51, -1575, -1581, -1582, 65, 89, + 19, -1586, -1587, 1, 89, -1590, -603, 19, + 124, 2, -1595, -1596, -1538, -4783, -1593, -574, + 186, -1602, -602, 2, -1079, -1603, 83, -1608, + -1609, -394, -1606, -445, 17, -1614, 49, -603, + 14, 61, -1619, -1620, -1621, 9, -1617, -4815, + -1622, -1624, -1627, -1628, -1629, -1630, -1631, -1632, + -1633, 51, 65, 32, 183, 186, -1578, 14, + -1641, 183, 186, -1508, -1639, -1644, 65, -1434, + -1591, 115, 134, -1652, -1653, -1654, -1655, -1513, + -1068, -1656, -1659, -1660, -1661, -1662, 45, 9, + -1665, -1621, -1657, 101, 29, -1670, 7, -1672, + 45, 29, -1675, -1676, -1670, 13, 51, -1677, + -1681, -1682, -1683, -1684, 45, -1686, 51, 183, + -1689, 183, 134, -1684, 19, -1694, 101, -1692, + -1697, -1686, 193, 233, -1690, 19, 19, -1704, + -1705, -1706, -1707, 1, -1663, 13, -1711, 72, + -1713, 101, 204, -1716, -1717, -1718, -1719, 67, + -1721, 204, 124, 164, -1725, -1726, -1722, -1723, + 233, 32, -1727, -1732, -1733, 101, 204, 134, + -1737, -1738, 45, -1730, -1739, -1742, -1743, -1744, + -1745, -1746, -1555, -1740, 61, -1750, 15, 20, + -1753, -1754, 38, -1756, -1757, 7, -1748, 13, + -1761, -1762, 64, -1759, -1436, 61, -1765, -1768, + -1751, -1766, -1771, 22, 25, -1774, -1775, -1776, + -1777, -1778, 20, -566, -1769, -828, -527, -1781, + -1783, -564, -1784, -1788, -1789, -1790, -1791, 15, + -1793, -1794, 22, 23, -1797, 22, -1786, -720, + -1801, 1, -1803, -1804, 15, -784, -1807, -1808, + -1809, -1810, -1811, -1812, 1, 52, -1815, 16, + -1813, -1818, 9, 29, -1821, -1822, -689, -1816, + -1823, 16, -1824, -1828, -1829, 1, 52, -1832, + -1833, -1757, 164, -1836, -704, -1834, -1837, -1840, + -1841, -1842, 19, -1838, -1845, 27, 162, -640, + -1846, -1702, -1848, -1852, -1853, -1854, 20, -574, + -1850, -1856, 132, 20, -1861, -574, -1857, -564, + -1862, 220, -1867, -1868, -1869, 14, 153, -1845, + 30, 28, 29, 197, -1877, -1878, -1879, -1880, + -1881, -1882, -1813, 28, 53, 19, -1887, -1888, + 40, 10, -1891, -1892, 52, 19, -1895, -1896, + -997, -1883, 2, -777, 212, 82, 2, -1904, + -1905, -1906, 99, -1908, -1885, -1901, 206, -1912, + 24, 82, 24, -1916, -1917, 164, 19, -1920, + -1921, 52, 229, -1918, -1913, -1924, -1927, -1928, + 67, -1918, 168, -1932, -1933, -1934, 7, 19, + 199, -1930, -1937, 41, -1938, -1942, -1943, -1944, + -1945, 7, 206, -1940, 5, -1842, 30, 2, + -1953, -1954, 19, 207, 82, -1958, -1959, -1960, + -1961, -1962, -1085, 197, 16, -685, 39, -1966, + -1969, 53, 67, -1967, -1973, -1974, -1975, -1976, + 40, -1971, 40, 111, -1981, -1982, 67, 98, + -1127, -1983, 45, -1815, 82, -1990, 40, -1992, + -1993, -689, 39, -1936, -1994, 45, -1999, -1912, + -1996, -2002, -2003, 45, 207, -2006, -2007, 70, + 118, -2010, 207, -2000, -2013, -2014, -2015, -1089, + -2011, -2016, 204, -2020, 16, 30, -2023, -2024, + -2025, -2026, 183, -1684, 98, 191, -2031, 67, + -2033, 244, -2035, -2036, -2037, 45, 237, -2040, + 145, -2028, -2043, -1728, 98, -171, 253, 159, + -2047, -2050, -2051, -2052, 67, 237, -2055, 141, + -2048, 233, -2059, -2060, -2061, -2062, -2063, 191, + 207, 207, 141, 149, -2069, -2010, -2056, -2070, + -2073, 141, 103, 99, -2077, -2078, -2079, -2080, + -2081, 244, 197, -2084, -2037, 190, -2085, -2088, + 101, 196, -2091, -2081, -2089, -2092, -2088, -2093, + 190, -2098, -2099, -2031, 39, -2100, 98, -2104, + -2105, -2106, -2107, 45, -2102, -1997, 190, -2112, + 45, 118, 244, -2009, -2171, -2110, 159, 118, + -2121, -2122, -2052, -2118, -2123, -2126, -2127, 70, + -2124, -2130, -2131, 70, 118, -2081, -2128, -2089, + -2137, 244, -2089, -2140, 207, -2142, -2143, -2081, + 248, 238, -2038, -1901, -2147, -2150, -2132, -2148, + 196, -4815, 98, -2154, -2157, -2158, -2159, -2160, + -2161, 67, 141, 82, -2163, -2166, -2167, -1670, + 82, 39, -1727, -3488, -2169, -2172, -2175, 164, + 141, -2178, -2179, -2180, -1945, -2173, 45, 9, + -2185, -2186, -1450, -2181, -2187, 28, -2191, -2192, + -2193, -2194, 7, 169, -2197, -2198, -2199, 45, + 191, -2202, 169, -2204, -2205, 191, -2207, 206, + -2189, -2200, 109, -2210, -2213, -2214, -2202, 110, + 99, 109, -2182, -2217, 169, -2222, -2223, -2224, + -2225, -2194, -2219, 148, -2195, -1963, -2229, -2232, + 169, -2047, -2235, -2236, 51, -2233, 233, -2240, + -2241, -2242, -2199, -2237, 82, -2244, -2247, -2195, + 168, 145, -1686, -2248, -2253, 169, -2251, -2256, + -2257, -2258, -2259, -2260, -2261, -2262, 40, 1, + -112, -2254, -2267, -2268, 1, 204, 1, -2272, + -2273, -2274, -2275, -2276, -2277, -2278, 40, 50, + -2281, -2282, 6, -2279, 197, 56, -2287, -2288, + -2278, 110, -2291, 84, -2293, -2279, 17, -2296, + 84, -2298, 6, 39, -2301, 6, -2303, -2304, + -2305, 6, 112, 215, -2309, -2310, -2311, 84, + -2313, 84, 138, -2307, -2299, -2318, 215, -2316, + -2321, -2322, 112, 221, -2319, -2326, -2327, -2328, + -2329, -2330, -2331, 40, 24, -2334, 10, -2324, + -2337, -2338, 10, -2335, 118, -2342, -2343, 40, + 118, -2346, -2347, -1064, -2047, 215, -2351, 118, + -1095, -908, -2355, -2356, -2357, -2358, 185, 122, + -2344, -2353, -2361, 244, -2365, 185, -2367, -2368, + 185, -2362, -1095, -2369, 4, -2374, -2375, -2376, + -2377, -2378, -2379, 40, -125, -1372, 184, -2380, + -2383, 18, -2387, -1046, 17, -2388, -2389, -2392, + 112, -2390, 216, -2396, -2397, -2398, -2278, -118, + -2399, -2279, -1845, -2402, -2405, -2406, 50, 76, + -2409, -2407, 3, 112, -2413, 84, -1845, -2416, + -2417, -2412, -2382, -2414, 28, -2422, -2423, -2424, + -2425, 185, 217, 215, -2429, -2411, -2420, 110, + -2349, -2431, -2435, -1065, 39, -2307, -2436, -2438, + -2441, -2442, 76, 133, -2445, -2446, 185, -2448, + 84, -2450, 84, -2439, -2453, -2425, -2451, -2454, + -2457, 122, -2455, -2460, -2461, 10, -2463, -2464, + 40, -2466, -2467, 24, 98, -2470, 99, 21, + -2473, -2474, -2475, -2476, 37, -2478, -2479, 40, + 10, -2471, 76, 24, -2485, -2486, -1046, -1994, + -2338, -2487, -2491, 76, -2493, -2494, -2495, -2496, + -2497, 37, -2499, 66, 84, -2502, 37, 40, + -2505, 37, -2507, 50, -2509, -2510, -2502, 39, + -2511, -2407, -2512, 190, -2517, -2518, 66, 76, + -2407, -2515, 84, -2521, -2525, -2526, -2527, 66, + -2450, -2096, -2503, -2529, -2533, 99, 39, -2536, + -2497, 226, -2539, -2540, 37, 50, -2541, 39, + -2543, -2546, -2547, 40, -2549, -2550, -2551, -2552, + -2553, -1990, -2544, 6, -2557, -2558, 6, 221, + 1, 1, -2563, 6, 39, -2418, -2564, -2566, + -2569, -2570, -2571, -2479, -2567, -2572, -2565, -2573, + 111, -2578, -2541, -2576, 166, 220, -2583, -2584, + -2497, -2154, 40, -2558, 182, -2590, -2591, 12, + 3, -2588, -2595, 26, 21, -2598, -2599, 37, + 40, -2602, 24, -2604, -2605, -2547, -2596, 9, + 40, -2606, -2611, -2612, -2613, -2614, 99, -2616, + -2617, 185, 21, -2620, 244, -2618, -2621, -2624, + 99, -2626, -2627, 185, 122, 185, -2631, -2632, + -2633, -2634, 244, 101, 244, -2544, -2639, -2640, + 101, -2637, -2643, -2644, -2182, 226, -2647, -2648, + 169, -2650, 191, -2652, -2653, 99, -2655, 122, + 137, 207, -2659, -1662, 90, 137, -1684, -2660, + 10, 191, -2664, -2668, -2669, -2670, -2671, -1818, + -2666, -2560, 10, -2676, -2677, -2678, -2679, -2560, + -2674, 101, 180, 221, -444, -2680, 72, 204, + -2689, -2690, -2691, -2627, 31, 221, -2635, -811, + -2697, -2681, 90, -2698, 137, 185, 103, -2627, + -2702, -2706, -2707, -2464, -2704, -2607, 39, -2712, + 122, -2710, -2715, -2607, -2713, -2574, -2716, -2718, + -2721, -2722, -2723, 26, 9, -2719, -2727, -2728, + -2729, -2730, -2731, 176, 84, -2725, 34, 138, + -2595, 2, -1591, -2740, -2741, 178, 26, -2744, + -2450, 17, 137, -2748, 122, -2750, -2751, -2752, + -2753, -2754, -2755, 6, 55, 12, 18, 11, + -2761, -1829, -2758, 12, -2765, -2766, -2767, -2768, + -143, 17, -2769, -2772, -2773, 12, 80, -2776, + 12, 174, -2770, -241, -2778, -2782, 88, 97, + -2785, -2786, -2787, -2788, -2789, 12, 22, 174, + 88, -2794, 15, 22, -2797, 88, 107, 2, + -2801, -2802, -2803, -2804, 80, 88, -2807, 163, + 88, -2810, 163, 97, -2813, -2814, -2815, -2816, + -2817, -2818, -2819, 163, 174, -2822, 174, 187, + -2825, -2826, -2827, 174, 187, 88, -2831, -2832, + -2833, 177, 245, -2828, -2799, -2836, -2829, -2710, + -2839, -2842, -2843, -241, -2840, 19, -2847, -2848, + 80, 203, -2829, 52, 203, -2851, -2855, -2856, + 174, -2858, -2859, 176, -2853, -2717, -2860, -2862, + -2865, -2866, 174, -2868, 187, 195, -2871, 176, + -2296, 248, 219, -2876, -2877, -2878, 12, -2827, + 28, -2882, 230, 82, -2885, 80, -2887, -2888, + 6, 230, -2891, 80, -2883, -2894, -2895, -2896, + 6, -2898, -2899, 9, 15, -2902, -444, 168, + 180, -445, -2903, 6, -14, 225, -2906, -2910, + 15, 18, -2915, -2827, -2913, -2918, -2919, 180, + -2889, 82, 221, -510, -2925, 6, 221, -139, + -2923, -2928, -2931, -2932, -2933, 55, 18, -2829, + -2934, -2938, 80, -2940, -2941, -2942, -2943, -2944, + -2827, 39, -2945, 177, -2946, 180, 180, -2952, + -2953, 180, 186, -2956, 203, -2948, -2959, -2829, + 208, -1979, -2834, 82, -2963, -2966, -2967, 174, + 15, -2970, -2968, -2964, 100, -2974, -2975, -2976, + 15, 88, -1600, 82, -2979, 180, -2980, -2984, + -2985, -2986, -2987, -2988, -2220, 196, 25, 25, + -2993, -2994, 178, -2996, 26, -2996, -2963, -2744, + 164, -2998, -1913, -3004, -2731, 39, 219, -3005, + -3009, -3010, -3011, -2810, -3007, 174, 195, -3016, + -3017, -3018, -3019, -3020, -3021, 175, 243, -2868, + -3012, 102, 187, 176, -3029, -3030, -3031, -3032, + 174, -2868, 161, -3036, 177, -3034, 187, -3040, + -3027, -3037, 208, -3044, 177, 100, 195, 174, + 100, -3050, -3051, -3052, -3053, -2607, 161, -2878, + -3054, 174, -3059, -3060, 9, -3062, -3063, -3057, + -3056, -3064, -3067, 176, 100, -3070, 26, -3072, + -3067, -811, 219, -812, -3077, 169, 64, -3080, + 9, 25, -3083, 175, 176, 177, -3087, -3088, + 176, -3075, -3091, -3092, -3093, -3094, -3095, 163, + -3097, 174, -3099, -3100, -3101, 9, 82, -3104, + 64, -3106, 9, 65, -3109, -3110, -2819, -3054, + 64, -2168, -3115, -3116, 9, 25, -1503, 100, + -2168, -3122, -3123, -3124, -3125, -3116, -3120, -3126, + -3129, -3116, -595, -3102, -3133, 180, -3131, -2899, + 196, -3138, 15, -2921, -3139, -3142, -3143, -2607, + -3005, -3067, -3144, -3146, -3147, -3150, -3151, 174, + -3153, -3154, -3155, 176, -3133, -3148, -3159, -3160, + -3085, -3157, 245, -1637, -3161, -3164, 180, -1637, + -3165, -3170, -3171, -3172, -3173, -3174, -3116, -3168, + -3177, 183, -3175, 183, -3181, -3182, -3183, -3184, + 180, 63, 99, -3177, 178, 26, 66, -3192, + -3133, -3190, -2731, -3193, 117, -3195, -3199, -1518, + 63, -2231, -3000, 173, -3203, -1508, 99, 24, + -3209, -1687, -3207, -3212, -3213, -3214, -3215, -3216, + -3217, -3218, -3219, -3220, -3221, 58, -3223, -3224, + 58, 81, 58, -3228, -3229, 173, 81, 81, + -3233, -3234, 243, -3236, 173, -3238, 81, 147, + -3241, -3242, -3243, -3244, 73, 108, -3238, 63, + -3247, -3248, -3245, 76, 125, -3254, -3255, 58, + 178, 63, -3259, 86, -3261, -3262, -3263, -3234, + -3257, 86, -3237, -3202, 167, -3268, -3259, -3269, + -2527, -3274, -3275, 243, 231, -3265, 63, -3278, + -3281, 12, -3283, -3284, 86, 167, 81, 25, + -3289, -3290, -3291, -3292, -3293, -3294, -3295, 163, + 64, -3298, 175, -3300, 175, -3302, -3303, -3304, + 163, 12, -3307, 12, -3032, -3285, 25, -3312, + -2809, -3267, -3309, 63, 167, 175, -3319, -3320, + 12, -3322, 175, -3188, -3316, -3326, 86, -3328, + -3329, -3330, 175, -3332, -3333, -3334, 178, -3025, + -3324, 125, 26, -3340, -3341, -3342, -3343, -3344, + -3345, -3304, 63, -3346, -3317, 37, -3349, 195, + 163, -3354, -3355, 175, 102, -3358, 86, -3360, + -3361, 243, -3350, -3362, -3365, -3366, -3234, -3363, + -3367, -3370, 102, -3368, -3373, -3374, 195, -3371, + -3313, 21, 151, 2, -3381, -3382, -3383, -3384, + -3385, -3386, 8, -3379, -3389, -3390, 163, 97, + 165, -3394, 165, 71, -3397, -3398, -2810, -3387, + -3401, 97, 12, -3404, -3405, -3406, -3407, -3408, + 163, 62, 8, -3412, 12, -3414, -3415, 8, + -1794, -2476, 25, 0, -3421, -3422, -3423, -3424, + 62, -3426, 86, -3417, -3296, 5, -3431, -3432, + -3433, -3434, 160, 231, -3437, 146, -3439, -3440, + -3441, 8, 18, -3444, -3445, 12, -3447, -3244, + 63, -3450, -3259, -3448, -3453, 146, -3455, 116, + 125, -3458, -3459, -3460, -3461, 8, 48, 86, + 73, -3466, -3467, -3461, 26, -3424, -3468, -3448, + 77, -3474, -3475, -3476, -3477, -3478, 48, 77, + 62, -3482, 62, 37, -3485, -3486, 77, -3483, + -3522, -3487, -3489, -3492, -3493, 62, 125, 116, + -3497, -3498, -3499, 73, 63, 128, 37, -3502, + -3265, -3503, -3505, -3508, -3509, -3510, -3511, -3512, + -3513, 160, -3506, -3495, 12, -3516, -3519, -3520, + 165, -3517, 52, -1951, -3523, -3526, 195, 37, + -3527, -3530, -3531, -3532, -3533, 8, 62, -3536, + 165, -3538, 8, -3540, 8, 74, -3543, 62, + -3528, -3544, -3547, -3548, -3461, 2, -3551, -3552, + -3462, 18, 150, -3553, -3553, -3556, -3559, -3464, + 18, -3560, 242, -3221, -3561, 12, 18, -3568, + -3569, -3570, -3571, -3572, 38, 78, -3575, -3576, + -3577, -1068, -3564, -3580, 20, -3578, -3583, -3584, + 68, -3581, -3587, -3588, -3589, 8, -3591, -1778, + -3585, 34, -3592, -3596, -3597, -3598, 38, 44, + -3601, -3602, -3603, 59, -3605, 68, 114, 59, + -3609, -3610, 8, -3612, 74, -3614, 44, 33, + -3617, -3618, -3619, -1068, 91, -3620, -3623, 33, + 199, 94, -3624, -3628, 68, 63, 94, 8, + -3633, -3634, 44, 78, -3637, -3638, 68, 132, + -3635, -3629, -3643, -3644, -3645, 59, 126, 71, + -3640, -944, -3641, 105, -3650, -3654, -3386, 242, + -3655, -3394, 254, 74, 78, 254, -3663, -3664, + -3665, -3666, -3667, -3668, -3669, -3670, -3671, 57, + 99, -3674, -3675, 48, -3248, -3409, -3676, -3678, + -3409, 254, 58, -3684, -3685, 57, 64, -3682, + -3689, -3690, -3691, -3692, 44, 144, -3695, 57, + -3687, -3698, 57, 77, -3701, -3702, -3703, -3462, + 58, 144, -3685, 242, -3707, -3710, 58, -3712, + 58, -3698, -3708, -3716, -3717, -3718, -3597, 144, + -3714, -3692, -3720, 78, -3451, -3633, -3719, 240, + -3727, 44, -3731, -3732, -3733, -3734, 48, 8, + -3734, -2220, -3737, -3740, -3741, -3742, -3743, 48, + 74, -3480, 150, 81, -3749, -3750, -3751, -3634, + 58, 74, -3755, 48, -3752, -3758, 48, 77, + -3761, -3729, -3756, 33, -3765, 78, -3762, -3768, + -3769, -3770, 8, -3766, -3773, 62, 108, 64, + -3777, -3778, -3779, -3780, -1433, 81, -3781, -3784, + 57, -3782, -3787, 38, -3789, -3790, 44, -3792, + -3695, -3464, 148, -3793, 44, 144, 155, -3800, + -3801, -3802, -3803, -1491, -3468, -3806, 57, 169, + -3448, 58, -3811, 169, 148, -3814, -3815, -3710, + -3808, -3818, -3819, 144, -3816, -3822, -3823, -3824, + -3825, 7, 57, 99, 7, -3830, 149, -3832, + -3833, 57, 178, -3836, -3693, -3834, 178, -3840, + 240, -3838, -3843, -3844, -3845, -3846, -3847, -3848, + 38, 13, 7, -3852, 7, -3841, -3855, -3856, + 44, 13, -3859, -3860, -3861, 13, 81, 234, + -3448, -3864, 68, -3868, -3869, 13, -1068, -3865, + 144, -3874, 242, -3876, -3877, 48, -3705, -3871, + -2499, -3710, 63, -3882, -3885, -3886, -3887, -3888, + 13, 144, 144, -3892, -3461, -3883, -3705, -3893, + 34, 33, -3872, -3229, -3899, -3902, -3903, -3904, + -3905, -3906, -3907, -3908, -3909, 46, 85, -3912, + 59, -3914, -3915, -3916, 85, -3918, 68, 105, + -4160, -3900, 63, -3924, -533, -3229, -3925, 63, + -3929, -3930, 23, 71, -3933, -3934, 46, 167, + -3931, -3935, -3937, -3940, -3941, -3942, 68, -574, + -3938, 68, -3947, 85, 113, -3944, -3951, -3605, + -3949, -3954, 75, -3956, 41, -3952, -3959, -3960, + 61, 113, -3910, -3957, -3963, -3966, -3967, -3968, + -3969, -3970, -3971, -3972, -3973, 46, 17, 17, + -3977, -3978, -3979, 8, 74, 74, -3964, -3984, + -3985, -3986, 59, -3988, -3989, 59, 125, -3992, + 71, 111, -3995, 17, -3989, -3993, 94, -3975, + -3997, 21, -4003, 59, -4005, -4006, 8, -4008, + -4009, 46, 100, -4012, 17, -4010, -4015, -4016, + -3945, -4013, 33, 28, -4021, -4006, -2972, -4022, + -2799, -4026, -4027, -4028, 8, -4024, 17, -1612, + 28, -2758, 2, 125, -4037, 74, 18, 116, + -4041, -4042, -4043, -4044, -4045, -4046, 46, 18, + -4049, -4012, -4047, -4050, 94, -4051, -4055, -3912, + -4053, 100, -4059, -4060, -4061, 61, 68, 61, + -3959, 234, -4057, 21, -4069, 94, -4067, -4072, + -4073, 46, -4075, -4076, 46, 94, 95, -4080, + -4081, -4082, -4083, 61, 94, -4086, 17, -4070, + -384, 37, -4084, -4089, -318, -4091, 131, 37, + -4097, -4098, -4099, 61, -1068, 76, -4103, 68, + -4105, -4106, -4107, -4108, -1748, -4101, 94, 94, + -4113, -1068, 2, 63, -4117, -1612, 37, -4118, + -4110, -4119, 68, -3207, -4125, -4126, -4127, -4128, + -4129, -4130, 168, -4132, -550, 63, 21, -3379, + -4137, -550, -4135, 222, -4141, 95, -4138, -4144, + 17, -1889, 95, 209, -4149, -4150, 93, 76, + -4153, -4154, -4155, -4156, 46, 23, -4151, -2380, + -4344, -4158, -4161, -4162, -384, 21, -4165, -4168, + -4169, -4170, -4171, -4172, -4173, 46, 76, -4176, + -4177, 46, -4179, -470, 76, -4095, -4078, -4181, + -2540, 46, 168, -4188, -4189, 168, -4184, 253, + -4190, 212, -4195, -4196, 168, 46, 198, -4200, + -4177, 208, -4201, -4204, 198, -4206, 109, 220, + -4209, -4210, -4211, -4212, -4213, -4214, -4215, -3610, + 111, -3516, 111, -4218, -4221, -3441, -4032, 165, + 18, 116, -4227, -4228, -4229, -3516, -4222, 107, + -4233, -1771, -4230, 23, -2790, -4234, 165, -4237, + -4241, -4242, -4243, -4244, -4245, -3244, -2471, -4246, + -4249, 28, -3494, -4252, 160, 116, 160, -4256, + -3442, 125, -4259, 28, -2189, -4262, -3402, -4260, + 125, -4263, -4267, -3250, -4191, 108, -3250, 28, + -4270, -4259, -4272, -4276, 220, 66, -4279, 219, + -4281, -3445, 66, -4089, -3401, -4283, -4287, -3374, + -4285, 66, -4289, -4292, -4293, -4294, 97, 220, + -4290, -4298, -4299, -3402, -4296, -4302, -4264, -4300, + -4305, -4306, 97, 3, -4303, -4310, -4311, -3401, + -3203, 194, 66, -361, -3285, -4318, 107, -154, + -4316, -4320, -4323, -4324, -4325, -4326, -4327, -4328, + -4329, 160, 165, -2468, -3540, -2471, -4335, -4336, + -4252, 50, 98, -4223, -1369, -4340, -4343, -4336, + -4705, -4341, -4337, 202, -4349, 79, -4351, 79, + -4346, -4354, -4355, -4356, -4357, 8, 165, -4360, + 8, -4352, -4363, 181, -4361, -4366, -4367, -4368, + -4369, 46, 181, -4372, -4373, 181, -4364, 181, + -4375, -4374, 151, -4380, 71, 8, -4057, -4384, + -4385, -4386, -4376, 234, 208, 108, -4391, 188, + -4389, -4394, -4395, -4396, 79, 202, -4198, 108, + -4401, 188, 198, -4404, 181, -4406, 79, -4399, + -4409, 71, 188, -4013, -4413, -4414, -4415, 17, + -4417, -4418, -4156, -4411, -4421, -4422, 79, -4424, + 188, 91, -4396, -4425, -4427, -4430, -4431, -4432, + -4433, -4130, -4428, -4434, -4437, 109, -4439, -4440, + 79, 91, 109, -4396, -4441, 28, -2388, -4441, + 79, -3315, -4451, -4452, -4453, -2388, -4449, -4454, + 28, -4458, 160, -4406, -4455, 28, -4460, -4464, + -3540, 100, -2294, -4465, -4469, -4470, -4471, -4472, + 160, -3774, -4475, -4476, -4477, 79, -4479, 194, + 194, -4473, -4483, -4484, -4485, -4477, -2385, -180, + 18, 109, -4491, -4492, -4493, 159, 198, -4496, + 188, -4498, 194, 198, 202, -4502, -4503, -4504, + 17, 73, -4507, 46, 23, -4510, -4511, -4512, + -4513, 188, -4515, 188, 92, -4508, -4505, -4518, + -4521, 23, -4523, -225, -4519, 35, -77, 18, + -4527, -4516, -3629, -4532, -4533, -4534, -4535, 159, + -180, -4530, -4539, 119, -4541, 92, -4537, 181, + -4545, -4546, -4547, -4548, -4549, 188, -4542, -284, + 255, 100, -4555, -284, -4553, -4558, -361, 241, + 194, -4562, -4563, -4564, -4565, -4357, -3378, -4568, + 165, -4570, -4571, -4572, 181, 71, 188, 202, + -4577, -4578, -3589, 100, -3620, -3647, -4580, -4582, + -4585, -4586, 22, -4583, -4589, -4590, -4591, 188, + -4235, 150, -4593, -4596, -4597, -4598, -4599, -4568, + -4594, -3401, 100, 100, -3247, 195, 194, -4608, + -4609, -4610, -4611, 181, 90, -4614, 188, -4612, + -4615, -4618, -4619, -4560, -4616, -4620, -360, -3379, + -4010, -3555, -4627, -4628, -4629, -4630, -4631, -4632, + -4633, -4634, -4635, -2175, -4625, 179, -4639, 164, + -4641, -4642, -4643, -4644, 179, 206, 179, 199, + -4645, -4636, 128, -4652, -4653, -4654, -4655, 179, + -4657, 206, -2195, -4649, -2200, -4659, -4663, 169, + -3620, -4666, -4667, -4668, -4669, -4670, 179, 128, + 206, -4674, -4675, 199, -4664, -4678, 206, -3629, + -4681, -4655, -4679, -4671, -4425, -4684, -4687, -4688, + -4689, -4690, -1155, 253, 52, 184, -4695, 164, + -4697, -4698, -4639, -4691, 225, -4650, -3707, -4702, + -1391, 184, 184, 150, -3624, -4707, 167, -4712, + 164, -4714, -4715, 2, -4717, 24, -4710, -4720, + -4647, 91, 167, -4724, 184, -4722, -1128, -4708, + 91, 63, -4727, 173, -4731, -4734, -4735, -4736, + -4737, 7, -4732, 63, -4741, -4695, -4739, -4744, + 19, 167, -4747, 13, -4745, -1591, -4748, 128, + -4750, -4754, -4755, -4756, -4757, -4758, -4759, -4760, + 7, 240, 149, -4764, -4765, 169, -4752, -4762, + -4766, 242, -2220, -4769, 240, -4774, 5, -3705, + 73, -4776, -4779, -4780, 206, 128, 169, 253, + -3707, -4784, -4787, -4788, -4789, -4790, 7, -4785, + 7, -4794, 13, -4791, 32, -4798, 128, -4795, + -4801, -4781, -4799, 151, 242, -979, 99, -4808, + -4809, -4810, -1834, -2799, -4813, 13, -4804, 128, + -4811, 164, 234, -2664, -4821, -4822, -4823, -4824, + -4655, -1902, 234, 254, -4829, -4830, 128, -2480, + 234, -4831, -4830, 184, -4814, 253, -4837, -4840, + -4841, -1398, +}; + +static long _vq_ptr1_res0_0c[] = { + -3211, -1420, -669, -362, -128, -95, -61, -35, + -17, -12, 11, 15, -14, 72, -16, 203, + 203, -21, -20, 72, 72, -25, -24, 56, + 56, -30, -29, 123, 72, 123, -32, 72, + -29, 123, 110, -56, -52, -48, -45, -43, + -42, 129, 129, 247, 129, -42, 129, 131, + -50, 109, 203, 129, -55, -54, 129, 123, + 55, -60, 123, 247, 251, -81, -72, -69, + -68, -67, 136, 136, 252, -68, 252, -49, + -78, -77, 136, 92, 4, 4, 92, 123, + 4, -89, -88, -42, -60, 251, 103, -47, + 251, -93, -92, 251, 252, -94, 136, -116, + -107, -106, -105, -103, -31, 4, 4, 72, + 56, 221, 221, -114, 221, -113, -112, 204, + 204, 16, 204, -101, -120, -215, 4, -101, + -123, -122, 172, -127, -126, 4, 4, 27, + -226, -193, -167, -146, -140, -135, 80, -139, + -55, 123, 131, 80, -144, 11, 80, 107, + -145, 30, -155, -148, -150, 3, -152, 56, + -154, 3, 3, -162, -157, -160, 123, 30, + 30, -119, -166, -165, 30, 30, 30, -182, + -172, -170, 220, 30, -174, 194, -181, -179, + -178, -115, 30, 218, 30, 218, -189, -187, + -180, 30, 135, -188, 194, -190, -191, -192, + 107, -202, -200, -199, -198, 92, 92, 15, + 27, 135, -213, -206, -205, 92, -210, -77, + 131, -186, -77, 4, 135, -223, -218, -4671, + -209, -177, -222, -221, 153, 153, 153, -225, + 135, 4, -278, -235, -230, 139, -234, -233, + 139, 139, 139, -244, -242, -241, -240, 249, + 203, 88, -243, 139, -274, -263, -257, -251, + -250, 135, 139, -255, -234, -249, -239, 247, + 139, -262, -261, 247, 139, 247, 203, -268, + 139, -262, 135, 135, -272, -250, -266, 31, + 203, 135, -277, 96, -270, 96, -295, -286, + -285, -283, -254, 139, 119, 93, -293, -291, + -290, 139, 139, 107, 139, 139, 93, -342, + -339, -319, -256, -303, -302, 55, 55, -311, + -308, -117, -217, -87, -60, 251, 222, -308, + -60, 143, -313, -806, -310, -316, 222, -331, + -324, -309, 131, 113, -328, -327, -323, 251, + -327, 113, -326, -333, -322, -337, -336, -318, + 139, 119, -317, -327, 251, -307, -352, -345, + 131, -349, -336, -344, -49, -336, -347, 131, + -357, -355, 107, 107, 97, -361, -360, 119, + 119, 107, -577, -472, -434, -405, -390, -389, + -373, -371, 120, 120, 223, -379, -378, -377, + 223, 223, 89, -386, -383, 120, 223, -385, + 131, 223, -388, 120, 120, 223, -398, -396, + 120, -395, 127, 127, 72, 120, -404, -401, + 89, -388, 120, -351, 72, -413, 60, -20, + -19, 72, 252, 222, -350, -423, -419, 15, + -370, 120, 248, -420, -422, 129, 129, -431, + -428, -68, 103, -418, -68, 252, 103, -429, + 252, 103, -449, -442, -440, -51, 129, -430, + -51, 103, -446, -445, 72, 72, -445, -430, + -439, -463, -452, 126, -456, -243, 139, -430, + -460, -233, -448, -427, -233, 139, 197, -467, + -466, 248, 129, -233, -461, 222, 222, -469, + -520, -489, -486, -483, -482, -481, -480, 213, + 213, 252, 11, -233, -465, -462, -488, 213, + 213, -400, -516, -502, -500, -497, -487, -459, + 222, -487, 213, 140, 85, 69, -504, 140, + -512, -509, -508, -499, 252, -508, 140, 103, + -429, 213, 120, -507, -518, 120, 120, -496, + -567, -536, -534, -531, -528, -527, 132, 132, + -527, 132, 83, -533, 153, 153, 105, 153, + -560, -553, -544, -543, -542, -519, 139, 105, + -551, -549, -548, 150, 139, 126, 150, -552, + 126, -557, -552, 126, -547, -559, 139, 139, + -565, -563, 150, -564, 153, -566, 153, -573, + -570, -547, -222, -556, 17, -575, 153, -533, + -571, -604, -592, -585, -583, 72, 11, 11, + -541, -589, -588, 124, 124, -588, 124, -547, + -600, -597, -596, 103, 223, -599, -433, 223, + -601, -603, 134, 134, -653, -631, -626, -616, + -612, -378, 255, -591, -614, 69, 153, -584, + -620, -619, 124, 124, -623, 124, -495, -596, + -412, -341, -629, 132, 152, -630, 153, -643, + -639, -636, 14, 152, -389, -628, 152, -641, + 32, 223, 32, -649, -648, -640, 32, -628, + 14, -650, -529, 132, -637, -664, -661, -660, + -658, 14, 14, 29, 29, -663, 29, 29, + -666, -652, -668, 152, 153, -988, -798, -693, + -687, -676, 204, 124, -684, -681, -680, 224, + 224, -680, 224, -638, -686, 211, 211, -690, + -689, 29, -691, -692, 121, -760, -721, -705, + -700, -699, 19, 19, -702, 152, -704, -638, + 32, -714, -712, -709, 87, -711, 87, 87, + -713, 142, -720, -717, 192, -719, 142, 142, + 106, -734, -728, -726, -725, 106, 87, -683, + -730, 67, -732, 121, 87, 121, -749, -738, + -737, 121, -741, -740, 224, -744, -743, 211, + -748, -1604, -665, 152, 224, -751, 31, -757, + -754, 152, -713, 142, 130, -713, 142, -750, + -770, -768, -763, -766, 19, 31, -767, 31, + 211, 121, -786, -779, -776, -224, 27, -746, + -778, 27, 27, -783, -782, 152, 31, -266, + 152, -781, -793, -792, -790, 130, -266, -785, + 31, -692, -796, 152, 121, -628, -883, -849, + -824, -819, -816, -813, -67, -809, -1175, 152, + -797, -508, -791, 140, 140, -815, 136, 136, + -508, -811, 241, -820, -822, -810, -823, 4, + -841, -835, -830, -648, 14, 232, -832, 150, + -834, 85, 85, -839, -838, 150, 213, 14, + -831, -847, -77, -845, 4, 4, -829, 93, + -789, -873, -863, -857, -854, 121, -856, 214, + 214, -861, -856, 214, -547, -862, 227, -864, + -866, -860, -870, -869, 83, 124, -869, 124, + -865, -881, -876, 121, -880, -692, 121, -547, + 135, -882, 136, -923, -904, -899, -710, -895, + -892, -891, -879, 192, -891, 192, 140, -897, + -503, 142, 83, -902, 249, 135, 135, 249, + -910, -907, 31, -266, 135, 170, -913, 121, + 135, -921, -918, -917, 170, 135, -758, -909, + -896, -713, -890, -953, -930, -926, -927, -929, + -872, 142, -952, -940, -934, -848, -938, -937, + 214, 214, -937, -821, -948, -945, -897, -775, + 150, -897, 142, 241, -897, 75, 140, 150, + 136, -960, -958, -957, 214, 214, 136, 135, + 136, -965, -964, 241, 121, -969, -968, 241, + 227, -977, -974, -973, 227, 227, -973, 227, + -963, -981, -2153, 241, -963, -985, -984, -976, + 142, -984, 142, -951, -1188, -1080, -1028, -1004, + -995, -994, 27, -999, -998, 27, 27, -127, + -1002, 104, 104, -947, -1026, -1016, -1013, -1011, + -1010, 31, 31, -1010, -1003, -1015, 34, 21, + -1017, -1022, -1021, -1010, 34, 104, -792, 31, + 228, -1014, -266, -1014, -1066, -1038, -1037, -1034, + 201, 200, -1036, 201, 201, 221, -1063, -1042, + -1041, 112, -1054, -1049, -1048, -1047, 216, 216, + 216, -1053, -1047, 216, -1025, 182, -1058, -1057, + 34, 216, -1060, 200, -1057, 216, -1056, -1065, + 217, 217, -1074, -1069, 34, -1001, -1072, -1062, + 200, -1052, -1078, -1036, 201, -1012, -972, 234, + -1107, -1091, -1088, 10, -1086, 211, -680, 234, + -1090, 217, 217, -1096, -1095, -1037, -1079, 217, + -1102, -1090, -1100, 241, 217, 232, -1105, 217, + 211, 217, 211, -1131, -1119, -1118, -1115, -1114, + 72, 201, 201, -1114, 130, 232, 104, -1122, + -113, -829, -1000, -1127, -998, 27, -1116, 27, + -4700, 232, -1126, -1159, -1142, -1135, -1099, -1140, + -1138, 121, 121, 211, -1106, 130, -1152, -1147, + -1036, 2, 130, -1002, -1150, -1146, 104, 184, + -1156, -1106, -1149, 52, -964, 121, 19, -1170, + -1165, -862, 224, 227, -1154, -1168, 227, 224, + 227, -1145, -1178, -974, -973, 227, -1134, -1597, + -1077, -943, -1183, -1181, 152, 214, -1180, -973, + -975, 152, -1180, -1182, -1329, -1248, -1212, -1208, + 30, -1201, -1200, -33, -1198, 228, 228, -1180, + 171, -1203, 189, -1207, -1198, 228, -1180, 228, + -1209, -1207, 228, -1199, -1227, -1216, 228, 136, + -1221, -1198, 228, 136, -1187, -1224, 218, 152, + -1226, -1223, 228, -1228, -1241, -1231, 31, -1235, + -1234, -1230, 251, -1239, -1238, -1225, 136, 136, + -906, -1247, -178, -165, -903, -1237, -1220, 4, + -1303, -1289, -1269, -1263, -1256, -1076, 143, 143, + -1260, -1076, 201, -1254, -1076, -1259, 113, -1267, + -1024, 228, 143, 228, 104, -1275, -1272, 143, + -1198, -1255, -1266, -1287, -1280, -1279, -1262, 189, + -1284, -1207, -1261, 113, -1207, -1283, -1282, -1288, + 123, -1298, -1295, -1293, 143, 201, 227, -1297, + -1292, 136, -94, -67, 136, 143, -1255, -1314, + -880, -1308, -1307, 172, -1311, 4, 193, 136, + -1302, -1296, -1316, 106, -1318, -1315, -1321, 205, + -1317, -1328, -1326, -882, 136, -1313, 136, 135, + 136, -1385, -1378, -1370, -1366, -1362, -1346, -1343, + -1340, -1053, 182, -1266, -1053, 182, -1339, -1345, + 193, 172, -1343, -1353, -1053, -1351, 210, 210, + -1344, -1357, -1351, 210, -1342, -1351, 193, -1470, + -1358, 113, -1363, -1365, -1283, 210, -1369, 98, + 113, 98, -1376, -1375, -1374, 14, 216, 112, + 182, -1364, -1382, -171, -1360, -1356, -994, -1325, + -1286, -1405, -1390, 182, 27, 83, -1394, -4700, + -1389, 193, -1280, -1397, 143, 228, -3863, -1128, + 143, -1400, 141, -1396, 143, -1413, -1209, -1207, + -1266, -1266, 234, -1408, 143, -1415, -1412, -1417, + -1411, -1419, 228, 228, -2255, -1876, -1741, -1556, + -1487, -1451, -1442, 149, -1441, -1439, -1437, -1435, + -1434, 148, 148, 115, 148, 20, 148, -1440, + 148, 115, -1445, 29, 89, -1449, -1448, -1403, + 32, 233, 29, -1478, -1476, -1469, -1464, -1459, + 89, 115, 132, -1463, -1462, 132, 132, 132, + -1466, 223, -389, -1392, 113, -1473, -4832, -1468, + -1467, -389, -1384, -1246, -1477, 132, -1448, -1483, + -1482, 32, 32, -1482, 83, -224, -102, -1534, + -1510, -1493, -1492, 25, 25, -1497, -1436, 148, + 83, -1500, 65, 183, -1506, -1505, -1504, 117, + 117, 148, -1509, 117, 148, 148, -1514, -1512, + -1513, 148, -1532, -1527, -1520, -1436, 148, -1484, + -1524, -1434, 148, 17, -1434, 113, -1525, -1529, + 20, -1434, -1523, -1519, 115, 126, -1546, -1543, + -1542, -1541, -1540, -1486, 127, 127, 115, -1544, + -461, -1485, -1552, -1549, 65, -1444, 89, 31, + -1555, 126, 89, 29, -1651, -1618, -1585, -1576, + -1564, -1087, 140, -1562, -1571, -1569, -1568, -1551, + 134, 134, -503, -1573, -1567, -1568, 134, -1545, + -1580, -1574, 134, -1475, -1574, -1583, 134, 134, + 140, -1594, -1589, -1588, 124, -1588, -1592, 34, + 134, -1591, -1607, -1601, -1600, 234, -1584, 34, + 127, -1581, 89, -1599, -2046, -1598, 34, -1613, + -1611, 72, 130, 127, 34, -1615, 89, -1583, + -1612, 14, -1626, -1581, -1583, 134, -1616, 225, + -1610, -1605, -1649, -1646, -1643, -1638, -1636, -1504, + -1634, 183, 183, 34, -1637, 117, -1640, 34, + -1642, 134, 134, -1504, -1635, -1591, -1647, 134, + 32, -1650, 233, -1703, -1658, 233, 115, -1508, + -1635, -1648, -1674, -1669, -1664, -1663, 101, 101, + -1668, -1667, -1645, 134, 134, -1671, 233, -1673, + 233, 233, -1680, -1633, -1678, 130, 233, -1146, + -1696, -1688, -1685, 183, 145, -1687, 145, 145, + -1691, -1690, 145, -1693, 193, -1690, 145, -1679, + -1700, -1699, 32, 145, -1699, -1698, 32, -1715, + -1710, -1708, 101, 134, 29, -1702, -1712, 204, + -1714, 29, 29, -1731, -1724, -1714, -1720, 204, + -1722, 239, 239, 32, -1673, -1729, -1728, -1702, + 239, 233, -1709, -1736, -1734, 204, -1735, 239, + -1668, -1728, 134, -1701, -1695, -1806, -1773, -1752, + -1749, -1444, 0, -1666, 34, -1751, 22, 0, + -1760, -1755, 20, -1436, -1751, 0, -1639, 193, + -1767, -1764, -1509, 14, -1509, 193, 14, -1770, + 25, -1763, -1772, 0, 0, -1800, -1787, -1785, + -1782, -1779, 153, -630, -640, 193, -1477, -640, + -1780, 132, -1758, -552, -1792, 89, 126, 23, + -1796, -1795, 126, 126, -564, 153, -1747, -784, + -1802, 0, -1771, 89, 0, 106, -1831, -1827, + -1820, -1817, -1814, -663, 29, 106, -663, 29, + 152, -1819, 0, 0, -1825, -1714, 124, -1805, + -1799, -1714, -1146, -1125, 89, 15, 19, -1851, + -1835, 32, 130, -1839, -1448, -1146, -1830, -1847, + -1844, -1819, 0, -1826, -1819, 0, 130, -1849, + -1843, 27, -1798, -1866, -1860, -1858, -1855, -630, + -1625, -1579, -1859, 32, -1863, 32, -1177, -1448, + -625, 250, -1874, -1871, -1870, 0, 0, -1870, + -1865, -1872, -1845, 250, -2022, -1957, -1926, -1903, + -1886, -1884, 53, 208, -1885, 207, 207, -1890, + -1889, 24, -1894, -1893, 24, 24, -1902, -1899, + -1898, 212, 27, -1898, 250, 250, 24, -1914, + 141, -1907, 206, -1911, -1910, -1900, 207, -1910, + 207, 28, -1915, -1919, -1918, 141, 141, -1923, + -1922, 141, 141, -1922, -1909, -1897, -1941, -1931, + -1929, 207, 250, -1939, -1916, -1935, 206, 206, + 225, 28, -1925, -1723, -1875, -1952, -1948, -1935, + -1946, 5, 5, -1873, -1949, -1951, -1909, 0, + -663, -1955, 29, 29, 197, -1991, -1980, -1972, + -1968, -1965, -1964, 30, 211, -1964, 30, -1963, + -1970, 207, -1885, -1956, 207, -1061, -1978, -1889, + 24, -1950, 16, 212, -1986, -1984, -112, 212, + 19, -1979, -1987, -1989, -1983, 29, 27, -1998, + -1997, -1825, 98, -1623, -1988, 207, -2012, -2001, + -1985, -2005, -2004, 118, 118, -2009, -2008, 238, + 238, -2008, 238, -1966, 238, -2019, -2018, -1095, + -1977, -1947, 118, -2018, 118, 220, -2156, -2076, + -2049, -2030, -2027, -2029, 220, 145, -2032, 233, + -2034, 237, -2042, -2039, -2038, 239, 239, -2038, + 239, -2021, -2039, -2038, 30, -2044, 234, 30, + -2044, -2058, -2054, -2053, 239, 238, -2057, -2053, + -2045, 237, -2075, -2068, -2066, -2065, -2064, 237, + 237, 141, -2067, 237, -2072, -2053, -2041, -2017, + -2053, 238, 226, 207, -2103, -2097, -2090, -2083, + -2040, 239, -2074, -2087, -2040, 197, -2082, -2040, + 239, 250, -2094, -1721, -1875, -430, -1721, -2086, + 226, -1714, -1721, 239, -2096, -2095, 250, -2120, + -2114, -2109, -689, 29, -1875, -2111, -1875, -2113, + 122, 122, -2115, -2119, -4833, -2108, 250, 237, + -2139, -2125, -1721, -1875, -2102, -2136, -2129, -2018, + -2117, -2133, -2132, 239, 239, -2132, -2101, -1900, + -1095, 217, 248, -2141, 239, -2149, -2146, -2145, + 250, 239, -2145, -2144, -2138, -2146, -2145, -2135, + 226, -2909, 226, -2152, -2221, -2177, -2165, -1673, + -1729, -2162, 233, 98, -2155, -2170, -1702, 32, + 196, -2168, -2174, -3920, -2164, -2102, -2176, 149, + 149, -2190, -2184, -2183, -2182, -2151, 5, 5, + -1672, 207, -2107, -2134, -2071, 220, -2212, -2201, + -2196, -2195, 149, 149, -2200, 169, 207, 149, + 149, -2203, 206, -2209, -2206, 206, -2065, 141, + -2021, -2176, -2021, -2208, -2218, -2216, 191, 30, + -1910, 30, -2220, -2215, 5, -2239, -2234, -2231, + -2228, -2227, -2211, 149, -2227, -2215, -2219, -1509, + 148, -2217, -2238, -2227, 149, -2230, 149, -2250, + -2246, -1684, -2238, -2226, 109, -49, -2249, 191, + 109, 149, -2252, -49, -1687, 145, -2245, -2749, + -2610, -2548, -2459, -2325, -2271, -2264, -2263, 16, + -2266, -1913, -2270, -2269, 215, 215, 221, -2302, + -2300, -2297, -2286, -2280, -2279, 56, 112, 112, + -2283, 56, 112, -2285, 110, 112, -2292, -2290, + 138, 28, 138, 112, -2295, 138, 110, 112, + 138, 154, -2296, 110, 16, 56, 235, -2308, + -2306, 221, -2307, 221, -2320, -2315, -2312, 221, + -2314, 154, 154, -2317, -2294, -2314, 154, -2289, + -2307, -2323, 138, 138, -2284, -2373, -2354, -2341, + -2336, -2333, -2332, 118, 118, -2332, 118, -2265, + -2340, -1061, 216, -2243, 216, -2345, -2344, 215, + 215, -2352, -2350, -2349, -178, 217, 215, 217, + 215, 30, -2364, -2363, -2360, -2359, 215, 215, + -2359, 110, -2348, 118, -2366, 244, -2370, -2349, + 217, -2339, -2349, -2188, 0, -2395, -2391, -2386, + -2381, -1041, 112, 216, -118, -1061, 234, -212, + -2372, 28, -1061, -2338, 28, -2289, -2385, -2394, + -1037, -2384, 217, -2415, -2404, -2401, -2291, 30, + 135, -2291, 135, -2400, -2408, -2407, 133, 133, + -2412, -2411, 0, 133, -2411, 133, -2410, -2440, + -2421, 221, -2909, -154, 3, -2434, -2428, -2427, + -2426, 133, 133, 133, -2432, -2426, -154, 3, + 133, -154, -2437, 221, 3, -1037, -154, -2433, + -2444, -2443, 235, 235, -2452, -2447, 84, -2449, + 122, -2443, 235, -2430, -2456, -2427, -2419, -2403, + -2427, 133, -2393, -2492, -2472, -2462, -2465, 118, + 122, -2469, -2113, 122, 3, -2113, 122, 3, + -2484, -2482, -2477, 21, 24, -1889, -2480, 21, + 21, -2468, -2483, 133, -2490, 133, -2488, -2438, + 21, -2481, 133, 216, -2535, -2524, -2504, -2501, + -2498, 26, -2500, 26, 26, -2503, 133, 133, + -2508, -2506, 66, 84, -2516, -2513, -2413, 28, + -2489, -2413, -2458, 4, -2520, -2519, 84, 84, + -2522, -118, -2443, -908, -2530, -2528, 235, 99, + 133, -2154, -2532, 31, -2457, 133, 135, -2545, + -2538, 31, -2542, -2541, 3, 3, -2296, 31, + -2537, 50, 138, 154, -2582, -2568, -2562, -2556, + -2555, 50, -2534, 50, -2561, -2559, 154, -2560, + 154, 27, -110, -444, 190, -2153, -2554, -2531, + -2577, -2414, -2480, 27, -2523, -2514, -1995, -2371, + 226, -2580, 21, 212, -2581, 3, -2597, -2587, + -2586, -2579, 138, -2589, 98, -2594, -2314, -2592, + 138, 226, -2314, 154, 226, -2603, -2601, -2600, + 5, 99, 5, -2560, -2608, -2607, -2593, 154, + 0, -2585, -2667, -2642, -2630, -2623, -2615, -2358, + -2619, -2113, 31, -2113, 122, -2537, -2154, -2625, + 235, -2629, -2628, 137, 137, 235, -2638, -2620, + -2636, -2635, 137, 137, 145, -2622, 204, -2359, + 215, -2609, -2658, -2649, -2646, -2618, 191, 5, + 99, -2651, 122, -2657, -2654, 5, -2656, 5, + 5, 122, -2665, -2661, 31, -2662, -1687, -2645, + 90, -2628, 21, -2720, -2703, -2675, -2673, 154, + -2663, 72, 2, -2688, -2684, -2683, -2682, -2681, + 90, 154, 101, 154, -2686, -2672, -2687, 221, + -2701, -2696, -2694, -2693, 140, 137, 221, -2692, + -2700, -2318, 226, -2695, 154, -2269, 31, -2705, + -2537, -2714, -2711, -2709, -2699, 122, 140, -2318, + 154, 226, -2654, 5, -2074, -1117, 2, -2708, + -2726, -2724, 219, 5, -2314, -2685, -2739, -2735, + -2323, -2693, -2732, 137, 137, -2641, 0, -2736, + -2700, -2734, -2737, -2743, -2742, 122, 122, -2747, + -2746, 140, 235, 137, 235, -2983, -2812, -2764, + -2759, -2757, -2756, 12, 12, -2581, 34, -2760, + 0, -2763, -1020, 15, -2800, -2784, -2775, -2771, + -354, 2, -2762, 107, -2774, 3, 3, -2779, + -2777, -241, -2745, -2781, -2738, -2783, 107, 107, + -2793, 107, -2791, -2790, 97, 88, 97, -2792, + 97, -2796, -2795, 23, -1794, -2798, 126, 140, + -2806, 194, 195, -2805, 96, 96, -2809, -2808, + 126, -2811, 195, 195, -2893, -2870, -2854, -2841, + -2824, -2821, -2820, 177, 177, -2823, 195, 195, + -2830, -2829, -2828, 230, 230, 230, -2838, -2835, + -2834, 230, 230, -2834, -2692, -811, -2834, -2692, + -266, -2846, -2823, 195, -2837, 2, -2850, -2849, + 230, 230, -2852, 2, -2834, -2845, -2864, -2857, + 187, -2835, -2834, 230, -2844, -1561, -2780, -2733, + -2867, 102, 219, -2869, 219, 219, -2875, -2872, + -2874, 255, 138, -2884, -2879, 138, 154, -2881, + 255, -2314, 154, 255, -2886, 219, -2890, -2889, + 138, 138, -2889, 138, -2880, -2930, -2914, -2907, + -2897, -2901, -2900, 180, 180, -2905, -2904, 255, + 72, 180, 28, -2908, -2912, 234, -2892, -2873, + -16, 140, -2924, -2917, 255, -2922, -2920, 154, + 154, 140, -2889, -2921, -2927, -2926, 230, -2849, + -2916, -2911, -2939, -2935, -241, 88, 150, -2937, + -547, 230, 203, -2965, -2951, -2950, -2949, -2947, + -2829, 17, 140, -2829, -2936, 230, 186, -2955, + -2954, 203, 203, -2958, -2949, -2929, -2962, -2849, + 212, -2960, -2849, 212, -2960, -2969, -2968, 88, + 88, -2973, -2953, -2961, 111, -2981, -2978, -2977, + 127, 127, -2977, 111, -2972, -1600, -2971, -3090, + -3008, -2997, -2992, -2991, -2990, 212, 5, 137, + -2995, 137, 5, 5, 137, -2999, -2989, -3003, + 234, -2982, 196, -2746, -3006, 196, 137, 100, + -3076, -3049, -3015, -3013, -3002, -3014, 102, -3046, + -3028, -3026, -3023, -3022, 187, 219, 219, -3025, + -3001, 219, -3027, 219, -3039, -3035, -3033, 219, + 102, 102, 241, -3038, -3025, -979, 102, -3043, + -2868, 140, 255, -2868, 219, -3042, -3047, -3025, + 248, -3058, 102, 26, -3055, 174, 248, -3057, + -3048, 154, -3061, 176, 174, -3069, -3066, -2314, + -3045, -3041, -2314, 154, 140, -3071, 138, -3074, + 138, -3068, -2314, -3068, -3082, -3078, -3079, -3081, + 26, 26, -3086, -3084, -3085, 117, -3081, 25, + 177, -3073, -3169, -3121, -3108, -3098, -3096, 88, + 15, 22, -3105, -3103, -1750, 22, 248, 15, + 22, -3107, 15, 15, -3114, -2820, -3112, -3102, + 177, -3111, -3118, -3117, 117, 117, -3117, 196, + -3119, -3141, -1600, -3135, -3128, -1504, -3113, -3089, + -3132, -1637, -441, -418, -1637, 117, -3130, -3137, + 140, -2950, 186, -3136, -433, -3149, -3116, -3145, + 140, -2919, -499, -3140, -3134, -3152, 176, 180, + -3158, -3156, 117, 245, 245, -3127, -3166, -3163, + -3162, -3065, 117, -3162, -3024, -2957, -3167, 245, + -2863, -3198, -3191, -3180, -3179, -3176, 25, -2575, + -3117, 117, -1864, 101, -3179, -3187, -1641, -1642, + 134, -2723, -3185, -1637, 26, 125, 125, -2635, + -3194, -3189, -3196, -3188, 137, -3186, -3208, -3201, + 125, -3205, -2909, 66, -3200, -1509, 151, 151, + 117, 137, -3206, -4626, -3901, -3567, -3380, -3288, + -3280, -3253, -3232, -3227, -3222, 73, -3226, -3225, + 231, 231, 246, -3231, -3230, 246, 246, 108, + -3240, -3235, 236, -3237, 236, -3239, 236, 236, + -3250, -3239, -3246, -3245, 236, 236, -3245, 151, + -3206, -3210, -3252, 99, 236, -3260, -3258, -3256, + -3238, -3251, 26, 236, -3273, -3266, -3265, 147, + -3249, 147, -3270, -2861, 151, 76, -3239, -3264, + -3251, -3277, -3276, 147, 147, -3276, 99, -3251, + -3286, -3282, 125, -3081, 26, 76, -3287, 35, + -3327, -3318, -3311, -3301, -3299, -3297, -3296, 25, + 25, 25, 64, 86, 25, -3306, -3305, 86, + 102, 86, -3308, 102, -3310, -3279, 102, -3317, + -3014, -1402, -3272, 157, 157, 102, -3321, 26, + 125, -3323, 26, -3325, -3315, 26, 25, -3339, + -3331, 178, 86, -3337, -3335, 26, 219, 26, + 66, -3338, 236, -3022, -3364, -3359, -3353, -3351, + -3348, -3014, 66, 99, -3014, 99, -2527, -3352, + 147, -3357, -3356, 147, 147, 147, 102, -3265, + -3358, 102, -3347, -3336, -3372, -3369, -3239, -3314, + -3271, -3239, 236, -3204, -3369, -3239, 236, -3197, + -745, 24, 158, 90, -3430, -3403, -3396, -3393, + -3388, -1794, 126, -3378, -3392, -3391, 126, 126, + 126, -3395, 74, 74, -3402, -3400, 146, -3377, + 195, 146, 146, -3413, -3410, 22, -3409, 86, + 146, 86, -3411, 86, 22, -3420, -3418, -3416, + 25, -1902, -3419, 35, 126, -3428, -3425, 25, + 35, -3287, 35, -3377, 86, 35, -3546, -3507, + -3457, -3438, -3435, -3436, 236, 147, -3443, -3442, + 12, 146, 116, -3446, 146, 236, -3449, 116, + 35, -3452, 116, -3429, -3454, 236, -3239, 236, + 35, -3473, -3465, -3463, -3462, 35, 35, -3464, + 35, -3472, -3469, 86, 35, -3426, -3456, 125, + 86, -3496, -3491, -3481, -3480, -3479, 231, 231, + 77, -3484, -3265, 125, -3277, -3276, 147, -3471, + -4717, -3470, -3451, -3495, -3265, 147, 3, 147, + -3504, -3277, -3276, 147, 2, -3681, 2, -3500, + -3495, -3494, -3490, -3529, -3493, -3525, -3518, -3515, + -3437, 147, -3427, -3437, 0, -2410, -3515, -3437, + 147, -3494, 184, -2410, -2471, -3437, 147, 0, + 3, -3542, -3537, -3535, -3534, 74, 74, 74, + 62, -3539, 18, -3541, 116, 116, -3486, -3520, + -3524, -3521, -3565, -3562, -3550, 35, -3558, -3555, + -3554, 35, 35, -3554, -3456, -3549, -3553, 150, + 0, -2734, -3563, 35, -1951, -3566, 125, -3662, + -3642, -3595, -3574, -3573, 132, 20, -3586, -3582, + -3579, 32, -3557, -1635, 34, -3545, -1461, 132, + 32, -3514, -630, -3590, 34, 22, 22, -3593, + -3399, 153, -3375, -3600, -3599, 78, 156, 78, + -3608, -3607, -3604, 132, -3606, 132, 132, 94, + -3631, -3611, 34, -3613, 150, -3616, -3615, 150, + -3627, -3625, -3622, -1056, 158, -3378, -1056, 34, + 158, -3615, -3378, -3630, -3623, 158, 33, -3632, + -3636, -3635, 33, 33, -3640, -3639, 33, 33, + 132, -3378, -3653, -3648, -3647, -3646, 33, 126, + -3651, 254, -3626, -1477, -3621, -3657, -3536, 91, + -3652, -3659, -3656, -3660, -3646, 240, -3842, -3776, + -3715, -3688, -3683, -3462, -3680, -3673, -3480, 77, + 240, -3677, -3472, 86, -3672, -3472, -3661, -3658, + 64, 158, 240, -3686, 20, 35, -3287, -3661, + -3700, -3697, -3694, -3693, 156, 156, -3693, 156, + -3681, -3699, 144, 144, -3711, -3709, -3706, -3705, + 158, 35, -3705, 158, -3704, 144, 35, -3713, + 144, 77, -3226, -3730, -3725, -3573, -3721, -3649, + -3696, -3723, -3679, 156, -2653, -3729, -3501, 35, + -3429, 144, -3767, -3739, -3736, -3735, 74, 33, + -3534, -3728, -3724, -3760, -3748, -3745, -3744, 77, + 77, -3744, -3553, -3448, -3757, -3635, -3754, -3753, + 81, 33, 74, 33, -3747, -3759, 78, 78, + -3764, -3763, -3746, 144, -3763, 144, -3738, -3775, + -3772, -3573, 20, -3722, -3573, 20, 125, 78, + -3799, -3788, -3786, -3783, -1522, 125, -3774, -1522, + 148, -3189, 20, 7, -3796, -3791, 57, -3723, + -3794, -3556, 156, -3785, -3797, -3798, 156, -3813, + -3809, 35, -1438, -3805, -3429, -3807, 25, 25, + 108, -3810, -3812, 240, 240, -3821, -3817, 240, + -3804, 35, -3661, 240, -3795, -3829, -3828, -3826, + 35, 144, -3705, -2723, 240, -3831, 156, -3835, + -3819, 240, 99, -3839, -3798, -3827, 246, -3798, + 156, -3230, -3873, -3854, -3851, 33, -3850, -3849, + 32, 32, 13, -3623, 20, -3837, -3867, -3858, + -3857, 144, -3866, -3836, -3798, 156, 35, 241, + -3862, -3230, 156, -3870, 33, 68, -3872, 99, + 34, -3884, -3875, -3881, -3878, 150, -3554, -3853, + -3188, -3705, 26, 178, -3891, 150, -3890, -3889, + 234, 234, 155, -3897, -3894, -3880, -3896, -3838, + 35, -3898, -1056, -3838, -3895, -4208, -4124, -3965, + -3939, -3928, -3911, 153, -3910, 114, 114, -3913, + 114, -3923, -3604, -3917, 105, -3919, 114, 114, + -4838, -3278, 91, -3919, -566, 91, -3922, 246, + -535, -3932, -3931, 105, -3936, -543, 105, 91, + 93, -3922, -3927, -3950, -3946, -3943, 85, -3945, + -3926, 153, -668, -3948, 153, 99, -3953, 114, + -3921, -3958, -3955, -3910, 114, -3879, -3962, -3961, + 114, 114, -3961, -3820, -3771, -4040, -4025, -4014, + -4002, -3976, -3975, -3974, 94, 59, 94, 95, + -3994, -3983, -3981, -3980, 95, -3630, -3594, -3987, + 71, 94, 33, -3991, -3980, 95, 157, -3980, + 95, 157, -3999, -3996, -3998, -3990, 95, -3992, + 208, -4000, -4004, 23, -4007, 17, 153, -4011, + -222, 153, 255, -222, 153, -3042, -4020, -3630, + -4018, -4001, 153, 111, -3623, -3593, -4019, 125, + 111, -4036, -4031, -4030, -2734, -4023, 0, -4033, + 125, -1056, 3, -4034, -4039, -4038, 95, 150, + -4096, -4071, -4054, -4048, 153, -3607, 94, 2, + -4052, -3948, -4035, -4032, -3948, -4029, -4058, -3918, + -4017, 157, -4064, -4063, -4062, 94, 94, 153, + -4068, -3681, -3993, 157, -3961, 114, -3993, -4079, + -4074, 17, -4077, 95, 222, -4078, 222, -4069, + -4088, -4085, -4084, 222, 222, -4084, 222, -4066, + -4090, 157, -4092, 21, -4094, -4087, 222, 21, + -4122, -4104, -4100, 68, -4102, -4095, 33, 34, + 95, -4116, -4112, -4111, -4110, -4093, 34, 150, + 150, -4110, 100, 100, -4120, -1056, -4115, -4114, + 150, -4109, -574, 157, -4148, -4143, -4136, 255, + -4131, 17, 28, -2388, -2934, -4123, 90, -4134, + -4140, -4139, 157, 150, -4139, 150, -4133, -4146, + -3442, -3377, -4147, 116, -4167, -4152, -102, 24, + -4164, -4159, -4157, 23, 110, -77, -4145, -211, + 232, -4142, -4121, -4056, -344, 111, 157, -3992, + -4194, -4187, -4185, -4175, -3975, 95, -4166, -4178, + 222, 131, -4182, -4094, 21, -4180, -4094, -4174, + 125, -4186, 209, -4164, -344, 131, 21, -3681, + -4183, 220, -4199, -4197, 110, -4198, 209, -4203, + -344, 220, -4193, -4205, 110, 110, 131, -3494, + -4322, -4240, -4226, -4220, -1870, -4217, 18, 0, + 220, 18, 208, 125, -4224, -4223, 208, 146, + -4225, 146, -4238, -4236, -4232, -4231, -4219, 0, + -4235, 107, -4216, 107, 107, -4207, -3391, -4202, + -4278, -4266, -4255, -4248, -3252, 28, -4239, -4192, + -4251, -3453, -2581, -4253, 146, -4254, 236, -4261, + -4258, 220, -4225, 146, -4257, -3566, -4264, -4201, + 146, -4250, -4273, -4271, -4065, 220, -4269, -3252, + -2581, -4275, -4265, -3453, 236, -3494, -4291, -4280, + -4284, -3370, -3990, -3990, -4286, -4282, -3370, -3453, + -4277, 236, -3252, -4309, -4297, -3453, -4295, 146, + -3250, -4304, -4301, 3, -4288, 236, 3, -4274, + -3453, -4307, 236, 236, -4247, -4315, -4313, 194, + -3245, -2581, 76, -4317, -4314, -4319, 3, -2581, + -4312, -4308, -4501, -4468, -4412, -4353, -4332, -3541, + -4330, 181, 181, -2581, -4334, 98, -4342, -4339, + -4225, 111, -4337, -4225, -4338, -4333, -4348, -4347, + 151, -4331, 21, 146, -4350, 202, -4225, 146, + -4180, -4365, -4362, -4359, -4358, 71, 71, 116, + -3394, 182, -3395, 74, -4345, -4379, -4376, -4371, + -4370, 71, 71, -4375, -3992, 95, -4321, 209, + -4198, -4163, 157, -4383, -4381, -4147, -4378, -4408, + -4403, -4393, -4390, 158, 157, 157, -4198, 209, + -4388, -4400, -4398, -4397, 209, 209, 202, 255, + -4402, 202, 202, -4405, 116, -4147, 116, -3042, + -4410, 209, -4147, -4407, -4450, -4429, -4416, 209, + -4426, -4420, 198, -4392, -4423, 198, 110, -4204, + 110, 255, -4198, -4399, -4392, -4446, -4443, -4438, + -4436, -2289, -4419, -4382, 110, 28, -4442, -4437, + 28, 157, 110, -4445, -4389, 209, -4448, -4378, + -2289, -4378, -4463, -4457, -4456, -2385, -4447, -4444, + 116, -4459, 116, -4461, -3629, -4225, -4435, -4466, + 188, 208, 188, -1883, -4490, -4482, -4474, -4349, + 202, -4467, -4480, -4478, 146, 220, 220, 146, + -4347, -4462, 188, -4489, -4487, 30, 255, 220, + 108, 220, -4495, 119, -4494, 109, 109, -4497, + 198, -4500, -4499, 119, 119, -4561, -4531, -4506, + -222, 108, -4509, -4508, 93, -4529, -4520, -4517, + -4514, 23, -4516, 107, 107, -294, -4488, -3774, + -4522, 110, -4526, -118, -4486, 158, -118, 158, + -4525, 30, 125, -4543, -4538, -4536, 30, 119, + 119, -4528, -4540, 30, -178, 30, -4524, -4544, + -4554, -4499, -4551, 119, -2215, 30, -4481, 110, + 241, 241, -4557, 30, -4552, -4560, 30, 158, + 119, -4595, -4584, -4576, -4569, -4567, -4559, 71, + 202, -4574, 126, -4573, 188, 188, -4575, 126, + -4581, -1795, 126, 158, -4559, -1795, -4579, -4566, + -4588, 126, -222, -4556, -2798, -4592, 107, 93, + 93, 158, 255, -4607, -4606, -4605, -3391, -4601, + -4587, -4347, -4593, 151, -4603, 146, 202, -4617, + -4347, -4613, -4500, 119, 158, -4500, 119, -3378, + -4604, -4575, -4622, -4500, -4602, -4600, -4500, 100, + 140, 255, -3178, -4802, -4839, -4733, -4686, -4662, + -4651, -4640, -4638, -4637, -4624, 149, 141, 229, + -4648, -4647, -4646, -4645, 229, 229, 141, 229, + -4650, -4623, 229, -4658, -4656, 128, 149, 155, + 128, 149, -4660, -4621, 206, -4550, -4665, -1906, + 241, -3681, -4680, -4673, -4672, -4671, 254, 254, + 128, -4677, -4671, 254, -4566, -4671, 254, 151, + -4683, 240, -4676, 240, -3707, -4682, -4713, -4711, + -4696, -4694, -4692, 158, -4693, 19, 229, 19, + -4704, -4701, -4700, 241, 229, -4700, -4559, -4699, + -4701, 225, 229, -4703, -4387, -4685, 66, 141, + 225, -4719, -4716, 206, -4645, 229, 246, -4723, + -4645, 246, 246, -4726, -4700, -4721, -4701, -3681, + 108, -4728, -4268, 108, -4728, -4807, -4753, -4740, + -4672, -2175, -4729, 108, -4743, 13, 91, -4746, + -1020, 108, -4749, -1014, -4728, -4751, -4742, -1014, + -4738, -4786, -4778, -4773, -4770, -4763, -4762, -4761, + 155, 155, 155, -4767, -4761, 155, -4725, -4761, + -4718, 246, -4772, -4768, 5, 155, -4775, -3727, + 158, -3620, -4782, -4781, 35, 35, -4775, 254, + -4777, -4771, -4797, -4793, -4792, -3849, 32, -4709, + 34, -4796, -3890, -4661, 155, -4800, -3857, -4377, + -3894, -3896, -3982, 241, 254, -4803, -4805, -4820, + -4817, -4812, 234, -811, -1561, 128, -4783, 234, + -4806, -4818, -4762, 24, -4834, -3681, -4828, -4827, + -4826, -4819, 155, 155, -4832, -4826, 155, -4825, + 254, -4816, -4767, -4803, -4730, 151, -4835, -2116, + -3376, -3726, +}; + +static long _vq_p_res0_0c[] = { + 4, 544, 60, 664, 172, 188, 24, 224, + 24, 60, 220, 220, 24, 24, 220, 220, + 288, 172, 172, 172, 44, 216, 216, 216, + 220, 220, 220, 220, 220, 44, 288, 224, + 224, 224, 760, 188, 188, 188, 220, 188, + 188, 188, 988, 220, 220, 812, 812, 440, + 220, 788, 288, 288, 172, 288, 172, 220, + 216, 216, 216, 216, 988, 144, 172, 144, + 144, 144, 144, 1008, 516, 172, 172, 760, + 144, 144, 144, 144, 144, 372, 44, 44, + 44, 188, 188, 188, 188, 188, 788, 788, + 368, 216, 216, 216, 492, 368, 492, 4, + 224, 224, 24, 24, 24, 524, 452, 4, + 4, 288, 448, 4, 64, 4, 4, 4, + 64, 688, 288, 452, 172, 1012, 440, 440, + 224, 24, 224, 44, 44, 68, 108, 688, + 872, 120, 24, 220, 216, 24, 24, 216, + 216, 216, 68, 220, 220, 220, 220, 220, + 368, 428, 664, 108, 24, 24, 664, 664, + 224, 224, 120, 224, 24, 216, 216, 216, + 224, 68, 44, 44, 44, 492, 108, 636, + 664, 636, 120, 664, 636, 636, 216, 216, + 216, 68, 872, 776, 776, 368, 216, 320, + 320, 320, 440, 216, 384, 368, 776, 320, + 384, 220, 220, 220, 220, 220, 44, 44, + 44, 332, 144, 368, 144, 92, 144, 144, + 332, 332, 92, 92, 68, 44, 16, 936, + 68, 540, 44, 44, 44, 108, 92, 92, + 348, 368, 352, 144, 144, 144, 188, 188, + 188, 516, 988, 320, 220, 220, 220, 348, + 352, 320, 60, 352, 188, 188, 188, 812, + 188, 996, 812, 188, 188, 332, 332, 384, + 384, 220, 220, 220, 220, 384, 384, 220, + 220, 220, 124, 412, 352, 352, 412, 332, + 384, 332, 216, 216, 332, 220, 144, 144, + 368, 144, 412, 368, 368, 144, 92, 92, + 92, 92, 428, 368, 368, 368, 368, 368, + 384, 188, 188, 220, 188, 188, 216, 188, + 188, 716, 996, 332, 384, 384, 648, 216, + 216, 648, 996, 716, 996, 332, 452, 216, + 216, 216, 996, 332, 368, 368, 996, 476, + 384, 300, 300, 220, 452, 368, 368, 996, + 476, 384, 452, 776, 776, 300, 220, 220, + 440, 384, 384, 788, 672, 428, 672, 332, + 320, 320, 320, 384, 384, 384, 384, 384, + 428, 776, 144, 60, 480, 196, 240, 276, + 240, 168, 168, 240, 240, 168, 168, 168, + 168, 276, 276, 196, 196, 196, 196, 276, + 68, 480, 276, 276, 356, 528, 60, 196, + 196, 196, 196, 288, 60, 60, 168, 168, + 168, 196, 196, 68, 196, 288, 168, 168, + 168, 168, 168, 524, 332, 144, 144, 144, + 144, 144, 784, 508, 168, 168, 480, 168, + 168, 168, 680, 680, 480, 480, 788, 240, + 240, 784, 144, 144, 144, 144, 144, 784, + 60, 328, 4, 4, 4, 60, 44, 328, + 328, 352, 504, 60, 352, 60, 60, 680, + 60, 60, 680, 328, 508, 508, 680, 288, + 288, 680, 508, 508, 812, 680, 672, 672, + 168, 144, 144, 168, 168, 852, 144, 144, + 168, 144, 144, 144, 672, 672, 340, 340, + 372, 276, 276, 276, 240, 168, 168, 672, + 332, 240, 240, 412, 276, 168, 340, 332, + 168, 168, 168, 332, 852, 480, 680, 680, + 240, 240, 240, 680, 340, 340, 420, 680, + 372, 340, 340, 420, 276, 276, 276, 420, + 340, 340, 648, 276, 276, 340, 372, 372, + 92, 144, 144, 144, 144, 648, 372, 372, + 92, 92, 92, 560, 504, 372, 68, 372, + 420, 276, 276, 276, 68, 420, 420, 480, + 144, 276, 680, 144, 356, 372, 420, 44, + 16, 680, 44, 680, 672, 56, 56, 276, + 672, 196, 4, 168, 168, 168, 168, 4, + 68, 4, 4, 4, 816, 288, 288, 412, + 356, 168, 168, 644, 496, 196, 644, 356, + 496, 196, 196, 288, 276, 168, 56, 276, + 168, 168, 644, 644, 56, 56, 356, 644, + 56, 168, 168, 56, 168, 168, 644, 356, + 680, 680, 276, 276, 560, 340, 528, 276, + 240, 240, 240, 124, 276, 124, 412, 56, + 56, 496, 496, 164, 164, 164, 164, 412, + 240, 240, 56, 56, 412, 56, 44, 168, + 168, 168, 44, 44, 496, 56, 56, 108, + 44, 8, 108, 332, 16, 164, 208, 280, + 844, 816, 268, 268, 212, 212, 212, 212, + 844, 268, 268, 332, 268, 268, 280, 268, + 212, 268, 212, 64, 108, 424, 164, 268, + 56, 56, 56, 268, 76, 648, 164, 648, + 268, 348, 56, 164, 164, 56, 56, 76, + 348, 484, 164, 768, 164, 164, 164, 424, + 76, 208, 208, 208, 208, 348, 76, 648, + 268, 212, 212, 212, 76, 76, 896, 268, + 212, 268, 424, 212, 424, 820, 212, 820, + 844, 900, 332, 424, 484, 268, 424, 348, + 424, 208, 348, 348, 208, 820, 820, 208, + 208, 212, 212, 208, 208, 208, 40, 8, + 416, 416, 56, 76, 56, 56, 56, 208, + 76, 76, 348, 108, 8, 928, 108, 348, + 772, 772, 348, 348, 348, 772, 416, 520, + 820, 416, 416, 520, 820, 520, 372, 852, + 44, 852, 168, 168, 852, 168, 900, 644, + 644, 172, 644, 360, 644, 44, 44, 852, + 240, 644, 644, 372, 44, 360, 544, 540, + 56, 300, 240, 164, 164, 520, 56, 520, + 164, 164, 300, 168, 168, 648, 56, 240, + 648, 300, 300, 300, 300, 852, 648, 340, + 648, 268, 240, 172, 168, 168, 172, 172, + 484, 856, 240, 240, 520, 484, 844, 56, + 816, 68, 268, 268, 648, 484, 844, 844, + 648, 484, 56, 56, 44, 44, 44, 680, + 108, 856, 540, 348, 768, 768, 164, 164, + 164, 164, 648, 348, 300, 300, 648, 348, + 648, 768, 648, 300, 300, 300, 348, 348, + 760, 348, 348, 760, 760, 648, 56, 56, + 56, 348, 416, 348, 644, 416, 348, 644, + 644, 416, 644, 300, 484, 268, 484, 164, + 644, 240, 852, 856, 240, 644, 300, 300, + 300, 852, 768, 648, 164, 164, 164, 644, + 936, 300, 300, 600, 240, 240, 520, 520, + 856, 416, 416, 416, 416, 820, 540, 856, + 856, 268, 268, 600, 844, 844, 844, 520, + 896, 856, 820, 820, 820, 856, 484, 484, + 520, 820, 796, 360, 360, 484, 484, 360, + 908, 896, 896, 360, 212, 200, 40, 108, + 84, 200, 84, 40, 40, 40, 416, 416, + 688, 688, 64, 520, 416, 40, 40, 40, + 40, 40, 416, 84, 52, 688, 520, 728, + 688, 800, 728, 728, 8, 800, 416, 416, + 416, 8, 8, 76, 684, 804, 804, 684, + 684, 684, 688, 688, 800, 868, 864, 448, + 200, 64, 728, 200, 200, 200, 200, 728, + 688, 684, 684, 684, 76, 688, 684, 684, + 600, 800, 688, 688, 64, 64, 520, 64, + 64, 448, 688, 728, 52, 800, 688, 52, + 756, 52, 804, 756, 756, 8, 800, 928, + 280, 212, 212, 212, 212, 212, 800, 520, + 280, 280, 844, 816, 64, 64, 520, 816, + 64, 64, 64, 928, 804, 360, 800, 800, + 800, 804, 804, 44, 172, 688, 172, 172, + 172, 172, 64, 688, 360, 736, 172, 4, + 4, 736, 44, 44, 44, 44, 736, 64, + 796, 208, 208, 804, 172, 64, 360, 172, + 172, 172, 844, 816, 816, 736, 688, 800, + 64, 736, 76, 688, 688, 736, 804, 656, + 800, 800, 656, 656, 64, 64, 208, 844, + 800, 800, 800, 800, 208, 820, 820, 820, + 844, 76, 172, 172, 172, 172, 656, 796, + 656, 736, 416, 416, 572, 484, 424, 820, + 820, 348, 348, 348, 760, 664, 664, 664, + 664, 664, 664, 664, 664, 664, 492, 332, + 224, 684, 684, 756, 756, 756, 648, 840, + 760, 392, 392, 648, 756, 760, 760, 760, + 492, 756, 756, 756, 332, 756, 756, 996, + 840, 412, 872, 636, 544, 760, 412, 216, + 216, 348, 872, 492, 492, 348, 1004, 872, + 332, 120, 216, 216, 332, 332, 996, 492, + 224, 912, 172, 804, 172, 172, 996, 768, + 684, 684, 684, 768, 688, 348, 348, 688, + 688, 688, 452, 756, 756, 224, 224, 300, + 688, 300, 300, 756, 684, 684, 300, 688, + 688, 688, 300, 56, 756, 348, 56, 684, + 688, 756, 172, 172, 424, 756, 756, 756, + 768, 908, 172, 172, 172, 164, 164, 44, + 44, 172, 172, 44, 44, 44, 164, 492, + 772, 772, 172, 772, 688, 348, 760, 760, + 164, 416, 416, 416, 416, 348, 912, 912, + 820, 84, 728, 224, 200, 664, 200, 200, + 200, 200, 200, 164, 684, 684, 772, 224, + 348, 684, 664, 664, 664, 664, 664, 728, + 164, 684, 684, 684, 348, 688, 56, 796, + 164, 244, 200, 728, 244, 392, 728, 728, + 164, 84, 200, 200, 200, 164, 448, 684, + 684, 164, 664, 224, 244, 56, 688, 244, + 164, 688, 416, 688, 416, 56, 684, 736, + 244, 332, 728, 688, 332, 728, 1012, 736, + 772, 648, 916, 648, 244, 728, 728, 728, + 244, 648, 796, 648, 332, 392, 648, 416, + 332, 904, 904, 124, 116, 356, 536, 80, + 276, 152, 152, 152, 80, 152, 152, 152, + 152, 152, 460, 80, 80, 28, 28, 28, + 932, 356, 356, 356, 80, 128, 496, 244, + 116, 28, 28, 528, 196, 196, 356, 196, + 196, 196, 196, 80, 80, 80, 460, 356, + 460, 460, 196, 648, 996, 276, 512, 332, + 996, 356, 332, 772, 80, 504, 356, 356, + 356, 356, 892, 496, 68, 68, 68, 256, + 732, 28, 28, 28, 36, 80, 260, 260, + 56, 36, 36, 36, 256, 256, 256, 256, + 260, 468, 732, 732, 732, 100, 204, 28, + 460, 204, 256, 256, 256, 256, 256, 56, + 312, 312, 312, 56, 80, 68, 244, 80, + 260, 260, 244, 244, 260, 260, 196, 196, + 196, 196, 196, 56, 260, 504, 260, 504, + 60, 56, 260, 36, 36, 260, 260, 348, + 356, 60, 60, 36, 356, 892, 204, 196, + 496, 512, 348, 8, 196, 196, 196, 8, + 892, 460, 648, 356, 332, 460, 460, 648, + 204, 204, 204, 8, 260, 260, 260, 356, + 76, 4, 4, 4, 356, 288, 288, 76, + 496, 8, 260, 744, 260, 1012, 8, 56, + 744, 196, 196, 8, 928, 56, 332, 60, + 196, 196, 332, 60, 68, 196, 196, 288, + 56, 244, 36, 36, 36, 36, 244, 512, + 68, 244, 204, 204, 204, 260, 260, 732, + 204, 204, 260, 128, 732, 744, 204, 56, + 732, 732, 744, 732, 56, 56, 260, 460, + 76, 460, 536, 580, 460, 204, 204, 204, + 52, 52, 36, 536, 180, 180, 180, 36, + 36, 36, 52, 404, 116, 28, 28, 180, + 180, 116, 28, 28, 28, 52, 204, 52, + 180, 204, 180, 180, 180, 204, 204, 732, + 732, 732, 536, 180, 76, 404, 404, 772, + 204, 204, 772, 932, 536, 76, 76, 4, + 4, 4, 4, 4, 36, 52, 288, 288, + 404, 404, 816, 496, 268, 496, 268, 268, + 816, 816, 496, 656, 496, 496, 496, 656, + 932, 128, 656, 404, 404, 404, 816, 536, + 180, 180, 180, 656, 656, 256, 256, 36, + 36, 36, 36, 520, 244, 60, 60, 80, + 28, 152, 152, 28, 28, 28, 244, 52, + 256, 256, 256, 52, 80, 244, 244, 80, + 80, 244, 88, 88, 100, 612, 80, 80, + 80, 80, 80, 420, 52, 164, 420, 164, + 164, 356, 52, 92, 60, 60, 60, 60, + 92, 88, 88, 92, 88, 88, 244, 76, + 4, 4, 60, 60, 60, 772, 4, 36, + 4, 108, 4, 4, 4, 208, 64, 64, + 208, 36, 36, 116, 268, 268, 268, 208, + 208, 64, 772, 4, 4, 4, 208, 28, + 28, 28, 656, 268, 268, 656, 656, 116, + 76, 76, 76, 656, 108, 108, 648, 56, + 648, 76, 648, 356, 80, 56, 80, 56, + 52, 76, 528, 80, 56, 56, 300, 356, + 656, 880, 56, 56, 56, 56, 612, 108, + 120, 112, 116, 788, 40, 564, 212, 212, + 212, 208, 208, 112, 212, 76, 96, 160, + 160, 40, 208, 208, 208, 76, 40, 40, + 40, 832, 8, 76, 848, 328, 8, 828, + 828, 396, 396, 76, 76, 328, 824, 96, + 96, 328, 96, 656, 656, 656, 76, 208, + 208, 208, 916, 76, 112, 328, 656, 268, + 268, 76, 672, 76, 824, 28, 28, 76, + 796, 672, 672, 164, 328, 824, 28, 28, + 28, 28, 824, 848, 20, 76, 120, 8, + 76, 76, 76, 828, 328, 212, 40, 212, + 64, 212, 212, 788, 64, 268, 156, 156, + 212, 212, 268, 156, 96, 40, 40, 160, + 160, 788, 160, 444, 268, 268, 268, 392, + 64, 392, 180, 64, 328, 108, 160, 268, + 268, 268, 156, 796, 156, 180, 180, 96, + 156, 180, 180, 180, 828, 280, 280, 280, + 472, 828, 828, 392, 280, 280, 280, 280, + 392, 156, 816, 64, 64, 120, 976, 764, + 180, 764, 732, 180, 392, 764, 268, 268, + 976, 976, 180, 180, 180, 180, 948, 580, + 580, 392, 932, 932, 392, 664, 1012, 636, + 636, 268, 268, 268, 268, 948, 564, 564, + 636, 932, 764, 764, 764, 764, 764, 764, + 828, 828, 564, 596, 828, 828, 636, 636, + 564, 564, 412, 396, 404, 180, 180, 976, + 976, 976, 788, 180, 180, 760, 760, 404, + 404, 784, 976, 976, 784, 784, 404, 784, + 760, 268, 268, 268, 156, 156, 392, 180, + 180, 268, 180, 180, 392, 828, 760, 180, + 180, 472, 976, 828, 736, 760, 636, 472, + 280, 268, 268, 636, 636, 280, 816, 280, + 636, 280, 280, 280, 472, 976, 392, 784, + 976, 976, 784, 828, 828, 976, 976, 976, + 992, 952, 948, 328, 328, 472, 472, 328, + 784, 512, 392, 392, 824, 76, 268, 268, + 268, 268, 564, 328, 328, 28, 28, 28, + 328, 156, 128, 916, 156, 784, 656, 656, + 564, 932, 36, 180, 28, 392, 180, 36, + 28, 180, 28, 328, 760, 112, 28, 28, + 28, 28, 28, 676, 180, 180, 180, 180, + 764, 676, 676, 824, 764, 764, 824, 824, + 112, 764, 436, 436, 824, 676, 676, 440, + 396, 436, 180, 436, 676, 28, 28, 28, + 28, 28, 440, 592, 676, 788, 788, 676, + 676, 636, 204, 204, 204, 636, 932, 180, + 180, 932, 180, 636, 328, 328, 676, 676, + 672, 580, 204, 672, 676, 676, 672, 160, + 200, 532, 24, 224, 816, 160, 160, 4, + 64, 672, 860, 4, 4, 816, 4, 160, + 160, 160, 24, 160, 160, 160, 160, 200, + 24, 24, 24, 200, 788, 224, 160, 160, + 160, 440, 336, 336, 200, 200, 68, 336, + 336, 552, 24, 156, 24, 24, 336, 24, + 24, 24, 448, 860, 336, 336, 884, 336, + 336, 336, 552, 884, 156, 860, 860, 156, + 448, 448, 448, 884, 156, 472, 160, 96, + 160, 160, 160, 160, 96, 40, 40, 156, + 40, 40, 40, 156, 472, 160, 160, 160, + 472, 64, 64, 64, 636, 860, 472, 472, + 816, 760, 472, 740, 740, 740, 740, 488, + 472, 760, 760, 976, 976, 740, 740, 740, + 740, 760, 816, 436, 16, 864, 64, 160, + 160, 160, 160, 160, 68, 200, 736, 440, + 68, 72, 40, 200, 68, 68, 68, 448, + 448, 72, 864, 160, 160, 160, 160, 440, + 440, 200, 108, 108, 200, 200, 200, 304, + 304, 304, 12, 448, 336, 336, 108, 448, + 336, 448, 736, 108, 112, 740, 740, 740, + 740, 740, 868, 860, 448, 448, 112, 440, + 860, 440, 448, 448, 156, 860, 156, 156, + 304, 304, 304, 532, 336, 740, 740, 488, + 336, 336, 336, 440, 740, 740, 156, 156, + 488, 488, 156, 40, 472, 40, 160, 160, + 160, 96, 96, 96, 392, 396, 396, 84, + 160, 160, 148, 148, 148, 160, 160, 160, + 40, 84, 304, 96, 200, 200, 200, 392, + 40, 156, 304, 304, 264, 148, 160, 336, + 148, 148, 264, 264, 336, 148, 148, 160, + 200, 148, 200, 200, 148, 148, 148, 156, + 112, 304, 84, 760, 264, 264, 264, 304, + 304, 760, 336, 440, 336, 264, 264, 264, + 336, 760, 160, 904, 396, 396, 156, 148, + 104, 904, 148, 148, 148, 200, 200, 156, + 156, 160, 160, 160, 40, 24, 160, 160, + 160, 160, 124, 24, 24, 24, 24, 884, + 4, 4, 24, 24, 156, 736, 760, 156, + 160, 160, 160, 160, 156, 760, 736, 108, + 444, 200, 200, 444, 664, 880, 48, 160, + 148, 392, 160, 24, 728, 48, 48, 48, + 12, 392, 104, 104, 84, 148, 160, 148, + 160, 96, 96, 160, 616, 160, 84, 36, + 160, 84, 180, 860, 740, 976, 396, 488, + 740, 740, 84, 976, 976, 84, 84, 396, + 396, 488, 740, 740, 488, 740, 976, 404, + 404, 976, 976, 404, 976, 156, 404, 404, + 404, 156, 676, 180, 180, 904, 676, 676, + 676, 764, 764, 396, 396, 396, 488, 488, + 548, 828, 180, 404, 360, 548, 180, 360, + 40, 764, 40, 404, 404, 36, 36, 36, + 40, 4, 40, 4, 720, 404, 4, 4, + 40, 404, 720, 884, 4, 8, 288, 816, + 404, 884, 740, 740, 124, 884, 404, 360, + 404, 404, 360, 904, 548, 740, 412, 740, + 412, 160, 160, 160, 412, 36, 156, 488, + 488, 156, 36, 36, 156, 900, 156, 156, + 36, 104, 104, 104, 36, 156, 704, 336, + 336, 704, 704, 704, 336, 360, 136, 552, + 104, 8, 76, 712, 712, 712, 104, 336, + 336, 68, 548, 488, 488, 220, 12, 24, + 24, 24, 24, 24, 220, 48, 72, 44, + 48, 4, 72, 48, 48, 220, 220, 220, + 220, 68, 68, 48, 48, 48, 320, 48, + 48, 696, 8, 320, 68, 352, 352, 388, + 48, 696, 48, 48, 48, 48, 88, 696, + 352, 60, 60, 88, 352, 352, 428, 8, + 320, 320, 320, 320, 320, 352, 352, 652, + 352, 652, 652, 388, 704, 748, 320, 696, + 652, 708, 652, 652, 696, 696, 696, 748, + 696, 696, 696, 696, 748, 352, 708, 708, + 708, 708, 980, 748, 8, 8, 352, 156, + 156, 748, 320, 320, 156, 76, 320, 320, + 320, 812, 352, 208, 812, 208, 704, 696, + 696, 704, 704, 704, 208, 736, 156, 68, + 696, 696, 696, 748, 748, 780, 704, 704, + 336, 992, 876, 696, 48, 48, 48, 696, + 112, 920, 920, 328, 876, 320, 24, 24, + 24, 920, 320, 320, 328, 288, 4, 4, + 24, 36, 36, 36, 60, 4, 4, 672, + 720, 60, 672, 24, 220, 900, 672, 328, + 60, 72, 696, 696, 72, 720, 720, 720, + 920, 328, 884, 680, 24, 24, 884, 220, + 680, 72, 220, 220, 220, 220, 72, 352, + 72, 812, 320, 980, 708, 696, 696, 696, + 696, 156, 68, 708, 68, 720, 720, 744, + 720, 720, 744, 720, 812, 68, 352, 352, + 832, 444, 980, 328, 328, 696, 696, 696, + 60, 812, 352, 328, 400, 60, 60, 60, + 60, 352, 744, 328, 328, 720, 400, 748, + 336, 712, 100, 676, 676, 784, 100, 100, + 712, 712, 712, 104, 104, 104, 328, 336, + 656, 784, 328, 876, 704, 156, 876, 156, + 696, 748, 652, 652, 156, 696, 780, 748, + 700, 700, 700, 700, 700, 700, 972, 748, + 156, 408, 748, 704, 696, 696, 696, 696, + 696, 748, 644, 708, 708, 644, 748, 704, + 704, 360, 832, 708, 708, 400, 780, 696, + 400, 48, 696, 696, 36, 36, 644, 48, + 644, 696, 36, 696, 36, 696, 696, 696, + 992, 1020, 704, 704, 400, 104, 104, 704, + 704, 360, 876, 644, 36, 676, 256, 36, + 36, 100, 700, 700, 704, 708, 704, 708, + 704, 644, 352, 256, 260, 652, 652, 652, + 696, 696, 256, 36, 36, 36, 328, 256, + 256, 36, 36, 260, 708, 652, 652, 644, + 256, 784, 36, 36, 36, 100, 256, 400, + 328, 260, 260, 260, 260, 36, 400, 328, + 36, 36, 644, 328, 720, 720, 784, 36, + 784, 60, 60, 328, 328, 36, 720, 36, + 156, 704, 156, 156, 156, 696, 696, 696, + 704, 704, 704, 704, 720, 156, 708, 708, + 708, 328, 980, 744, 992, 360, 720, 744, + 784, 36, 732, 36, 36, 36, 36, 360, + 732, 732, 156, 732, 720, 720, 720, 720, + 720, 252, 396, 732, 712, 104, 264, 720, + 720, 264, 704, 264, 468, 264, 676, 256, + 252, 676, 656, 692, 692, 732, 396, 96, + 732, 732, 96, 32, 228, 944, 712, 324, + 292, 292, 924, 292, 292, 232, 324, 232, + 232, 324, 232, 692, 692, 692, 324, 324, + 692, 972, 972, 692, 692, 324, 324, 588, + 292, 324, 292, 292, 292, 432, 324, 252, + 252, 252, 432, 304, 500, 712, 324, 232, + 712, 252, 344, 344, 324, 972, 972, 972, + 304, 344, 324, 656, 668, 668, 344, 668, + 264, 972, 972, 972, 924, 344, 252, 252, + 344, 48, 344, 344, 344, 668, 324, 100, + 48, 408, 48, 700, 652, 652, 652, 652, + 256, 700, 700, 700, 700, 652, 652, 652, + 652, 48, 48, 48, 696, 668, 100, 652, + 652, 656, 668, 252, 668, 700, 48, 48, + 48, 700, 700, 712, 668, 100, 344, 712, + 700, 700, 700, 408, 712, 712, 712, 408, + 668, 500, 104, 408, 344, 700, 652, 408, + 652, 652, 252, 252, 700, 148, 148, 780, + 652, 700, 700, 700, 408, 344, 344, 972, + 972, 972, 148, 148, 972, 972, 972, 148, + 148, 408, 408, 148, 780, 780, 780, 148, + 736, 84, 604, 8, 652, 660, 660, 32, + 32, 32, 32, 360, 652, 652, 652, 388, + 660, 660, 660, 284, 652, 652, 652, 8, + 388, 388, 48, 652, 652, 652, 652, 652, + 652, 248, 32, 48, 48, 32, 32, 32, + 88, 148, 100, 0, 248, 248, 248, 248, + 248, 344, 344, 148, 256, 20, 296, 192, + 640, 640, 640, 924, 588, 584, 32, 32, + 32, 32, 72, 48, 48, 48, 292, 292, + 252, 344, 344, 252, 584, 584, 464, 464, + 500, 32, 192, 192, 32, 32, 192, 344, + 292, 248, 32, 32, 104, 248, 104, 252, + 308, 192, 192, 192, 192, 192, 192, 308, + 248, 248, 248, 148, 308, 308, 308, 148, + 736, 148, 104, 248, 248, 248, 500, 464, + 292, 292, 292, 292, 252, 512, 148, 148, + 344, 148, 8, 640, 660, 640, 640, 640, + 640, 640, 252, 464, 48, 48, 660, 660, + 660, 48, 208, 8, 8, 780, 780, 148, + 148, 296, 660, 32, 32, 32, 248, 660, + 660, 72, 32, 32, 32, 296, 248, 248, + 148, 148, 292, 192, 32, 8, 192, 192, + 192, 72, 600, 72, 72, 72, 292, 292, + 72, 72, 968, 292, 72, 48, 72, 456, + 80, 80, 152, 152, 152, 312, 52, 52, + 52, 52, 0, 80, 80, 72, 272, 272, + 272, 48, 80, 32, 32, 32, 80, 80, + 252, 136, 48, 152, 152, 152, 152, 176, + 236, 272, 236, 236, 272, 272, 456, 236, + 52, 32, 32, 296, 296, 176, 176, 132, + 52, 52, 52, 52, 364, 364, 132, 132, + 796, 376, 796, 272, 272, 252, 376, 32, + 176, 176, 176, 312, 272, 272, 272, 528, + 312, 252, 236, 236, 236, 236, 504, 284, + 312, 936, 252, 420, 252, 32, 32, 968, + 968, 660, 1016, 296, 312, 1016, 308, 296, + 228, 256, 344, 344, 228, 228, 228, 228, + 396, 192, 192, 192, 252, 248, 252, 396, + 248, 1016, 232, 228, 228, 228, 256, 232, + 176, 176, 176, 176, 176, 576, 228, 228, + 232, 228, 228, 308, 192, 192, 192, 192, + 232, 576, 228, 968, 968, 232, 232, 232, + 232, 228, 968, 152, 152, 152, 152, 576, + 968, 176, 232, 312, 252, 312, 936, 960, + 960, 176, 192, 32, 32, 192, 192, 32, + 192, 676, 676, 192, 248, 192, 192, 192, + 296, 248, 600, 324, 176, 176, 176, 176, + 232, 296, 192, 192, 232, 192, 192, 308, + 176, 176, 252, 132, 312, 312, 232, 248, + 32, 32, 32, 140, 248, 248, 432, 256, + 176, 152, 228, 152, 152, 324, 324, 228, + 228, 324, 152, 152, 228, 176, 176, 228, + 228, 292, 592, 292, 176, 576, 620, 592, + 228, 100, 228, 28, 104, 228, 228, 676, + 252, 232, 676, 676, 592, 1016, 232, 232, + 252, 576, 576, 576, 252, 28, 576, 28, + 28, 28, 228, 396, 28, 596, 596, 228, + 228, 228, 712, 576, 576, 712, 712, 960, + 960, 712, 272, 152, 152, 152, 152, 152, + 152, 52, 28, 80, 28, 324, 176, 176, + 176, 52, 52, 52, 52, 52, 324, 936, + 252, 252, 272, 132, 52, 52, 52, 252, + 576, 232, 968, 192, 192, 192, 576, 252, + 264, 232, 252, 252, 52, 576, 52, 52, + 52, 576, 576, 32, 32, 252, 576, 264, + 136, 132, 576, 692, 692, 244, 272, 340, + 236, 236, 184, 184, 184, 184, 340, 236, + 236, 272, 420, 340, 340, 272, 272, 420, + 900, 712, 252, 340, 340, 692, 692, 252, + 92, 92, 92, 284, 184, 184, 184, 668, + 284, 668, 668, 56, 56, 340, 272, 56, + 668, 272, 452, 340, 452, 252, 272, 272, + 668, 300, 300, 164, 164, 692, 244, 244, + 244, 452, 340, 692, 712, 32, 376, 236, + 284, 184, 184, 184, 184, 184, 68, 68, + 32, 32, 32, 32, 296, 296, 232, 376, + 236, 236, 236, 236, 236, 236, 500, 284, + 284, 444, 236, 68, 236, 444, 376, 68, + 444, 84, 236, 236, 32, 32, 32, 184, + 184, 184, 400, 68, 68, 400, 272, 272, + 272, 400, 132, 112, 32, 32, 400, 444, + 8, 68, 32, 32, 32, 8, 68, 68, + 112, 72, 8, 500, 380, 296, 72, 464, + 236, 236, 184, 184, 376, 184, 184, 72, + 68, 68, 72, 72, 376, 72, 236, 236, + 8, 400, 272, 272, 244, 244, 272, 244, + 244, 936, 400, 84, 376, 376, 84, 184, + 68, 184, 184, 184, 184, 376, 380, 452, + 244, 244, 244, 244, 376, 68, 68, 84, + 68, 148, 376, 148, 452, 148, 524, 148, + 136, 272, 244, 244, 52, 304, 272, 272, + 376, 244, 244, 244, 244, 304, 376, 376, + 52, 52, 8, 252, 68, 68, 148, 252, + 376, 8, 272, 604, 72, 672, 672, 72, + 672, 672, 672, 72, 68, 252, 84, 8, + 68, 68, 360, 888, 380, 380, 360, 68, + 68, 40, 380, 836, 452, 452, 372, 304, + 184, 184, 184, 184, 184, 92, 304, 68, + 736, 304, 360, 96, 68, 84, 444, 184, + 380, 184, 380, 68, 184, 184, 304, 184, + 524, 184, 672, 672, 304, 148, 380, 148, + 148, 184, 672, 672, 672, 672, 148, 1012, + 500, 848, 672, 672, 672, 184, 792, 184, + 184, 832, 832, 792, 792, 436, 436, 880, + 48, 32, 32, 48, 32, 32, 32, 32, + 444, 48, 444, 444, 32, 32, 112, 660, + 72, 464, 88, 48, 48, 48, 112, 428, + 88, 88, 832, 92, 388, 444, 660, 444, + 112, 292, 292, 292, 292, 292, 84, 832, + 112, 112, 500, 584, 640, 464, 640, 112, + 72, 500, 112, 112, 112, 48, 48, 112, + 500, 112, 500, 432, 1012, 432, 500, 112, + 500, 112, 432, 880, 880, 264, 408, 876, + 48, 48, 264, 148, 388, 148, 780, 780, + 148, 264, 264, 48, 880, 880, 388, 880, + 264, 48, 48, 48, 432, 500, 500, 264, + 388, 388, 388, 12, 264, 388, 388, 388, + 692, 776, 264, 776, 668, 428, 428, 120, + 668, 668, 316, 112, 660, 640, 724, 660, + 640, 640, 660, 392, 32, 84, 660, 640, + 640, 200, 392, 660, 84, 200, 640, 640, + 736, 200, 200, 808, 808, 316, 316, 316, + 200, 296, 660, 284, 32, 32, 660, 296, + 32, 200, 724, 724, 728, 184, 184, 184, + 184, 184, 724, 380, 724, 724, 392, 724, + 724, 200, 604, 32, 284, 32, 400, 724, + 808, 724, 724, 936, 832, 432, 752, 752, + 432, 316, 316, 316, 316, 808, 792, 432, + 752, 752, 792, 724, 724, 316, 316, 432, + 284, 284, 752, 400, 836, 792, 68, 68, + 752, 184, 184, 400, 316, 316, 316, 752, + 752, 364, 316, 364, 364, 672, 672, 672, + 672, 672, 364, 364, 436, 436, 316, 316, + 316, 364, 436, 316, 364, 112, 68, 364, + 316, 252, 316, 72, 72, 68, 252, 252, + 112, 640, 640, 316, 364, 112, 252, 32, + 32, 400, 68, 400, 316, 640, 640, 640, + 640, 432, 316, 316, 316, 316, 776, 776, + 776, 500, 316, 316, 316, 316, 112, 776, + 72, 436, 636, 792, 636, 636, 792, 752, + 752, 792, 776, 792, 808, 184, 372, 68, + 68, 292, 184, 184, 92, 440, 752, 752, + 92, 752, 752, 752, 368, 92, 292, 72, + 92, 92, 368, 368, 292, 140, 372, 72, + 72, 428, 252, 636, 636, 636, 636, 636, + 776, 252, 476, 476, 368, 368, 252, 724, + 752, 752, 752, 752, 752, 752, 72, 368, + 1020, 400, 368, 368, 400, 428, 428, 964, + 776, 32, 284, 752, 32, 32, 604, 660, + 660, 724, 724, 724, 724, 284, 752, 808, + 32, 32, 32, 400, 364, 284, 364, 364, + 88, 92, 88, 364, 92, 752, 752, 752, + 92, 600, 600, 388, 388, 388, 808, 660, + 600, 388, 400, 400, 252, 780, 776, 752, + 752, 724, 724, 724, 360, 752, 752, 360, + 360, 428, 776, 776, 360, 360, 428, 360, + 400, 72, 252, 656, 28, 736, 716, 596, + 656, 656, 716, 656, 72, 716, 656, 656, + 716, 716, 916, 716, 716, 824, 716, 796, + 824, 72, 512, 716, 716, 716, 716, 716, + 824, 824, 676, 72, 764, 360, 676, 676, + 364, 796, 824, 716, 716, 716, 716, 512, + 824, 796, 796, 796, 364, 824, 824, 252, + 716, 716, 252, 1016, 364, 968, 656, 916, + 76, 736, 656, 1012, 208, 736, 76, 656, + 656, 656, 656, 1012, 900, 512, 968, 968, + 736, 736, 736, 600, 796, 1012, 668, 656, + 656, 96, 8, 8, 96, 96, 668, 824, + 796, 364, 668, 736, 736, 668, 796, 796, + 364, 252, 796, 692, 692, 28, 656, 28, + 28, 28, 692, 252, 656, 656, 252, 8, + 76, 668, 52, 52, 668, 76, 668, 512, + 668, 824, 28, 28, 28, 28, 28, 28, + 28, 960, 596, 676, 676, 676, 692, 596, + 692, 968, 676, 968, 960, 576, 20, 576, + 292, 292, 824, 824, 824, 512, 676, 1012, + 968, 292, 28, 28, 52, 28, 28, 668, + 28, 52, 52, 668, 128, 52, 512, 968, + 512, 512, 832, 604, 968, 360, 396, 656, + 512, 656, 656, 8, 52, 52, 968, 512, + 8, 656, 936, 360, 1016, 512, 716, 716, + 716, 8, 936, 1016, 512, 512, 512, 84, + 936, 96, 512, 736, 968, 1012, 1012, 796, + 968, 796, +}; + +static long _vq_q_res0_0c[] = { + 72, 20, 820, 892, 428, 64, 372, 988, + 224, 288, 44, 60, 220, 288, 288, 812, + 812, 492, 44, 288, 288, 492, 220, 224, + 224, 224, 44, 492, 288, 492, 492, 288, + 44, 492, 440, 216, 492, 288, 812, 220, + 988, 516, 516, 988, 516, 988, 516, 524, + 288, 436, 812, 516, 492, 516, 516, 492, + 220, 1004, 492, 988, 1004, 188, 44, 172, + 516, 1008, 544, 544, 1008, 516, 1008, 788, + 44, 372, 544, 368, 16, 16, 368, 492, + 16, 492, 368, 516, 988, 1004, 412, 524, + 1004, 368, 492, 1004, 1008, 492, 544, 44, + 688, 448, 884, 4, 224, 16, 16, 288, + 224, 884, 884, 288, 884, 688, 64, 816, + 816, 64, 816, 524, 688, 1016, 16, 524, + 44, 224, 688, 688, 108, 16, 16, 108, + 1004, 16, 776, 224, 368, 220, 320, 320, + 220, 492, 524, 320, 368, 44, 320, 428, + 428, 120, 216, 12, 224, 12, 120, 224, + 120, 12, 12, 44, 224, 224, 492, 120, + 120, 440, 108, 492, 120, 120, 120, 320, + 872, 664, 880, 120, 872, 776, 368, 776, + 872, 452, 120, 872, 120, 872, 368, 384, + 776, 120, 540, 384, 776, 428, 428, 428, + 428, 92, 108, 60, 44, 368, 368, 60, + 108, 540, 44, 372, 368, 368, 92, 372, + 524, 440, 372, 16, 540, 368, 612, 1016, + 332, 16, 92, 108, 612, 612, 612, 368, + 540, 16, 428, 220, 188, 556, 988, 516, + 556, 556, 556, 384, 60, 320, 352, 996, + 812, 352, 352, 556, 216, 352, 220, 988, + 812, 540, 556, 384, 988, 996, 348, 988, + 556, 812, 384, 988, 556, 988, 812, 352, + 556, 384, 540, 540, 384, 812, 124, 124, + 812, 540, 220, 384, 412, 384, 188, 92, + 372, 368, 996, 556, 476, 372, 372, 368, + 428, 556, 556, 428, 556, 556, 372, 428, + 776, 368, 556, 384, 216, 220, 220, 216, + 384, 936, 524, 788, 988, 1004, 888, 384, + 988, 572, 572, 900, 888, 996, 888, 220, + 368, 384, 524, 452, 384, 476, 452, 1004, + 476, 452, 996, 368, 524, 384, 476, 888, + 556, 476, 572, 476, 1004, 16, 320, 428, + 524, 428, 476, 524, 788, 476, 524, 524, + 776, 384, 428, 428, 388, 776, 428, 476, + 476, 428, 116, 92, 556, 516, 288, 528, + 276, 240, 480, 480, 892, 480, 356, 276, + 892, 892, 356, 356, 276, 480, 892, 480, + 524, 892, 356, 480, 480, 892, 356, 60, + 480, 288, 508, 508, 288, 480, 288, 480, + 356, 356, 480, 332, 288, 516, 240, 44, + 172, 288, 1008, 888, 788, 1008, 516, 60, + 168, 480, 992, 516, 480, 516, 516, 240, + 480, 516, 412, 992, 516, 1008, 412, 480, + 1008, 412, 556, 44, 60, 288, 516, 788, + 288, 412, 44, 60, 288, 288, 60, 788, + 784, 812, 556, 504, 508, 352, 556, 788, + 508, 516, 328, 992, 516, 556, 788, 812, + 508, 992, 516, 516, 508, 888, 888, 680, + 612, 480, 372, 556, 44, 1008, 168, 852, + 852, 1008, 44, 516, 992, 788, 372, 852, + 852, 356, 420, 480, 276, 240, 340, 328, + 888, 340, 852, 560, 340, 276, 480, 560, + 240, 480, 852, 412, 1008, 852, 560, 412, + 1008, 852, 480, 332, 420, 480, 480, 888, + 16, 92, 372, 612, 340, 420, 528, 528, + 420, 528, 332, 340, 612, 612, 420, 612, + 612, 480, 92, 420, 372, 680, 556, 420, + 420, 372, 504, 600, 556, 504, 600, 420, + 504, 480, 420, 504, 560, 480, 556, 556, + 372, 612, 600, 612, 612, 612, 612, 276, + 612, 560, 92, 68, 68, 340, 612, 340, + 680, 276, 356, 496, 4, 288, 44, 44, + 332, 288, 816, 496, 496, 816, 496, 560, + 536, 356, 496, 412, 892, 356, 784, 892, + 536, 288, 536, 536, 16, 240, 340, 892, + 56, 276, 1020, 560, 612, 276, 612, 680, + 356, 56, 496, 496, 356, 496, 992, 496, + 524, 996, 340, 528, 608, 612, 612, 340, + 496, 276, 56, 608, 528, 560, 608, 496, + 128, 892, 128, 340, 240, 56, 128, 560, + 56, 340, 340, 528, 124, 612, 108, 496, + 44, 56, 56, 116, 116, 108, 116, 116, + 108, 560, 16, 608, 612, 684, 852, 424, + 484, 844, 816, 496, 280, 268, 844, 896, + 896, 844, 896, 412, 280, 844, 844, 484, + 268, 116, 484, 484, 484, 124, 896, 568, + 128, 268, 76, 76, 128, 608, 268, 412, + 128, 424, 484, 56, 348, 76, 348, 348, + 568, 568, 76, 424, 768, 424, 568, 568, + 424, 896, 212, 76, 424, 424, 348, 332, + 76, 268, 76, 484, 348, 484, 568, 896, + 268, 484, 820, 896, 896, 896, 820, 844, + 484, 928, 560, 608, 896, 568, 124, 820, + 568, 608, 484, 568, 520, 484, 568, 424, + 348, 484, 40, 40, 76, 124, 124, 124, + 844, 484, 484, 8, 76, 348, 108, 560, + 348, 108, 108, 540, 108, 608, 124, 124, + 608, 928, 484, 820, 124, 520, 124, 608, + 124, 108, 820, 608, 484, 560, 996, 856, + 56, 16, 240, 44, 544, 172, 1012, 608, + 560, 852, 928, 560, 560, 852, 544, 544, + 852, 360, 964, 16, 544, 608, 16, 16, + 16, 852, 300, 240, 56, 928, 300, 600, + 300, 340, 340, 240, 56, 600, 852, 56, + 520, 340, 372, 852, 16, 16, 928, 372, + 772, 108, 496, 908, 172, 484, 484, 856, + 856, 908, 484, 856, 560, 908, 908, 484, + 844, 560, 844, 484, 332, 496, 484, 496, + 560, 856, 108, 484, 540, 108, 484, 600, + 540, 544, 544, 856, 416, 996, 56, 568, + 300, 348, 600, 768, 348, 768, 560, 768, + 332, 568, 332, 348, 996, 540, 540, 996, + 484, 540, 124, 124, 540, 680, 348, 484, + 540, 484, 820, 416, 680, 540, 820, 648, + 560, 484, 600, 820, 856, 568, 568, 240, + 520, 568, 544, 568, 852, 928, 768, 852, + 856, 856, 856, 608, 240, 300, 768, 412, + 600, 768, 568, 964, 768, 300, 560, 600, + 544, 484, 540, 820, 856, 856, 544, 540, + 544, 568, 844, 964, 484, 484, 896, 964, + 908, 568, 484, 856, 908, 908, 856, 908, + 600, 896, 512, 964, 600, 896, 908, 520, + 568, 908, 568, 560, 872, 816, 864, 124, + 416, 84, 108, 64, 416, 108, 108, 108, + 64, 416, 416, 936, 540, 800, 728, 84, + 416, 124, 124, 416, 520, 728, 136, 84, + 416, 820, 800, 416, 136, 416, 820, 124, + 912, 520, 124, 520, 756, 864, 868, 688, + 804, 800, 800, 804, 804, 884, 868, 864, + 448, 448, 800, 684, 688, 728, 864, 864, + 864, 688, 728, 864, 8, 728, 688, 800, + 136, 864, 864, 800, 800, 864, 600, 448, + 868, 868, 804, 800, 136, 416, 756, 520, + 800, 76, 820, 800, 804, 360, 820, 936, + 856, 64, 280, 40, 800, 844, 844, 936, + 844, 868, 868, 844, 816, 868, 928, 868, + 800, 844, 804, 964, 868, 928, 804, 868, + 844, 868, 844, 484, 44, 416, 688, 64, + 288, 804, 804, 64, 520, 928, 416, 44, + 64, 520, 688, 64, 416, 108, 360, 108, + 900, 928, 736, 908, 416, 844, 964, 804, + 844, 484, 484, 844, 844, 520, 844, 416, + 800, 8, 520, 64, 804, 76, 416, 736, + 484, 804, 520, 208, 844, 484, 76, 484, + 820, 844, 896, 908, 736, 844, 908, 896, + 908, 8, 416, 484, 856, 908, 928, 1012, + 52, 608, 820, 484, 608, 856, 572, 856, + 484, 608, 572, 424, 904, 688, 872, 392, + 120, 840, 684, 224, 492, 912, 912, 572, + 684, 840, 756, 840, 492, 912, 572, 912, + 912, 840, 912, 332, 1004, 872, 912, 544, + 872, 492, 912, 544, 348, 840, 872, 608, + 872, 996, 912, 872, 16, 872, 124, 492, + 872, 124, 1004, 872, 1004, 996, 544, 544, + 348, 16, 872, 492, 996, 412, 572, 16, + 108, 544, 492, 416, 688, 756, 572, 572, + 688, 756, 804, 996, 756, 572, 452, 756, + 416, 912, 572, 912, 416, 684, 688, 572, + 492, 768, 452, 492, 840, 688, 348, 756, + 756, 840, 996, 452, 840, 452, 300, 688, + 492, 492, 544, 756, 572, 804, 908, 908, + 424, 544, 492, 1008, 544, 572, 768, 416, + 108, 544, 44, 688, 492, 16, 772, 544, + 572, 424, 416, 424, 416, 424, 912, 820, + 348, 820, 912, 540, 544, 572, 544, 540, + 544, 124, 108, 448, 84, 392, 664, 224, + 684, 688, 728, 452, 688, 728, 572, 684, + 772, 688, 224, 684, 688, 728, 840, 840, + 348, 688, 728, 840, 572, 728, 772, 512, + 56, 452, 728, 392, 56, 840, 84, 392, + 452, 392, 728, 684, 448, 56, 864, 448, + 728, 244, 688, 120, 772, 348, 108, 768, + 300, 392, 912, 728, 108, 332, 840, 900, + 56, 772, 840, 728, 572, 912, 964, 796, + 572, 772, 564, 332, 572, 904, 392, 840, + 452, 452, 936, 244, 572, 904, 332, 124, + 452, 124, 912, 912, 616, 828, 0, 536, + 508, 528, 128, 596, 356, 932, 28, 80, + 460, 592, 592, 460, 592, 80, 592, 932, + 592, 460, 128, 116, 356, 932, 116, 772, + 128, 932, 116, 128, 504, 276, 892, 80, + 356, 460, 528, 356, 460, 528, 528, 528, + 528, 892, 528, 56, 452, 356, 936, 996, + 572, 528, 348, 608, 528, 528, 116, 496, + 892, 128, 128, 892, 332, 540, 452, 60, + 460, 592, 36, 100, 100, 100, 80, 592, + 332, 100, 260, 732, 100, 592, 260, 468, + 468, 592, 100, 468, 592, 592, 260, 592, + 592, 592, 504, 260, 312, 80, 592, 68, + 80, 460, 592, 68, 460, 452, 68, 460, + 80, 460, 56, 332, 460, 504, 356, 60, + 460, 504, 260, 16, 508, 508, 460, 508, + 508, 540, 60, 356, 260, 80, 356, 124, + 116, 504, 356, 116, 116, 932, 744, 260, + 536, 520, 560, 348, 356, 460, 892, 124, + 536, 536, 332, 536, 348, 892, 536, 244, + 260, 460, 536, 424, 460, 356, 536, 536, + 560, 60, 288, 356, 496, 356, 496, 136, + 536, 136, 60, 536, 744, 936, 560, 136, + 508, 260, 356, 136, 1012, 76, 136, 356, + 60, 288, 520, 508, 136, 536, 356, 356, + 136, 56, 732, 260, 356, 536, 136, 900, + 332, 76, 932, 460, 592, 536, 744, 468, + 260, 732, 732, 136, 744, 468, 732, 136, + 744, 536, 536, 468, 128, 76, 460, 536, + 128, 932, 932, 956, 536, 932, 460, 732, + 128, 76, 732, 932, 116, 36, 404, 404, + 116, 404, 56, 536, 536, 116, 932, 116, + 932, 932, 180, 732, 204, 520, 932, 76, + 932, 536, 204, 732, 580, 732, 580, 580, + 404, 536, 580, 404, 772, 536, 580, 520, + 536, 932, 128, 580, 932, 772, 128, 496, + 816, 116, 404, 536, 116, 128, 404, 816, + 816, 116, 116, 536, 932, 116, 496, 816, + 496, 956, 956, 128, 116, 128, 932, 76, + 956, 932, 52, 116, 536, 816, 536, 956, + 116, 932, 536, 772, 520, 268, 504, 100, + 88, 80, 0, 136, 136, 80, 88, 0, + 100, 28, 80, 592, 80, 0, 56, 772, + 88, 80, 100, 56, 100, 772, 56, 88, + 100, 52, 100, 0, 0, 0, 88, 356, + 504, 528, 612, 528, 128, 772, 504, 128, + 244, 528, 136, 420, 88, 356, 504, 92, + 612, 92, 504, 504, 356, 612, 520, 772, + 60, 0, 88, 356, 0, 424, 56, 60, + 816, 0, 64, 108, 116, 424, 108, 116, + 608, 116, 0, 0, 64, 816, 496, 772, + 76, 816, 520, 44, 356, 60, 76, 80, + 116, 128, 520, 76, 116, 76, 208, 128, + 108, 116, 0, 772, 116, 0, 520, 76, + 772, 108, 244, 108, 356, 128, 612, 528, + 68, 348, 128, 128, 356, 128, 964, 116, + 436, 1000, 116, 108, 612, 0, 0, 612, + 880, 880, 0, 1000, 580, 952, 268, 564, + 40, 76, 212, 832, 76, 828, 828, 8, + 96, 96, 40, 76, 96, 96, 96, 76, + 8, 848, 108, 8, 1000, 1000, 96, 916, + 564, 828, 824, 96, 824, 848, 828, 824, + 828, 112, 916, 208, 76, 564, 564, 76, + 916, 564, 564, 916, 848, 832, 20, 128, + 76, 828, 1000, 128, 564, 76, 824, 824, + 900, 112, 328, 128, 788, 828, 0, 76, + 824, 20, 20, 880, 0, 8, 1000, 0, + 108, 828, 116, 116, 788, 280, 108, 40, + 76, 268, 64, 120, 844, 64, 120, 788, + 268, 828, 76, 328, 828, 864, 64, 40, + 96, 1000, 64, 848, 116, 76, 64, 848, + 76, 444, 116, 108, 848, 116, 108, 280, + 828, 816, 392, 512, 328, 828, 816, 472, + 444, 280, 828, 472, 472, 828, 472, 952, + 952, 472, 952, 120, 952, 64, 472, 816, + 1000, 112, 472, 816, 472, 880, 592, 472, + 828, 948, 580, 764, 880, 580, 956, 932, + 580, 948, 932, 580, 948, 956, 956, 948, + 956, 120, 580, 948, 120, 392, 936, 120, + 392, 828, 564, 952, 956, 952, 932, 952, + 664, 948, 396, 952, 596, 564, 828, 948, + 948, 564, 596, 948, 564, 948, 880, 1000, + 948, 952, 904, 828, 472, 116, 816, 404, + 580, 956, 904, 404, 580, 788, 904, 580, + 956, 1000, 404, 816, 788, 412, 816, 904, + 904, 116, 816, 956, 904, 788, 1000, 956, + 948, 828, 268, 116, 788, 472, 788, 472, + 488, 488, 472, 948, 360, 392, 1000, 948, + 952, 280, 816, 788, 392, 868, 956, 816, + 760, 976, 472, 956, 956, 472, 904, 848, + 816, 868, 992, 952, 956, 472, 948, 952, + 1000, 956, 952, 992, 784, 948, 952, 848, + 904, 900, 904, 784, 592, 828, 76, 116, + 128, 932, 932, 392, 784, 596, 76, 128, + 784, 328, 596, 604, 904, 1000, 564, 596, + 596, 596, 116, 36, 180, 848, 20, 20, + 932, 828, 180, 788, 120, 880, 20, 824, + 180, 676, 596, 596, 764, 676, 828, 596, + 596, 764, 824, 596, 828, 824, 828, 564, + 120, 564, 880, 112, 20, 396, 764, 120, + 824, 120, 676, 440, 20, 180, 932, 100, + 676, 592, 112, 596, 592, 440, 436, 100, + 592, 436, 932, 592, 596, 788, 596, 732, + 676, 580, 932, 880, 436, 788, 580, 764, + 436, 596, 732, 788, 732, 580, 328, 696, + 732, 0, 12, 864, 552, 860, 64, 64, + 860, 112, 884, 816, 860, 860, 884, 860, + 64, 616, 552, 24, 200, 224, 448, 448, + 200, 224, 448, 224, 440, 448, 200, 336, + 552, 112, 552, 448, 336, 552, 440, 448, + 552, 616, 552, 440, 64, 224, 940, 552, + 448, 884, 884, 884, 448, 860, 552, 884, + 552, 616, 616, 616, 68, 552, 616, 112, + 860, 884, 552, 552, 788, 532, 488, 860, + 64, 40, 96, 472, 472, 96, 472, 328, + 472, 64, 864, 120, 864, 64, 472, 860, + 860, 816, 472, 860, 872, 868, 860, 868, + 860, 120, 868, 976, 472, 488, 860, 860, + 488, 440, 872, 472, 868, 976, 816, 860, + 868, 788, 860, 1000, 0, 532, 868, 40, + 200, 64, 448, 864, 440, 64, 936, 540, + 0, 112, 64, 40, 112, 440, 72, 864, + 868, 0, 868, 860, 532, 200, 336, 120, + 540, 336, 540, 16, 448, 304, 532, 532, + 336, 448, 0, 532, 448, 532, 12, 940, + 860, 884, 900, 120, 12, 884, 448, 860, + 868, 532, 532, 532, 860, 868, 120, 12, + 532, 120, 860, 884, 12, 868, 120, 440, + 336, 532, 940, 940, 860, 940, 336, 940, + 488, 532, 940, 112, 488, 860, 108, 540, + 860, 532, 68, 264, 532, 96, 96, 472, + 488, 396, 472, 488, 12, 472, 488, 12, + 200, 532, 160, 84, 96, 96, 40, 84, + 84, 392, 532, 532, 304, 532, 84, 120, + 84, 84, 532, 864, 552, 488, 304, 532, + 336, 104, 336, 104, 104, 160, 532, 532, + 304, 200, 264, 336, 264, 304, 336, 112, + 120, 336, 108, 16, 940, 304, 336, 336, + 940, 440, 940, 540, 488, 336, 940, 396, + 532, 392, 488, 124, 488, 532, 540, 160, + 552, 124, 336, 200, 12, 12, 552, 124, + 904, 200, 552, 616, 96, 12, 64, 4, + 24, 200, 540, 200, 108, 4, 616, 616, + 616, 108, 64, 4, 760, 512, 540, 392, + 200, 12, 40, 108, 440, 120, 796, 1000, + 904, 664, 84, 848, 12, 12, 0, 616, + 160, 444, 552, 552, 392, 104, 616, 12, + 552, 904, 552, 616, 904, 616, 96, 160, + 20, 396, 20, 4, 0, 36, 392, 616, + 0, 444, 36, 20, 404, 548, 488, 860, + 976, 488, 124, 472, 488, 904, 392, 488, + 940, 940, 488, 548, 548, 940, 816, 488, + 580, 404, 548, 548, 580, 84, 816, 488, + 860, 444, 580, 488, 676, 124, 764, 20, + 396, 396, 488, 828, 488, 20, 548, 20, + 20, 488, 488, 580, 124, 580, 732, 904, + 360, 488, 84, 876, 488, 404, 4, 616, + 124, 288, 8, 860, 288, 884, 720, 404, + 360, 616, 404, 616, 816, 84, 816, 884, + 816, 616, 404, 884, 560, 548, 884, 124, + 548, 860, 904, 124, 616, 816, 124, 860, + 904, 20, 860, 36, 560, 488, 560, 860, + 616, 904, 488, 20, 412, 928, 8, 124, + 548, 616, 876, 20, 616, 84, 940, 616, + 552, 884, 336, 548, 548, 444, 0, 616, + 548, 136, 8, 940, 104, 488, 488, 488, + 548, 560, 940, 548, 940, 100, 552, 320, + 4, 12, 220, 48, 48, 12, 136, 48, + 0, 48, 8, 60, 780, 60, 352, 48, + 320, 8, 136, 428, 320, 12, 12, 388, + 320, 320, 560, 388, 0, 388, 428, 428, + 60, 428, 696, 88, 388, 352, 388, 352, + 388, 352, 88, 92, 88, 504, 504, 560, + 388, 776, 780, 352, 384, 384, 388, 352, + 504, 388, 780, 780, 720, 552, 876, 320, + 352, 748, 696, 708, 708, 748, 780, 780, + 708, 352, 748, 920, 920, 920, 352, 748, + 980, 920, 920, 980, 124, 360, 980, 124, + 540, 920, 748, 780, 8, 8, 352, 812, + 920, 920, 812, 8, 920, 76, 876, 920, + 748, 748, 980, 920, 360, 520, 68, 392, + 748, 408, 876, 780, 876, 876, 920, 552, + 876, 1020, 552, 320, 696, 552, 616, 552, + 1020, 552, 616, 1020, 552, 876, 320, 920, + 552, 552, 920, 552, 112, 508, 616, 220, + 4, 4, 60, 720, 720, 60, 720, 1020, + 288, 720, 112, 220, 60, 936, 328, 992, + 288, 560, 320, 616, 1020, 884, 920, 616, + 616, 560, 920, 328, 220, 920, 920, 812, + 1020, 112, 60, 812, 320, 352, 600, 812, + 560, 920, 812, 508, 980, 744, 720, 708, + 352, 68, 560, 352, 72, 920, 744, 980, + 744, 812, 812, 980, 920, 328, 980, 812, + 848, 832, 812, 848, 832, 744, 60, 352, + 352, 508, 812, 444, 444, 720, 744, 352, + 508, 508, 352, 444, 400, 744, 832, 980, + 552, 876, 104, 548, 100, 848, 20, 548, + 104, 548, 20, 20, 548, 876, 784, 876, + 936, 444, 784, 940, 876, 784, 548, 400, + 100, 552, 708, 696, 328, 780, 408, 780, + 708, 704, 408, 972, 748, 876, 876, 408, + 444, 876, 876, 876, 704, 708, 748, 876, + 408, 408, 964, 748, 408, 360, 408, 708, + 748, 560, 1020, 748, 876, 1020, 408, 408, + 992, 552, 408, 104, 48, 696, 992, 696, + 400, 616, 616, 704, 696, 876, 704, 552, + 1020, 964, 552, 616, 560, 876, 552, 876, + 552, 400, 552, 400, 704, 100, 100, 100, + 104, 104, 100, 708, 708, 468, 104, 100, + 708, 360, 580, 744, 468, 256, 696, 352, + 60, 88, 260, 256, 60, 88, 992, 60, + 88, 260, 60, 60, 468, 696, 256, 328, + 708, 992, 256, 100, 468, 468, 100, 784, + 400, 708, 508, 60, 744, 260, 992, 560, + 720, 744, 328, 784, 744, 468, 412, 60, + 560, 720, 744, 784, 412, 696, 468, 720, + 560, 720, 412, 328, 992, 708, 704, 720, + 708, 720, 468, 980, 980, 400, 720, 744, + 980, 1020, 468, 980, 848, 600, 744, 980, + 904, 676, 548, 720, 404, 732, 100, 120, + 100, 468, 332, 404, 404, 468, 732, 744, + 536, 104, 104, 744, 104, 500, 500, 404, + 548, 104, 468, 712, 548, 396, 548, 100, + 500, 732, 900, 264, 252, 100, 604, 604, + 468, 548, 396, 8, 440, 624, 296, 408, + 140, 344, 588, 432, 324, 292, 984, 324, + 924, 924, 984, 432, 324, 984, 984, 432, + 432, 324, 944, 324, 944, 588, 944, 944, + 500, 588, 324, 432, 944, 944, 432, 604, + 396, 96, 500, 396, 944, 972, 344, 324, + 324, 304, 104, 944, 924, 324, 344, 588, + 96, 588, 344, 736, 604, 304, 588, 252, + 304, 344, 924, 588, 588, 924, 396, 304, + 140, 344, 500, 100, 104, 304, 140, 140, + 944, 104, 388, 408, 344, 700, 256, 100, + 100, 100, 256, 344, 100, 696, 48, 344, + 408, 344, 696, 408, 100, 252, 408, 700, + 408, 564, 264, 628, 628, 408, 100, 104, + 500, 100, 104, 100, 252, 104, 100, 972, + 408, 712, 344, 944, 408, 104, 876, 104, + 264, 944, 944, 876, 944, 972, 344, 588, + 700, 780, 264, 396, 780, 396, 264, 588, + 588, 344, 408, 588, 588, 588, 408, 588, + 344, 408, 252, 628, 780, 408, 588, 304, + 96, 588, 944, 500, 408, 588, 944, 104, + 1012, 96, 632, 360, 588, 248, 584, 296, + 660, 88, 504, 604, 660, 388, 504, 504, + 504, 284, 296, 296, 48, 388, 584, 84, + 780, 584, 584, 256, 48, 88, 248, 344, + 584, 344, 48, 344, 88, 248, 140, 88, + 100, 8, 140, 140, 504, 256, 344, 100, + 140, 100, 140, 84, 344, 140, 600, 296, + 308, 464, 588, 588, 944, 588, 344, 464, + 48, 584, 464, 344, 584, 944, 588, 464, + 140, 588, 464, 20, 588, 944, 588, 944, + 140, 464, 248, 344, 192, 140, 140, 140, + 140, 308, 248, 344, 140, 344, 500, 500, + 344, 292, 464, 344, 248, 308, 924, 924, + 308, 308, 344, 500, 344, 924, 588, 252, + 916, 104, 20, 464, 344, 588, 12, 588, + 464, 344, 924, 588, 8, 632, 8, 252, + 464, 500, 140, 296, 248, 780, 660, 464, + 584, 588, 96, 584, 0, 12, 464, 584, + 588, 500, 736, 12, 84, 584, 588, 0, + 12, 308, 464, 660, 248, 296, 296, 296, + 248, 296, 72, 296, 464, 464, 308, 588, + 8, 48, 500, 232, 72, 140, 292, 72, + 600, 140, 140, 600, 500, 8, 72, 600, + 0, 136, 232, 140, 8, 72, 500, 960, + 504, 132, 272, 312, 528, 80, 88, 272, + 80, 128, 140, 128, 136, 12, 80, 528, + 128, 104, 528, 80, 136, 88, 88, 136, + 604, 612, 712, 272, 176, 312, 624, 312, + 132, 376, 272, 528, 456, 528, 528, 376, + 528, 132, 136, 132, 600, 272, 132, 600, + 272, 376, 132, 600, 632, 604, 600, 136, + 632, 132, 604, 376, 132, 632, 132, 132, + 272, 312, 132, 132, 312, 528, 132, 132, + 528, 604, 296, 528, 284, 132, 132, 504, + 504, 1016, 796, 528, 364, 132, 660, 364, + 632, 132, 632, 132, 132, 960, 600, 596, + 312, 624, 100, 140, 256, 344, 248, 308, + 960, 248, 308, 344, 960, 308, 1016, 796, + 256, 632, 960, 100, 80, 140, 100, 1016, + 192, 308, 228, 576, 624, 624, 576, 624, + 632, 308, 576, 576, 308, 232, 228, 576, + 632, 140, 576, 632, 232, 576, 140, 308, + 576, 308, 984, 248, 132, 80, 176, 936, + 1016, 312, 252, 624, 396, 576, 632, 140, + 20, 576, 256, 312, 248, 132, 296, 132, + 248, 960, 396, 576, 312, 248, 296, 308, + 308, 296, 140, 140, 308, 312, 192, 296, + 324, 132, 296, 132, 140, 308, 312, 312, + 312, 132, 72, 576, 132, 576, 960, 256, + 248, 312, 80, 632, 312, 80, 500, 312, + 960, 624, 80, 228, 312, 500, 432, 312, + 592, 104, 80, 28, 576, 624, 228, 312, + 592, 500, 624, 324, 624, 624, 624, 624, + 960, 140, 592, 228, 20, 676, 100, 100, + 432, 960, 592, 960, 960, 620, 576, 960, + 104, 140, 1016, 960, 292, 624, 960, 228, + 140, 576, 140, 104, 960, 620, 624, 624, + 576, 960, 396, 960, 620, 104, 984, 620, + 624, 324, 600, 624, 80, 132, 28, 52, + 128, 128, 52, 136, 80, 104, 132, 624, + 576, 576, 272, 576, 620, 624, 140, 964, + 324, 984, 624, 576, 132, 272, 576, 396, + 136, 620, 232, 232, 576, 600, 600, 104, + 712, 576, 104, 712, 136, 600, 620, 576, + 936, 936, 620, 132, 136, 264, 136, 984, + 140, 576, 600, 712, 264, 388, 436, 376, + 244, 284, 420, 612, 340, 456, 456, 420, + 456, 612, 528, 456, 420, 420, 456, 456, + 1012, 396, 364, 456, 420, 364, 252, 984, + 612, 372, 420, 420, 284, 372, 420, 364, + 372, 252, 984, 456, 16, 612, 340, 272, + 692, 612, 16, 452, 612, 396, 340, 456, + 264, 452, 340, 340, 456, 324, 340, 452, + 456, 456, 452, 432, 960, 244, 600, 272, + 92, 284, 380, 68, 376, 236, 376, 380, + 68, 284, 132, 296, 380, 132, 84, 380, + 284, 376, 132, 284, 296, 380, 628, 296, + 380, 628, 284, 376, 376, 500, 380, 284, + 832, 444, 612, 92, 92, 68, 612, 68, + 92, 612, 1020, 92, 612, 832, 136, 376, + 132, 444, 612, 444, 132, 136, 112, 500, + 444, 380, 72, 68, 136, 400, 0, 72, + 500, 600, 12, 12, 600, 380, 380, 600, + 132, 380, 456, 452, 612, 236, 376, 8, + 376, 452, 500, 112, 452, 400, 376, 272, + 84, 628, 456, 612, 272, 376, 376, 612, + 376, 632, 444, 628, 452, 456, 444, 452, + 376, 68, 376, 380, 888, 380, 888, 456, + 452, 68, 376, 888, 888, 376, 888, 400, + 452, 628, 452, 84, 524, 444, 888, 84, + 612, 376, 52, 272, 272, 84, 132, 136, + 380, 68, 52, 600, 376, 628, 136, 600, + 600, 376, 400, 400, 376, 600, 252, 8, + 600, 84, 612, 628, 440, 836, 888, 1020, + 72, 68, 112, 112, 72, 604, 360, 84, + 380, 888, 628, 600, 888, 600, 604, 380, + 72, 84, 836, 464, 888, 524, 452, 96, + 524, 68, 372, 92, 440, 372, 84, 92, + 928, 604, 400, 112, 440, 444, 628, 284, + 792, 440, 836, 524, 68, 380, 628, 380, + 888, 524, 380, 524, 84, 304, 524, 628, + 500, 836, 836, 68, 440, 524, 84, 1016, + 628, 880, 436, 836, 440, 792, 836, 792, + 440, 880, 848, 436, 440, 440, 524, 12, + 752, 500, 88, 584, 612, 48, 72, 0, + 880, 72, 832, 500, 464, 660, 832, 584, + 464, 584, 504, 388, 88, 428, 444, 0, + 92, 428, 880, 428, 428, 12, 388, 848, + 12, 432, 72, 464, 500, 112, 444, 628, + 464, 944, 880, 944, 584, 944, 944, 500, + 112, 880, 464, 584, 500, 72, 500, 832, + 584, 12, 880, 112, 936, 880, 880, 500, + 12, 880, 832, 584, 944, 500, 500, 944, + 388, 408, 628, 500, 780, 264, 408, 584, + 12, 944, 500, 428, 12, 944, 880, 584, + 432, 388, 500, 12, 628, 944, 12, 880, + 584, 12, 944, 944, 304, 428, 880, 776, + 432, 880, 304, 880, 264, 120, 12, 880, + 692, 628, 428, 880, 72, 836, 808, 296, + 660, 724, 724, 880, 660, 392, 808, 660, + 464, 444, 444, 464, 444, 12, 316, 808, + 604, 880, 84, 584, 584, 808, 464, 584, + 304, 836, 724, 296, 660, 284, 284, 464, + 296, 728, 284, 296, 392, 752, 792, 380, + 724, 284, 284, 836, 284, 380, 832, 836, + 792, 40, 628, 752, 464, 464, 604, 284, + 464, 808, 752, 632, 628, 628, 792, 836, + 832, 752, 792, 808, 836, 836, 808, 1020, + 792, 808, 808, 836, 464, 836, 464, 832, + 752, 836, 836, 432, 464, 436, 752, 836, + 836, 752, 792, 628, 752, 792, 440, 792, + 440, 1020, 792, 432, 628, 68, 836, 316, + 436, 440, 400, 604, 440, 112, 440, 436, + 112, 628, 440, 112, 432, 836, 440, 604, + 440, 604, 752, 316, 464, 72, 364, 432, + 464, 112, 464, 112, 632, 464, 400, 68, + 752, 832, 752, 112, 792, 436, 584, 316, + 808, 832, 808, 776, 584, 880, 880, 584, + 808, 628, 752, 436, 776, 120, 1020, 880, + 432, 880, 776, 476, 792, 436, 436, 476, + 792, 808, 792, 476, 476, 284, 476, 440, + 92, 432, 752, 372, 372, 120, 440, 372, + 428, 92, 368, 428, 428, 368, 72, 500, + 16, 440, 372, 440, 1020, 632, 440, 632, + 140, 120, 500, 752, 872, 776, 120, 476, + 476, 140, 872, 120, 872, 120, 432, 752, + 428, 792, 368, 476, 440, 120, 400, 440, + 964, 964, 428, 120, 1020, 476, 120, 632, + 476, 584, 372, 92, 752, 660, 964, 284, + 808, 808, 504, 284, 752, 752, 808, 504, + 284, 92, 504, 632, 964, 92, 400, 604, + 428, 504, 92, 1020, 504, 92, 428, 372, + 372, 632, 1020, 428, 776, 780, 504, 584, + 964, 808, 632, 604, 400, 584, 808, 428, + 584, 752, 808, 476, 632, 808, 476, 604, + 400, 504, 428, 808, 600, 964, 808, 400, + 560, 1020, 332, 432, 964, 520, 900, 960, + 620, 512, 564, 716, 400, 596, 564, 916, + 512, 796, 564, 824, 916, 916, 564, 916, + 512, 8, 916, 764, 824, 512, 596, 620, + 512, 596, 764, 632, 824, 628, 960, 824, + 964, 632, 960, 796, 824, 512, 1016, 1016, + 512, 824, 512, 1016, 604, 512, 1016, 604, + 1016, 960, 364, 960, 632, 604, 796, 564, + 512, 916, 736, 632, 736, 76, 916, 76, + 736, 512, 900, 964, 916, 900, 964, 1012, + 512, 900, 916, 632, 936, 604, 264, 564, + 900, 796, 96, 824, 824, 916, 984, 512, + 824, 984, 984, 512, 916, 364, 512, 1016, + 432, 364, 1012, 432, 364, 716, 620, 76, + 824, 656, 252, 432, 512, 52, 364, 512, + 8, 432, 512, 520, 364, 512, 252, 520, + 692, 136, 824, 140, 20, 676, 596, 960, + 620, 620, 620, 596, 960, 620, 984, 960, + 264, 984, 960, 364, 20, 620, 140, 960, + 632, 364, 960, 512, 140, 140, 960, 1016, + 364, 432, 140, 620, 136, 52, 128, 604, + 136, 128, 620, 628, 620, 136, 576, 200, + 576, 136, 20, 964, 1016, 604, 604, 716, + 620, 512, 936, 360, 520, 512, 1012, 936, + 604, 620, 620, 96, 960, 632, 512, 1016, + 936, 360, 620, 620, 1016, 936, 620, 360, + 1016, 604, 960, 964, 632, 604, 964, 604, + 716, 512, +}; + +static encode_aux _vq_aux_res0_0c = { + _vq_ptr0_res0_0c, + _vq_ptr1_res0_0c, + _vq_p_res0_0c, + _vq_q_res0_0c, + 4842, 4842 +}; + +static static_codebook _vq_book_res0_0c = { + 4, 256, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4, + _vq_quantlist_res0_0c, + _vq_lengthlist_res0_0c, + &_vq_aux_res0_0c, +}; + + +#endif diff --git a/include/vorbis/book/res0_0d.vqh b/include/vorbis/book/res0_0d.vqh new file mode 100644 index 0000000..7a92aa4 --- /dev/null +++ b/include/vorbis/book/res0_0d.vqh @@ -0,0 +1,1799 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0d_VQH_ +#define _V_res0_0d_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0d[] = { + 0, -4, 0, 0, + 0, 0, 0, 0, + 0, 0, 3, 0, + 0, 3, 0, 0, + -4, 0, 0, 0, + 0, 0, -3, 0, + 0, -3, -3, 0, + 0, 0, 0, -3, + 0, 0, 0, 3, + 2, 0, 0, 0, + 0, 3, 0, 4, + 0, 4, -4, -3, + 6, 0, 0, 0, + -4, 0, 3, 4, + 0, 4, 4, -4, + 0, 3, -5, 0, + 0, 5, -3, 0, + 3, -1, 4, -2, + 3, 3, 4, 0, + 0, 0, 3, -4, + 0, 1, 0, -6, + 0, -1, 7, 0, + 0, 0, -7, 0, + 0, -7, 0, 1, + 0, 5, 1, 0, + 0, 0, -2, -4, + 5, 0, 0, -3, + -3, 0, -3, 0, + 0, 0, 0, 7, + 3, -1, 3, -4, + 0, -4, 4, -3, + 5, -4, 3, 0, + 0, 0, 5, 5, + 0, 0, 2, 5, + 4, 0, 0, 3, + 5, 0, 5, 0, + 6, 5, 0, 0, + 5, 0, -5, 0, + 0, 5, 0, -4, + 0, 1, 4, 1, + -3, 0, -4, 4, + -2, -3, 0, 0, + 0, -3, 0, 4, + 1, -5, 4, 0, + 0, 0, -3, 4, + 3, 4, 1, 3, + -3, 0, 0, 3, + -4, -4, 0, 3, + 0, 3, 5, 0, + -3, 0, 5, 0, + 0, 0, -6, -3, + -5, 0, 3, 0, + 4, 1, 1, 0, + 4, -4, 0, 0, + -4, 0, 0, -3, + 3, -3, 0, -4, + -3, 3, 0, 0, + 3, 0, -2, 0, + 0, -5, 0, -4, + 3, 6, 1, 0, + 4, 3, -5, 0, + -2, 3, -5, 0, + 0, 2, -4, -6, + 7, 1, -2, 0, + 5, 0, -3, -4, + -3, 3, 3, 3, + -4, 0, 6, 1, + -3, -4, 5, 0, + -3, 4, 5, 0, + -3, -7, 0, 0, + -6, -6, 0, 0, + -7, 0, 0, 3, + -7, 0, 0, -5, + -4, 0, 0, -6, + 4, 2, 0, 4, + 0, -5, 4, 3, + 5, 0, 3, 5, + -5, 0, -3, -3, + -4, 5, -3, 0, + 0, -5, -3, 3, + 0, -5, 0, 6, + 0, 1, 6, -3, + -3, -3, 2, -3, + 0, 2, -4, 4, + 2, 0, -6, 3, + 0, 8, 0, 1, + 7, 0, 0, 5, + 6, 0, 0, -6, + -3, 3, -3, -3, + 4, 3, -3, -2, + 3, 0, -5, -4, + -3, 0, -4, -4, + 0, -4, -5, -3, + -2, 6, 0, -3, + 0, 5, -4, 2, + -3, -5, -4, 0, + 0, 0, 4, -2, + 3, 1, 0, -6, + 8, 0, 1, -1, + -8, 0, 0, 0, + 4, 0, 5, 4, + -3, 2, 3, -4, + 5, -3, -4, 0, + 6, -3, 0, 1, + 3, -3, 2, 3, + -5, -3, 1, 0, + -7, 0, -4, 0, + 4, 0, -3, 5, + 5, 0, -4, 3, + -5, 4, 0, -2, + 0, 4, 3, 4, + 0, 4, -3, 4, + -3, 2, -3, 4, + -4, 3, -3, 0, + -4, 0, -6, 1, + 0, -3, -5, 3, + 0, -3, 0, -6, + 3, -7, 0, 0, + 0, 7, 4, 0, + -5, 0, 3, -4, + 0, -2, 4, -5, + 3, -1, 0, 6, + 3, 3, 3, -3, + 3, 3, -2, 3, + -4, 3, 0, 4, + -3, 4, -2, 2, + -5, 5, 0, 1, + -5, 2, 0, 0, + -5, 3, 3, 0, + -3, -3, 0, -4, + -1, 5, 0, 6, + 1, -3, 4, 2, + 3, -5, -3, 0, + 0, -4, -7, 0, + 0, 0, -5, 6, + -2, 0, 4, -3, + -3, -4, -1, -2, + -5, 0, 0, 6, + -5, -3, 4, 0, + -5, -3, -4, 0, + -2, -3, 3, 4, + 4, 5, 0, -4, + -3, -1, -3, -2, + 3, -5, 0, 4, + -3, -3, -3, 3, + -3, 3, 3, -1, + -3, 3, 0, -4, + 2, 2, 0, -3, + 2, -3, -2, 2, + 0, -2, -4, -4, + 3, 5, -3, 0, + 3, 1, 4, 3, + 2, 3, 7, 0, + 0, -7, -5, 0, + 0, 7, -5, 0, + -6, -3, 0, -3, + -5, 2, 2, 3, + 0, 2, 5, 5, + 0, 5, 5, 2, + 2, 4, -3, -3, + 3, 1, -2, -4, + -4, -6, 0, -3, + -2, 5, 3, -3, + -2, -4, 3, 2, + 0, -7, -1, -2, + -3, 0, -3, -6, + 0, 1, 3, -6, + 0, 0, 6, -6, + -3, -6, 3, 0, + 6, 3, 0, 3, + 2, -3, -3, -4, + 8, -4, 0, 0, + -5, 7, 0, 0, + -3, 6, 3, 0, + 3, -2, -2, -3, + -6, -4, -1, 1, +}; + +static long _vq_lengthlist_res0_0d[] = { + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, +}; + +static long _vq_ptr0_res0_0d[] = { + -1, -2, -3, -4, -5, -6, -7, -8, + 152, 21, 14, 39, -13, 152, 158, -16, + -17, -18, -19, 3, -21, 3, 52, -24, + -25, 18, 52, 39, -29, -30, 3, -32, + -33, 3, 96, -36, -19, 1, -39, 1, + 7, -42, -43, 3, 39, 48, 39, -48, + 14, 24, -51, -52, 14, -54, 14, -56, + 14, 96, 7, -60, -61, -62, 18, 96, + -65, 122, 52, -68, -69, 85, -71, -72, + 14, -74, -13, 3, 18, -78, 152, 118, + -81, -14, -75, 78, -49, 16, 61, -88, + -89, -90, 3, -92, -69, -86, 24, -96, + -97, 24, 93, 93, -101, -102, -103, -104, + -72, 61, -107, 162, -105, 14, -108, -112, + -113, 18, 118, -110, -117, -118, -119, 3, + -121, -122, 18, 122, -125, 24, 113, -128, + 14, 14, 112, -130, -133, -134, 24, 106, + -137, -138, 38, -135, -141, -142, 38, 141, + -139, -146, -147, -148, -149, 18, 36, 52, + -153, -154, -155, -156, 36, -144, -123, 112, + 114, 36, 141, -164, -165, -166, -167, 62, + -169, 20, 25, -172, -173, -174, -175, 14, + 106, -178, 166, -180, -181, -182, 20, 97, + -185, -186, 97, 38, -189, -138, -176, 27, + -65, -191, -193, -196, -182, 78, -199, -200, + 19, 113, 166, 78, 122, -169, -203, -182, + -206, 113, -211, -54, 112, -212, -129, 27, + -215, -218, -219, -220, -221, 152, -223, -224, + 81, 21, -227, -228, -113, 61, 35, -232, + 81, -234, -235, -236, -56, -229, -239, -224, + -237, 96, -240, -244, 14, -246, 14, 166, + -249, -250, -251, -252, -253, -254, -255, -256, + 17, -258, 17, 30, -261, -9, -242, 96, + 21, -266, -267, -256, 127, -270, 81, 167, + -273, 17, 96, -276, 29, -278, -279, -280, + -281, 19, 46, -284, 166, -282, -287, 29, + 166, 124, -291, -270, -289, 29, -295, 152, + -297, -298, -299, -300, 0, -214, 4, -302, + -305, 17, -307, -308, -309, 19, 30, -34, + -303, 30, -315, -316, -317, -318, -319, -320, + 17, -322, 29, 30, 55, -326, 0, -328, + -329, 30, 126, -332, -333, 0, 19, 0, + 55, 7, -339, -340, -309, 125, 116, 116, + -345, -346, -322, 113, -349, 116, 29, -352, + -353, 23, -355, -356, 31, -358, 31, 53, + 43, 117, -363, -364, 30, 164, -347, 55, + -369, 0, 164, -372, -373, -374, 62, -376, + -377, 20, 25, -380, -381, -382, -383, -384, + -385, 19, -387, 20, 166, -388, -366, -392, + 97, -207, -301, 46, 124, -183, 124, 112, + -399, -402, -403, -404, -405, -406, -407, 26, + -409, 87, -400, 87, -413, 97, -415, -416, + 26, -410, -419, -183, -417, -420, -65, 112, + -425, -426, -409, 71, -429, -430, 29, -427, + -433, 166, -431, -436, -437, 87, 97, 116, + 55, -442, -443, -444, -445, 17, -34, 71, + -449, 1, 2, -40, -447, -454, 19, -452, + 19, -458, 1, -460, -461, -462, -463, -464, + -465, -466, -467, 17, 26, 17, -471, 98, + 35, 122, -475, -476, 26, -455, -479, 29, + 29, 98, 26, 98, -485, 26, 46, 29, + 147, 81, 19, -492, -493, -494, -495, -496, + -497, 62, 40, 62, -501, 170, 90, -504, + 25, -506, 165, 116, -509, 102, -511, -512, + 170, -514, -515, 64, 170, -518, 90, -498, + 112, -522, 117, -520, -525, -526, -527, -528, + 26, -530, 26, 171, -533, -534, 26, -523, + 171, -538, 98, 31, -541, 171, -543, 12, + -545, 26, 53, -548, -549, -550, 6, -552, + 62, -504, 71, -554, -557, 153, -559, -560, + -561, 164, 92, 92, -565, -566, -563, -555, + -569, -570, 170, 149, -573, 116, -575, 6, + -577, -578, -579, 22, -581, 92, -583, 92, + -502, -567, 50, -588, 25, -590, -591, 22, + -593, 5, -595, 5, 4, -598, -599, -600, + 90, -583, 27, 170, 64, -602, -607, 153, + -609, -610, -611, -612, 92, 102, -615, -516, + 71, -618, 102, 132, -562, -616, 132, 102, + -625, -626, -627, -628, -629, -369, -621, -630, + -633, -370, -631, -634, 40, 170, 13, -618, + -638, -619, 28, 6, -645, -646, -647, 0, + -369, 46, 10, -652, 0, -654, -655, 117, + -650, -658, -361, -656, 132, -662, -663, 0, + -665, -546, -659, 55, 53, -670, -671, -672, + -673, -504, -666, 6, 6, -678, -679, 5, + -396, 6, -681, 10, -685, 174, 7, -688, + -689, 0, -75, -692, -693, -694, -695, -696, + 3, 11, 16, 11, 15, -702, -703, -704, + 60, 154, 85, -708, 159, 89, -711, -712, + -713, -714, -715, 154, 16, -718, 15, -690, + -721, 11, 15, -724, -725, 154, -708, -719, + -729, 15, 16, -705, 124, -734, -735, -736, + -737, -738, 3, -721, 130, 3, 159, -744, + -745, 16, 28, 85, -749, -707, -394, -746, + -751, -754, -755, -709, 10, -758, 36, -760, + -758, -756, -161, 124, -765, -766, 3, 112, + 147, 24, -771, 85, -156, -767, 150, -776, + -777, -778, -779, -780, -781, -782, 11, 10, + 62, 20, -787, -788, 11, 90, -791, 62, + -783, -792, -795, -796, -797, -798, 64, 89, + -793, -802, -803, 62, -805, -806, -807, -808, + 159, 125, -811, 89, 111, -814, -815, 160, + 89, -812, -819, -820, -497, -783, -823, -824, + 160, 25, 25, -821, -829, -830, 62, -832, + -833, -834, -835, -836, -837, 3, 57, 5, + -841, 11, -843, -782, -827, -808, -844, -848, + -849, -850, 160, -852, 25, 40, 160, -856, + -857, -858, 3, -839, 83, 7, -863, -33, + -860, -864, -21, -865, -867, -870, -871, -872, + -873, 60, -700, -853, 22, -878, 22, -789, + -520, 5, -883, -884, -885, -886, 60, 90, + 89, 112, -891, 60, 89, -894, -704, 28, + -895, -729, -896, -898, -901, -902, -903, -904, + 159, -899, -907, 160, -909, -907, -905, -910, + -852, 83, -915, 90, -913, -918, -919, -920, + 11, 15, 15, -924, -788, 61, -925, -928, + 25, -926, -931, -932, -933, -934, -935, -936, + -937, -938, 12, -940, 63, 64, 63, -929, + 26, -946, -947, -948, -949, -950, 12, 16, + -953, 26, -75, -471, 16, -956, -959, -960, + 63, 98, -963, 26, 94, -966, -468, -956, + -197, 98, -971, -972, -973, -974, -975, 64, + -968, -978, -979, -980, -854, 78, -981, -2912, + -982, 85, -987, -416, 154, -988, 166, -989, + -991, -994, -995, 26, 61, -998, 87, -996, + -1001, 64, -995, -956, 64, -1006, -1007, 89, + -995, 78, -1011, 36, 61, -987, -1440, -1012, + -1015, -1016, -1019, -1020, 160, -1017, -119, -1021, + -22, -1023, -1025, 3, -850, 127, -709, 54, + 77, -1034, -1035, -886, -1032, -1038, 63, 89, + -1041, -704, -1036, 109, 99, 77, -1047, -1048, + -1049, -515, -1045, -1050, -1053, -1054, -1055, 64, + 99, 72, -1055, -1057, 37, -907, -1059, -1064, + 160, -1062, -1067, -1068, -1069, -1070, -1071, -1072, + -1073, -1074, 3, 85, -1077, -1078, 158, 39, + -1081, 24, 110, -1084, -1085, 158, 18, 45, + -1089, -1090, -1091, 158, -1093, 24, -1095, 85, + 110, -1098, -1075, 106, 24, 99, 24, 118, + -1105, -1106, 157, -1108, -1109, -1110, 152, 158, + -1113, -1114, 157, 110, -1111, -1101, 4, -1120, + -1121, -1122, 158, -1124, -13, -1118, -14, -1125, + -1101, -1130, -1110, 77, 39, -1134, 18, -1131, + -1082, -1135, -1043, -1137, 71, -1142, 21, -1144, + 157, 32, -1147, -1148, -1149, -1150, -1151, 3, + -1153, -1154, 10, -1140, -1155, -1158, -1159, -783, + 27, 110, -1163, 85, -1160, -1163, -1164, 45, + -1169, 3, -1166, -1172, -1173, -1174, -1175, -1176, + -650, 27, 39, 28, -1181, 33, 78, -1184, + -1185, -1186, -1187, -1144, -925, -1188, -1191, 33, + -1189, -1145, 88, 27, 32, 28, 28, -1200, + -1201, -1202, -1203, 74, -1205, 74, 76, 45, + -1209, -1210, 157, -1114, 88, 33, 61, -1216, + -1217, -1218, 169, -1220, -1221, 12, -1214, -3041, + -1222, -1224, -1227, 169, -1229, -149, 114, 36, + 91, -471, -1232, 35, -1237, 3, -1239, -149, + -1032, -1240, -1243, -156, -1241, 27, -1247, -1248, + -1249, -1110, -1245, -1252, -1253, -1134, 106, 52, + -1177, -1207, 77, -1258, 152, 100, -1263, 35, + -1259, 39, 1, -1268, -1269, 74, 76, 86, + -1273, -1274, -1275, -1205, -1264, -1276, -1279, 169, + -1277, -1279, 114, 91, -1285, 34, -1283, -1288, + -1289, -1290, -1291, -1292, -886, 22, -1293, 61, + -1297, -942, -1295, -1298, -1299, -1302, -1303, 169, + 36, -704, -1300, 123, -1309, -1310, 3, -1312, + -1313, -1314, -1315, -700, 165, -1318, 83, 5, + -1321, -1322, 60, -1324, 15, 94, -1327, -1328, + -873, 165, -1331, 15, 84, 84, 83, -1336, + -1337, -1338, -1339, 3, 45, -1342, 10, -1212, + -1345, 3, 62, -1348, 15, -988, -1346, -698, + -1350, -985, 25, -1163, -1354, -1356, -1359, -718, + 20, 85, -2194, 62, -1363, -1366, -1367, -1368, + -1369, -950, -1364, -1372, -1373, 34, -1375, -1376, + 63, -1378, -1379, -1380, -1381, -1382, 74, 45, + -1227, 165, 45, -1385, -1389, -1227, 54, 77, + 73, -1394, -21, -1392, 123, -1398, 45, -1395, + -1399, -1402, -1403, -1404, -1405, 60, 37, -1038, + 91, -1376, -1391, 108, -1333, 77, -1415, 107, + 74, -1413, 63, -839, -1417, 123, 9, -1424, + -1425, -1426, 5, -1428, 28, 10, -1431, -1334, + -1420, 44, -895, -1391, -1057, -1438, -783, -1436, + 109, -1198, 109, 88, -1445, -1446, -1447, -1448, + -1431, -1362, -1443, -1258, -1453, 107, -1451, -1456, + -1457, 84, -1454, 72, 111, -1462, 74, 107, + 44, 28, -1467, -1468, -1469, -1470, 3, -1472, + -1473, -1474, -783, -1459, -1475, -1478, 74, 74, + -1481, 74, -1182, -1484, 5, -1470, -86, -1486, + -1489, 34, 123, 8, -1493, -1494, 74, -1496, + 28, -1258, -1499, 74, 86, -1502, -1503, -1504, + -1505, -1506, -1507, -1508, -1509, -1510, -1511, -1512, + -1513, 12, 88, 12, -1517, 63, -1346, -1517, + 62, 98, -1523, -1524, 12, -1526, 34, 63, + -788, -1530, -1531, -1532, -1533, -1534, -1535, 12, + -1528, 86, -1539, 63, -1541, 86, 103, -1222, + -1545, 86, -1547, 103, -1549, -1550, 76, -1545, + -1543, 34, -1555, -1556, 76, -1558, 31, 103, + -1561, 86, -1563, 103, 53, -1566, -1567, 98, + -1569, -1570, 103, -1572, -1573, 31, -1547, -1552, + -1575, -1578, -1579, -1580, -1581, 35, -1576, 98, + -1489, 56, 7, -1588, -1589, -1590, -1206, -1586, + -1593, 100, -1390, -1596, -1285, -1594, -1619, -75, + -1599, -1602, -1603, -1604, -1605, -1606, 12, -1573, + 88, -1608, -1611, -1612, 17, -1614, 12, 27, + -1617, -1618, 12, 162, -1615, 27, -1623, 35, + -75, -1583, -1624, 31, -1629, -1630, -1631, -1206, + -86, 27, -1635, -1636, -1637, 34, -1639, 103, + -1641, -1642, -1547, 61, 53, 53, 104, -1643, + -1649, -1650, -1651, -1652, 76, 34, -1655, -1500, + -1647, 107, -1653, -75, 88, -1662, -1663, -1664, + -1637, 61, 121, -1668, 107, -1665, -1669, 108, + -1673, 103, -1670, 143, -1677, -1678, 34, -1680, + 34, 38, -1465, 93, 44, -1686, -1687, -1688, + -1689, -1690, -1691, -1692, -1612, -1683, 20, -22, + 3, -1696, -1699, 131, -1701, -1702, -689, -1697, + -1705, 43, -1707, 21, -1709, 75, -9, 88, + -1711, -1714, -1715, -1716, -1717, -1718, -1719, 75, + 93, -326, 88, -1724, 23, 43, -1727, 104, + -1722, -1730, -1731, -1573, 78, -1734, 43, -1736, + -1737, 104, -1732, 104, -1741, -1573, -1738, -1742, + -1734, 16, -1747, 75, -1723, -1392, -1745, 78, + 117, -1754, -326, -1751, 23, -1758, 163, -1760, + -1646, -1755, -1752, 88, 11, -1766, -1767, 104, + 148, -1770, -689, -1764, -1771, -668, 154, -1774, + 0, 42, -1779, 76, 31, -1559, 154, -1784, + -1785, -221, -1632, 21, -1627, -1786, -1791, -1792, + 31, -1794, -1795, -1593, -1789, -1796, 88, -1800, + -1801, -1802, -1803, -1804, -1805, -1806, -1206, -1798, + -1807, 32, -1811, 100, -1808, -1814, 32, -1812, + 76, 33, -1819, 33, 104, -1822, -1823, -1824, + -1825, 21, 32, -1828, 100, -1815, -1831, -1832, + -1833, 21, -1829, 128, -1837, -1826, -268, -1132, + 128, 131, -1213, -1840, -1843, -1846, -1847, -1848, + -1849, -27, 51, 145, -22, 4, -1855, -1737, + -1853, -1699, -1856, -1860, -1181, 126, 131, -1864, + 42, -1861, -1867, 0, -1869, -1870, -1871, 0, + -1266, -1865, 2, -1874, 156, -1878, -1879, -1496, + -1876, 121, -1883, 42, -1885, -1886, -1887, -1888, + -1889, -1213, -1880, 8, -1678, 4, -1678, 99, + -1895, -1820, 71, -1898, 8, 9, -1903, -1904, + -1678, -1899, 121, -1905, -1820, -1907, 42, -1864, + 99, -1914, -1678, 71, 148, -1915, -1919, -1920, + -1921, -1922, 75, 99, -1925, -1926, -1927, -1928, + 80, -1930, 104, -1817, -1923, -1934, -1935, 28, + 33, 156, -1939, -1940, -1941, 104, 121, -1944, + -1777, -1937, -1945, -1666, 49, -1950, -1951, -1952, + 0, 42, -1955, -1719, 66, -1956, 66, 28, + -1961, 21, -1963, -1964, -1965, 75, 42, 33, + -1969, 32, -1958, -1972, -1973, -1969, 128, 131, + -1937, -1978, -1979, 33, -1976, -1953, 156, -1967, + 13, 42, -1987, -1988, -1989, -1990, -607, -1984, + 117, -1994, -1724, -1991, 164, 164, -1999, 171, + -2001, -2002, -2003, 0, 23, -652, -1995, 101, + -2006, -2008, -663, 124, -2013, -1563, 125, -2016, + -2017, 132, 124, -2018, -2021, -2022, -2023, -942, + -2019, -1898, -2027, 102, 63, 102, -2031, -1606, + 124, -2034, -2035, -613, -2032, -2038, 102, 156, + 73, -2039, -2041, -2044, -2045, -2046, -2047, 102, + -2042, -1639, -2048, -554, -2053, 53, 148, 108, + 13, -2058, -2059, -2060, -2061, -2062, -2063, -2064, + 153, 79, -2067, 115, 133, -2070, -2071, 79, + -2056, -2074, -2075, -2076, 0, 156, -2056, -2078, + -2081, -2082, -2083, -2084, -2085, -2086, 84, 115, + 108, -1668, -2079, -2090, -2093, -839, 4, -2096, + 84, 44, -1415, -2094, -2099, -2102, -2103, 6, + -2105, -2106, -2107, 84, -2109, -2110, -2086, 173, + -2113, -2027, 126, 172, 108, -2115, -2119, -2096, + 109, -2120, -1060, -2121, -1861, -2126, -2127, -591, + 109, -623, -2128, 37, -2133, 102, -2130, -839, + -347, 6, -2139, -2140, -2141, -623, 78, 132, + -2145, 115, -2147, -591, -2142, 78, -2040, -1720, + -2151, -2154, -2155, -2156, 102, -2017, -2152, 127, + -839, 119, -2137, -2161, 99, -2166, -2167, -2168, + -2169, -2170, -2171, 153, 72, -2174, -647, -2172, + -2175, -2178, -2076, 127, 79, 79, 109, -2184, + -2185, -2186, -2187, -2188, 0, -2182, -2191, -2192, + 79, -1923, 101, -2193, -2195, -2198, -1867, -1057, + 23, -2199, -2203, -2204, -2205, 80, 42, -2004, + -2201, -2208, -689, -2209, -1668, 2, -2215, -2216, + -1777, 39, -2217, 39, 66, -2222, -2223, -895, + -2220, -2226, -2227, -1668, -2224, 121, -2231, -2232, + -2233, 84, 107, -1456, -2194, 48, 68, -2240, + 115, -2238, 115, -2217, 148, 157, -2247, -2248, + -2249, -2250, -2087, -2245, 49, 44, -2255, -2256, + 5, -1840, -2253, -2238, 5, -2259, -2263, -2264, + -2265, 5, 128, -2220, 8, 44, -2267, -2272, + -2273, -2274, -2275, -2276, -2277, -2278, -2279, -2280, + -2281, -2282, 73, 20, 19, -2220, 166, 101, + -2289, -309, 65, 135, -2293, 73, 54, 166, + -2297, 81, 167, -2300, -2301, -2302, -2303, -2304, + 73, -2306, 73, 116, -2309, 73, -2290, -2312, + 167, -2314, 19, 120, -2317, -2318, -2319, 82, + 30, -2322, -2323, -2324, 82, 119, -2310, -2328, + -2329, -2330, 82, 4, 41, -2334, -2335, -2336, + 4, 135, 135, -2340, -2341, 96, -2236, -2326, + 156, -2346, -2347, -2348, -2349, -2350, -2351, 67, + -2344, -2324, -2352, 128, -2330, -1861, 168, -2360, + -2220, 65, -2363, -2364, -2351, 156, 49, -2365, + -2369, -2370, -2324, -2367, 1, -2374, -2375, 49, + 135, -2378, 119, 51, -2381, -2382, 66, 67, + -2385, -2386, -2387, -2388, 67, 3, -2389, -2392, + 81, 21, -2395, 21, -2397, -263, -2390, -2398, + -2401, 49, -2403, -2404, 67, 163, 41, -2399, + -2409, -2332, 173, -2401, -2410, 51, -2415, -2416, + 105, -2412, 41, -2420, -2421, -2422, -2423, -2424, + -2425, -1354, 172, -2428, -506, 109, 129, -507, + -2429, 93, -2435, -1520, -2433, -2438, -2439, -2440, + 25, -2436, -2441, -2442, -2445, -504, 118, 142, + 7, -2450, 92, 136, -2453, -2454, -2455, 129, + 85, -2456, -2459, 116, -2461, -2462, -2463, 155, + 72, -2466, 155, 129, -2469, -2306, -2457, 165, + 77, -2470, -2475, -2476, -2477, 77, -2473, 93, + -2481, -2482, -2483, 155, 172, 155, -2487, 129, + 136, -2490, -2491, -2492, 155, -2494, -2495, 77, + 106, -2498, -2499, -2500, -2501, -2502, -591, 24, + -2505, 27, -2503, -2506, -2509, -579, 85, 114, + -2513, 95, 133, 139, -1283, -2149, -881, -747, + -2521, 27, 5, -2524, -2525, -2526, -583, -2519, + -2529, -583, 125, -2530, -2533, -2534, 91, 85, + -586, -2535, -75, -2540, -2541, 155, -2543, -2544, + 95, 139, -2488, 85, -2547, -2550, -2551, -2552, + -2553, -2554, -2555, -2556, -2557, -2558, -2541, -2548, + 129, -2562, 161, -2559, 105, 161, -2567, 82, + 82, -2503, 82, 119, -2573, -2574, 69, -2576, + 70, 24, 70, -2580, -2581, 161, -2577, -2584, + -2585, -2586, 82, -2361, -2589, 168, -2587, -2389, + -2593, -2594, -2595, -2596, 155, 99, -2599, 155, + -2591, -2602, -2603, 155, 105, -2492, 65, -2608, + 136, 139, -2611, 71, -2606, -2614, 106, 68, + -2617, -2618, 4, -2496, -2615, -2622, -2623, 4, + -2625, 99, 158, -2724, -2626, -2628, -2631, 155, + 105, -2634, -2635, -2636, -573, -2629, -2639, -2640, + 161, 110, -2319, 158, 24, 82, -2647, 41, + -2649, 129, 65, -2652, -2653, -2654, 69, 95, + -2657, 161, -2659, 82, -2661, -2662, -2663, 0, + 41, -2666, -2640, -2650, -2667, -2670, -2671, -2672, + 164, 95, -2675, 92, -2456, -2676, -2679, -2680, + -2681, -2682, -2683, -2684, -2685, 27, 5, -593, + -2677, 4, -2691, 4, -2693, -2694, 41, -2696, + 41, -2688, -2699, -2700, 41, -2647, -2697, -2704, + 136, -2706, -2707, -2708, -2709, -2675, 33, -2673, + 65, 6, 92, -2712, 156, -2718, -2719, 4, + -2721, 41, -2716, -2607, -3100, -2722, -2725, 126, + -2729, -2730, -2731, -2732, -2733, 67, -1965, -809, + 163, -2738, -2739, -2740, -2741, 163, 105, 105, + 168, -2746, -2747, 67, -763, -2750, 163, -2752, + 0, -2754, 69, 23, 163, -2758, -2741, -2748, + -2761, -2762, -2763, -2764, 69, -783, 168, -2768, + -2769, 70, -2765, -2772, 168, -1163, -2775, -2776, + -2777, 66, -2773, 67, -2778, -2782, -2783, -2784, + 67, 163, -2787, -2788, -2789, -2790, 163, -2792, + -2793, 13, 72, 65, 65, -2798, -2799, -2800, + -2801, 13, -2796, -2220, -1159, -27, -2804, -2806, + -2807, -2810, -2811, 13, -2808, -1145, 157, -2816, + -2817, -2818, -2819, 163, 157, 46, -2823, -2824, + 41, 66, -2827, -1864, -2825, 65, -2829, -2710, + -2830, -2834, 39, -2832, -2837, -649, -2835, -2838, + -1266, 157, -2843, -2844, -2845, 28, -746, 80, + 13, -2850, 28, -2852, -2853, 80, -2848, -2856, + -2857, -1496, -2854, 13, -2794, -2859, -2800, -2864, + 42, -2862, -2867, -2868, -2869, -2870, -2871, -2801, + -2865, -1956, -2872, -2876, -2220, -2874, 163, -2877, + -2881, -2882, -2741, 96, -2885, 13, 47, -2885, + 2, 48, -2891, -2892, -2893, 13, -2895, -2896, + 13, -2219, -2860, -2897, 51, -2902, 13, 71, + -2905, -2906, 46, 68, -2220, -2910, -2736, -2908, + 81, 68, -2915, 71, -596, -2913, 41, 46, + -2921, -2604, 152, 47, 41, -2926, -2853, -2922, + -2886, -2927, 137, -2932, -555, -2898, 51, -2934, + -2937, -2938, 46, 47, -2571, 71, -2943, -2944, + -2945, -2946, -2947, -557, -2940, -2950, -2951, -2754, + 4, 0, 69, 135, -2957, -2958, 69, 23, + -2961, 79, -2963, 80, -2955, -2966, -2967, -2968, + 0, 95, 95, -2972, -2973, -2065, -2298, 95, + -2977, -2978, 153, 95, -2981, -2982, -2983, -2984, + -2985, 69, -2325, -2673, -2297, -2988, -2991, 70, + -2989, 70, -2382, -2996, -2969, -2994, -2609, -2997, + -3001, -3002, 95, 175, -2939, 173, -75, -3008, + -3009, -2970, 24, -3002, 162, 115, 115, -3012, + 139, -3018, -3019, 27, 41, 27, 46, 6, + -3025, -3026, -3027, 80, -3015, -3030, 42, 79, + -2933, -3028, -1974, -3036, -3037, -3038, -3039, -2509, + 101, 68, -3041, 115, -3045, 22, 114, -3042, + -3049, -3050, -3051, 114, -3047, -3054, -3055, -3056, + -3057, 27, 5, -3060, 40, 114, 40, -3064, + 27, -1440, 145, -3068, -3069, -1434, 166, 119, + 101, -3072, -3075, -853, 119, -3076, -1684, -3077, + -3079, -3082, 134, 115, 40, 42, 46, -3084, + -3080, 137, -3091, -3092, -3064, -1683, 46, 162, + -1140, -3095, -3016, -3097, -3099, -3102, -3103, -3104, + -3105, -3106, -3107, -3108, 73, -3110, 73, +}; + +static long _vq_ptr1_res0_0d[] = { + -2271, -1066, -491, -248, -163, -67, -15, -10, + -9, 2, -11, -12, -14, 48, 48, -50, + -28, -23, -20, 2, -22, 9, 9, -27, + -26, 2, 2, 2, -41, -31, 14, -35, + -34, 7, 7, -38, 7, 56, -40, 2, + 2, -46, -44, 39, -45, 2, -47, -49, + 48, 48, -59, -53, 38, -55, 122, -57, + 96, -58, 147, -64, 35, 48, -63, 122, + -66, 147, 147, -87, -70, 118, -73, 118, + 24, -77, -76, 56, 48, -80, -79, 48, + -84, -79, -37, -82, -79, 113, 113, -145, + -100, -91, 38, -95, -94, -85, 118, -99, + -98, 38, 38, 118, -116, -111, -109, -106, + 38, 78, -97, 38, -93, -94, 93, -94, + -114, 122, 122, -83, -127, -120, 18, 147, + -124, -123, 59, 59, -123, 59, 114, -132, + -124, 101, 114, -126, -136, -123, 147, 114, + -140, -65, 147, 113, -138, -143, 59, 59, + -131, -152, -150, 35, 118, 52, -151, 59, + -162, -161, -158, -143, 59, 127, -143, 40, + -159, 52, 147, -217, -210, -171, -168, 38, + -170, 38, 38, -195, -179, -177, -65, 147, + 40, 122, 147, -184, 166, -183, 147, 147, + -188, -187, 141, 141, -192, -162, -160, 106, + -162, -190, -157, -204, -198, 125, -202, -65, + 147, 56, -65, 56, -205, -207, -201, -58, + -197, 125, -38, -63, 125, -209, -983, -209, + -213, -233, -226, -222, 21, 35, -225, 96, + 48, 96, -231, 96, -230, 27, 122, 96, + 122, -245, -243, -238, 122, 112, -63, -241, + -216, 48, -208, 122, 166, -247, 167, 167, + -371, -351, -296, -294, -275, -265, -260, -257, + 21, -259, 43, 43, -264, -263, -194, 2, + 30, -272, -271, -269, 56, 21, 167, 120, + -274, 120, 120, -277, 30, -290, -286, -283, + -271, 120, 56, -271, 120, -268, -288, 120, + -271, 56, 120, -293, -285, 167, 35, 81, + -314, -304, -38, 7, 2, -990, 56, -268, + -306, 7, -313, -311, -310, 7, 7, 30, + -292, 2, -338, -331, -325, -324, -321, 30, + 55, -323, 55, 55, 58, -327, 43, 43, + -324, 58, 127, -335, 7, -334, 30, -336, + -337, 58, -344, -343, -342, 127, 7, 120, + -350, -348, 120, 127, 120, 55, 7, -362, + -354, 164, -360, -357, 117, -359, 55, 55, + -361, 53, -367, -322, -365, 43, -341, -368, + -370, 58, 58, -441, -401, -379, -375, 97, + -378, 116, 116, 167, -342, -393, -389, -386, + 166, 97, -388, 97, 97, -391, -330, 147, + 122, -397, -1223, 127, 125, -58, 46, 46, + -398, -424, -412, -411, -392, -408, 55, 97, + 55, 97, -396, 98, -414, 7, -418, -65, + 147, -395, -422, -162, -390, -312, 141, 124, + -435, 7, -428, 124, -432, -392, 122, -423, + -392, 122, 46, -439, -438, 55, 55, -440, + 7, -459, -453, -446, 9, 2, -448, 99, + -451, -450, 9, 9, 4, -456, -322, -434, + -457, 9, 7, -489, -484, -482, -474, -470, + 122, -469, -468, 98, 98, 52, -472, 52, + -473, 52, -480, -478, -473, -421, 122, 52, + -481, 122, -483, 31, -487, -22, 137, -488, + 9, -490, 122, -691, -547, -508, -500, -499, + -387, 97, 137, 25, -503, -502, 149, -505, + 149, -507, 149, 149, -521, -510, -437, -513, + 55, -517, -516, 174, 174, -516, 174, -486, + 137, -524, -324, 46, -540, -537, -532, -529, + 31, -531, 53, 53, -536, -437, 55, -519, + 55, -539, 171, 171, -542, 174, -544, 53, + -546, 174, 174, -624, -576, -556, -551, -553, + 149, -507, 137, -486, -558, 164, -564, -563, + -562, 6, 6, 58, -574, -568, 149, -519, + -572, -571, 58, 58, 149, 58, 149, 58, + -597, -587, -580, 133, -582, 133, -584, 149, + -586, -535, 149, -589, 5, -592, 50, 6, + -594, 6, -586, 149, 46, -606, -604, -601, + 92, -603, 46, 149, -518, -596, -608, 132, + -623, -620, -614, -613, 132, 132, -617, 132, + 46, -619, 174, 174, -622, -605, 6, 133, + -669, -644, -639, -637, -632, -575, -585, -477, + -570, -575, -262, -115, 46, -622, -636, -641, + 137, -643, -640, 174, -657, -651, -648, 164, + -324, 8, 8, -653, 117, -359, 55, 58, + -649, -661, -660, 28, 53, -664, 9, 53, + -668, -667, -398, 174, 9, -687, -682, -677, + -676, -675, -642, 149, 7, -681, -458, 7, + 56, 1, -684, 56, -686, 9, 9, -571, + 6, 9, -683, -775, -748, -733, -701, -699, + -697, -698, 85, -700, 5, -710, -706, -705, + 150, 150, -707, -709, 150, 150, -731, -723, + -720, -717, -716, 94, 94, -716, 94, -680, + -722, 16, 16, -726, 159, 16, -728, -674, + -730, 150, 150, 85, 137, -743, 62, -741, + -739, 38, 16, 38, -732, -742, 38, -747, + -98, 38, 137, 93, -759, -753, -2627, -740, + 112, 147, -757, 141, 124, 141, 150, -769, + -762, 125, -764, 130, -768, -151, 59, 130, + 59, -770, -772, 59, -774, -763, 59, -930, + -831, -794, -786, -784, 25, -138, 147, 130, + -785, 25, -790, -789, 50, 50, -789, -586, + -763, -773, -828, -801, -409, -799, 90, 90, + -761, -818, -804, 159, -186, -813, -810, -162, + 147, 130, -162, 147, 130, -816, 147, 141, + 141, -809, -799, -822, 90, 125, -826, -825, + 97, 97, 90, -817, 38, 97, 20, -869, + -847, -842, -840, -839, -838, 150, 150, 57, + 5, 25, -845, 25, -800, 89, -752, -855, + -854, -851, 57, -839, 57, 134, 147, -862, + -859, 147, 57, -861, 40, 57, -866, -458, + -159, -853, -488, 125, 5, -900, -882, -877, + -874, 22, -876, 137, 5, -879, 90, -881, + -875, 50, -893, -890, -888, -887, 37, 37, + -887, 134, -892, 57, 57, -897, -838, 134, + -889, -838, -880, -732, -917, -908, -906, -799, + 90, -868, 89, 90, -912, -826, -846, -727, + -914, 114, -839, 57, 112, -923, -922, -921, + 159, 159, 50, -927, -881, 114, -130, -881, + 50, -916, -1033, -1018, -970, -945, -944, -515, + -942, -939, 63, -941, 26, 26, 57, -212, + 87, -965, -958, -955, -952, -471, 52, 56, + -471, 52, -951, -161, 125, -954, -962, -961, + 36, 36, -961, 36, 125, -969, -411, -964, + -964, 141, -1005, -1002, -1000, -977, -944, 87, + -967, -993, -986, -419, -162, 85, -698, -3072, + -976, 94, -419, -162, 85, -698, 101, -985, + -984, -997, -186, 141, 125, -186, 141, -964, + 57, 160, -1004, -999, 89, -1013, -1008, 36, + -1010, 16, -162, 147, 16, -66, -1390, -1009, + -1003, -992, -1027, -1022, -686, -957, -1024, -943, + -488, -911, -635, -1028, -1030, 54, -838, 142, + 142, -1046, -1040, -1037, -1031, -1039, 37, 37, + -1030, 57, -1029, 119, 106, 106, -1063, -1061, + -1052, -618, -1044, 54, -1058, -518, -915, 57, + 54, 54, -1060, -1056, 57, 57, -1051, -839, + 89, -1042, -1501, -1287, -1215, -1146, -1104, -1083, + -1076, 39, -1075, 24, -1080, -1079, 24, 48, + -1082, 39, 39, -1088, -1086, 18, -1087, 59, + -1097, -1092, 24, 45, -1094, 45, -1096, 45, + 45, -1102, -1100, 127, -1087, 127, -1103, 59, + -1141, -1107, 100, -1119, -1112, -1111, 151, 151, + -1116, -1115, 151, 151, -1115, -1099, 127, -1136, + -1129, -1123, 39, -1126, 18, 106, -76, -1117, + 106, -1133, -1132, 127, 151, -1132, 151, 106, + -1133, -1128, 54, -1127, 106, -1143, 39, -1145, + 39, 39, -1171, -1168, -1157, -1152, 45, 10, + -1095, -1075, 24, 4, -1139, -1165, -1162, -1161, + 127, 130, -1161, 130, 106, -1167, -1156, 130, + 1, -1082, -1065, -1199, -1183, -1179, 74, 130, + -1178, 113, 8, -1180, -1178, 8, 113, -1198, + -1196, -1193, -1190, -1082, -126, -1182, -1082, 39, + -1177, -1191, 56, -1194, -1197, 33, 130, 32, + -1208, -1207, -1204, 33, -1206, 151, 151, 151, + -1207, -1211, 110, -1213, 91, 151, 91, -1246, + -1236, -1226, -1219, -959, -961, 36, -1212, -1598, + -1195, -1192, -1228, 52, -1233, -1231, 142, -471, + 142, -1235, -1230, 52, -1238, 52, -1242, -161, + 114, -1234, 52, -1087, -135, 114, -1267, -1265, + -1260, -1251, -126, -1257, -1132, -1255, 113, 151, + -1254, -1255, 113, -1254, -1261, -1262, -1255, 151, + -1256, -1266, 8, -1272, -1270, 169, -1271, 169, + -1284, -1281, -1278, -1207, -1250, -1244, -1207, 151, + -1225, -1255, 50, 50, -1255, 151, -1282, -1365, + -1308, -1301, -1296, -1060, -1038, 114, -1286, 50, + -1007, -892, 114, -1294, -1280, -1305, -1304, 123, + 123, -1307, -1170, 150, -1335, -1311, 83, -1334, + -1326, -1320, -1317, 123, 146, -1319, 123, 123, + -1323, 123, 94, -1325, 123, 123, -1333, -1330, + 84, 91, -1332, 22, 22, 123, 134, -1347, + -1167, -1344, -1341, -1340, 123, -1340, 123, -1329, + 123, 111, 88, -1358, -1349, -1351, -1343, -1353, + -1316, -1355, 165, -812, 146, -1352, -1361, 123, + 165, -1305, -1138, 165, -1360, -1423, -1401, -1374, + -1371, 63, -1357, 57, 9, 52, -1393, -1377, + 123, -1271, -1388, -1386, -1384, -1383, 52, 52, + 45, 54, -1303, 146, 123, -1373, 146, 54, + 54, -1397, -1396, -1391, 9, -22, -1396, -1390, + -1387, -1418, -1412, -1409, -1407, -1406, 108, 108, + 54, -1411, -1408, 123, -1414, 165, -1416, 108, + -1411, -1410, -1419, -1421, -1343, -1422, 57, -1466, + -1444, -1437, -1427, -1430, -1429, 44, -1434, -1433, + -1400, 134, -1433, 165, -1435, -1441, -812, -1432, + 146, -812, 113, 113, -1465, -1460, 111, -1455, + -1452, -1014, -1442, -1442, -1433, 134, -1450, -1453, + -1433, 134, -1440, -1458, -1461, -1463, 107, -1464, + 123, 121, -1492, -1483, -1471, 45, 8, -1480, + -1479, -1477, -1167, -1439, -1370, 45, 130, 8, + -1340, 123, -1443, -1488, -1485, -1266, -1443, -1482, + -1490, 9, -1491, 9, -1498, 130, -1495, -1181, + 8, -1487, -1500, 121, 121, -1986, -1685, -1628, + -1577, -1554, -1548, -1529, -1522, -1519, -1516, -1515, + -1271, 169, -1283, 34, -1271, 169, -1514, -1521, + 50, 169, -1527, -1525, 57, 57, 108, -1526, + -1520, -1546, -1544, -1540, -1538, -1537, -538, 171, + -1518, 98, 98, 86, -1542, 171, -538, -1283, + 108, 103, 171, 53, -1551, 34, 35, -1553, + -1536, 103, -1565, -1560, -1557, -1559, 104, 104, + -1562, 143, -1564, 143, 143, -1568, 171, 103, + -1571, 117, 171, -1574, 171, 53, -531, -1497, + -1476, -1601, -1587, -1584, -1583, -950, -1306, 35, + -22, 146, 146, -1595, 104, -1592, 35, -1585, + -1263, 151, -1585, -1262, 104, -1591, -3072, 146, + -1597, -1625, -1616, -1610, -1607, 53, 103, -1547, + 7, -1600, -1613, 31, 9, -22, 9, 56, + -1622, -1557, 31, 145, -303, -37, -950, 104, + -1621, -1627, -1620, 35, -1676, -1648, -1634, -1285, + 88, 5, -668, -1640, -1638, 148, 53, 148, + -1645, -1644, 104, 5, 148, -1646, 143, -1633, + -1672, -1661, -1654, -1653, 121, 121, -1658, -1657, + -1632, 121, -1657, -201, -1659, -1671, -1415, -1667, + -1666, -1660, 148, -1666, 148, -1656, -1626, 57, + -1675, -1668, -1609, 148, -1682, -1679, 8, -1422, + 57, 146, -1684, 146, 8, -1799, -1778, -1713, + -1706, -1700, -1698, -1695, -450, -1681, -1693, -450, + 146, -1585, 9, 2, -1704, 2, 131, -1694, + 2, 131, -1708, 43, -1710, 21, -1699, 146, + -1585, -1759, -1753, -1746, -1726, -1721, -1705, 131, + 109, -1723, 109, -1725, 117, 117, -1729, -663, + -1720, -1740, -1735, -1733, 109, 131, 53, -1739, + -1705, 131, -1728, 53, -1744, -361, -1712, -1703, + 117, 88, -1748, 143, -1752, -2571, 93, 88, + 143, -1757, -1756, 93, 43, 43, 131, -1765, + -1762, -1750, -1564, 93, 93, -1776, -1769, -1768, + 9, -1773, -1768, -1763, -1761, -1768, 11, -1772, + -1777, 148, -1783, -1780, -1781, 143, 78, -1790, + -1788, -1787, 16, 35, 131, -1482, -1793, 35, + 131, -1737, -1263, 104, -1782, -1775, -75, -1918, + -1845, -1821, -1818, -1816, -1810, -1809, -1213, 113, + -1797, 33, -1813, -1213, -1743, -1213, 151, -1674, + -1817, 104, -1820, 121, 121, -1842, -1830, -1827, + -1826, 131, 131, -1826, 131, -1582, -1836, -1825, + -1132, 151, -1026, 56, -1839, 151, -1835, -1841, + 145, 151, -1841, 51, -1838, -1877, -1854, -1852, + -1699, 151, 145, 56, 151, -1851, -1866, -1857, + -1850, -1859, -1844, -1863, -1862, 56, 8, -1862, + 8, -1835, -1868, 42, -1875, -1872, 2, 8, + -1874, -1838, 8, 9, 128, -1884, -1882, -1881, + -1873, 8, 121, 44, -1902, -1900, -1897, -1894, + -1892, -1891, -1858, 151, 151, 51, -1881, -1893, + -1101, -1285, 127, -1101, -1901, 151, -1911, -1908, + -1906, -330, -1864, -1896, -1910, -1890, 121, -1913, + 51, -1491, -1916, 51, 8, -1912, -1949, -1924, + -1646, 80, 23, 128, -1938, -1933, -1931, -1929, + 121, 121, 42, 42, 51, -1819, -1936, 42, + 42, 51, -1943, -1942, 143, 148, 143, -1947, + -1675, -1932, -1917, 143, 51, -1959, -1954, -1953, + 131, 131, -1953, -1758, 51, -1948, 128, -1960, + -1962, 32, -1971, -1968, -1966, 140, -1967, 140, + -1967, 140, -1957, -1977, -1737, -1975, 51, 140, + -1974, -1981, -1737, 131, -1970, -1983, 66, -1985, + 66, 140, -2057, -2020, -1998, -1993, -1992, -1982, + 132, -1997, -1996, -1980, 117, 132, -2000, 117, + -2010, -2005, -2004, 143, 143, -1762, -1840, 146, + -1946, -1909, -2012, -268, -2015, 148, 126, -1675, + -1644, 148, 126, -2014, -2030, -2028, -2026, -1060, + -2011, -330, 37, 57, -2029, 108, -2033, 57, + 127, -2043, -1574, -2037, -330, -1547, 53, 127, + 146, -330, -2036, -2055, -2052, -2049, -1644, 148, + -2025, -1644, -2024, -732, -2054, 57, 57, -1639, + 137, -2165, -2080, -2073, -2069, -2066, 6, -2065, + 115, 115, -2068, 6, 6, -622, 115, 132, + -554, -2068, -2017, -622, 6, 46, 46, -2077, + -2101, -2092, 134, -2089, -2088, -2087, 148, 148, + 148, -2088, -2072, -2051, -2098, -2095, -2091, -2097, + 57, 57, -2097, -2050, -2009, -2104, 9, 148, + -2138, -2125, -2108, 5, -2118, -2112, 108, 128, + -2116, -2054, 128, -2114, -2054, -2111, -2122, -1671, + 145, -1840, -1671, -2117, -268, -2132, -2129, 133, + 56, -2131, -268, 133, -2135, -1060, -2124, -2137, + 126, 57, -2153, -2146, -2144, -2143, -2136, 133, + 133, 132, -2066, -2068, -2134, 172, -2007, -2149, + -2148, -2160, -2157, 148, 6, -2103, -2123, -1974, + -2162, 51, -2054, -2159, 119, -2221, -2183, -681, + -2177, -2173, -561, 6, 119, -353, 6, -2164, + -2163, -2181, -2180, 128, 6, 23, 128, -2210, + -2202, -2197, -2190, -1777, 148, -2179, -1944, -1675, + 148, -2179, 54, -2189, -1029, -2004, -2200, 99, + 42, -2196, -1935, -2207, -2206, 143, 143, 42, + -2176, -2158, -2212, -2100, -2214, 145, -1916, -1675, + -1666, 145, -2213, 49, 49, -2246, -2244, -2225, + -2219, -2230, -2229, 134, -2218, 134, -2242, -2235, + -2234, 44, 44, -2239, -2150, 145, 145, -1433, + 134, -2237, -1668, -2241, -1680, -2243, -2262, -2260, + -2254, -2253, -2103, -2228, 145, 148, -2258, -2103, + 148, -2252, 6, 49, -1684, -2257, -2268, -1684, + -1266, 8, 49, -2266, -2269, -1422, -2261, -3101, + -2728, -2419, -2327, -2299, -2295, 165, -2288, -2286, + -2284, -2283, 166, 166, -2283, 68, -2287, 135, + -2292, -2291, 49, 7, -2294, 7, 7, -2296, + -2298, 135, 135, -2311, 7, -573, -2308, -2305, + 82, -2307, 129, 129, 120, 116, 68, -2316, + -2313, -2315, 135, 135, -2321, -2320, 135, 58, + 135, -2315, -2325, 129, 135, 135, -2285, -2345, + -2333, -2331, 30, -2332, 2, -2339, -2338, -2337, + 2, 2, 54, -38, 2, 135, -1749, -2270, + -1958, -2402, -2380, -2359, -2356, -2353, -2320, 135, + -2343, -2320, -2251, -1851, -2358, -2355, 30, -2362, + 67, 56, -2368, -2324, -2366, -2361, 135, 126, + -2373, -2325, 51, -2357, -1851, -2377, -2376, 138, + 138, -2379, 138, 138, -2384, -2383, 21, 21, + -2391, -2320, 2, -264, 30, 145, 2, -2394, + -2393, 49, -2396, 135, -2400, -2337, -2372, -2371, + 135, 2, -2408, -2406, -2405, 41, -2401, -2354, + -2414, -2411, 56, -2413, -1851, 2, -2418, -2379, + 138, -1861, 138, -2549, -2489, -2458, -2449, -2434, + -2427, 149, 173, -2431, -2430, 173, 149, -2430, + -2426, 173, -2444, -2437, -2426, -586, -506, -1329, + 91, -2432, 145, -2417, -2448, -2447, 173, 149, + 142, -2452, -2451, 58, -2447, -571, 136, 58, + 173, 93, -2474, -2460, -2468, -2465, -2464, 73, + 73, -2467, 54, 54, -2472, -2471, -2446, 129, + -1385, 126, -2480, -1032, -1329, 91, -2443, 56, + -2486, -2485, -1032, 142, 56, 129, -2488, 142, + 142, -2497, -2493, 99, 139, 114, -2496, 139, + 139, -2523, -2515, -2508, -1293, -2504, 5, 56, + -593, 6, -2484, -2479, -2512, -2511, 172, 133, + -2514, 139, 139, -2516, -2518, -2510, -2520, -2517, + -2522, 142, 142, -2539, 133, -2528, 136, -2507, + -2532, -586, 56, -1861, -2536, -2447, 149, 126, + -2447, -2531, -2503, 133, -2542, 136, -2546, -2545, + 142, 142, -2545, -2538, -2537, -2633, -2592, -2579, + -2572, -2570, -2568, -2565, -2564, -2561, -2560, -2527, + 136, -2560, 136, -2478, 136, -2566, 105, 129, + -2467, -1851, -2571, 54, -2578, -2575, 70, -2562, + 136, 173, 105, -2583, -2578, 168, -2569, -2379, + -2588, -2416, 138, 24, -2416, 138, -2582, -2361, + -2621, -2616, -2610, -2598, -2597, 105, -2601, -2578, + -2590, -2605, -2604, 175, 175, -2607, 48, -2609, + 175, 175, -2613, -1044, -2600, -2609, 175, 173, + 142, -2619, 175, 175, -2446, -2630, -2624, 99, + -2415, -2379, 173, -3088, -2446, -2620, -2632, 99, + 54, -2678, -2651, -2645, -2638, -14, -2642, -2455, + 58, 173, -2455, -2641, -2643, -2646, -2648, 7, + -2294, 7, 158, -2660, -2655, 168, 161, -2656, + -2658, 82, 136, 41, -2665, 58, -2664, 136, + 136, -2669, -370, 173, -2644, -370, -2674, -2673, + 136, 136, -2673, 136, -2668, -2637, -2705, -2698, + -2690, -2689, -2687, -2686, 142, 1, 1, 142, + -2612, 142, -2692, 1, 1, -2695, 6, -2488, + 142, -2563, -2703, -2701, 54, 142, -2407, 142, + 54, -2717, -2664, -2714, -2711, 6, 46, -2713, + 124, 136, -2488, 46, 124, -2723, -2720, 139, + -2609, 175, -2715, -2545, -1693, -289, -2710, 130, + -2942, -2786, -2774, -2751, -2737, -2734, -2736, -2727, + 140, -2745, -2744, -2743, -2742, 47, 47, 41, + 105, -2749, -2589, 138, -2727, 168, 138, -2757, + -2753, -2755, 23, -2756, 168, -2760, 41, -2735, + -2771, -2767, -2766, -2744, 105, -809, 47, -2744, + 105, 47, -2759, -2743, 41, 126, -2781, -2779, + -2747, 138, -2770, -1961, -1861, 2, -2785, 21, + 49, 21, -2866, -2842, -2815, -2797, -2791, -1968, + 140, 33, 146, 33, 130, -2809, -2393, -2803, + -2220, 49, -1161, -2805, -2802, -2401, -2795, 126, + -2780, -2813, -1191, 39, -2726, 33, -1161, -2831, + -2822, -2821, -2332, 2, 33, 140, -2826, -649, + 8, 39, -1985, -649, 157, 39, -1144, -2833, + -2828, -2836, -1874, -2820, -2840, -1874, -2814, -2812, + 2, -2710, -2849, -2847, 137, -1809, -2841, -1967, + 124, -2851, 44, -2855, -746, 137, -2716, -2863, + -2827, -649, -2056, 32, -1390, 157, -2861, -486, + 137, -2858, -2925, -2914, -2904, -2880, -2875, -2873, + -2846, 49, -2839, -2736, -2878, -2702, 49, -2211, + -2890, -2887, -2884, 145, -2886, 140, 140, -2379, + -2883, 49, -2901, -2894, 71, 51, -2415, -2379, + 138, -2889, -2571, -2888, -2252, -2903, 47, 47, + -2909, -2413, -2736, 49, -2907, -2742, -2886, -2900, + 145, -224, -2920, -2916, -2918, -2912, -2919, 47, + -2924, -2923, -2917, 175, 47, -2931, -2928, -2911, + -2930, -2899, 140, -2941, -2936, -2342, 54, -2338, + -486, -2939, 144, 144, -2338, 175, -3035, -3017, + -2980, -2965, -2956, -2949, -2935, -353, -2954, -2953, + 54, 23, 41, -2952, -2960, -2959, 47, 47, + -2962, 80, -2959, 47, -2948, -2971, -2970, -2969, + 41, 41, 6, -2976, 6, -2975, -2325, 115, + 6, -2979, 133, 133, -3007, -2995, -2990, -2987, + -2664, 136, -2366, -2664, -2986, -2974, -2993, -2513, + -2964, -2608, -2161, -2998, 144, -2992, -3000, -2929, + -3004, -3003, 144, 144, -3003, 145, -3005, -3016, + -3014, -3011, 93, -3013, 173, 144, -2068, 93, + 144, -3024, -3021, -3020, 42, -3022, -3023, 144, + -3029, 28, -2939, 144, -3010, -3004, -3031, 144, + -1449, -3006, 145, -3090, -3067, -3048, -3044, -3043, + 119, 162, -2241, 133, -3046, 134, -853, -3034, + -2686, -3053, -3013, 144, -3033, -3063, -3061, -3059, + -3058, 44, 44, 44, 5, -3062, 44, -3051, + 144, 145, 146, -3081, -3074, -1883, -3040, 145, + 145, -3071, -3078, -1433, 128, -3073, -649, -3066, + -3065, -3085, -3083, -3084, 144, -3086, -3087, -3089, + 7, 144, -3096, -3094, 4, -1440, -3089, 146, + -3098, -1440, -3003, -2120, -3093, -1834, -2879, -2999, + -3052, -750, -3032, -3109, 20, -3070, 119, +}; + +static long _vq_p_res0_0d[] = { + 48, 80, 324, 96, 96, 8, 608, 84, + 608, 84, 56, 156, 608, 608, 632, 12, + 72, 12, 8, 12, 12, 12, 208, 72, + 72, 72, 208, 156, 384, 56, 12, 384, + 12, 12, 384, 12, 12, 4, 4, 4, + 28, 12, 12, 12, 156, 192, 156, 56, + 56, 96, 56, 152, 56, 488, 56, 56, + 56, 384, 28, 72, 72, 72, 72, 384, + 488, 488, 208, 632, 340, 340, 56, 56, + 56, 72, 608, 12, 72, 608, 608, 472, + 632, 632, 12, 312, 96, 64, 244, 12, + 340, 12, 12, 340, 340, 244, 96, 96, + 96, 96, 372, 372, 472, 56, 648, 56, + 56, 244, 648, 648, 312, 56, 312, 72, + 72, 72, 472, 452, 12, 12, 12, 12, + 72, 72, 72, 488, 96, 96, 452, 56, + 56, 56, 448, 448, 96, 96, 96, 424, + 488, 152, 152, 424, 564, 152, 152, 564, + 424, 72, 72, 72, 72, 72, 144, 208, + 488, 488, 144, 144, 144, 452, 488, 448, + 456, 144, 564, 76, 76, 248, 248, 248, + 80, 80, 100, 56, 56, 56, 56, 56, + 424, 664, 664, 80, 80, 80, 80, 388, + 388, 388, 388, 152, 152, 152, 424, 108, + 488, 108, 108, 76, 80, 312, 76, 76, + 76, 452, 664, 312, 488, 152, 312, 80, + 452, 452, 384, 56, 448, 448, 56, 108, + 108, 608, 608, 608, 608, 608, 324, 324, + 324, 84, 72, 72, 72, 244, 140, 324, + 324, 324, 324, 56, 56, 244, 324, 324, + 244, 384, 108, 56, 56, 56, 56, 664, + 120, 68, 664, 68, 68, 120, 68, 84, + 68, 68, 68, 120, 384, 84, 244, 384, + 84, 324, 324, 68, 508, 324, 324, 668, + 68, 68, 384, 120, 116, 76, 76, 76, + 76, 76, 184, 664, 664, 184, 116, 116, + 664, 496, 668, 324, 496, 116, 608, 608, + 4, 0, 0, 0, 0, 56, 16, 16, + 68, 68, 384, 76, 76, 76, 120, 384, + 16, 120, 120, 68, 68, 120, 68, 68, + 68, 116, 116, 120, 220, 0, 0, 120, + 120, 120, 504, 120, 120, 0, 76, 0, + 220, 28, 76, 76, 76, 500, 464, 464, + 220, 116, 116, 452, 464, 464, 116, 468, + 92, 92, 124, 468, 124, 124, 124, 212, + 172, 468, 120, 120, 120, 656, 452, 220, + 0, 0, 656, 80, 76, 248, 248, 80, + 80, 80, 100, 664, 80, 76, 76, 76, + 76, 76, 80, 80, 664, 664, 500, 488, + 388, 80, 56, 184, 496, 388, 496, 448, + 448, 104, 220, 104, 104, 104, 104, 104, + 348, 348, 448, 348, 28, 388, 104, 104, + 104, 500, 388, 388, 448, 500, 488, 448, + 116, 116, 348, 284, 116, 116, 116, 284, + 664, 664, 496, 388, 348, 348, 388, 464, + 220, 28, 68, 68, 68, 68, 384, 284, + 4, 4, 8, 28, 284, 116, 76, 16, + 76, 28, 4, 68, 68, 68, 68, 68, + 68, 104, 68, 68, 104, 68, 392, 392, + 140, 488, 104, 104, 104, 284, 116, 116, + 116, 392, 104, 392, 208, 104, 184, 116, + 588, 324, 76, 656, 348, 464, 80, 80, + 248, 248, 160, 248, 680, 680, 360, 100, + 100, 660, 660, 464, 256, 408, 256, 220, + 680, 256, 256, 256, 680, 360, 360, 160, + 448, 468, 468, 448, 220, 104, 212, 124, + 104, 104, 104, 684, 104, 104, 104, 448, + 684, 392, 392, 124, 684, 684, 48, 48, + 104, 104, 212, 200, 656, 100, 24, 248, + 248, 100, 284, 284, 612, 612, 656, 656, + 656, 656, 368, 368, 368, 368, 368, 284, + 680, 680, 680, 596, 464, 464, 24, 24, + 88, 368, 88, 88, 532, 368, 368, 368, + 360, 284, 200, 100, 100, 88, 88, 88, + 24, 20, 20, 20, 16, 360, 680, 360, + 360, 368, 108, 680, 256, 108, 612, 612, + 368, 680, 368, 368, 368, 408, 680, 680, + 284, 408, 408, 528, 368, 284, 528, 408, + 220, 680, 680, 656, 0, 0, 108, 160, + 656, 656, 284, 184, 160, 680, 52, 408, + 184, 528, 112, 24, 656, 656, 656, 0, + 0, 184, 40, 0, 0, 468, 468, 468, + 40, 528, 468, 40, 528, 0, 0, 0, + 696, 212, 40, 220, 212, 100, 100, 100, + 100, 100, 496, 24, 24, 20, 20, 20, + 496, 24, 24, 40, 696, 696, 28, 0, + 0, 0, 12, 340, 64, 616, 12, 12, + 12, 44, 64, 44, 60, 240, 240, 240, + 240, 616, 340, 636, 636, 356, 64, 44, + 616, 616, 616, 616, 64, 60, 60, 40, + 44, 44, 60, 616, 616, 616, 636, 12, + 60, 60, 64, 616, 496, 44, 44, 44, + 12, 12, 12, 44, 520, 12, 636, 64, + 64, 64, 112, 340, 564, 636, 664, 112, + 112, 564, 356, 356, 40, 144, 144, 12, + 600, 496, 144, 496, 12, 12, 12, 448, + 588, 96, 340, 340, 144, 448, 600, 44, + 388, 44, 100, 44, 44, 44, 44, 40, + 248, 80, 44, 44, 44, 360, 248, 248, + 40, 40, 640, 256, 256, 256, 256, 356, + 448, 636, 248, 248, 640, 636, 636, 636, + 636, 500, 356, 356, 444, 640, 640, 640, + 356, 444, 640, 248, 248, 40, 640, 640, + 640, 100, 100, 40, 248, 80, 248, 12, + 44, 12, 12, 12, 12, 12, 228, 20, + 44, 44, 44, 44, 444, 636, 40, 100, + 100, 640, 640, 100, 100, 160, 640, 20, + 12, 12, 12, 20, 332, 28, 28, 12, + 332, 332, 12, 448, 332, 240, 20, 60, + 240, 240, 60, 160, 88, 88, 88, 360, + 448, 20, 356, 360, 240, 240, 240, 360, + 356, 448, 240, 240, 356, 240, 240, 112, + 112, 60, 112, 448, 360, 356, 636, 636, + 636, 496, 640, 640, 640, 640, 332, 448, + 100, 332, 360, 360, 332, 60, 44, 44, + 44, 60, 60, 44, 44, 244, 244, 100, + 100, 244, 48, 104, 252, 256, 256, 104, + 104, 48, 48, 252, 252, 256, 252, 244, + 104, 252, 48, 104, 48, 48, 48, 64, + 104, 104, 12, 392, 64, 500, 252, 252, + 252, 392, 104, 104, 376, 104, 104, 64, + 312, 392, 256, 640, 104, 256, 256, 256, + 312, 640, 640, 640, 640, 312, 312, 324, + 340, 340, 104, 104, 616, 616, 664, 616, + 616, 104, 104, 104, 244, 348, 348, 244, + 640, 256, 104, 64, 256, 144, 356, 356, + 104, 312, 144, 144, 244, 104, 436, 244, + 312, 244, 36, 28, 640, 312, 12, 616, + 208, 376, 40, 12, 640, 508, 356, 216, + 308, 252, 148, 240, 308, 252, 252, 356, + 240, 240, 308, 436, 396, 308, 256, 256, + 408, 256, 308, 308, 360, 256, 256, 256, + 396, 288, 256, 288, 148, 640, 288, 356, + 640, 396, 340, 608, 440, 608, 180, 12, + 12, 12, 12, 340, 632, 632, 632, 156, + 96, 96, 440, 72, 632, 632, 72, 180, + 632, 632, 632, 632, 96, 96, 340, 340, + 440, 340, 340, 424, 96, 396, 96, 472, + 608, 400, 628, 628, 608, 608, 608, 632, + 628, 628, 628, 440, 632, 396, 16, 632, + 632, 156, 632, 608, 608, 16, 632, 16, + 396, 608, 608, 308, 156, 72, 72, 308, + 440, 308, 476, 308, 284, 84, 84, 628, + 628, 128, 96, 40, 12, 12, 12, 12, + 96, 40, 40, 284, 284, 440, 40, 40, + 108, 440, 340, 340, 108, 340, 108, 180, + 12, 12, 16, 40, 40, 40, 40, 40, + 40, 108, 156, 112, 132, 132, 312, 440, + 628, 628, 628, 628, 244, 244, 132, 132, + 244, 128, 352, 108, 128, 112, 112, 628, + 296, 296, 132, 296, 296, 296, 304, 180, + 440, 440, 628, 628, 352, 132, 244, 144, + 676, 48, 676, 48, 48, 48, 244, 272, + 244, 352, 676, 676, 72, 72, 456, 144, + 364, 392, 364, 140, 12, 12, 72, 72, + 308, 308, 180, 144, 308, 108, 72, 72, + 72, 608, 108, 72, 72, 72, 424, 208, + 108, 180, 308, 308, 608, 400, 140, 140, + 308, 156, 4, 304, 296, 296, 304, 344, + 296, 180, 296, 296, 424, 108, 676, 676, + 308, 676, 456, 364, 136, 136, 364, 616, + 252, 356, 240, 240, 240, 88, 88, 244, + 252, 252, 244, 244, 88, 144, 676, 676, + 144, 240, 452, 492, 332, 12, 12, 336, + 332, 332, 60, 60, 660, 332, 332, 20, + 240, 240, 240, 60, 60, 376, 240, 240, + 240, 660, 60, 60, 336, 336, 332, 12, + 40, 40, 12, 12, 180, 40, 40, 352, + 444, 12, 248, 444, 60, 616, 248, 64, + 352, 376, 100, 340, 100, 100, 376, 376, + 80, 340, 404, 248, 248, 252, 676, 48, + 252, 48, 80, 208, 208, 136, 136, 252, + 252, 296, 296, 296, 296, 296, 296, 180, + 676, 660, 180, 660, 136, 676, 216, 308, + 292, 12, 12, 292, 492, 180, 180, 292, + 292, 336, 252, 240, 240, 240, 148, 252, + 364, 252, 308, 432, 336, 308, 428, 428, + 296, 660, 252, 20, 308, 492, 36, 176, + 40, 332, 20, 40, 112, 40, 332, 332, + 352, 176, 112, 308, 288, 40, 40, 288, + 436, 112, 436, 352, 428, 332, 332, 332, + 332, 404, 352, 308, 428, 428, 308, 336, + 336, 336, 352, 288, 444, 296, 296, 428, + 176, 112, 40, 296, 12, 12, 12, 40, + 40, 40, 40, 436, 292, 296, 296, 296, + 296, 296, 312, 12, 20, 12, 244, 244, + 136, 136, 492, 32, 112, 112, 296, 112, + 112, 308, 296, 296, 344, 400, 252, 392, + 344, 136, 48, 136, 344, 48, 48, 344, + 48, 48, 352, 48, 252, 252, 248, 252, + 248, 392, 48, 48, 48, 136, 136, 252, + 44, 48, 252, 48, 48, 48, 48, 48, + 44, 344, 252, 252, 344, 344, 412, 244, + 412, 344, 412, 412, 304, 304, 304, 344, + 244, 136, 304, 304, 304, 124, 124, 412, + 344, 344, 412, 412, 212, 392, 392, 392, + 468, 684, 412, 124, 124, 124, 412, 44, + 312, 304, 48, 48, 48, 140, 436, 392, + 136, 224, 28, 304, 304, 304, 304, 28, + 400, 400, 216, 136, 136, 216, 648, 224, + 12, 48, 68, 212, 48, 48, 48, 124, + 352, 352, 68, 68, 68, 48, 48, 108, + 124, 48, 48, 648, 108, 108, 140, 140, + 12, 392, 12, 124, 428, 416, 304, 304, + 244, 108, 136, 136, 136, 136, 412, 412, + 412, 416, 412, 244, 212, 212, 416, 244, + 484, 304, 304, 304, 304, 136, 344, 344, + 108, 428, 136, 12, 352, 136, 136, 136, + 136, 244, 484, 428, 428, 12, 20, 432, + 412, 412, 16, 572, 136, 32, 136, 136, + 136, 152, 484, 372, 176, 124, 68, 68, + 68, 68, 68, 68, 68, 372, 80, 208, + 12, 12, 8, 524, 0, 0, 0, 12, + 524, 172, 172, 84, 300, 300, 84, 352, + 352, 300, 300, 416, 300, 300, 300, 300, + 372, 0, 352, 92, 92, 172, 0, 416, + 352, 416, 124, 124, 312, 172, 172, 172, + 416, 416, 312, 416, 124, 124, 372, 352, + 172, 64, 300, 300, 92, 292, 64, 312, + 468, 0, 0, 312, 92, 652, 652, 572, + 416, 312, 468, 352, 44, 416, 416, 416, + 592, 0, 0, 44, 44, 212, 616, 616, + 0, 168, 304, 304, 124, 416, 616, 84, + 84, 608, 244, 84, 140, 244, 124, 124, + 124, 400, 400, 400, 244, 244, 352, 136, + 304, 416, 304, 400, 304, 304, 304, 352, + 12, 128, 400, 400, 44, 128, 128, 372, + 304, 132, 132, 132, 416, 128, 400, 84, + 84, 84, 128, 400, 400, 12, 84, 156, + 84, 84, 660, 512, 128, 128, 508, 156, + 512, 524, 132, 512, 580, 0, 156, 8, + 156, 156, 204, 580, 36, 16, 416, 416, + 16, 8, 16, 132, 132, 504, 524, 168, + 168, 504, 168, 0, 4, 0, 0, 0, + 4, 504, 8, 8, 624, 112, 112, 112, + 624, 484, 168, 168, 132, 136, 132, 132, + 132, 132, 624, 32, 136, 16, 136, 396, + 16, 416, 284, 284, 32, 36, 416, 136, + 136, 284, 484, 284, 416, 396, 168, 168, + 396, 592, 136, 284, 592, 284, 320, 300, + 300, 300, 300, 396, 320, 320, 320, 320, + 320, 168, 416, 132, 512, 112, 112, 112, + 132, 624, 416, 416, 416, 416, 484, 168, + 168, 624, 624, 484, 196, 0, 0, 0, + 0, 168, 300, 300, 264, 264, 264, 112, + 84, 84, 300, 300, 300, 300, 168, 132, + 128, 128, 512, 128, 128, 128, 512, 524, + 624, 416, 132, 132, 624, 524, 624, 132, + 52, 168, 684, 92, 612, 612, 612, 52, + 468, 468, 92, 52, 656, 656, 684, 684, + 468, 92, 0, 0, 92, 0, 204, 404, + 52, 264, 0, 496, 412, 572, 500, 528, + 528, 528, 496, 496, 252, 148, 252, 252, + 504, 284, 408, 408, 252, 408, 48, 48, + 496, 528, 408, 528, 496, 408, 408, 624, + 292, 624, 624, 408, 408, 408, 408, 408, + 624, 412, 624, 284, 212, 212, 592, 432, + 52, 408, 0, 316, 612, 612, 612, 612, + 612, 316, 460, 460, 532, 316, 316, 316, + 52, 528, 24, 0, 0, 624, 52, 52, + 428, 592, 336, 336, 336, 336, 336, 460, + 432, 428, 624, 624, 336, 20, 16, 336, + 336, 176, 432, 184, 184, 36, 24, 24, + 336, 336, 20, 336, 408, 336, 336, 692, + 408, 408, 504, 688, 432, 688, 336, 336, + 436, 436, 148, 436, 504, 88, 88, 88, + 436, 408, 436, 148, 148, 408, 436, 20, + 452, 24, 460, 528, 408, 408, 312, 528, + 460, 460, 88, 88, 312, 312, 292, 436, + 688, 408, 408, 408, 408, 528, 508, 508, + 20, 476, 24, 476, 396, 316, 24, 0, + 612, 612, 612, 612, 288, 0, 0, 288, + 396, 0, 0, 508, 316, 316, 436, 320, + 316, 316, 0, 0, 0, 436, 316, 316, + 316, 396, 404, 396, 436, 0, 0, 288, + 92, 288, 320, 320, 320, 320, 168, 92, + 436, 396, 0, 312, 428, 8, 168, 484, + 168, 156, 156, 156, 264, 428, 176, 112, + 264, 484, 428, 428, 196, 484, 176, 428, + 336, 336, 428, 336, 216, 192, 272, 460, + 460, 272, 460, 156, 592, 628, 24, 592, + 460, 460, 460, 272, 196, 176, 20, 20, + 20, 512, 176, 272, 20, 272, 20, 20, + 20, 20, 512, 264, 32, 176, 264, 164, + 292, 324, 292, 80, 76, 80, 80, 76, + 292, 292, 292, 80, 76, 264, 664, 404, + 540, 76, 260, 540, 292, 292, 216, 664, + 324, 324, 668, 292, 516, 328, 328, 328, + 292, 292, 292, 464, 464, 292, 260, 76, + 668, 76, 76, 480, 120, 328, 328, 328, + 120, 328, 328, 328, 328, 476, 260, 16, + 164, 328, 328, 16, 164, 16, 16, 16, + 16, 540, 540, 540, 540, 384, 404, 260, + 624, 328, 328, 120, 268, 268, 268, 268, + 624, 328, 260, 512, 328, 504, 672, 264, + 264, 260, 268, 268, 268, 624, 196, 260, + 328, 328, 328, 260, 4, 196, 196, 196, + 540, 476, 476, 204, 264, 264, 264, 268, + 268, 268, 268, 268, 268, 12, 12, 324, + 324, 84, 84, 84, 384, 384, 12, 12, + 196, 196, 268, 652, 268, 652, 164, 12, + 196, 164, 692, 196, 692, 204, 420, 420, + 420, 692, 164, 364, 248, 100, 464, 516, + 100, 660, 688, 660, 660, 436, 516, 464, + 436, 372, 364, 248, 372, 364, 364, 100, + 100, 372, 692, 688, 100, 100, 472, 568, + 28, 368, 368, 544, 544, 544, 516, 516, + 340, 340, 216, 464, 620, 292, 620, 620, + 288, 620, 620, 516, 516, 292, 340, 660, + 308, 340, 660, 364, 308, 308, 340, 372, + 620, 308, 620, 620, 688, 620, 516, 516, + 544, 308, 620, 620, 620, 424, 308, 308, + 424, 88, 88, 108, 108, 88, 88, 96, + 108, 108, 96, 96, 456, 88, 340, 456, + 380, 380, 532, 556, 364, 312, 200, 372, + 108, 108, 20, 368, 368, 544, 368, 340, + 368, 368, 500, 500, 364, 364, 364, 340, + 200, 340, 12, 380, 620, 620, 380, 380, + 380, 556, 544, 340, 96, 420, 328, 620, + 620, 620, 620, 620, 620, 620, 620, 12, + 516, 644, 644, 96, 420, 644, 328, 328, + 328, 96, 328, 476, 644, 276, 276, 280, + 280, 96, 280, 280, 672, 644, 692, 420, + 328, 328, 328, 260, 672, 672, 260, 12, + 280, 620, 620, 396, 620, 396, 280, 620, + 12, 420, 620, 620, 420, 620, 260, 544, + 544, 556, 396, 284, 192, 424, 424, 272, + 556, 16, 16, 556, 272, 16, 16, 16, + 396, 396, 632, 648, 632, 632, 620, 620, + 420, 464, 516, 464, 464, 272, 644, 644, + 644, 440, 328, 632, 96, 328, 164, 164, + 516, 516, 260, 276, 276, 644, 276, 380, + 644, 644, 164, 328, 0, 544, 0, 0, + 164, 644, 644, 260, 260, 544, 656, 656, + 656, 380, 368, 368, 340, 260, 108, 16, + 108, 108, 108, 108, 108, 108, 20, 24, + 272, 16, 16, 16, 164, 24, 164, 164, + 164, 260, 164, 216, 164, 28, 692, 544, + 544, 380, 380, 380, 368, 368, 132, 380, + 260, 24, 368, 260, 624, 164, 16, 16, + 164, 164, 624, 544, 648, 260, 260, 504, + 264, 280, 300, 300, 300, 268, 300, 500, + 652, 420, 652, 652, 652, 652, 420, 420, + 672, 268, 268, 268, 496, 652, 652, 0, + 0, 276, 276, 92, 652, 652, 652, 496, + 276, 276, 276, 276, 276, 40, 672, 280, + 280, 280, 40, 672, 672, 340, 264, 264, + 264, 264, 340, 268, 500, 268, 268, 268, + 268, 652, 168, 52, 52, 652, 652, 52, + 52, 52, 288, 260, 260, 264, 264, 52, + 52, 52, 260, 264, 40, 156, 40, 260, + 260, 52, 52, 52, 40, 128, 628, 652, + 652, 652, 652, 652, 628, 184, 164, 164, + 164, 264, 184, 168, 264, 260, 260, 132, + 260, 156, 156, 260, 184, 184, 260, 628, + 4, 628, 128, 112, 112, 112, 112, 320, + 52, 176, 112, 320, 320, 320, 52, 112, + 112, 112, 496, 52, 288, 52, 264, 168, + 168, 128, 52, 652, 52, 264, 52, 52, + 52, 264, 52, 264, 264, 40, 652, 632, + 652, 652, 652, 384, 52, 52, 188, 52, + 8, 192, 420, 284, 52, 52, 52, 52, + 52, 156, 288, 156, 204, 52, 52, 284, + 184, 184, 184, 272, 264, 652, 652, 272, + 324, 272, 16, 284, 16, 272, 164, 184, + 420, 420, 608, 188, 164, 320, 320, 192, + 188, 272, 548, 188, 284, 288, 204, 204, + 188, 184, 184, 188, 476, 284, 380, 380, + 316, 276, 0, 612, 476, 276, 0, 276, + 16, 0, 276, 540, 276, 276, 276, 92, + 316, 316, 320, 320, 16, 0, 0, 0, + 0, 380, 380, 460, 316, 316, 668, 380, + 380, 612, 612, 380, 164, 276, 276, 276, + 276, 276, 476, 380, 324, 324, 380, 280, + 196, 280, 264, 164, 164, 264, 556, 540, + 380, 380, 380, 700, 188, 692, 12, 380, + 380, 24, 96, 380, 648, 460, 460, 648, + 556, 164, 164, 108, 164, 108, 184, 24, + 320, 320, 320, 320, 648, 168, 168, 316, + 288, 648, 512, 456, 88, 88, 460, 456, + 404, 272, 648, 460, 88, 88, 456, 272, + 108, 460, 456, 456, 272, 160, 108, 108, + 108, 108, 20, 160, 160, 456, 160, 108, + 108, 436, 580, 176, 112, 112, 664, 476, + 404, 404, 160, 160, 476, 512, 176, 404, + 404, 460, 536, 460, 160, 168, 184, 160, + 404, 548, 16, 108, 108, 372, 184, 648, + 424, 648, 556, 648, 648, 272, 664, 404, + 476, 292, 80, 80, 292, 292, 292, +}; + +static long _vq_q_res0_0d[] = { + 396, 484, 148, 220, 664, 236, 72, 192, + 84, 8, 192, 192, 632, 192, 192, 588, + 192, 72, 36, 8, 208, 36, 36, 156, + 208, 8, 8, 8, 192, 384, 56, 8, + 384, 28, 28, 4, 28, 224, 28, 8, + 8, 96, 8, 156, 8, 8, 192, 96, + 192, 192, 192, 588, 152, 588, 488, 588, + 384, 28, 588, 208, 140, 192, 488, 488, + 208, 588, 588, 236, 96, 472, 192, 472, + 96, 472, 72, 224, 192, 632, 472, 192, + 96, 472, 4, 224, 472, 452, 452, 208, + 236, 96, 152, 372, 96, 64, 472, 472, + 372, 152, 152, 472, 236, 488, 472, 648, + 152, 312, 96, 152, 452, 472, 372, 96, + 472, 488, 488, 224, 152, 96, 72, 588, + 96, 488, 236, 236, 488, 236, 456, 152, + 488, 404, 456, 452, 152, 236, 588, 456, + 564, 488, 588, 452, 588, 564, 236, 236, + 448, 488, 236, 140, 472, 208, 236, 236, + 588, 208, 488, 564, 236, 508, 564, 160, + 160, 208, 588, 324, 384, 388, 80, 152, + 100, 152, 152, 76, 152, 664, 488, 588, + 160, 488, 588, 152, 664, 388, 588, 588, + 588, 152, 564, 564, 488, 564, 456, 424, + 564, 160, 452, 28, 664, 500, 664, 488, + 588, 224, 488, 224, 588, 588, 452, 28, + 500, 500, 8, 384, 500, 452, 324, 452, + 448, 56, 72, 324, 84, 140, 84, 384, + 192, 384, 324, 384, 140, 108, 488, 384, + 488, 668, 664, 324, 488, 448, 488, 384, + 452, 192, 224, 488, 664, 664, 668, 668, + 588, 124, 464, 140, 116, 480, 384, 120, + 84, 120, 172, 172, 120, 384, 456, 8, + 120, 384, 480, 324, 224, 84, 668, 480, + 384, 480, 480, 480, 120, 324, 116, 664, + 668, 480, 224, 668, 480, 508, 668, 480, + 668, 224, 480, 116, 184, 668, 140, 324, + 220, 120, 4, 28, 8, 664, 224, 508, + 384, 28, 8, 384, 120, 28, 28, 120, + 184, 8, 480, 28, 172, 232, 116, 120, + 220, 120, 220, 220, 232, 120, 172, 172, + 220, 232, 508, 232, 28, 120, 120, 232, + 232, 232, 116, 480, 464, 508, 28, 480, + 28, 464, 480, 508, 480, 220, 28, 232, + 172, 656, 172, 212, 468, 212, 220, 220, + 468, 212, 232, 220, 172, 172, 500, 232, + 656, 232, 232, 8, 116, 664, 80, 388, + 100, 464, 464, 668, 464, 28, 488, 80, + 664, 388, 664, 388, 388, 488, 504, 588, + 488, 388, 648, 508, 500, 28, 184, 184, + 496, 116, 28, 392, 488, 348, 220, 388, + 220, 388, 500, 392, 588, 28, 388, 488, + 588, 508, 488, 564, 452, 224, 564, 496, + 220, 28, 116, 496, 664, 388, 488, 448, + 388, 488, 184, 464, 388, 220, 220, 220, + 28, 588, 116, 384, 36, 8, 8, 396, + 28, 36, 36, 36, 16, 28, 116, 184, + 28, 36, 28, 324, 36, 124, 116, 140, + 488, 208, 104, 392, 392, 208, 140, 208, + 488, 208, 392, 116, 488, 508, 488, 208, + 392, 488, 392, 124, 588, 208, 548, 588, + 36, 488, 488, 600, 24, 220, 464, 100, + 80, 388, 548, 100, 464, 596, 596, 464, + 596, 464, 596, 596, 104, 696, 348, 696, + 220, 360, 680, 696, 696, 680, 696, 184, + 548, 212, 220, 184, 696, 392, 220, 212, + 124, 684, 212, 212, 684, 348, 220, 160, + 220, 124, 684, 684, 212, 696, 104, 212, + 212, 696, 696, 36, 528, 680, 596, 100, + 596, 464, 548, 184, 368, 656, 680, 232, + 368, 24, 24, 232, 24, 680, 596, 160, + 464, 596, 232, 232, 596, 232, 596, 232, + 408, 24, 200, 532, 200, 532, 200, 596, + 200, 448, 596, 596, 20, 20, 200, 24, + 596, 24, 200, 596, 184, 408, 696, 680, + 368, 680, 184, 596, 696, 16, 368, 528, + 532, 24, 680, 408, 528, 528, 408, 528, + 184, 528, 696, 696, 528, 16, 24, 532, + 28, 220, 696, 528, 656, 24, 160, 500, + 680, 24, 424, 4, 184, 528, 184, 528, + 548, 24, 548, 696, 528, 468, 232, 656, + 220, 32, 32, 212, 468, 212, 220, 232, + 184, 696, 528, 112, 212, 220, 36, 212, + 36, 220, 496, 696, 36, 232, 696, 20, + 28, 24, 548, 596, 28, 24, 4, 28, + 224, 4, 696, 224, 28, 36, 36, 232, + 24, 36, 40, 696, 236, 372, 600, 20, + 64, 64, 340, 60, 20, 60, 356, 616, + 600, 600, 600, 356, 600, 600, 340, 636, + 44, 60, 64, 376, 376, 64, 376, 496, + 60, 64, 64, 600, 636, 64, 64, 32, + 64, 600, 600, 340, 548, 372, 248, 636, + 44, 152, 64, 152, 548, 636, 152, 340, + 372, 152, 548, 372, 236, 564, 584, 520, + 448, 588, 144, 564, 496, 564, 600, 96, + 236, 500, 236, 520, 588, 208, 236, 520, + 236, 236, 600, 236, 600, 496, 236, 48, + 36, 636, 200, 248, 100, 152, 588, 520, + 100, 100, 248, 360, 200, 200, 360, 200, + 496, 448, 80, 640, 348, 356, 360, 360, + 500, 360, 640, 636, 388, 640, 356, 564, + 588, 520, 564, 588, 520, 356, 588, 564, + 564, 500, 356, 640, 360, 500, 360, 100, + 388, 388, 360, 444, 152, 388, 80, 60, + 28, 588, 44, 20, 228, 600, 600, 228, + 20, 100, 636, 100, 448, 356, 112, 28, + 588, 100, 228, 20, 228, 536, 588, 4, + 20, 588, 228, 28, 160, 228, 588, 4, + 448, 536, 588, 500, 20, 636, 228, 200, + 60, 88, 88, 548, 20, 200, 360, 20, + 160, 200, 600, 228, 356, 360, 148, 148, + 360, 536, 356, 228, 228, 60, 228, 536, + 448, 228, 548, 496, 200, 228, 640, 356, + 360, 500, 356, 360, 228, 100, 444, 184, + 20, 456, 20, 228, 448, 20, 200, 60, + 636, 636, 200, 100, 20, 456, 448, 20, + 200, 332, 148, 36, 356, 392, 348, 696, + 228, 104, 252, 256, 104, 104, 228, 500, + 348, 348, 252, 144, 104, 392, 208, 224, + 392, 208, 64, 144, 500, 224, 104, 392, + 144, 144, 392, 144, 500, 564, 348, 376, + 376, 564, 144, 356, 228, 640, 104, 348, + 64, 348, 104, 388, 564, 340, 64, 404, + 500, 376, 388, 564, 340, 64, 404, 376, + 312, 348, 388, 564, 500, 388, 564, 376, + 228, 640, 356, 376, 356, 208, 564, 144, + 144, 64, 564, 588, 64, 208, 216, 312, + 500, 616, 228, 588, 28, 224, 36, 456, + 588, 444, 16, 228, 356, 216, 228, 568, + 568, 256, 228, 356, 216, 356, 148, 148, + 356, 228, 508, 476, 424, 424, 356, 640, + 148, 408, 396, 216, 148, 696, 360, 228, + 216, 216, 148, 396, 228, 228, 308, 20, + 356, 508, 468, 336, 208, 112, 604, 180, + 440, 156, 96, 96, 440, 192, 96, 192, + 440, 156, 156, 440, 180, 72, 180, 236, + 472, 440, 96, 180, 440, 180, 440, 180, + 180, 472, 236, 508, 236, 508, 472, 236, + 84, 604, 400, 156, 628, 632, 604, 604, + 632, 440, 604, 604, 440, 424, 508, 440, + 604, 192, 156, 632, 72, 424, 72, 396, + 424, 72, 156, 508, 604, 156, 604, 424, + 604, 396, 216, 16, 424, 128, 156, 128, + 156, 156, 132, 156, 440, 96, 180, 40, + 180, 340, 96, 16, 396, 180, 340, 440, + 508, 520, 440, 520, 424, 180, 16, 520, + 4, 156, 216, 180, 440, 132, 296, 520, + 156, 452, 32, 132, 156, 32, 452, 520, + 112, 128, 132, 440, 452, 312, 440, 156, + 108, 132, 224, 352, 132, 132, 520, 128, + 440, 180, 604, 132, 304, 604, 604, 604, + 180, 604, 440, 132, 364, 604, 364, 604, + 180, 208, 144, 252, 392, 144, 352, 580, + 108, 452, 144, 208, 140, 144, 568, 208, + 568, 140, 456, 208, 180, 208, 180, 144, + 456, 364, 208, 180, 424, 456, 676, 4, + 140, 72, 452, 180, 156, 208, 452, 604, + 424, 208, 452, 424, 140, 604, 208, 604, + 108, 32, 32, 604, 304, 676, 676, 676, + 136, 208, 676, 180, 456, 568, 180, 604, + 352, 208, 200, 200, 208, 604, 456, 484, + 332, 600, 356, 228, 252, 456, 200, 200, + 144, 356, 456, 88, 108, 600, 144, 492, + 492, 492, 508, 600, 444, 20, 332, 536, + 336, 376, 332, 492, 584, 20, 492, 492, + 60, 492, 376, 376, 492, 492, 492, 60, + 336, 364, 336, 88, 88, 492, 536, 64, + 520, 444, 40, 492, 492, 180, 492, 660, + 492, 444, 352, 492, 376, 376, 364, 376, + 584, 444, 660, 444, 584, 352, 600, 492, + 660, 600, 476, 660, 80, 112, 432, 676, + 228, 252, 584, 228, 36, 208, 36, 676, + 492, 344, 136, 492, 676, 180, 208, 208, + 180, 216, 492, 584, 492, 136, 584, 216, + 216, 180, 492, 308, 36, 208, 492, 584, + 660, 20, 428, 492, 252, 432, 432, 432, + 216, 432, 364, 492, 432, 660, 492, 432, + 492, 364, 228, 492, 352, 228, 228, 32, + 492, 444, 176, 332, 176, 176, 112, 176, + 584, 536, 176, 660, 308, 112, 444, 292, + 584, 444, 452, 452, 484, 492, 444, 336, + 428, 584, 436, 436, 176, 536, 352, 428, + 176, 536, 584, 308, 492, 492, 428, 492, + 492, 484, 112, 136, 40, 180, 32, 492, + 32, 296, 180, 216, 80, 180, 520, 32, + 180, 492, 352, 36, 32, 4, 352, 312, + 32, 36, 32, 36, 484, 520, 112, 132, + 32, 352, 344, 484, 484, 532, 652, 176, + 604, 416, 304, 412, 432, 392, 252, 136, + 344, 676, 364, 136, 344, 676, 364, 392, + 200, 676, 252, 136, 228, 228, 432, 432, + 248, 212, 432, 412, 252, 344, 392, 684, + 352, 392, 392, 344, 412, 684, 684, 200, + 432, 412, 684, 212, 344, 136, 140, 136, + 44, 412, 392, 344, 416, 412, 416, 416, + 412, 572, 212, 572, 572, 124, 684, 412, + 212, 468, 684, 412, 684, 212, 684, 312, + 436, 124, 304, 136, 392, 208, 508, 140, + 208, 584, 584, 136, 416, 400, 140, 224, + 140, 604, 224, 208, 416, 28, 404, 584, + 28, 392, 140, 36, 124, 212, 412, 412, + 28, 584, 208, 124, 36, 208, 36, 224, + 140, 412, 124, 580, 16, 4, 208, 416, + 4, 124, 508, 140, 176, 484, 416, 136, + 352, 20, 36, 416, 412, 592, 212, 592, + 572, 592, 416, 20, 592, 572, 572, 108, + 572, 592, 344, 136, 484, 484, 136, 428, + 452, 484, 428, 452, 452, 228, 432, 428, + 484, 452, 592, 484, 592, 20, 4, 228, + 572, 592, 216, 592, 176, 36, 32, 36, + 228, 584, 176, 584, 32, 132, 140, 124, + 84, 172, 524, 208, 8, 152, 584, 8, + 584, 224, 36, 8, 172, 8, 524, 152, + 8, 524, 524, 172, 524, 84, 524, 584, + 224, 168, 652, 572, 416, 92, 172, 524, + 436, 92, 436, 172, 468, 468, 172, 212, + 372, 468, 416, 172, 436, 524, 212, 212, + 172, 524, 372, 212, 172, 468, 584, 152, + 468, 352, 92, 572, 572, 476, 372, 352, + 572, 652, 92, 372, 172, 172, 524, 592, + 212, 64, 212, 372, 372, 168, 212, 592, + 36, 212, 592, 352, 64, 592, 44, 64, + 592, 592, 400, 416, 416, 572, 312, 400, + 524, 84, 64, 140, 524, 312, 416, 140, + 524, 524, 140, 416, 616, 44, 224, 572, + 136, 524, 484, 416, 400, 128, 132, 452, + 64, 132, 128, 604, 152, 132, 604, 4, + 416, 416, 416, 484, 484, 132, 604, 400, + 128, 524, 524, 128, 524, 308, 128, 524, + 156, 604, 520, 224, 156, 604, 512, 524, + 580, 604, 524, 204, 224, 592, 32, 36, + 524, 604, 580, 224, 604, 224, 36, 32, + 204, 32, 508, 168, 524, 224, 32, 524, + 32, 512, 32, 168, 36, 4, 8, 32, + 8, 508, 32, 36, 512, 132, 168, 484, + 504, 32, 484, 176, 168, 36, 416, 484, + 136, 32, 204, 604, 604, 204, 484, 204, + 508, 604, 508, 396, 36, 604, 592, 416, + 484, 504, 32, 16, 168, 512, 484, 592, + 204, 36, 592, 204, 32, 396, 560, 168, + 416, 320, 92, 512, 572, 112, 132, 168, + 484, 484, 168, 168, 204, 484, 132, 168, + 168, 204, 168, 484, 572, 592, 572, 484, + 572, 512, 284, 572, 204, 416, 652, 168, + 524, 524, 168, 652, 204, 196, 512, 132, + 524, 128, 524, 128, 168, 560, 560, 560, + 132, 560, 204, 132, 416, 524, 204, 560, + 512, 168, 416, 524, 264, 560, 264, 168, + 264, 560, 176, 148, 572, 656, 468, 624, + 528, 528, 656, 204, 468, 528, 212, 468, + 528, 468, 92, 572, 572, 212, 580, 584, + 284, 224, 528, 224, 212, 592, 504, 572, + 212, 592, 504, 500, 412, 432, 408, 148, + 224, 504, 148, 228, 432, 432, 408, 228, + 508, 592, 684, 212, 504, 412, 212, 508, + 584, 504, 496, 432, 228, 412, 212, 592, + 284, 212, 500, 496, 592, 228, 228, 592, + 548, 168, 228, 592, 528, 532, 24, 316, + 460, 460, 532, 24, 24, 24, 460, 528, + 284, 532, 592, 528, 24, 184, 184, 624, + 148, 228, 536, 428, 432, 460, 592, 592, + 592, 432, 284, 496, 432, 176, 184, 176, + 228, 228, 228, 508, 204, 228, 36, 592, + 460, 88, 228, 20, 148, 408, 432, 512, + 432, 592, 512, 504, 592, 692, 148, 432, + 580, 512, 432, 504, 508, 20, 148, 532, + 224, 148, 508, 532, 20, 148, 504, 24, + 504, 228, 592, 24, 460, 528, 504, 532, + 532, 528, 460, 532, 436, 688, 404, 688, + 504, 228, 528, 592, 24, 24, 512, 512, + 24, 204, 592, 512, 476, 460, 592, 4, + 316, 92, 656, 24, 476, 92, 24, 396, + 204, 92, 316, 512, 24, 92, 512, 484, + 320, 92, 316, 168, 592, 508, 168, 572, + 592, 508, 216, 436, 216, 572, 92, 396, + 168, 436, 112, 92, 168, 572, 572, 168, + 476, 504, 592, 500, 484, 580, 32, 572, + 484, 580, 8, 196, 196, 4, 228, 176, + 156, 176, 484, 536, 580, 536, 592, 536, + 428, 176, 176, 460, 584, 580, 580, 176, + 536, 192, 592, 192, 228, 156, 4, 32, + 20, 176, 24, 196, 580, 592, 176, 24, + 592, 196, 24, 196, 176, 512, 228, 176, + 4, 32, 196, 512, 228, 228, 272, 224, + 320, 556, 16, 464, 668, 660, 28, 540, + 76, 80, 664, 664, 664, 272, 540, 540, + 216, 540, 196, 28, 216, 28, 28, 668, + 668, 540, 540, 476, 28, 232, 480, 516, + 328, 464, 516, 516, 480, 464, 272, 328, + 480, 480, 540, 540, 480, 120, 540, 232, + 540, 480, 476, 516, 540, 540, 264, 204, + 4, 164, 120, 164, 8, 4, 216, 540, + 8, 8, 216, 28, 8, 540, 476, 512, + 512, 164, 384, 204, 672, 328, 120, 540, + 260, 120, 156, 580, 672, 512, 120, 552, + 268, 224, 552, 328, 196, 260, 540, 504, + 552, 476, 204, 512, 224, 204, 540, 552, + 552, 204, 552, 552, 196, 268, 84, 84, + 196, 540, 8, 84, 120, 580, 8, 540, + 84, 196, 196, 540, 196, 540, 224, 260, + 540, 8, 552, 8, 652, 164, 8, 156, + 552, 204, 224, 204, 580, 8, 164, 204, + 552, 504, 552, 164, 88, 216, 232, 568, + 516, 596, 692, 464, 516, 692, 596, 516, + 688, 692, 568, 660, 688, 200, 596, 660, + 364, 436, 580, 504, 28, 568, 692, 596, + 568, 596, 544, 232, 568, 596, 544, 232, + 692, 372, 568, 516, 308, 516, 288, 292, + 292, 516, 216, 216, 216, 660, 472, 516, + 216, 504, 516, 568, 660, 364, 688, 224, + 544, 516, 308, 568, 224, 516, 544, 568, + 568, 568, 308, 396, 556, 456, 424, 556, + 556, 368, 200, 556, 456, 108, 20, 224, + 20, 24, 688, 372, 556, 456, 688, 532, + 532, 556, 556, 568, 568, 340, 568, 688, + 20, 568, 568, 380, 532, 568, 544, 96, + 568, 200, 224, 504, 200, 568, 596, 504, + 568, 500, 96, 532, 568, 544, 544, 556, + 568, 568, 556, 96, 500, 164, 16, 552, + 280, 476, 216, 328, 420, 644, 516, 372, + 544, 516, 544, 692, 544, 328, 420, 516, + 216, 580, 476, 216, 420, 644, 280, 644, + 544, 692, 420, 552, 420, 672, 580, 204, + 672, 420, 552, 96, 420, 552, 692, 224, + 552, 568, 424, 700, 396, 420, 700, 280, + 96, 544, 420, 700, 700, 544, 192, 556, + 700, 700, 700, 396, 580, 556, 700, 692, + 568, 556, 700, 700, 472, 216, 420, 396, + 420, 204, 692, 404, 472, 272, 216, 396, + 216, 20, 544, 28, 516, 192, 328, 516, + 232, 692, 516, 440, 440, 516, 516, 28, + 216, 28, 632, 656, 544, 672, 644, 544, + 544, 328, 544, 164, 656, 232, 164, 544, + 544, 544, 656, 692, 440, 232, 368, 380, + 544, 544, 380, 544, 440, 272, 556, 216, + 164, 16, 24, 20, 568, 4, 4, 568, + 580, 568, 164, 4, 4, 544, 24, 544, + 568, 504, 544, 28, 216, 568, 512, 568, + 216, 556, 164, 568, 380, 24, 184, 24, + 496, 544, 568, 184, 496, 544, 164, 556, + 556, 700, 260, 568, 152, 224, 132, 520, + 532, 700, 84, 92, 672, 652, 652, 504, + 560, 552, 672, 164, 420, 188, 188, 164, + 420, 652, 672, 552, 504, 672, 552, 164, + 672, 672, 92, 672, 672, 672, 164, 500, + 164, 280, 188, 672, 420, 500, 188, 672, + 420, 188, 496, 420, 164, 504, 652, 84, + 268, 552, 500, 84, 224, 8, 652, 84, + 196, 84, 188, 112, 184, 196, 560, 128, + 560, 132, 584, 132, 520, 128, 84, 156, + 264, 196, 440, 156, 260, 196, 132, 504, + 496, 128, 132, 156, 184, 132, 440, 156, + 168, 560, 164, 8, 132, 560, 168, 184, + 32, 156, 560, 184, 628, 156, 628, 32, + 264, 184, 8, 132, 4, 8, 440, 496, + 8, 132, 176, 560, 548, 132, 132, 560, + 496, 184, 176, 168, 112, 548, 624, 548, + 168, 184, 548, 128, 216, 628, 128, 184, + 548, 548, 548, 164, 184, 552, 560, 264, + 132, 196, 260, 560, 652, 96, 196, 396, + 420, 552, 560, 580, 188, 560, 560, 552, + 580, 196, 188, 420, 284, 204, 420, 204, + 552, 192, 476, 8, 580, 284, 188, 188, + 188, 204, 560, 196, 272, 420, 188, 580, + 580, 192, 420, 16, 164, 580, 184, 188, + 164, 188, 192, 700, 188, 576, 188, 196, + 548, 156, 560, 700, 188, 292, 216, 540, + 548, 188, 576, 576, 540, 700, 456, 184, + 576, 380, 188, 276, 204, 656, 164, 0, + 216, 92, 164, 216, 316, 92, 188, 188, + 188, 320, 92, 188, 204, 316, 24, 380, + 164, 164, 24, 532, 24, 380, 476, 460, + 24, 380, 532, 532, 24, 188, 280, 380, + 164, 544, 196, 164, 196, 668, 700, 380, + 204, 700, 204, 188, 576, 196, 576, 580, + 188, 700, 576, 576, 700, 580, 580, 556, + 532, 576, 372, 460, 692, 576, 532, 372, + 576, 188, 576, 164, 168, 576, 576, 576, + 168, 112, 188, 576, 96, 188, 576, 576, + 436, 580, 580, 556, 112, 108, 160, 460, + 476, 648, 580, 532, 456, 536, 160, 512, + 4, 160, 460, 576, 692, 576, 456, 160, + 20, 176, 176, 176, 20, 160, 176, 456, + 576, 580, 584, 576, 160, 168, 404, 580, + 580, 476, 184, 176, 512, 580, 184, 584, + 436, 168, 576, 576, 576, 576, 576, 548, + 28, 576, 424, 184, 16, 436, 576, 584, + 556, 436, 700, 580, 372, 20, 496, 540, + 204, 648, 584, 664, 80, 664, 476, +}; + +static encode_aux _vq_aux_res0_0d = { + _vq_ptr0_res0_0d, + _vq_ptr1_res0_0d, + _vq_p_res0_0d, + _vq_q_res0_0d, + 3111, 3111 +}; + +static static_codebook _vq_book_res0_0d = { + 4, 176, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4, + _vq_quantlist_res0_0d, + _vq_lengthlist_res0_0d, + &_vq_aux_res0_0d, +}; + + +#endif diff --git a/include/vorbis/book/res0_0e.vqh b/include/vorbis/book/res0_0e.vqh new file mode 100644 index 0000000..df7d84a --- /dev/null +++ b/include/vorbis/book/res0_0e.vqh @@ -0,0 +1,928 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0e_VQH_ +#define _V_res0_0e_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0e[] = { + 0, 0, 0, 0, + 0, 0, -3, 0, + 0, 3, 0, 0, + -3, 0, 0, 0, + 0, 0, 3, 0, + 3, 0, 0, 0, + 0, 0, 0, 3, + 0, 0, 0, -2, + 0, -3, 0, 0, + 0, 0, 6, 0, + 0, -1, -3, -3, + 3, 0, -4, 0, + 0, 3, -4, 0, + 0, 0, 4, -3, + 3, -3, 0, 0, + 0, -6, 0, 0, + 0, -4, -4, 0, + 3, 0, 3, 0, + 0, -4, 4, 0, + 0, 0, 0, -4, + 0, -3, 0, -4, + 5, 0, 3, 0, + 3, 0, 0, 4, + 3, 0, 3, 3, + 2, 0, -3, 3, + 0, 3, 2, 3, + 0, 4, 0, 4, + 0, 5, 3, 0, + -3, 0, 1, -4, + 4, 0, 0, -4, + -2, 2, 3, 0, + 4, 3, 0, 0, + -3, 2, -3, 0, + 0, 0, -4, 4, + -3, -2, 0, 0, + -3, 2, 0, 0, + 3, 3, 0, -2, + -5, 0, 0, 3, + 0, 0, 2, 3, + 0, 0, 0, -7, + 2, 0, 0, -2, + 2, 4, 0, 0, + 0, 2, 0, 3, + 0, -2, -2, 0, + 0, 0, 4, 3, + 0, 3, 5, 0, + -3, -2, 3, 0, + -5, 0, 0, 0, + 7, 0, 0, 0, + 3, 3, 0, 2, + -2, -2, 0, 3, + -3, 0, 3, 3, + 0, -3, 2, 3, + -3, 0, -2, 3, + 0, -4, 0, 4, + 0, 0, -1, 5, + 0, 2, -2, -1, + 0, 4, -1, -2, + -3, 0, 3, -1, + 2, 3, 3, 0, + -3, 0, -3, 0, + 3, -5, 0, 0, + 0, 0, -5, -4, + -4, 0, 0, -3, + -3, -3, 0, -3, + 0, 3, 0, -4, + 0, 3, -3, 3, + 3, -3, 0, 2, + 0, 7, 0, 0, + -2, -5, 0, 0, + -5, -4, 0, 0, + 0, 0, -7, 0, + -2, -3, -3, 0, + -3, 3, 0, -2, + 5, 0, -3, 0, + 0, 0, 3, 5, + 0, 2, 2, -3, + 0, 4, 3, -3, + -3, 6, 0, 0, + -2, 3, 0, 3, + -5, 0, -2, 0, + -3, 4, 1, 0, + -2, 4, -1, 0, + 5, -4, 0, 0, + 2, 0, -3, -3, + 4, 0, -2, -3, + -2, 0, 0, 6, + -5, 3, 0, 0, + -5, 0, 4, 0, + -4, 0, -4, 0, + -3, 0, -6, 0, + -8, 0, 0, 0, + 5, 0, 0, 3, + 7, 1, 1, 0, + 2, 2, 2, 2, + -3, 2, 0, 4, + 5, 2, 0, 1, +}; + +static long _vq_lengthlist_res0_0e[] = { + 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, + 9, +}; + +static long _vq_ptr0_res0_0e[] = { + -1, -2, -3, -4, -5, -6, -7, -8, + -9, -10, -11, -12, -13, 10, 7, -16, + 19, 48, 62, -20, 39, 85, 63, 1, + -25, -26, -27, 0, 7, 61, -31, -32, + 1, -34, 32, -36, 80, -38, -39, -40, + -41, 32, -43, -44, 10, -46, -47, 60, + 63, 62, -51, -52, 62, 89, -55, -56, + -57, -58, -59, 33, 43, 16, -63, 33, + 90, -66, -67, -68, -69, 10, 83, -72, + -73, -74, 10, 43, -70, -78, -79, 1, + -75, 48, 67, -84, 10, 16, -87, -88, + 16, -90, -91, 10, -93, -94, 60, 90, + -97, 89, 83, -98, -101, 60, -103, 62, + -99, -106, -107, -108, -109, 80, -111, 60, + 83, -114, 80, -94, -112, -116, -119, -120, + 60, -122, -74, 48, 64, -94, -123, 5, + -129, -130, 34, -132, -133, 34, -127, 67, + -137, -138, -139, -140, -141, 32, 35, 80, + -145, -146, -147, 80, 34, 37, -151, -152, + -153, -154, -36, 14, 3, 53, -159, -160, + 34, 3, -163, 80, -155, 3, -167, 50, + 53, -170, -171, -133, -164, 70, -167, -172, + 37, 50, -179, -180, -181, -149, -175, -184, + 37, 53, -187, -188, 86, -182, -191, 50, + -189, -194, -195, 86, -197, 53, 55, -200, + -201, 0, -192, -204, 3, -206, -207, -208, + -209, 33, -32, 24, -211, -141, 83, -216, + -217, -168, 29, 75, -218, 14, -223, 53, + -221, -226, -227, -228, 33, -230, -75, 29, + -231, 44, -232, 17, 50, -195, -221, 53, + -241, -242, -243, -244, -245, -246, -247, 33, + 21, 54, -251, -252, 86, -248, -253, -256, + -257, 50, -254, -260, 54, -258, -263, -264, + 43, 50, 43, -268, -269, -270, -271, -272, + -273, 0, 43, -276, 50, -273, 83, 6, + 43, 54, -283, 34, 4, -286, -287, 75, + 52, -290, 38, -292, -257, 14, -293, -294, + -297, -298, -299, -283, 16, 43, -303, -304, + -305, -306, -307, 15, 8, 52, -301, 69, + -313, -314, -315, 50, -310, -281, 11, -320, + 52, -318, 15, 18, -325, -326, -327, 33, + 16, -330, -331, -274, -321, -332, -61, 11, + -337, -133, -335, 24, -339, -342, -343, -122, + -592, -340, 43, 7, -349, -350, -351, 10, + -353, 19, 7, -356, 39, -346, 16, -360, + -361, -362, -363, -133, 11, -364, -365, -75, + 0, -368, -371, -130, -369, 24, -375, -376, + -130, -373, -311, 1, 0, -382, -383, 64, + 69, -386, -387, -388, -274, -380, 7, -392, + -390, -389, 20, -396, 64, -393, -124, 24, + -401, -402, -403, -404, -405, -406, 15, 11, + -409, 61, 24, -323, -410, -412, 8, 18, + -417, -418, 16, -420, -421, -274, -413, -422, + -425, 16, -423, -428, -429, -430, -431, -432, + -433, -434, -435, -436, -437, 32, -439, 80, + 35, 80, 63, -444, -445, -446, -440, -426, + 47, -450, -451, 47, 87, 14, 58, -456, + -451, 16, -457, -460, 3, -462, -463, -464, + 30, -466, 35, -448, 14, -470, 30, -472, + -473, 47, 3, 58, -477, -478, -479, 35, + -481, 37, 47, -484, 37, -486, 3, 47, + -489, -490, -491, -492, 35, 14, -274, -496, + -184, -494, 51, -188, -497, -502, -503, -504, + -505, -130, 14, 37, -509, -510, -511, 80, + 70, -514, 47, 40, -517, -507, -515, -514, + 14, 80, -523, -524, 63, 43, -527, -528, + -529, 37, 51, -532, -533, -534, 46, -514, + 40, 88, -539, -535, -1054, -536, -541, -454, + 14, 88, -547, -548, -479, 43, -551, -552, + -553, 28, 13, -556, 58, -549, -559, 30, + -561, 9, -563, 9, -520, -566, -567, -568, + -569, -570, -571, 13, 84, -574, -283, -351, + 46, -578, 46, -396, -575, -582, 9, -584, + -585, -586, 13, 18, -589, -284, -580, -590, + -1442, -591, -593, -596, -597, -598, -599, 28, + 64, 84, -603, -604, 13, -407, 25, 84, + -515, -610, 9, -612, -586, 1, 4, -616, + -617, 58, -613, -620, -621, -622, -623, -624, + 28, -626, 19, 11, -353, -627, 10, -606, + -630, 10, -635, -636, -637, 34, -633, 1, + -460, -407, -641, -644, -645, -646, -647, -648, + -649, 9, 58, -652, -653, -654, -655, -656, + 75, 38, 75, -660, 50, -662, 38, 50, + 86, -666, -667, -668, -669, -290, -642, 52, + -673, 51, -675, -676, 44, -670, -631, -677, + -681, 46, 44, 51, -685, -681, 10, -686, + -660, 84, 39, -692, -693, -694, 34, -696, + 46, 50, -699, 37, -690, -702, 0, -486, + 29, -706, 3, -704, -709, -710, 0, -712, + -713, -649, -707, 46, -717, -718, 46, 4, + -721, 52, 29, -724, -725, -726, -727, -130, + -722, -536, -731, 46, -729, -576, -732, -415, + -734, -738, -739, -681, 13, -355, -604, 29, + -745, -746, -747, -748, -201, -743, 38, -752, + -753, 25, 75, -756, -757, -758, 25, 44, + -761, 38, -749, -764, -765, 30, -762, 9, + -290, 4, 40, -772, -773, -774, -775, -776, + -777, 25, 79, -780, 30, -770, -783, 25, + -785, 79, -769, 25, -789, -790, -791, -785, + 17, 13, 35, 35, 35, -798, -799, 78, + -801, 79, 81, -804, -805, -785, -793, 87, + -492, -806, -440, -809, 81, -814, -815, -816, + -817, -818, 32, 12, -821, -822, 33, 53, + 42, -826, -63, 40, 1, 53, -201, -604, + 1, -834, -835, -836, -818, 29, 79, 79, + -837, 26, -843, 78, -838, -840, 82, 86, + -849, 26, -851, -852, -853, -785, -323, -493, + -857, 42, 53, -855, -861, -862, -863, -864, + -865, -866, -867, 32, -869, 12, 56, -872, + -873, 12, -827, -743, -877, -878, -879, 32, + -881, -44, -875, -882, -885, 1, -883, -867, + -886, -890, -891, 0, 1, 56, -895, -896, + -897, -898, -44, -493, 39, -902, -903, 39, + 62, -906, 19, -899, 10, -910, -911, -912, + -913, 56, -906, 0, 57, 7, -919, 57, + -453, -16, 15, -924, 56, 57, -927, -928, + -929, -930, -931, -932, -933, -934, 32, -922, + -937, 82, -935, -940, -941, 35, 21, -678, + 0, 29, -947, -440, 40, 82, -951, 12, + 82, -954, -955, 12, -957, -958, 78, 57, + -961, 82, -963, -964, 78, -948, 29, -968, + -969, 78, -966, -972, 79, -974, -975, 35, + -970, 82, -979, -980, 0, -982, 2, -924, + 0, -925, -984, 65, -989, -990, -991, -992, + -993, 27, -995, -649, -986, 45, -999, 30, + -1001, -1002, -1003, 30, -996, -1006, -1007, -1008, + -1009, 76, -1011, 13, -999, -1004, -1013, -1016, + -1017, 77, 44, 9, -1021, -1022, 76, -1019, + -1025, 13, 0, -1028, 28, -1030, -1031, 30, + -1023, 35, -1018, -1036, -1037, -1038, 27, -964, + 23, -1040, -1043, -1044, 76, 77, -1047, -1048, + -1049, -941, -1041, 87, -1053, 81, 75, -1053, + -655, 38, -1059, -1060, -1061, -1062, -1063, -1064, + -1065, -1044, -1057, 44, -1028, 23, -1069, -1072, + -1073, -1074, 76, -1070, -906, -1075, 9, 7, + -1081, -1082, 28, -1078, -903, 52, 23, -690, + -1086, -586, 23, 19, -943, -1090, 23, 77, + -1094, 0, 63, -941, -1096, 6, -1103, -1104, + -1105, -1106, -1107, -1108, 76, -1092, 5, 22, + -1113, -1114, -1115, -1116, 36, 56, -1119, 84, + -1111, -1122, 36, 84, -1125, -1126, -1127, 40, + -1120, 22, 84, -1132, -1133, -1134, -1135, -1136, + -1137, 36, -1139, -1140, 27, 41, 27, -1144, + -1145, -1146, 76, 77, 77, -1147, -1129, -1150, + 77, 41, -1155, -1156, 36, -1158, -1153, -1151, + -1159, -1162, 2, 94, -1074, 38, -1165, -1168, + -1169, -1170, 76, 13, -1147, -1166, 45, -1176, + -1177, -1146, 0, -1180, 36, -1182, -380, -1178, + -1185, 41, 2, -1188, -1189, 41, 59, 2, + -1193, -1194, -1195, -1196, -1197, 24, -1199, -407, + -1183, -1200, 11, -1202, -1201, 1, 56, -1208, + -955, -1204, 54, -339, -1213, -1214, -1215, 24, + 49, 24, -1219, -1220, 36, -1222, -1223, -1224, + 31, 41, -1217, -1228, -1229, -951, -260, 41, + -1111, -1234, -951, -1232, 2, -1238, -1239, 12, + -1162, -1235, -1243, 82, -1245, -1246, -1247, -1248, + -1249, 26, 66, -1162, -1241, -1254, -1255, 41, + -1257, -846, -1252, 2, -195, -1262, 26, 22, + -1189, -1263, -1265, -1268, -1269, -1270, -1271, -1272, + 21, 29, -1275, -1276, -1277, -1278, -1279, -1280, + 76, 13, -1283, -1284, 29, -1266, 13, -1285, + -1281, 14, 59, -1292, -1293, -1294, 29, -1289, + -1297, -1298, 36, -948, 17, -1085, -1303, -627, + 5, -1306, -1307, 36, -1304, -515, -721, 84, + 29, -1314, -1315, -1316, -1317, 21, 29, -273, + 29, -1322, -1323, -1324, -231, -1319, -1325, 85, + -948, 15, 85, -1109, -1329, -1334, -1335, -1336, + 93, 31, -1339, 36, 83, 85, -1343, -1344, + 93, -1346, -1347, 48, 5, -1350, -1351, -1352, + -1353, -1354, 24, 49, -1357, 24, -493, 11, + -1361, -364, -1358, 31, -1365, -1366, 31, 96, + -1369, -127, -1362, 92, -1367, -1370, -1373, -1376, + -1377, -1378, -1379, 31, -1281, -1380, -1290, -719, + -1385, -1386, -1387, -1388, -1389, -1390, -1391, 21, + 31, -1394, 31, -1396, -1363, -582, -1397, -1400, + 59, -1398, -1403, 93, -1405, -1392, -1401, 5, + -1409, -1355, 21, -1410, -1190, -1411, 54, -1416, + 21, 93, -1419, -1420, -1421, -1422, -1423, -1424, + -787, 52, -1427, 75, 75, 22, 38, -1432, + -1433, -1434, -1435, -1436, 22, 42, -1439, 26, + 15, -1214, 9, -1440, -1443, -1446, -1262, 44, + 23, -1448, -1451, 0, -1262, -1449, -1455, 1, + 22, -824, -1456, -1458, -1461, 22, -1463, 26, + 21, -1262, -1464, -1468, -1215, -1466, -822, -1469, + 55, -1474, -1475, 21, 23, -1471, -1479, -1480, + -1481, -1482, -1456, -1477, 94, 23, -1487, 23, + -1489, 49, -1491, 49, 96, -1494, -1495, -1496, + 22, -1498, 22, 49, -373, 23, -1532, 21, + -1503, -1506, -1507, -1508, -1509, 25, -1504, -1038, + 9, -1514, -1515, -787, 59, -1518, 26, 42, + -1521, 0, -1523, 30, -1516, 49, -997, -1528, + -1529, 0, -1531, -1523, -676, -997, +}; + +static long _vq_ptr1_res0_0e[] = { + -1102, -744, -427, -240, -136, -37, -24, -23, + -22, -19, -18, -15, -14, 63, 63, -14, + 63, 74, 63, -16, 63, -17, 64, 7, + -30, -28, 7, 3, -22, 67, -33, 7, + 60, -35, 63, 63, 60, -105, -54, -50, + -42, 89, -45, 63, 62, -49, -48, 89, + 89, 89, 71, -53, 90, 90, -100, -65, + -62, -61, -60, 16, 16, 72, -64, 71, + 71, -86, -83, -71, -32, 60, 67, -77, + -61, -75, 72, 72, -29, -80, 16, 72, + -61, 92, 92, -85, 71, 71, -85, -89, + 90, -92, 72, 90, -96, -95, 72, 72, + -95, 72, 92, -82, -102, 62, -64, 71, + -81, -118, -113, -110, 63, 64, -22, 64, + 74, -115, 89, -97, -17, 67, -128, -121, + 63, -125, -124, 5, 72, -124, 74, 74, + -131, 64, 70, -75, -94, 72, 67, 74, + -205, -178, -144, -143, -142, 53, 53, 53, + -169, -150, -148, 37, -149, 50, -165, -162, + -158, -157, -156, 74, 60, 60, -161, 53, + 60, 53, -133, 72, -135, -166, -168, 72, + 72, -176, -174, -173, -134, 72, 70, -126, + -177, 70, -199, -193, -186, -183, -117, -185, + 95, 95, -190, -185, 95, -104, -185, 95, + -76, -196, 6, 55, -198, 6, 6, -203, + -197, 6, -21, 53, 6, -225, -213, 72, + -210, 53, -157, 74, -202, -215, 48, -222, + -115, 89, 48, -233, -214, 5, -53, 90, + 48, -236, -229, 72, 50, -166, -168, 5, + -224, 94, -220, 5, -237, -239, -235, 55, + -341, -296, -267, -262, -250, -249, -198, 6, + -235, 55, -255, -249, -198, -238, 48, -259, + -198, 6, -234, -198, 6, -212, -266, -265, + 54, 54, 6, -285, -284, -282, -280, -275, + -274, 8, 8, -277, 8, -279, 61, 8, + -281, 8, 50, 8, 8, -291, -289, -288, + 54, 52, 4, -288, -260, 67, -29, 16, + -324, -302, 70, -276, 67, 67, -322, -312, + -311, -309, -308, 69, 69, -308, -300, 72, + -319, -317, -308, 69, -295, 69, 16, -281, + 8, -60, -323, 8, -336, -329, -328, 54, + 54, -334, 72, -281, -316, -278, 54, 67, + -327, -167, 43, 67, -301, -359, -348, -347, + -1502, -338, 5, 64, -358, -355, -352, 20, + -354, 20, 20, -353, 20, -221, 20, -385, + -370, -367, -347, -124, 5, -221, -357, -124, + -366, -345, -374, -177, -333, 5, -381, -378, + 72, 1, -173, 5, 5, 72, -384, 70, + 70, -400, -398, -391, -390, -379, 8, -395, + -394, -377, 8, -394, 8, -201, 20, 1, + -419, -416, -414, -411, -408, -394, 8, 71, + -394, 8, 71, -394, -407, -399, -415, 69, + 20, 8, 69, -61, -424, -394, -63, -397, + 20, 8, -372, -565, -546, -501, -488, -461, + -443, -442, -441, -438, 87, 35, -440, 87, + 87, 73, 73, -455, -454, -449, -448, -261, + 87, -442, -452, 63, 63, 61, 63, -459, + -454, -453, 20, 58, 63, -476, -469, -465, + 35, -467, 47, 88, 16, -471, 88, -475, + -474, 58, 58, 88, -485, -483, -480, 3, + -482, 3, 3, 87, 47, -487, 51, 88, + -495, -440, 53, -184, 95, 8, -493, -499, + -498, -468, 95, 51, -458, -526, 86, -521, + -508, -507, 85, 70, -516, -513, -512, 91, + 91, -512, 91, 85, -519, 91, -506, 70, + 20, -522, 91, -383, 70, -520, -531, 91, + -530, 88, 88, -538, -535, 70, 47, -537, + 84, 91, -543, 63, -1057, 43, -525, -545, + 84, 63, -558, -550, 58, 20, 39, -555, + -554, 58, 58, -442, 73, -544, -560, 58, + -562, 51, -475, 88, 84, -643, -619, -595, + -581, -573, -415, 46, 20, -577, -576, -572, + 8, -579, 69, 69, -564, -583, 18, -588, + -587, 20, 7, 20, -392, -323, -557, -542, + 44, -518, -500, -609, -602, -347, -600, 20, + 20, -103, -352, -354, 20, -601, 44, 85, + -607, -611, 58, -615, -614, 84, 7, 4, + -347, 64, -608, -634, -355, -628, -625, 64, + 7, -347, 64, 85, -600, -618, -629, -1057, + -605, 16, -640, -383, -22, 64, -60, -638, + -14, -85, 1, -708, -691, -651, 51, -650, + 46, 4, 4, -665, -661, -659, -658, -657, + 52, 52, 51, 51, 52, -663, 86, -664, + 51, -684, -680, -674, -672, -671, -639, 4, + 52, 4, -672, -671, 4, -632, -540, -594, + -682, 52, -683, 52, -688, -683, 84, 20, + -683, 19, 19, -701, -698, -695, 50, -697, + 51, 51, -697, 51, -689, -703, 4, -705, + 19, -650, 4, -689, -723, -711, 34, 88, + -716, -715, -700, 4, -720, -719, 18, 18, + -719, 18, 40, -737, -735, -733, -730, -384, + 85, -728, -384, 70, -714, 69, -687, 8, + -679, -721, -315, -660, 19, -740, -353, 20, + -860, -813, -771, -751, -750, -353, 42, -767, + -755, -754, 38, -763, -760, -759, 51, 51, + -759, 51, -742, -759, 51, 38, -741, -768, + -676, 17, 17, -797, -788, -787, -782, -779, + -778, 81, 81, -778, 81, -769, -784, 95, + -498, 95, 18, 42, -796, -795, -794, -492, + 18, 18, 42, 2, 81, -803, -800, 81, + -802, 82, 82, -810, -808, -807, -792, 95, + 87, -786, -812, -781, 87, -833, -825, -820, + 90, -819, 66, 66, 55, -823, 66, -824, + 66, -829, -828, 20, 71, -830, -832, -827, + 6, -847, -841, -839, -838, 13, 66, -440, + -831, -842, -844, 82, -846, -811, 66, -848, + -850, 95, -142, -858, -856, -185, 20, -394, + 53, 95, 66, -854, -988, -926, -894, -876, + -871, 57, -868, 56, -870, 62, 62, -103, + -64, 71, -520, -520, -887, -103, -880, 1, + -884, -870, -874, -859, 56, 62, -845, -889, + -766, -893, -892, 56, 56, 7, -921, -909, + -908, -901, -900, 18, 62, -905, -904, 65, + 65, -904, 65, -792, 7, -918, -916, -914, + 7, 65, 7, -493, -917, 65, -904, 65, + -278, -923, -920, -925, 73, 73, -978, -967, + -953, -950, -946, -939, -936, -924, 73, -915, + -924, 73, -907, -936, -924, 73, -770, -219, + -942, 83, 73, -949, 5, 87, -952, 56, + 56, -962, -956, 57, -960, -959, 68, 68, + 57, 68, -937, -949, 87, -221, 14, -971, + 68, -801, -965, -973, 2, -977, -802, 82, + -945, 2, -981, 7, 2, -983, 73, -985, + -976, -987, -944, 73, -1058, -1035, -1000, 88, + -994, 45, -998, -997, -938, 4, 4, 45, + -1026, -1020, -1005, -702, -888, -1015, -1012, -1010, + 45, 4, 4, 45, -1011, -736, -447, -999, + -1011, 45, 17, 17, -1024, -553, 58, -1018, + 58, 4, -1027, -1029, 73, -1033, -556, 73, + -676, -556, -769, -1042, -1039, 81, 68, -812, + -769, -1034, -1046, -1045, 73, 73, 88, -1055, + -1052, -1051, -1032, 73, -1051, 73, 44, -982, + -1054, 44, -1097, -1095, -612, -1087, -1080, -1071, + -1068, -987, 52, 52, -987, 52, -1067, -1079, + -1076, -917, 65, -1066, -917, -1056, -1077, 73, + -1084, -906, 65, -1050, -906, 67, 67, -1089, + -1085, -1091, 94, 7, -768, 5, 38, -987, + -1093, -1098, -1099, -1079, -1088, 67, -1483, -1418, + -1267, -1192, -1131, -1112, -1084, -1190, 6, 6, + -1124, -1121, -1118, -1117, 57, 57, -1117, 57, + -1110, -1123, 65, 65, -1130, -1123, -906, 65, + -1101, 52, 56, -1175, -1167, -1154, -1152, -1143, + -1138, 59, -1142, -1141, 59, 59, 2, -1149, + -1148, -1147, 59, 59, 2, -1137, -657, -1085, + -1153, 68, -1164, -1157, 41, -1161, -959, -1128, + -1100, -959, 68, 5, -1122, 5, -1163, -1172, + -1171, 59, 45, 59, -1174, -235, 59, -1181, + -1179, 40, 67, 40, 2, -1187, -1184, 38, + -1186, 5, 5, -1191, -1190, 94, 94, 59, + -1218, -1212, -1207, -1203, -1198, 11, -1202, -873, + 4, -1173, 1, -1205, -1160, -1206, 5, -1130, + -1117, -1083, -1101, -1210, 5, -822, -1216, 66, + 66, 55, -1244, -1227, -1221, 68, -1206, 56, + -1225, 2, 6, -1233, -1153, -1231, 55, 56, + -198, -1237, -1236, -1230, 56, -1240, 2, 68, + -1242, -1226, 68, 57, -1264, -1261, -1253, -1251, + -1250, 68, 68, 66, -1211, -1256, 68, 66, + -1162, -1259, -246, 66, -249, -1216, 66, 55, + -1038, 75, -1260, -1342, -1302, -1274, -1273, 36, + 31, 36, 39, -1291, -1288, -1282, -1281, 40, + 17, 17, -1286, -770, 17, -1258, -770, -1209, + -1290, 18, 17, -1296, 17, -1122, 65, -792, + -1290, -1299, 17, 17, 67, -1300, -1313, -1305, + -1301, -1309, -607, 85, -1295, -1311, -589, -1312, + 85, -1333, -1321, -1320, -1318, 5, -948, -1085, + 93, -126, -1328, -1327, -123, -1310, -1308, 48, + -1330, 61, 5, -344, 18, -1341, -1338, -1337, + 36, 36, -948, 5, -1332, 74, -1375, -1349, + -1345, -1348, 92, 96, 92, 71, -1360, -1359, + -1356, -1355, 96, 96, -1348, 92, -323, 49, + -1364, -1363, -792, 5, -1368, -1367, 74, 74, + -1372, -1371, 83, 74, -1371, -1340, -1326, -1384, + -1382, -1137, -1141, 59, -769, -792, 5, -792, + -1415, -1408, -1402, -1395, -1393, -1392, 5, 96, + 96, 5, 17, -1399, -235, -792, -1383, -235, + 5, -1381, -1404, 96, 59, -1407, 5, 96, + -1412, -1407, 83, -1406, -1391, -1374, 67, -1417, + 92, 92, -1505, -1473, -1431, -1429, -1428, -1426, + 38, -1414, 38, 42, 26, -1430, 94, -1460, + -1450, -1441, -1438, -1437, 49, 49, -1437, 49, + 54, -1445, 59, 61, -1425, -1216, -824, 18, + -1447, -721, -1452, 1, -1454, -1444, -1457, -1259, + 92, -1259, -82, -339, -1465, -1462, -195, 55, + -1086, -1467, -1459, -1470, 55, -1453, -1472, -1413, + 66, -1478, -1476, 23, -235, -1287, -1493, -1488, + -1486, -1485, -1348, -1014, 17, 92, 94, 5, + -1490, 94, -1492, 92, 92, -1356, -1500, -1497, + 42, -1499, 5, 5, 49, 17, -1526, 17, + -1501, -1527, -1520, -1513, -1511, -1249, -1484, 59, + -1510, 75, -1517, 2, 4, -1519, 2, 2, + -1525, -1522, -1191, 59, 94, -1190, -1524, -1512, + -1331, -1530, -1533, 4, 94, -1516, +}; + +static long _vq_p_res0_0e[] = { + 188, 136, 172, 240, 40, 28, 40, 40, + 40, 40, 40, 40, 40, 40, 28, 76, + 76, 192, 248, 156, 156, 340, 252, 4, + 0, 12, 12, 0, 28, 244, 28, 240, + 4, 128, 128, 240, 320, 4, 128, 240, + 128, 128, 40, 40, 40, 240, 240, 240, + 252, 248, 360, 248, 248, 356, 40, 132, + 64, 132, 132, 132, 172, 64, 132, 132, + 360, 4, 4, 240, 40, 40, 332, 40, + 40, 40, 40, 172, 332, 4, 4, 4, + 172, 192, 268, 40, 40, 64, 360, 64, + 64, 40, 40, 40, 240, 240, 240, 360, + 356, 356, 332, 332, 240, 240, 248, 248, + 332, 320, 252, 320, 320, 320, 240, 240, + 332, 320, 320, 240, 332, 332, 40, 252, + 240, 40, 40, 192, 256, 240, 192, 20, + 256, 136, 136, 136, 136, 136, 20, 268, + 320, 136, 128, 128, 128, 128, 140, 320, + 320, 148, 320, 320, 136, 148, 136, 240, + 320, 320, 320, 56, 12, 212, 136, 136, + 136, 12, 320, 320, 56, 12, 200, 200, + 212, 136, 136, 136, 56, 280, 200, 56, + 148, 200, 200, 200, 148, 200, 56, 148, + 148, 212, 344, 344, 344, 20, 200, 200, + 56, 344, 344, 344, 212, 212, 220, 0, + 0, 0, 56, 12, 12, 128, 132, 212, + 132, 132, 4, 96, 96, 128, 332, 240, + 212, 212, 116, 300, 116, 56, 212, 212, + 56, 132, 132, 132, 132, 172, 172, 116, + 116, 176, 56, 68, 200, 344, 56, 212, + 24, 152, 132, 132, 132, 132, 132, 132, + 84, 216, 344, 344, 344, 84, 84, 200, + 200, 200, 84, 216, 216, 68, 200, 172, + 172, 200, 172, 0, 0, 0, 200, 172, + 0, 0, 172, 200, 200, 0, 332, 24, + 172, 216, 136, 136, 16, 152, 300, 300, + 208, 152, 152, 200, 200, 56, 56, 56, + 60, 136, 200, 136, 64, 172, 208, 60, + 60, 60, 60, 60, 32, 208, 172, 276, + 200, 200, 200, 200, 172, 216, 44, 208, + 208, 44, 60, 72, 172, 132, 132, 132, + 64, 172, 172, 172, 44, 56, 64, 44, + 200, 136, 44, 96, 96, 40, 256, 40, + 36, 96, 172, 28, 40, 40, 40, 40, + 76, 76, 28, 156, 156, 172, 64, 136, + 172, 136, 136, 136, 44, 44, 44, 172, + 0, 56, 200, 136, 96, 96, 136, 136, + 136, 96, 276, 4, 0, 256, 256, 256, + 276, 256, 172, 172, 172, 0, 28, 28, + 28, 0, 80, 256, 256, 96, 256, 96, + 276, 60, 60, 60, 60, 60, 60, 44, + 244, 244, 96, 72, 96, 44, 32, 72, + 64, 64, 64, 172, 172, 172, 96, 44, + 64, 64, 4, 348, 148, 348, 12, 320, + 320, 320, 128, 128, 128, 128, 320, 320, + 140, 320, 252, 140, 140, 140, 140, 44, + 188, 348, 188, 188, 348, 56, 232, 188, + 188, 64, 56, 12, 12, 120, 140, 120, + 120, 140, 140, 348, 56, 120, 120, 188, + 188, 188, 12, 232, 148, 140, 140, 140, + 148, 148, 188, 188, 148, 204, 12, 188, + 140, 148, 148, 140, 140, 56, 172, 148, + 148, 172, 204, 344, 172, 136, 148, 188, + 136, 136, 56, 148, 320, 320, 320, 320, + 280, 188, 188, 160, 148, 148, 160, 188, + 56, 320, 252, 252, 252, 172, 148, 148, + 148, 148, 204, 184, 184, 184, 184, 188, + 160, 352, 188, 188, 300, 160, 160, 232, + 56, 352, 112, 12, 140, 172, 112, 112, + 112, 112, 52, 232, 232, 172, 120, 120, + 204, 36, 36, 36, 56, 156, 232, 184, + 256, 72, 184, 52, 336, 136, 136, 40, + 184, 184, 184, 256, 40, 36, 36, 52, + 52, 52, 52, 72, 16, 16, 40, 40, + 36, 336, 40, 112, 112, 112, 112, 112, + 256, 336, 52, 52, 52, 44, 100, 336, + 160, 36, 36, 52, 52, 4, 16, 232, + 232, 232, 4, 112, 112, 112, 112, 112, + 112, 76, 76, 44, 76, 44, 40, 100, + 40, 40, 136, 136, 136, 136, 40, 4, + 12, 44, 44, 148, 152, 36, 36, 36, + 36, 36, 232, 300, 300, 152, 152, 300, + 300, 152, 300, 200, 200, 152, 152, 200, + 344, 152, 152, 152, 152, 152, 44, 208, + 204, 204, 176, 176, 176, 172, 100, 44, + 184, 184, 176, 204, 184, 184, 40, 40, + 200, 336, 156, 136, 136, 136, 136, 184, + 184, 200, 148, 148, 156, 0, 0, 204, + 116, 12, 12, 116, 352, 0, 0, 184, + 36, 36, 116, 184, 184, 184, 184, 16, + 208, 208, 116, 136, 184, 136, 136, 136, + 116, 336, 184, 184, 160, 184, 116, 72, + 156, 184, 184, 184, 52, 156, 52, 116, + 344, 120, 36, 0, 0, 116, 152, 120, + 300, 100, 300, 100, 100, 100, 100, 176, + 152, 152, 116, 120, 120, 120, 116, 36, + 152, 16, 160, 100, 120, 316, 120, 100, + 100, 100, 316, 120, 120, 160, 100, 100, + 316, 316, 16, 100, 316, 316, 316, 316, + 68, 52, 140, 140, 140, 312, 312, 312, + 316, 316, 324, 316, 316, 316, 52, 348, + 140, 52, 140, 52, 324, 4, 128, 128, + 128, 128, 128, 48, 212, 132, 132, 212, + 168, 132, 132, 160, 4, 212, 0, 52, + 4, 128, 128, 128, 128, 116, 316, 316, + 116, 104, 312, 312, 316, 116, 328, 344, + 104, 104, 316, 316, 316, 316, 72, 56, + 168, 168, 212, 56, 48, 40, 128, 48, + 128, 224, 128, 128, 48, 48, 224, 48, + 48, 48, 160, 116, 40, 4, 128, 128, + 40, 40, 116, 160, 4, 4, 56, 128, + 160, 4, 0, 0, 4, 224, 260, 40, + 76, 40, 40, 56, 156, 156, 156, 156, + 248, 76, 76, 56, 40, 224, 224, 224, + 224, 224, 76, 0, 228, 28, 228, 228, + 56, 252, 60, 224, 224, 228, 128, 128, + 224, 128, 128, 128, 128, 128, 128, 244, + 328, 328, 244, 140, 140, 140, 84, 100, + 0, 116, 140, 140, 160, 328, 48, 48, + 328, 228, 48, 48, 312, 312, 312, 228, + 328, 328, 312, 312, 312, 160, 116, 312, + 312, 312, 116, 316, 316, 140, 140, 140, + 56, 328, 28, 8, 0, 8, 8, 224, + 0, 228, 56, 260, 120, 120, 36, 120, + 108, 108, 36, 36, 20, 180, 120, 120, + 304, 120, 0, 120, 244, 304, 304, 304, + 304, 304, 52, 52, 120, 60, 80, 308, + 308, 308, 176, 36, 304, 304, 304, 36, + 52, 52, 0, 112, 112, 120, 120, 120, + 36, 140, 176, 312, 108, 108, 108, 312, + 92, 92, 308, 304, 304, 308, 324, 140, + 140, 140, 92, 348, 324, 324, 300, 324, + 152, 152, 112, 304, 304, 304, 304, 112, + 304, 304, 152, 176, 112, 92, 92, 260, + 304, 304, 304, 92, 76, 92, 36, 28, + 112, 112, 112, 152, 156, 208, 92, 156, + 92, 52, 92, 76, 100, 376, 92, 308, + 152, 0, 252, 140, 152, 24, 164, 144, + 328, 304, 336, 304, 304, 100, 20, 88, + 144, 228, 144, 144, 144, 224, 336, 336, + 88, 144, 144, 336, 160, 160, 160, 160, + 88, 88, 336, 108, 108, 308, 108, 108, + 144, 144, 164, 108, 108, 164, 108, 304, + 304, 304, 304, 308, 308, 308, 88, 88, + 308, 164, 228, 144, 144, 164, 164, 152, + 88, 8, 8, 376, 304, 152, 152, 304, + 304, 304, 304, 52, 308, 376, 180, 144, + 304, 304, 0, 144, 144, 0, 0, 0, + 164, 164, 8, 164, 164, 164, 236, 8, + 44, 48, 44, 48, 96, 96, 48, 44, + 0, 0, 44, 44, 0, 4, 224, 48, + 48, 88, 216, 96, 96, 96, 96, 96, + 196, 96, 48, 124, 144, 164, 124, 164, + 124, 164, 96, 164, 48, 48, 216, 164, + 88, 224, 48, 88, 8, 48, 48, 48, + 8, 88, 228, 328, 104, 164, 104, 104, + 104, 104, 264, 8, 88, 164, 164, 164, + 328, 328, 96, 8, 344, 104, 104, 88, + 164, 88, 300, 116, 52, 84, 84, 84, + 84, 116, 116, 304, 304, 304, 304, 304, + 304, 52, 116, 116, 116, 300, 52, 132, + 52, 56, 236, 116, 116, 116, 116, 56, + 144, 144, 144, 160, 68, 208, 44, 44, + 20, 144, 144, 144, 208, 160, 208, 336, + 116, 116, 372, 84, 84, 84, 116, 32, + 116, 340, 116, 116, 116, 0, 0, 340, + 160, 60, 340, 100, 244, 144, 124, 372, + 372, 124, 144, 144, 332, 340, 44, 192, + 372, 192, 192, 192, 20, 44, 96, 96, + 384, 96, 96, 196, 96, 96, 56, 44, + 44, 44, 56, 124, 124, 124, 124, 384, + 20, 20, 56, 368, 384, 56, 244, 144, + 124, 124, 124, 124, 52, 52, 236, 16, + 384, 124, 84, 84, 84, 84, 84, 84, + 124, 68, 124, 124, 124, 36, 36, 236, + 236, 36, 372, 372, 124, 124, 68, 20, + 196, 196, 84, 84, 376, 84, 216, 84, + 84, 372, 96, 104, 300, 100, 100, 100, + 100, 208, 300, 300, 300, 88, 152, 168, + 196, 88, 88, 88, 88, 168, 104, 104, + 60, 96, 36, 60, 244, 168, 104, 176, + 92, 92, 0, 0, 104, 92, 4, 4, + 88, 168, 88, 88, 88, 88, 104, 104, + 84, 104, 92, 96, 96, 84, 132, 92, + 220, 84, 84, 84, 92, 56, 92, 88, + 88, 88, 88, 300, 376, 92, 92, 92, + 376, 196, 196, 196, 384, 88, 88, 168, + 88, 88, 88, 196, 96, 92, 176, 84, + 84, 108, 100, 108, 100, 100, 92, 108, + 36, 100, 100, 100, 236, 104, 104, 168, + 0, 0, 120, 120, 236, 196, 180, 236, + 0, 0, 120, 120, 176, 180, +}; + +static long _vq_q_res0_0e[] = { + 384, 8, 232, 32, 148, 288, 240, 4, + 256, 156, 248, 76, 28, 252, 252, 28, + 252, 296, 252, 76, 252, 296, 256, 28, + 4, 252, 28, 12, 252, 268, 252, 28, + 240, 240, 252, 252, 240, 136, 4, 360, + 240, 356, 240, 252, 248, 248, 252, 356, + 356, 356, 284, 356, 360, 360, 248, 4, + 284, 288, 172, 64, 64, 288, 360, 284, + 284, 360, 284, 288, 4, 240, 268, 4, + 64, 172, 288, 288, 244, 172, 64, 288, + 64, 368, 368, 64, 284, 284, 284, 288, + 360, 240, 288, 360, 356, 360, 288, 288, + 360, 288, 368, 268, 360, 248, 360, 284, + 192, 136, 356, 240, 252, 256, 252, 256, + 296, 240, 356, 356, 192, 268, 172, 256, + 252, 240, 256, 20, 288, 256, 296, 296, + 288, 256, 280, 172, 240, 288, 268, 296, + 356, 24, 240, 320, 140, 212, 212, 212, + 280, 212, 136, 148, 200, 200, 200, 288, + 136, 212, 12, 296, 240, 240, 12, 212, + 240, 212, 136, 288, 268, 212, 212, 288, + 288, 148, 200, 280, 20, 288, 280, 192, + 200, 280, 12, 24, 344, 212, 332, 212, + 380, 380, 200, 212, 380, 368, 212, 380, + 244, 212, 24, 220, 220, 24, 24, 12, + 212, 24, 340, 212, 24, 220, 360, 288, + 4, 212, 212, 296, 268, 356, 192, 360, + 240, 356, 192, 376, 332, 20, 356, 360, + 192, 220, 212, 288, 200, 200, 212, 20, + 56, 376, 332, 20, 212, 212, 68, 220, + 256, 60, 32, 172, 200, 216, 220, 24, + 68, 220, 200, 216, 24, 56, 192, 216, + 220, 24, 332, 220, 24, 268, 24, 200, + 216, 216, 24, 152, 16, 136, 216, 24, + 172, 32, 32, 24, 32, 24, 244, 32, + 216, 32, 200, 32, 32, 200, 152, 208, + 216, 208, 16, 208, 216, 268, 244, 64, + 64, 276, 280, 200, 268, 268, 72, 216, + 288, 208, 32, 276, 276, 32, 64, 288, + 208, 216, 32, 276, 56, 276, 64, 216, + 32, 172, 72, 32, 200, 172, 64, 216, + 216, 64, 288, 216, 56, 332, 216, 268, + 216, 200, 172, 268, 172, 172, 80, 28, + 180, 44, 20, 256, 64, 156, 76, 80, + 28, 80, 80, 76, 80, 56, 80, 32, + 276, 172, 28, 256, 20, 56, 172, 256, + 20, 268, 276, 200, 64, 20, 256, 276, + 288, 4, 280, 20, 20, 288, 276, 280, + 280, 276, 288, 80, 28, 4, 32, 256, + 80, 96, 32, 80, 32, 24, 80, 4, + 288, 64, 276, 72, 244, 80, 32, 284, + 80, 32, 284, 80, 44, 4, 276, 276, + 80, 32, 276, 288, 64, 80, 132, 20, + 80, 32, 172, 32, 52, 364, 380, 148, + 188, 252, 292, 320, 348, 140, 140, 348, + 348, 292, 292, 12, 232, 292, 188, 296, + 348, 292, 348, 252, 252, 244, 252, 12, + 232, 244, 80, 232, 252, 204, 232, 348, + 140, 348, 188, 352, 64, 232, 352, 352, + 12, 232, 232, 352, 204, 348, 148, 12, + 188, 12, 12, 348, 188, 352, 204, 352, + 204, 348, 212, 148, 380, 32, 56, 344, + 204, 64, 380, 204, 244, 184, 344, 252, + 188, 148, 340, 280, 148, 188, 280, 364, + 364, 280, 364, 340, 188, 364, 56, 280, + 80, 252, 364, 256, 280, 56, 188, 364, + 204, 352, 352, 232, 352, 280, 188, 352, + 336, 364, 232, 252, 152, 172, 56, 352, + 336, 252, 352, 252, 232, 80, 156, 252, + 52, 232, 232, 252, 292, 56, 352, 232, + 352, 204, 232, 352, 336, 344, 252, 232, + 80, 256, 72, 184, 80, 256, 184, 336, + 32, 256, 276, 276, 56, 52, 72, 16, + 72, 80, 28, 80, 28, 72, 172, 160, + 176, 340, 64, 232, 52, 28, 256, 80, + 80, 248, 76, 28, 80, 336, 176, 340, + 336, 52, 232, 232, 16, 336, 28, 16, + 28, 256, 160, 252, 156, 80, 76, 256, + 28, 28, 256, 340, 256, 336, 336, 152, + 248, 64, 12, 280, 252, 256, 172, 172, + 28, 64, 4, 280, 12, 176, 204, 232, + 184, 16, 16, 176, 344, 200, 204, 152, + 208, 208, 204, 204, 208, 204, 344, 204, + 204, 200, 184, 176, 204, 208, 172, 16, + 208, 16, 204, 208, 16, 336, 300, 56, + 204, 208, 204, 208, 200, 204, 336, 80, + 204, 76, 76, 12, 148, 184, 200, 200, + 204, 204, 200, 204, 336, 12, 16, 232, + 76, 232, 16, 336, 280, 16, 136, 352, + 72, 184, 156, 16, 208, 16, 72, 72, + 16, 72, 160, 200, 72, 32, 184, 276, + 340, 340, 276, 280, 76, 276, 80, 32, + 248, 72, 276, 200, 76, 52, 76, 80, + 260, 264, 312, 16, 152, 76, 168, 16, + 204, 152, 152, 120, 152, 176, 204, 204, + 176, 204, 52, 176, 204, 152, 156, 176, + 176, 68, 68, 312, 140, 168, 204, 120, + 316, 324, 324, 316, 324, 16, 316, 380, + 204, 380, 72, 168, 324, 8, 168, 140, + 72, 72, 168, 8, 324, 348, 316, 324, + 324, 328, 328, 324, 140, 348, 68, 380, + 348, 16, 324, 160, 348, 140, 4, 212, + 360, 48, 264, 264, 220, 212, 264, 264, + 264, 24, 4, 80, 284, 24, 4, 160, + 24, 212, 328, 140, 316, 52, 264, 140, + 160, 316, 316, 328, 328, 68, 264, 380, + 316, 380, 140, 264, 168, 212, 80, 80, + 212, 380, 264, 72, 232, 324, 292, 4, + 360, 228, 48, 224, 224, 248, 248, 248, + 360, 284, 56, 56, 28, 284, 224, 4, + 4, 224, 160, 32, 224, 248, 68, 4, + 76, 28, 4, 224, 224, 28, 292, 224, + 28, 76, 156, 72, 248, 76, 248, 260, + 260, 248, 260, 68, 28, 248, 228, 76, + 28, 260, 28, 32, 260, 260, 248, 260, + 332, 292, 244, 228, 292, 292, 28, 316, + 228, 48, 348, 140, 328, 224, 292, 32, + 224, 292, 72, 328, 224, 292, 68, 376, + 84, 332, 292, 328, 20, 348, 328, 224, + 224, 292, 328, 228, 328, 228, 272, 272, + 228, 272, 292, 328, 348, 56, 56, 324, + 272, 328, 160, 328, 8, 8, 324, 328, + 332, 8, 260, 28, 8, 228, 292, 228, + 20, 260, 68, 292, 76, 324, 52, 352, + 120, 180, 120, 180, 32, 16, 16, 180, + 292, 232, 304, 16, 80, 308, 120, 52, + 180, 16, 16, 180, 52, 64, 368, 120, + 52, 180, 68, 68, 52, 112, 232, 176, + 232, 16, 140, 232, 292, 140, 232, 292, + 16, 292, 16, 292, 312, 324, 272, 324, + 68, 176, 324, 308, 292, 292, 352, 8, + 324, 348, 36, 292, 348, 292, 176, 8, + 176, 176, 252, 308, 16, 52, 156, 76, + 112, 260, 208, 208, 260, 208, 176, 292, + 76, 28, 260, 152, 28, 300, 176, 292, + 156, 76, 260, 16, 76, 268, 268, 52, + 208, 76, 376, 28, 16, 20, 152, 260, + 376, 140, 292, 28, 208, 268, 32, 152, + 192, 264, 236, 144, 260, 236, 24, 24, + 160, 260, 336, 224, 228, 228, 224, 228, + 20, 336, 260, 260, 224, 336, 76, 260, + 268, 208, 224, 376, 180, 260, 272, 308, + 164, 236, 8, 164, 236, 236, 8, 144, + 8, 308, 236, 236, 8, 144, 152, 268, + 272, 272, 260, 228, 164, 8, 228, 24, + 92, 228, 272, 20, 144, 20, 376, 308, + 52, 236, 180, 236, 180, 68, 236, 164, + 144, 160, 268, 160, 8, 236, 8, 152, + 8, 20, 20, 8, 236, 376, 376, 236, + 124, 264, 336, 224, 48, 44, 4, 48, + 16, 20, 4, 224, 24, 224, 20, 336, + 224, 300, 268, 216, 20, 132, 196, 264, + 264, 220, 264, 48, 164, 272, 20, 224, + 164, 8, 24, 228, 272, 164, 220, 224, + 220, 228, 8, 216, 224, 228, 8, 272, + 228, 96, 272, 228, 108, 196, 164, 8, + 264, 272, 272, 264, 268, 8, 272, 264, + 272, 8, 132, 264, 216, 196, 264, 220, + 272, 300, 344, 196, 296, 68, 116, 144, + 124, 144, 156, 144, 236, 116, 52, 160, + 68, 68, 52, 160, 68, 24, 68, 16, + 236, 72, 68, 160, 68, 144, 260, 68, + 236, 160, 68, 68, 268, 68, 296, 336, + 268, 160, 336, 340, 72, 336, 16, 340, + 340, 144, 192, 372, 116, 20, 160, 268, + 372, 296, 160, 340, 192, 16, 20, 192, + 340, 244, 20, 180, 72, 340, 20, 124, + 144, 144, 160, 20, 244, 296, 164, 296, + 192, 20, 368, 384, 368, 284, 296, 44, + 368, 196, 384, 384, 20, 368, 72, 196, + 296, 124, 68, 20, 20, 384, 296, 296, + 384, 368, 332, 296, 368, 244, 268, 384, + 20, 144, 164, 236, 16, 72, 20, 68, + 368, 196, 372, 236, 68, 124, 20, 384, + 384, 20, 68, 236, 68, 68, 16, 68, + 20, 52, 124, 384, 236, 20, 20, 384, + 376, 20, 332, 68, 384, 56, 268, 372, + 368, 368, 180, 368, 220, 376, 104, 300, + 152, 268, 152, 168, 104, 376, 376, 220, + 8, 96, 104, 168, 196, 196, 168, 196, + 216, 168, 236, 244, 268, 196, 168, 72, + 176, 208, 168, 4, 168, 268, 168, 264, + 368, 8, 268, 96, 96, 220, 344, 220, + 92, 220, 368, 132, 220, 72, 220, 68, + 264, 368, 68, 92, 68, 24, 96, 196, + 376, 92, 20, 336, 68, 368, 376, 20, + 368, 376, 384, 368, 368, 368, 96, 196, + 168, 196, 20, 20, 196, 68, 180, 68, + 92, 180, 376, 8, 108, 104, 376, 236, + 68, 300, 104, 8, 16, 168, 8, 8, + 196, 8, 8, 236, 376, 376, 236, 68, + 152, 16, 180, 16, 376, 236, +}; + +static encode_aux _vq_aux_res0_0e = { + _vq_ptr0_res0_0e, + _vq_ptr1_res0_0e, + _vq_p_res0_0e, + _vq_q_res0_0e, + 1534, 1534 +}; + +static static_codebook _vq_book_res0_0e = { + 4, 97, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4, + _vq_quantlist_res0_0e, + _vq_lengthlist_res0_0e, + &_vq_aux_res0_0e, +}; + + +#endif diff --git a/include/vorbis/book/res0_0f.vqh b/include/vorbis/book/res0_0f.vqh new file mode 100644 index 0000000..9176435 --- /dev/null +++ b/include/vorbis/book/res0_0f.vqh @@ -0,0 +1,368 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0f_VQH_ +#define _V_res0_0f_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0f[] = { + 0, 0, 0, 0, + 0, 2, 0, 0, + 0, 4, 0, 0, + 0, 0, -3, 0, + -2, 0, 0, 0, + 0, 0, 0, -2, + 0, -2, 0, 0, + 3, 0, 0, 0, + 1, 0, 1, 0, + 0, 0, 3, 0, + 0, 0, 0, 2, + 2, 2, 0, 0, + -3, 0, -1, 0, + 3, -3, 0, 0, + 0, 0, -2, 2, + 0, 0, -2, -2, + 2, 0, -3, 0, + 0, 0, -5, 0, + 0, -2, 2, 0, + 0, 0, 3, -2, + 0, 2, 0, 2, + -2, -3, 0, 0, + 0, 0, 0, 5, + 0, 0, 0, -4, + 0, 0, 3, 2, + -3, 0, 2, 0, + 0, 2, 3, 0, + 0, -3, -1, 0, + 0, 0, 0, -6, + 3, 3, 0, 0, + 0, 0, 6, 0, + -2, 0, 0, 3, + 0, 3, 0, -2, + 6, 0, 0, 0, + 0, -6, 0, 0, + -2, 2, 0, 0, + -3, 0, 0, -3, + 0, -2, 0, -3, + 2, 0, 0, 3, + 0, -3, 0, 2, + 0, -3, 0, -2, + 0, -2, -3, 0, + 2, 0, 0, 2, + -6, 0, 0, 0, + 3, 0, 3, 0, + 0, 2, 0, -4, + -4, 2, 0, 0, + -4, 0, 0, 2, + 0, 2, 2, -1, + -2, 0, -1, -2, + -2, 4, 0, 0, + -1, -2, 0, 2, + 0, -4, 2, 0, + 0, 2, 2, 2, + 2, -2, 2, 0, + -2, -2, 0, -2, + -2, 2, 0, -2, + -2, 2, 2, 0, + -2, -2, 2, 0, + -2, 0, 2, -2, +}; + +static long _vq_lengthlist_res0_0f[] = { + 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, +}; + +static long _vq_ptr0_res0_0f[] = { + -1, -2, -3, -4, -5, -6, -7, 2, + 1, -10, -11, 45, 32, -14, 28, 15, + -17, -18, -19, -20, 1, -22, 29, 2, + 2, 3, -27, 0, 7, 29, -31, 33, + 16, -34, -35, 2, 3, -38, 0, 1, + -41, -42, 0, -36, 21, 16, -47, -48, + 15, -44, -51, 33, -53, -54, 48, -56, + -57, 30, -59, 19, 26, -62, -63, 19, + 8, -66, -67, 8, -69, 44, -71, -72, + -73, 45, -75, -76, -22, 41, 32, -23, + 27, -80, -83, -84, -85, 1, -87, -88, + 2, -90, 48, 11, 48, -81, -95, 45, + -97, -98, -99, 29, 7, -102, 11, 4, + -105, 33, -103, 29, -109, -110, -90, 21, + 8, -91, 12, -114, -91, -115, 44, -120, + -121, -122, -123, -14, -117, 19, -127, 45, + -129, 5, 4, 32, -133, -134, -135, 48, + 19, -138, 5, -130, -141, 1, 39, 33, + -145, -100, 34, 27, -149, -150, -151, -152, + -36, -147, 14, 14, 2, -158, -159, 11, + -161, -162, -163, 14, 38, 20, 38, -168, + 11, -170, 16, 7, -173, -174, -175, -176, + -177, -178, 29, 17, -181, -182, 2, 20, + -185, 11, 3, -188, 20, 42, -186, 29, + -193, 33, -195, 33, -100, -190, 42, -200, + -201, -202, 24, -183, -197, 22, -207, -208, + 38, 24, -211, 22, -204, -214, -215, 20, + 42, -218, -219, 8, -212, -222, -223, 8, + 35, 31, -227, -219, -225, -230, 24, 53, + 30, 24, -235, -236, -237, -238, -239, -240, + 13, -242, 13, 40, -245, -246, -247, 5, + 37, 7, 54, 6, -253, -254, -255, 5, + 37, -258, -259, 18, 37, 47, 34, 40, + -265, -266, -267, 15, -261, -270, -271, 15, + 5, -14, 50, 37, -277, -278, -80, -274, + 46, -282, 15, -271, -280, 40, -287, -288, + -289, -290, 13, -292, -293, -294, -80, -284, + 14, -298, 14, -300, 39, 51, 6, 14, + 39, -306, -307, -308, -309, -80, 14, 3, + 13, -314, -315, 13, 17, 39, -311, -320, + -321, -322, -80, 14, -325, 16, -327, -328, + 13, 12, -331, -332, 13, -251, -329, -334, + -31, 12, -339, -332, -36, -340, 4, -344, + -345, -346, -347, 13, -349, 54, 8, 31, + -353, -354, -355, -356, -357, 54, -359, -57, + -351, 18, 30, 54, 30, -366, -367, -166, + -360, 39, -371, -372, -373, -374, 18, -368, + -377, -378, 39, -380, -381, 51, -375, -211, + 51, 39, -387, -388, -389, -390, -391, -392, + 3, 49, -395, -396, -397, 49, 4, 4, + -401, -402, 12, 36, 47, -406, -407, -408, + 48, -410, 56, 57, 46, -414, -415, 50, + 32, 36, 45, -420, -421, -422, -14, -404, + -425, -426, -427, 49, 36, -129, -423, 21, + 23, -434, -435, 49, -437, -438, -439, 36, + 25, 43, 55, -444, -445, -446, 55, 40, + -449, 30, 25, 58, -453, -454, -455, 46, + 50, 25, -459, 57, -461, -462, -463, -464, + -351, -402, 47, -342, -466, -468, -471, 43, + -473, 47, 31, -476, 24, -57, 46, 25, + -481, 51, -483, -484, 21, 52, -487, -488, + -489, -490, -491, -492, -478, +}; + +static long _vq_ptr1_res0_0f[] = { + -386, -234, -148, -50, -16, -9, 11, -8, + 32, -13, -12, 15, 15, -15, 23, 23, + -33, -26, -24, -21, 2, -23, 11, 11, + -25, 16, -29, -28, 8, -30, -32, 7, + 7, -37, 32, -36, 17, -40, -39, 15, + -46, -43, 16, -45, 6, 17, 17, -32, + 7, 41, -70, -52, -61, -55, 19, -58, + 26, 9, -60, 9, 9, -65, -64, 44, + 44, -68, 26, 9, 26, 9, -119, -94, + -74, 11, -82, -79, -78, 6, 11, -78, + 6, -77, -92, -86, 2, 11, -89, 11, + 26, -91, 26, 26, -78, -49, -107, -96, + -104, -101, -100, 44, 44, -100, 44, 41, + -100, 44, 21, -108, -116, -113, -112, 41, + 26, -112, 41, -111, -118, -106, 26, -143, + -132, -131, -126, -125, -93, 23, -128, 19, + -125, 23, 51, 5, -140, -137, -136, 8, + 8, -136, 8, -124, -131, 5, 21, -144, + 23, -64, -142, -146, -172, -157, -156, -45, + -154, -139, 17, 41, 20, -167, -160, 20, + -166, -165, -164, 22, 22, 22, 42, -169, + 42, -171, 42, 42, -199, -191, 8, -187, + -180, -156, 20, 41, -184, -183, 53, 53, + -183, 53, 12, -166, -189, 53, 4, -192, + -194, 38, -196, 42, -198, -114, 44, -226, + -213, -206, -203, -205, -179, 53, -210, -209, + 10, 10, -209, 10, -155, -217, -216, 10, + 10, -221, -189, 53, -153, -219, -209, 10, + 20, 20, -232, -229, -224, -231, 26, 26, + -233, 44, -286, -264, -252, -244, 54, -241, + 37, -243, 6, 6, -249, 6, -248, 7, + 7, -250, -251, 8, -262, -257, -256, 19, + 19, -256, -260, 40, 40, 35, -263, 52, + -269, -179, 7, 16, -228, -276, -272, 41, + -273, -275, 20, 23, -283, -281, -243, -224, + 35, 40, 6, -285, -279, 41, -343, -319, + -305, -291, 42, -304, -302, -297, -296, -268, + 6, -299, 51, -301, 6, 6, -303, 42, + 22, -316, -313, 52, -312, -242, 35, -310, + 39, 39, 52, 34, -317, -77, -295, -330, + -326, -324, 41, 4, 6, 41, 6, -325, + 41, 4, -336, -333, 7, -28, -323, 51, + -338, 17, -171, -32, -337, -335, 10, -365, + -352, 44, -171, -348, -350, 42, 42, 10, + -364, -363, -358, 8, 24, 9, -362, -361, + -342, 9, 24, 52, 44, -370, 22, -369, + 22, 42, -385, -376, -209, 10, 51, 12, + -379, 22, 24, -383, -209, 10, 51, 24, + 21, 52, -452, -419, -405, -394, 17, -393, + 15, 15, -400, -399, -398, 36, 36, 5, + -398, -403, 43, 43, 51, -412, -409, 59, + 57, -411, 59, 59, -413, -417, -416, 56, + 56, -418, 56, -443, -436, -433, -424, -130, + -432, -429, -428, 23, 23, -428, -384, 43, + 59, 37, 59, 55, -442, -441, -440, 59, + 59, 25, 43, -448, 59, -447, 21, 21, + -450, 19, -451, 59, -486, -460, -457, -456, + 57, -458, 53, 26, -480, -470, 22, -467, + -209, -431, 21, -209, 43, -465, -475, -472, + -474, 25, 25, -477, 25, -479, 43, 9, + -482, 24, 9, -485, 58, 58, -220, -318, + -341, -382, -430, -469, -402, +}; + +static long _vq_p_res0_0f[] = { + 0, 8, 180, 12, 180, 4, 4, 8, + 4, 180, 180, 180, 128, 112, 112, 60, + 44, 44, 4, 4, 4, 116, 116, 8, + 8, 12, 0, 0, 28, 116, 132, 132, + 64, 128, 8, 8, 12, 4, 0, 4, + 12, 0, 0, 12, 84, 64, 60, 60, + 60, 84, 120, 132, 120, 192, 192, 120, + 120, 120, 76, 76, 104, 76, 76, 76, + 32, 32, 32, 32, 176, 176, 44, 4, + 180, 180, 116, 116, 116, 164, 128, 8, + 108, 108, 8, 4, 4, 4, 8, 8, + 8, 192, 192, 44, 192, 108, 28, 180, + 116, 116, 116, 116, 28, 44, 44, 16, + 132, 132, 16, 116, 32, 192, 192, 84, + 32, 44, 48, 48, 44, 48, 176, 20, + 180, 180, 112, 112, 16, 76, 180, 180, + 20, 20, 16, 128, 192, 192, 192, 192, + 76, 20, 20, 204, 4, 4, 156, 132, + 28, 28, 136, 108, 68, 12, 56, 56, + 12, 156, 56, 56, 8, 56, 44, 44, + 56, 56, 56, 56, 152, 80, 152, 44, + 44, 64, 64, 28, 116, 44, 44, 44, + 116, 116, 116, 68, 8, 8, 8, 80, + 44, 44, 12, 80, 80, 168, 48, 116, + 152, 132, 132, 132, 28, 12, 168, 168, + 152, 80, 96, 80, 12, 88, 152, 152, + 152, 96, 88, 88, 12, 80, 80, 80, + 168, 168, 32, 32, 56, 96, 32, 32, + 140, 124, 32, 32, 124, 96, 96, 212, + 120, 96, 112, 216, 216, 52, 52, 148, + 52, 52, 52, 160, 20, 20, 20, 20, + 148, 28, 216, 24, 72, 20, 20, 20, + 148, 72, 72, 72, 148, 188, 136, 160, + 64, 60, 60, 60, 188, 20, 60, 60, + 20, 112, 200, 148, 108, 108, 108, 200, + 184, 60, 60, 60, 184, 160, 164, 156, + 56, 52, 52, 56, 156, 108, 108, 184, + 56, 56, 56, 156, 156, 204, 24, 56, + 156, 108, 108, 108, 108, 108, 56, 12, + 52, 136, 136, 52, 68, 156, 56, 108, + 108, 108, 108, 56, 64, 64, 52, 52, + 52, 48, 32, 52, 52, 24, 48, 56, + 132, 48, 52, 52, 12, 12, 16, 216, + 52, 216, 216, 52, 216, 216, 32, 124, + 216, 72, 216, 216, 216, 216, 72, 120, + 124, 72, 120, 216, 120, 152, 152, 152, + 124, 156, 72, 72, 72, 72, 72, 124, + 156, 156, 156, 204, 204, 204, 124, 88, + 204, 156, 112, 192, 196, 12, 12, 12, + 12, 196, 196, 196, 196, 196, 16, 16, + 48, 48, 48, 144, 188, 192, 192, 192, + 192, 224, 224, 228, 184, 200, 200, 200, + 128, 144, 180, 144, 20, 144, 112, 188, + 144, 196, 196, 196, 144, 20, 188, 84, + 92, 220, 220, 196, 144, 144, 144, 144, + 100, 172, 220, 220, 220, 220, 220, 160, + 76, 120, 100, 232, 120, 200, 184, 184, + 200, 100, 228, 228, 100, 16, 124, 124, + 124, 48, 188, 16, 188, 188, 124, 172, + 188, 188, 124, 96, 96, 120, 184, 100, + 204, 204, 232, 84, 84, 208, 124, 48, + 124, 188, 48, 184, 184, +}; + +static long _vq_q_res0_0f[] = { + 16, 136, 88, 192, 64, 60, 44, 128, + 128, 92, 128, 60, 60, 60, 92, 92, + 60, 28, 12, 44, 8, 8, 44, 44, + 12, 64, 64, 32, 32, 28, 64, 28, + 28, 60, 128, 12, 68, 12, 4, 60, + 60, 12, 64, 64, 24, 68, 68, 64, + 28, 164, 128, 176, 176, 104, 76, 76, + 104, 36, 104, 36, 36, 36, 32, 176, + 176, 176, 104, 36, 104, 36, 20, 32, + 128, 44, 192, 8, 128, 24, 44, 128, + 24, 164, 128, 192, 8, 44, 192, 44, + 104, 44, 104, 104, 128, 84, 32, 44, + 132, 44, 28, 176, 176, 28, 176, 164, + 28, 176, 84, 44, 176, 44, 32, 164, + 104, 32, 164, 84, 176, 16, 104, 28, + 192, 128, 180, 76, 24, 92, 20, 76, + 76, 92, 204, 20, 128, 20, 76, 32, + 32, 76, 32, 84, 128, 20, 84, 28, + 92, 32, 84, 84, 176, 152, 80, 64, + 56, 204, 68, 164, 80, 64, 168, 80, + 168, 80, 152, 88, 88, 88, 168, 64, + 168, 28, 168, 168, 96, 28, 32, 168, + 44, 8, 80, 164, 44, 80, 212, 212, + 80, 212, 48, 152, 168, 212, 16, 28, + 168, 152, 28, 168, 168, 164, 176, 176, + 168, 152, 212, 88, 68, 212, 88, 96, + 40, 40, 96, 40, 56, 212, 168, 40, + 40, 96, 168, 212, 204, 212, 96, 40, + 80, 80, 176, 96, 140, 212, 104, 104, + 96, 176, 88, 60, 72, 28, 216, 160, + 148, 160, 24, 24, 32, 24, 148, 28, + 28, 32, 32, 32, 208, 72, 148, 76, + 76, 76, 148, 160, 160, 140, 160, 208, + 148, 164, 28, 64, 124, 24, 148, 164, + 148, 148, 80, 92, 164, 60, 160, 140, + 140, 160, 24, 160, 200, 164, 96, 28, + 164, 156, 168, 88, 168, 156, 56, 188, + 24, 156, 204, 204, 24, 24, 168, 168, + 88, 164, 136, 208, 156, 52, 140, 140, + 156, 156, 208, 136, 164, 164, 80, 28, + 52, 64, 164, 16, 24, 164, 24, 64, + 164, 16, 168, 24, 28, 28, 56, 204, + 52, 68, 168, 64, 48, 56, 40, 156, + 208, 176, 28, 216, 32, 168, 168, 40, + 176, 208, 72, 32, 96, 36, 96, 72, + 16, 36, 96, 208, 176, 204, 88, 156, + 88, 168, 208, 156, 96, 40, 204, 48, + 204, 88, 96, 88, 96, 40, 204, 96, + 84, 208, 88, 76, 224, 48, 68, 196, + 60, 60, 48, 20, 16, 144, 144, 20, + 16, 144, 172, 172, 204, 128, 224, 236, + 228, 228, 236, 236, 224, 144, 128, 224, + 224, 224, 224, 232, 172, 220, 144, 16, + 236, 20, 144, 92, 92, 144, 84, 172, + 236, 148, 236, 220, 220, 172, 100, 236, + 236, 100, 172, 232, 236, 160, 84, 84, + 236, 76, 236, 236, 68, 84, 100, 228, + 228, 228, 212, 104, 232, 100, 88, 16, + 96, 84, 84, 96, 172, 48, 96, 100, + 124, 100, 100, 36, 100, 100, 172, 36, + 232, 96, 36, 208, 232, 232, 24, 140, + 56, 124, 16, 188, 48, +}; + +static encode_aux _vq_aux_res0_0f = { + _vq_ptr0_res0_0f, + _vq_ptr1_res0_0f, + _vq_p_res0_0f, + _vq_q_res0_0f, + 493, 493 +}; + +static static_codebook _vq_book_res0_0f = { + 4, 60, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4, + _vq_quantlist_res0_0f, + _vq_lengthlist_res0_0f, + &_vq_aux_res0_0f, +}; + + +#endif diff --git a/include/vorbis/book/res0_0g.vqh b/include/vorbis/book/res0_0g.vqh new file mode 100644 index 0000000..3abd04e --- /dev/null +++ b/include/vorbis/book/res0_0g.vqh @@ -0,0 +1,926 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/vqbuild + + ********************************************************************/ + +#ifndef _V_res0_0g_VQH_ +#define _V_res0_0g_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0_0g[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, -2, 0, + -2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -1, + 0, 0, 0, 0, -1, 0, 0, 0, + 0, 0, 0, 0, 0, -1, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2, 0, 0, 0, 0, 0, + 0, 0, 0, -2, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, + 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -3, 0, 0, 0, + 0, -3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -3, + 0, 0, 0, 1, 0, 0, 2, 0, + 0, 0, -2, 2, 0, 0, 0, 0, + 2, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2, 0, 0, 1, 0, + 2, 0, 0, -2, 0, 0, 0, 0, + 0, 2, 2, 0, 0, 0, 0, 0, + -2, -2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, + -3, 0, 0, -1, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 1, + -2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 0, 0, + 0, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 1, -1, 0, 0, 0, + 0, 0, 0, 2, -2, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, -2, + 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, -2, -2, 0, 0, + 0, 0, 0, 1, 0, -1, 0, 0, + 0, 0, 0, 2, 0, 0, -2, 0, + 0, 0, 0, 0, 2, -2, 0, 0, + 0, 0, 0, 0, -2, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, + 0, -2, -2, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 2, 0, + 0, 0, 1, -1, 0, 0, 0, 0, + 0, -1, 0, 0, -1, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 4, 0, 0, 0, + 0, -1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, -2, 0, 0, 2, + -2, 0, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 0, -2, -2, 0, + 0, 0, 0, 0, 2, 0, 0, -2, + 0, 0, 2, -2, 0, 0, 0, 0, + 0, 0, 0, 3, -4, 0, 0, 0, + 0, 0, 0, 4, 3, 0, 0, 0, +}; + +static long _vq_lengthlist_res0_0g[] = { + 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 9,10,10, +}; + +static long _vq_ptr0_res0_0g[] = { + -1, -2, -3, -4, -5, 22, 23, -8, + 21, 12, -11, -12, 43, 23, 21, 40, + 12, 18, 50, 57, 49, 32, -23, -24, + 39, -26, -27, 21, -29, 27, -31, -32, + 34, 40, 12, 47, 18, -38, 21, -40, + -41, 40, -43, 22, 27, 5, -47, 39, + -49, 44, 27, -52, -53, -54, 35, 21, + 44, 47, -59, -60, -61, -62, -63, -64, + 21, -66, -67, -68, -69, 34, 35, 35, + -73, 35, 7, 42, -77, -78, 34, 36, + 6, 36, 56, -84, -85, -86, -87, 34, + 35, 36, 34, 34, -93, 36, 40, -96, + -97, -98, -99, -100, -101, -102, 34, 35, + -105, -106, -107, -108, -109, 34, 35, 34, + -113, 35, 38, 39, 7, -118, 34, 48, + -121, 21, -123, -109, 26, -71, 25, 34, + 51, -130, -131, -132, -108, -1608, 46, -134, + 34, 45, 22, 43, -141, -142, -143, -73, + -135, 56, -147, -148, -149, 35, 17, -152, + 56, 56, -155, -156, -157, -158, -159, -160, + -109, 11, -163, 35, 35, -103, -161, 40, + 39, -170, -171, 34, -173, 38, 25, -176, + 35, 34, -179, -180, -181, -182, -183, -184, + -185, -186, -187, 5, 22, -190, 40, 22, + -193, -194, -195, -196, 34, 5, -199, -200, + 21, 21, -203, 43, -205, -206, -207, -208, + -209, 34, -211, 37, -213, 40, 24, -216, + 21, -218, 37, -220, -221, 37, -223, 57, + 43, -226, -227, -228, -229, 21, 5, 22, + -233, 35, 5, -236, -237, -238, -239, 5, + -214, -218, -240, 40, 22, -246, 37, 46, + 22, 40, 4, -252, -253, -254, -255, -256, + -257, -258, 34, 12, 3, -230, 24, -262, + -265, 40, -267, -268, 5, 37, -271, -272, + -229, 25, -273, 21, 12, 3, -279, -280, + -281, -27, -274, -284, -285, 39, 22, 54, + -289, 21, -291, -32, 15, 39, 39, 31, + -297, -298, -299, -300, -301, -302, -285, 28, + 40, -306, 39, 40, -303, 22, -311, 41, + 45, -314, 4, -223, -312, -318, 41, 49, + -321, -322, -323, -324, -325, -326, -327, 21, + -329, 22, -331, -332, 21, 43, 52, -327, + -334, 5, -339, -327, 1, 22, -224, 9, + -345, 43, 34, 26, -139, -343, -351, 40, + -353, 40, 14, 32, -357, -358, -359, -360, + -361, 21, -363, -364, 5, 45, -367, -368, + 34, 1, 12, -249, 29, -365, 1, -376, + -377, -378, -304, 9, -379, -224, -380, -382, + -385, -309, 52, 1, -372, 10, -389, -392, + -393, -394, 21, 30, 4, -390, -399, -400, + -401, -402, -403, -404, -405, -406, -407, 21, + -409, -186, -388, -397, 48, 1, -415, -416, + 6, 22, 43, -420, -421, -422, 21, -424, + 40, -91, -413, 6, -426, -430, -431, -432, + -433, 5, 6, 5, -437, 40, 5, 21, + -428, 22, -443, 21, -445, 40, -447, -448, + 48, -450, 49, -452, -453, 6, -440, -456, + 52, 48, -459, -196, -457, 21, -463, 6, + -333, -412, 22, -468, -469, -470, -471, -472, + -473, -474, -475, -476, -477, -478, -479, 17, + 7, 45, -483, 7, -485, -486, 42, 2, + -489, -490, 36, 36, -493, 38, 38, 45, + 26, -498, -499, -500, -501, -502, -503, -504, + -505, 34, -507, -508, 36, 42, -511, -80, + -487, -514, 6, -516, -517, 7, 8, 38, + 42, 47, -523, 42, -509, -434, -527, 36, + -529, -530, 36, 47, -533, 38, -525, 36, + 38, 42, -539, -540, -541, 24, 46, -534, + -545, -546, 36, -548, -549, -550, -551, -552, + 42, -505, -543, 12, -557, 36, 38, -560, + 12, -554, -542, -561, -565, -566, 36, 38, + 25, 23, -563, -572, 47, -574, 11, -576, + -577, -578, -579, -580, 17, -557, -570, 44, + -334, 36, 17, 44, -589, -590, -173, 10, + 47, 44, 47, -596, -597, -598, -599, -600, + -601, -602, -603, -109, 10, 10, -607, 36, + -607, 10, 42, -612, -613, -109, 6, 17, + -614, 36, -619, -620, -621, -622, -623, -624, + -625, -32, -616, 17, 26, -523, -626, 38, + -518, -630, -633, -636, -637, -638, -639, -640, + -641, -642, -643, 36, 9, -646, -647, -648, + 6, -650, -651, -652, -653, 17, -655, 7, + 9, 17, -634, -660, -661, 42, -658, 25, + -665, -666, 42, 26, -669, -670, -671, -672, + -673, -653, 9, 42, -656, -678, -679, -680, + -681, -655, 2, -614, -685, 51, -687, -688, + 11, -690, -691, -675, -683, -694, -695, -523, + -692, 10, -699, -700, -701, -702, -703, -704, + 36, 45, 6, 36, 36, 7, 10, -712, + -713, -714, -715, -716, -717, 36, -705, -720, + -514, -718, -516, -410, -721, -724, 38, -725, + 36, 33, 38, -732, -733, -734, -735, -516, + -723, 49, 1, 38, -741, 38, -128, 41, + -745, -746, 34, -748, -749, -750, -751, 38, + 46, -754, 42, -756, 42, -743, 46, 36, + 42, 29, -763, -764, 17, 52, 17, 38, + 42, 25, -771, 25, 38, -688, 48, 25, + 42, 11, -779, -780, -781, -782, 17, -311, + 42, 11, -787, -788, 27, -783, -791, -792, + -793, 6, -795, -796, 7, 45, 42, -800, + -801, -802, -803, -804, 17, -806, -807, 7, + 52, -810, -796, -808, -813, 29, -815, 51, + 48, -818, 17, -816, -821, -822, -823, -824, + 7, 38, 53, -824, -591, -828, -150, 52, + 24, 10, -831, -836, -837, -838, 36, 6, + -29, 48, -843, 46, -845, -846, 34, -848, + -849, 6, 36, -852, -850, -841, -855, 7, + 26, 52, 36, -518, 9, -860, -863, -864, + -865, -866, 41, 27, 11, 13, 23, 1, + -873, 18, 48, -876, -877, -878, -879, -262, + 8, -882, 12, 23, -885, -886, -887, -888, + -889, 23, 28, 15, -893, 24, -895, -587, + -880, 28, -899, -900, -259, -119, -882, 52, + 19, -906, 44, -908, 27, -910, 24, 18, + 13, -914, 44, 27, 4, -918, -919, 24, + 27, -922, -923, 24, -925, 18, 8, -928, + 44, 27, -931, -932, 44, -926, -736, -933, + -935, -938, -939, 28, 18, 19, 41, -944, + -945, -880, -457, 23, 44, 27, 19, -946, + -953, -954, -955, -956, -957, -958, -959, -960, + -961, -880, -808, -925, 19, 19, 18, 53, + -969, 12, 18, -972, -311, -434, -973, -976, + -977, 27, 41, -980, -981, 44, -983, 41, + -985, 23, 44, -974, -989, 41, 12, -992, + 23, -994, -995, -996, 8, -998, -999, -1000, + -1001, -1002, -1003, -1004, -1005, -889, -987, -1006, + -1009, 25, 10, -1012, -1013, -1014, 44, -1016, + -1017, 27, -1019, -1020, 46, -1022, 11, -1024, + -1025, 11, 2, -925, 9, 10, 23, 55, + -1033, -1034, -1035, -1036, -1037, -1038, -889, 9, + 13, 1, 9, -1044, -1045, -1046, -1047, -932, + -1042, 10, -880, -929, -1050, -1054, -1055, -1056, + -1057, -929, 9, 6, -1059, -1062, 12, 18, + 13, -1066, -1067, -882, -1060, -1068, -1071, -925, + -1069, 4, -1075, 13, -1077, -1078, 12, -1080, + 1, -1072, -1083, 1, -1041, -1081, -1085, -752, + -1086, -1090, 44, -259, -1088, -1094, -1095, 44, + -1097, -929, -1092, -1075, 8, -1026, 6, -1102, + -161, -1103, 55, -1108, 46, 55, -1111, -1112, + 28, -1114, -1115, -1095, -1105, -1118, -1119, -1120, + -1121, -1122, -434, 28, -1123, 23, -1124, 48, + -1129, 23, 15, -1132, 18, -934, -1126, -1134, + -1137, 23, -765, 23, -1138, 44, -1143, 48, + 29, 2, -1147, -1148, -883, 24, 44, 49, + 54, 27, -1149, -1156, -1157, 24, -1159, -1160, + -1161, -1162, -1163, -1164, -1165, -1166, -1167, 24, + -1169, 25, 9, -1172, -1173, -1174, -1175, -1176, + -1177, 9, -1179, 24, 45, -1182, -1183, 24, + -1185, 28, 1, -1188, 28, -1190, 45, 30, + -1193, -1186, 25, 8, -1197, 30, -1195, -1200, + 28, -1202, -1203, -933, -1133, 11, 10, -1208, + 9, -1177, 11, -1212, -1213, -926, 24, 24, + -904, -1215, -1217, -1197, 25, -1220, -1223, -1224, + -1225, -1226, -1227, -1228, -1229, -1183, -434, -1232, + -1233, 46, -813, -1230, -1235, -312, -1236, -1240, + -1188, -1238, -1243, -1244, -1245, -1246, -926, -1241, + 3, -904, -816, -1250, -1248, -1183, -1253, -1256, + -1257, 12, -1254, -1258, -1261, -1262, 1, -1204, + -1259, -1264, -1267, -1268, -1269, -1270, -137, -1265, + -1273, -880, 46, 45, -1277, -1278, 8, -1280, + 10, 12, -1283, 41, -1285, -1286, 24, -1288, + 45, 4, 26, 14, -1293, -1294, 9, -370, + -1281, -1298, 24, 46, -1301, -1302, 24, -1304, + 28, -1186, -1299, -1306, -1188, -1307, -1191, -1309, + -1313, -1314, 41, 31, -1317, -1318, 8, -942, + 26, -912, -1320, 26, -1325, 8, 10, -933, + -1263, -1323, -1329, -1332, 10, -1330, -1335, -1336, + -1337, -1338, -1339, -1340, -1341, -1342, -1170, 41, + 1, -370, 19, -1348, -1349, 26, -1083, 8, + -1353, -1354, -1355, -1356, 25, 46, 25, -1351, + -1361, -1362, 41, -1359, -1365, -1366, -1367, -1368, + -1369, -1323, -1363, -1372, -1233, -1370, 55, 55, + -1377, -1378, 26, -259, -1351, 2, -1381, 26, + 26, 19, -1387, -1388, 26, -1390, -259, 8, + -1262, -1391, -1393, -1396, -259, -1394, -1397, 11, + -1401, -1402, -1403, 11, -369, -1404, -1083, -1408, + -1409, -1410, -1411, -1412, -1413, -1414, -1415, 8, + 19, -259, -1406, 12, 53, -1422, -1042, -1381, + -1425, -1170, 29, 53, -1429, -1430, 26, 53, + -1343, -1426, 12, 55, -1437, -1438, -1439, -880, + -1433, 11, 2, 25, 11, -1446, -1447, -1448, + -1449, -1450, -1058, -1444, 25, 10, 2, -1456, + -710, -1451, 2, 0, -1461, -1462, -1463, -1464, + -1465, -1466, -1467, -1468, 8, 19, -609, -1457, + -1473, -1042, -1471, 9, 10, 53, -1479, -1480, + -1343, 11, 53, 13, 41, 9, -369, -1488, + -1489, -1490, -1414, 49, 11, -1492, -1049, -1493, + 10, -1495, 10, -1497, -1501, -1502, 41, 26, + -1505, -1506, -1507, -1508, -1502, 1, 26, -1512, + 9, -604, -1326, -1477, -1514, -1518, -1519, -1520, + -1521, -1522, -1523, -1524, -1525, -1526, -1512, 10, + -1527, -1530, 25, -1528, -1533, 14, 25, -1536, + 1, -1538, -1539, -1540, 25, 11, 29, 11, + 1, -1546, 2, -1543, -1549, -1530, -1547, -1344, + -1550, -1554, -1064, -1326, 30, -1558, -1348, -1491, + -1555, -1562, -1563, -1564, -496, 1, 10, -1568, + -1569, -1570, -1571, -1572, 10, 1, -1022, -1566, + -777, -1326, -1576, -1578, 1, 41, -1583, -1584, + -1585, -1326, 10, -1586, 1, -1587, -1441, -1592, + -604, -1590, -1541, 29, 2, -1598, -1599, -604, + -1595, -1480, -1291, -1420, 8, -1606, -1596, -1604, + -1415, 19, +}; + +static long _vq_ptr1_res0_0g[] = { + -467, -58, -22, -19, -7, -6, 44, -14, + -9, -10, -13, 30, 50, 50, -15, -16, + -17, -18, 32, -20, -21, 54, -37, -25, + 53, -28, 27, 28, -30, 52, 32, -33, + 12, -34, -35, -36, 50, -51, -39, -46, + -42, 22, -44, 27, -45, 50, -48, 50, + -50, 50, 50, -55, 56, 40, 47, -56, + -57, 50, -178, -95, -83, -82, -65, 36, + 42, -76, -72, -71, -70, 42, 42, 43, + -74, 22, -75, 22, -81, -79, 36, -80, + 7, 43, 42, -92, -91, -90, -88, 40, + -89, 40, 52, 48, -94, 22, 42, -154, + -140, -129, -120, -104, -103, 35, 21, 51, + -117, -115, -112, -111, -110, 7, 7, 39, + -114, 39, 39, -116, 22, -103, 51, 19, + -127, -122, -125, 43, -119, 7, -124, -128, + 30, -138, 26, -137, -136, -1609, 54, 2, + 14, 14, -139, 14, -146, 43, -145, 37, + -126, 37, -153, -151, -150, 38, 38, 38, + 17, 51, -175, -169, -168, -165, -164, -162, + 40, 29, 7, 40, 3, -167, 49, 51, + 40, 51, -172, 38, -24, 53, -166, -177, + 14, 31, -398, -313, -278, -204, -192, 32, + -191, -189, -188, 43, 43, 22, 43, 31, + -201, -198, -197, 31, 26, 31, 5, 45, + 31, -202, 26, 30, 28, -251, -225, -215, + -210, 30, -212, 40, -203, 30, 28, -217, + 30, -219, 22, 30, -222, 57, -224, 32, + 32, -235, -232, -231, -230, 4, 4, 4, + 22, -234, 37, -248, -243, -241, -41, 22, + 25, 40, -174, -244, -245, -223, 32, 55, + -249, -250, 32, -275, -270, -266, -264, -261, + -260, -259, 4, 4, 4, -260, 55, -247, + 3, 4, 40, -269, 3, 3, 12, -260, + 5, -263, -242, -276, -277, 32, -296, -288, + -283, 43, -144, -286, 22, 32, -203, 20, + -295, -290, -294, -293, 20, 12, 26, 3, + -310, 3, -309, -224, -307, -305, -304, -292, + 32, 53, 19, 12, -287, 32, -223, 53, + 28, -320, -315, -317, -308, -319, 32, 32, + -356, -344, -338, -330, -328, 31, 14, 45, + 31, 14, -335, -203, -333, 45, 31, -337, + -316, 14, -341, 33, 48, -342, 33, -340, + -348, -346, -347, 32, -350, -336, -352, 31, + -354, 14, -355, 33, -375, -366, 28, -362, + 1, 3, -277, 32, 1, 20, -371, -370, + -369, 3, 1, -374, -880, 52, 32, -391, + -384, -381, -374, 20, 54, -374, 48, 1, + -381, -374, -287, 54, -133, 54, -387, -395, + 22, 32, 1, -396, -309, 2, -458, -441, + 28, -439, -419, -417, -408, 6, 22, 43, + -414, -190, -1607, -386, 52, 20, 43, 40, + 22, -418, 20, -423, 5, 48, 20, -429, + -425, -427, 54, -412, 52, -438, -436, -435, + -434, 20, 20, 52, 52, 20, 48, -168, + -412, -442, -444, 54, -446, 54, -224, -449, + 32, -451, 54, -455, -21, 54, 2, 54, + 32, 20, -464, -461, -287, -462, 40, 31, + -466, -460, 33, -862, -778, -547, -497, -496, + -494, -491, -488, -484, -482, -481, -480, 45, + 45, 15, 45, 24, 24, -481, 15, 20, + 45, 42, 24, -492, 24, 45, -495, 51, + 14, -544, 18, -128, -535, -522, -520, -506, + 38, 47, -513, -510, -509, 47, 47, 42, + 54, -515, 38, -519, -518, 38, 38, 47, + -521, 51, -524, 51, -526, -287, -528, 28, + -532, -531, 15, 15, -531, 15, -512, -536, + -537, -538, 51, 15, -542, 47, 47, -386, + 28, 48, 20, -595, -564, -562, -558, -556, + -553, -555, -465, 47, 48, 47, -559, -521, + 51, -454, 55, -411, -573, -571, -567, -568, + -569, -509, -383, 51, 30, -588, -575, -587, + -586, -585, -509, -581, 36, -583, -373, 47, + 33, 2, 51, 18, -593, 51, -592, 2, + 53, -594, 18, -744, -635, -618, 20, -611, + -608, -606, 48, -80, 33, 45, 6, 48, + -610, 14, 48, -617, -150, -615, 14, 7, + 31, 38, -128, -632, -631, -629, -628, -627, + 26, 7, -609, 26, 51, 26, -605, 51, + 26, -604, -591, 20, -711, -668, -663, -645, + 6, 42, -644, 25, 25, -649, 42, 9, + 25, -659, -657, -654, 9, 14, -656, 14, + 14, -644, -584, 14, -644, 25, 54, -664, + 14, -128, 30, 48, -698, -677, -523, -675, + 11, 2, -667, 14, 2, -693, -689, -686, + -684, -682, 14, -682, 2, 14, 51, 2, + 14, 11, 51, 2, -496, 11, 14, -697, + -676, 51, -710, -709, -708, -707, -706, -80, + 7, -696, 10, 42, 14, 2, 11, -731, + -730, -631, -728, -719, -173, 53, -674, -173, + -722, 33, -726, -1603, -662, -582, 14, -349, + 10, 54, 11, -740, 25, 53, -739, 14, + -1601, -729, -737, 9, -742, 30, 53, -738, + -762, -759, -747, 55, -758, -753, -752, 12, + 12, -755, 26, -752, 12, -727, 51, -760, + -667, -334, -770, -766, -758, 54, -767, -768, + -769, 55, -775, -772, -773, 51, -765, -776, + -777, 2, -835, -790, -784, -519, 11, 10, + -785, -786, 51, -594, 18, -774, -830, -820, + -799, -794, -798, -797, 31, 31, 31, -817, + -805, 51, 42, 31, 3, -809, -523, 51, + 20, -814, -812, -287, 31, 3, -295, 3, + 54, 42, -161, -811, -827, -631, -825, 31, + 8, 31, 20, -813, 20, -826, -832, 53, + -833, -161, -829, -844, -842, -840, -839, 52, + 47, 53, 55, 11, -859, -856, -847, 20, + -851, -850, 52, -854, 42, -834, 42, 52, + -857, -858, 31, -850, 53, -853, -1158, -1107, + -875, -870, -867, -868, -869, 49, -871, -872, + -869, 49, -831, -952, -884, -881, 25, 46, + 19, -883, 16, 18, -937, -892, 24, -890, + 30, 16, -891, 16, -898, -894, 1, -897, + -874, 18, -905, 1, -902, 52, -891, 19, + 15, -909, -907, 15, 1, -913, -911, -912, + 15, -917, -915, -916, 15, -927, -921, -920, + 15, -924, 15, 16, -891, 16, 15, -930, + -929, 16, -924, -891, 16, -904, -1593, -903, + -901, -943, -941, -940, 15, -942, 15, -947, + 41, 44, 15, -948, -949, -950, -925, 52, + -997, -991, -988, -982, -978, -975, -971, -968, + -966, -963, 15, -965, 20, 16, -967, 16, + -970, 53, 19, -925, 12, -964, -292, 12, + 53, 19, -979, 27, 53, 19, -986, -984, + 44, 19, -925, -962, -990, 46, 18, -993, + 25, 46, 53, 30, 16, -1104, -1032, -1030, + -1011, 13, 2, 46, -1008, -932, -951, -936, + -932, 16, -292, -1015, 27, 11, 2, -1018, + 46, 11, -1021, 18, 16, -1023, 13, -1027, + -1026, 16, 16, -1026, -1010, 20, -1031, 18, + -1087, -1043, 12, -932, -1041, 2, -1040, -1029, + 16, 16, 19, -1053, 13, -1051, -1041, -1026, + 10, 19, -1049, 1, -1048, -1076, -1061, 2, + -882, -1040, 10, 19, 10, -1065, -1063, -1064, + 2, -1070, 4, -1040, -1058, -1052, -1074, -1073, + -1039, 16, 16, 4, -1079, 1, 2, -1082, + -1064, -1028, -1084, 2, -925, -1007, -896, -1089, + -861, -1091, 30, -1093, -819, -1096, 16, 27, + -1099, 2, -789, -1101, 48, -1073, -1100, 45, + -1106, 10, 29, -1110, -1109, 48, -1155, -1146, + -1113, -1145, -1141, -1117, -1098, -1136, -1128, -1127, + -487, -1125, -292, 20, -808, 20, -1116, 15, + -1130, 48, -1131, -1027, 48, -1589, -761, -757, + -1139, -1014, 31, -925, 2, -1142, 2, -29, + -1140, 53, -1153, -1150, 44, -777, -1151, -1152, + 16, -816, -1144, 25, 28, 54, -1271, -1334, + -1276, -1222, -1171, -1168, 45, 46, 1, 30, + 1, -1170, 30, 10, -656, -1199, -1187, -1178, + 1, 45, -1181, -1180, 1, -1184, 1, 15, + -1186, 15, 15, -1189, 4, -1192, -1191, 4, + -1196, -916, 53, 24, -916, 15, -1194, -1201, + 19, -1211, -1209, -1207, -1581, -487, -1205, 19, + 15, 15, -287, -1219, -1216, -916, -1210, 11, + -916, -710, 25, 4, 20, 10, -1266, -1237, + -1234, -1231, 45, 55, 1, 19, -1029, 55, + 19, 4, -797, -710, -1221, -1239, -1218, -1242, + 1, -1214, -1260, -1255, -1252, -1249, -1248, -1206, + 15, -1248, -1247, -1198, -916, -1185, -312, -904, + -916, 15, -287, -1251, -1252, 15, 4, -1579, + -1154, -1135, -1272, 1, 4, 31, 26, -282, + 31, -1275, -260, 19, -1292, -1282, -1279, -1180, + 1, 3, -1290, -1284, 1, -1287, 33, -1289, + 33, 33, -1291, 33, -1308, -1295, 1, -1297, + -369, -1300, -1280, -813, -1303, 1, 13, -1305, + 1, -912, 1, -1296, -1310, -1274, -1312, -1106, + -1324, -1316, -1183, 33, -1319, 4, 41, -1321, + -1315, -916, 1, 55, -1327, -1326, 4, -1331, + -1398, -247, -1322, -904, 15, -1311, -1328, -1445, + -1407, -1360, -1352, -1350, -1347, -1345, -1344, 19, + 30, 30, 3, 12, 1, 30, 30, 3, + -1358, 2, -1357, 1, 30, 30, -1323, -1346, + -1364, -969, 11, 53, -1400, -1395, -1386, -1382, + -1376, -1371, -1343, -1375, -1374, 4, 4, 2, + -1379, 2, 4, -1381, -1281, 4, -1384, 31, + -969, 31, -1389, 1, 2, -1392, 2, -1385, + -1381, -1383, -1380, -1262, -1075, -1373, -1333, 49, + -1381, -1083, -1145, 53, -813, -1262, 4, -1435, + -1431, -1428, -1424, -1421, -1419, -1417, -1416, 4, + 4, 19, -1405, -1420, 4, 12, 53, -260, + 4, -1427, 4, 30, 12, 53, 19, -1432, + -1434, -260, 19, -1436, -1356, -1443, -1403, -1441, + -1423, 19, -260, 19, 4, -1504, -1460, -1455, + -1454, -1453, -1452, -260, 10, 30, 30, -1458, + 4, -1442, -1459, 4, -1503, -1487, -1484, -1478, + -1475, -1472, -1470, -1469, 14, 14, 19, -1440, + 10, 14, -1418, -1476, -1477, 14, 10, -1042, + -1482, -260, 19, 3, -1485, -1452, -1483, -1500, + -1498, -1496, -1494, 33, 3, -1483, 4, -1486, + -1191, -1481, -1420, -1474, 53, 30, 4, 53, + -1517, -1510, 26, 49, 53, -260, -1511, -1513, + 33, -1515, -260, 33, -1509, -1588, -1561, -1557, + -1548, -1544, -1537, -1534, -1532, -1529, -1291, -777, + -1516, -1291, 33, -1499, 33, 30, -1535, 30, + 14, -1533, -1536, -609, 14, 33, 31, 31, + -1545, 30, -1540, -1542, -1551, 30, -1541, -1553, + -1289, -1556, 33, 11, 33, 33, 14, 4, + -1552, -1567, 1, 4, -682, 33, -1565, -1582, + -1580, -1577, -1574, -1573, 13, 13, -1573, -1560, + -1575, -1262, -1531, -1399, -1381, -1315, -1591, 33, + -1392, -1381, 3, 11, -1559, -1385, 53, -1597, + -1594, 29, -1596, 19, 33, -1605, -1602, -1289, + 3, -1600, -1289, -813, 31, -1602, 4, -1385, + -260, -260, +}; + +static long _vq_p_res0_0g[] = { + 296, 144, 184, 144, 352, 176, 184, 344, + 168, 96, 344, 344, 344, 184, 168, 320, + 96, 144, 400, 456, 392, 256, 272, 312, + 312, 168, 168, 168, 216, 216, 400, 272, + 272, 320, 96, 376, 144, 176, 168, 176, + 320, 320, 176, 176, 216, 40, 312, 312, + 352, 352, 216, 280, 280, 280, 280, 168, + 352, 376, 136, 48, 168, 280, 168, 168, + 168, 280, 272, 272, 272, 272, 280, 280, + 280, 280, 56, 336, 272, 272, 272, 288, + 48, 288, 448, 272, 288, 288, 272, 272, + 280, 288, 272, 272, 288, 288, 320, 168, + 272, 168, 312, 168, 272, 168, 272, 280, + 56, 280, 272, 280, 272, 272, 280, 272, + 280, 280, 304, 312, 56, 272, 272, 384, + 344, 168, 272, 272, 208, 280, 200, 272, + 408, 272, 272, 272, 280, 64, 368, 368, + 272, 360, 176, 344, 176, 280, 280, 280, + 368, 448, 280, 280, 280, 280, 136, 448, + 448, 448, 320, 280, 280, 56, 56, 272, + 272, 88, 280, 280, 280, 280, 88, 320, + 312, 272, 272, 272, 304, 304, 200, 280, + 280, 272, 32, 312, 40, 208, 176, 40, + 40, 40, 40, 40, 176, 320, 320, 176, + 272, 272, 272, 208, 272, 40, 168, 168, + 168, 168, 344, 344, 168, 176, 240, 272, + 272, 272, 296, 296, 320, 320, 192, 168, + 168, 176, 296, 344, 296, 296, 456, 456, + 344, 168, 168, 168, 168, 168, 40, 176, + 296, 280, 40, 40, 40, 40, 40, 40, + 192, 296, 192, 320, 176, 296, 296, 368, + 176, 320, 32, 40, 272, 272, 272, 272, + 272, 272, 272, 96, 24, 40, 192, 192, + 320, 320, 40, 40, 40, 296, 168, 168, + 168, 200, 368, 168, 96, 24, 168, 176, + 168, 168, 440, 312, 312, 312, 176, 432, + 312, 168, 272, 272, 120, 312, 312, 248, + 312, 312, 312, 312, 312, 320, 312, 224, + 320, 312, 312, 320, 120, 176, 328, 328, + 360, 392, 32, 456, 360, 328, 328, 392, + 208, 360, 40, 176, 168, 360, 360, 168, + 176, 176, 344, 168, 168, 344, 416, 360, + 416, 40, 168, 168, 8, 176, 256, 72, + 208, 344, 272, 208, 344, 8, 248, 320, + 320, 320, 112, 256, 272, 168, 168, 168, + 168, 168, 8, 8, 40, 360, 96, 272, + 272, 8, 96, 320, 232, 360, 8, 320, + 320, 320, 320, 72, 72, 344, 72, 72, + 176, 176, 416, 8, 232, 80, 80, 168, + 168, 168, 168, 240, 32, 80, 416, 312, + 168, 40, 344, 48, 168, 168, 168, 168, + 40, 40, 232, 80, 384, 8, 48, 48, + 48, 176, 344, 168, 168, 168, 168, 272, + 320, 272, 8, 48, 8, 48, 48, 48, + 40, 40, 48, 40, 320, 320, 40, 168, + 8, 176, 168, 168, 320, 320, 48, 384, + 384, 392, 392, 48, 48, 48, 8, 416, + 416, 384, 272, 272, 384, 168, 48, 48, + 344, 416, 176, 136, 72, 224, 136, 360, + 136, 136, 136, 136, 136, 56, 136, 136, + 56, 360, 192, 56, 336, 336, 336, 16, + 288, 288, 288, 288, 304, 304, 304, 360, + 208, 56, 376, 56, 56, 56, 56, 272, + 272, 272, 288, 288, 288, 336, 56, 56, + 16, 48, 48, 56, 56, 56, 64, 304, + 336, 376, 408, 336, 336, 48, 224, 288, + 288, 288, 288, 376, 304, 304, 48, 288, + 304, 336, 192, 192, 192, 192, 368, 48, + 288, 288, 288, 144, 96, 272, 288, 96, + 336, 272, 48, 96, 376, 288, 304, 96, + 96, 48, 368, 48, 184, 184, 288, 304, + 200, 184, 48, 376, 376, 136, 88, 376, + 376, 376, 136, 136, 136, 288, 48, 352, + 416, 288, 136, 352, 304, 376, 304, 80, + 376, 352, 376, 56, 208, 288, 288, 48, + 272, 272, 272, 272, 80, 80, 288, 288, + 288, 80, 336, 136, 272, 272, 48, 136, + 48, 288, 272, 272, 272, 272, 272, 272, + 272, 272, 48, 136, 208, 336, 48, 304, + 64, 112, 48, 288, 136, 200, 136, 288, + 288, 288, 288, 288, 72, 48, 48, 48, + 48, 56, 56, 136, 136, 136, 56, 56, + 72, 136, 48, 336, 336, 336, 264, 200, + 408, 336, 336, 208, 136, 136, 136, 136, + 136, 136, 72, 336, 72, 56, 56, 56, + 56, 56, 16, 48, 408, 408, 88, 88, + 88, 336, 336, 336, 48, 80, 80, 336, + 48, 80, 288, 288, 48, 56, 288, 288, + 288, 360, 48, 288, 288, 56, 80, 48, + 56, 56, 304, 288, 288, 288, 48, 64, + 48, 112, 56, 64, 208, 112, 304, 48, + 288, 264, 304, 72, 64, 64, 56, 304, + 64, 392, 8, 304, 304, 304, 408, 328, + 272, 368, 272, 368, 96, 304, 304, 304, + 368, 208, 336, 336, 336, 392, 368, 288, + 336, 232, 368, 368, 136, 416, 136, 304, + 336, 200, 304, 200, 304, 88, 384, 200, + 336, 88, 80, 216, 304, 136, 136, 328, + 336, 88, 376, 216, 216, 328, 56, 136, + 360, 48, 56, 56, 56, 360, 336, 56, + 136, 136, 136, 136, 136, 336, 56, 56, + 416, 56, 56, 416, 232, 232, 408, 408, + 384, 136, 136, 384, 304, 56, 56, 56, + 56, 304, 424, 56, 16, 16, 136, 416, + 192, 80, 416, 88, 288, 288, 288, 48, + 216, 384, 368, 368, 56, 56, 272, 416, + 48, 48, 288, 288, 288, 384, 56, 56, + 208, 416, 288, 64, 72, 72, 144, 32, + 392, 328, 328, 216, 88, 104, 184, 8, + 144, 144, 384, 224, 368, 192, 192, 192, + 64, 96, 96, 184, 192, 184, 184, 184, + 184, 184, 224, 120, 224, 192, 224, 352, + 64, 224, 96, 96, 32, 384, 96, 416, + 152, 8, 352, 8, 216, 104, 192, 144, + 104, 32, 352, 216, 32, 192, 216, 192, + 216, 192, 192, 192, 144, 144, 64, 216, + 352, 216, 352, 352, 352, 64, 64, 64, + 64, 120, 224, 224, 144, 152, 328, 64, + 64, 64, 384, 184, 352, 216, 152, 384, + 328, 328, 64, 64, 64, 64, 64, 64, + 64, 64, 416, 144, 152, 152, 144, 424, + 96, 96, 144, 328, 328, 48, 48, 216, + 216, 216, 328, 352, 352, 352, 184, 328, + 184, 184, 352, 48, 368, 328, 96, 184, + 184, 64, 64, 64, 64, 216, 200, 368, + 184, 184, 184, 200, 184, 184, 48, 48, + 200, 200, 80, 352, 352, 352, 352, 216, + 216, 216, 368, 368, 368, 104, 88, 88, + 88, 88, 16, 144, 72, 80, 184, 440, + 184, 184, 184, 184, 184, 184, 184, 72, + 104, 8, 72, 352, 352, 352, 352, 352, + 72, 80, 64, 216, 64, 216, 216, 216, + 216, 216, 72, 48, 48, 16, 96, 144, + 104, 96, 96, 96, 48, 48, 144, 144, + 48, 32, 104, 104, 96, 96, 96, 104, + 8, 48, 16, 8, 8, 72, 48, 368, + 48, 240, 352, 96, 48, 352, 352, 352, + 216, 216, 64, 104, 64, 16, 48, 48, + 88, 48, 440, 368, 368, 440, 48, 48, + 224, 48, 48, 216, 360, 48, 48, 48, + 48, 48, 48, 224, 224, 184, 224, 384, + 184, 184, 120, 384, 144, 64, 48, 64, + 352, 184, 416, 184, 416, 352, 216, 384, + 232, 16, 184, 144, 184, 192, 352, 392, + 432, 216, 88, 192, 192, 192, 32, 224, + 368, 72, 200, 192, 192, 192, 192, 192, + 72, 200, 72, 192, 360, 192, 192, 72, + 72, 72, 360, 192, 360, 192, 192, 192, + 224, 224, 8, 224, 224, 360, 360, 240, + 8, 8, 200, 64, 240, 240, 192, 224, + 224, 72, 64, 64, 64, 88, 80, 72, + 72, 360, 88, 64, 64, 64, 192, 192, + 152, 192, 192, 240, 200, 200, 192, 192, + 192, 192, 192, 192, 192, 192, 48, 368, + 368, 368, 232, 48, 48, 360, 48, 224, + 224, 48, 96, 64, 64, 64, 64, 48, + 24, 152, 384, 48, 24, 192, 192, 96, + 96, 96, 192, 360, 8, 8, 8, 328, + 48, 88, 208, 360, 360, 360, 360, 48, + 360, 64, 368, 360, 360, 80, 64, 80, + 80, 96, 360, 328, 360, 192, 192, 360, + 360, 32, 208, 112, 8, 72, 72, 96, + 96, 80, 192, 368, 192, 192, 192, 224, + 224, 8, 368, 368, 224, 96, 240, 368, + 328, 192, 328, 248, 64, 64, 64, 328, + 208, 104, 208, 208, 32, 64, 80, 64, + 88, 208, 368, 80, 80, 208, 72, 368, + 368, 240, 72, 72, 72, 72, 72, 328, + 8, 96, 152, 208, 208, 208, 16, 64, + 368, 200, 200, 200, 200, 368, 200, 64, + 328, 88, 328, 64, 368, 368, 368, 368, + 440, 208, 64, 368, 368, 64, 440, 440, + 208, 208, 208, 96, 64, 16, 16, 208, + 208, 152, 208, 208, 208, 96, 96, 64, + 8, 64, 208, 96, 96, 208, 64, 88, + 88, 88, 88, 88, 8, 24, 16, 328, + 64, 64, 152, 64, 64, 64, 64, 64, + 152, 96, 16, 96, 424, 72, 72, 16, + 240, 72, 232, 424, 208, 208, 208, 424, + 328, 232, 96, 440, 64, 64, 64, 64, + 232, 88, 16, 200, 88, 64, 0, 240, + 72, 72, 72, 88, 200, 80, 16, 80, + 80, 88, 16, 0, 64, 72, 64, 64, + 64, 64, 64, 64, 64, 152, 80, 88, + 72, 72, 88, 72, 80, 424, 328, 328, + 328, 88, 424, 104, 328, 72, 8, 64, + 64, 64, 64, 392, 88, 88, 80, 88, + 80, 104, 80, 104, 328, 328, 328, 208, + 328, 328, 328, 328, 328, 8, 208, 72, + 72, 80, 80, 112, 80, 104, 240, 72, + 72, 72, 72, 72, 72, 72, 72, 80, + 88, 200, 200, 80, 240, 112, 200, 8, + 8, 80, 80, 200, 200, 88, 232, 88, + 8, 16, 16, 88, 200, 200, 248, 8, + 248, 104, 104, 80, 240, 112, 208, 392, + 80, 208, 208, 208, 208, 8, 80, 104, + 104, 104, 80, 80, 80, 8, 88, 8, + 16, 80, 248, 104, 8, 328, 8, 8, + 80, 80, 80, 80, 8, 80, 88, 88, + 80, 88, 88, 232, 16, 80, 80, 80, + 232, 328, 112, 424, 64, 16, 16, 64, + 64, 152, +}; + +static long _vq_q_res0_0g[] = { + 88, 112, 376, 392, 400, 352, 352, 256, + 400, 400, 184, 240, 400, 400, 256, 400, + 400, 400, 256, 256, 256, 432, 280, 400, + 424, 400, 216, 224, 400, 416, 256, 400, + 96, 400, 400, 400, 400, 376, 400, 352, + 400, 176, 400, 216, 400, 400, 352, 400, + 216, 400, 400, 400, 448, 320, 376, 400, + 400, 400, 256, 312, 416, 448, 280, 288, + 336, 288, 56, 344, 280, 336, 336, 344, + 336, 176, 336, 176, 344, 48, 288, 48, + 56, 344, 336, 336, 384, 416, 288, 320, + 288, 320, 416, 384, 320, 176, 336, 24, + 448, 360, 344, 312, 408, 280, 168, 408, + 408, 176, 304, 312, 280, 56, 56, 312, + 304, 312, 312, 176, 176, 280, 408, 152, + 240, 280, 280, 344, 384, 56, 384, 240, + 240, 344, 208, 360, 112, 152, 432, 16, + 112, 112, 344, 112, 408, 344, 448, 296, + 384, 296, 408, 448, 136, 304, 304, 304, + 136, 408, 112, 304, 312, 408, 24, 280, + 320, 232, 56, 320, 24, 320, 392, 408, + 320, 408, 312, 304, 312, 424, 88, 248, + 112, 248, 160, 264, 312, 96, 360, 256, + 248, 320, 176, 344, 344, 176, 344, 248, + 344, 168, 40, 248, 208, 248, 40, 360, + 248, 344, 208, 240, 224, 24, 32, 168, + 344, 240, 344, 320, 344, 240, 224, 344, + 240, 344, 176, 240, 344, 456, 344, 256, + 256, 256, 296, 176, 40, 32, 32, 32, + 176, 296, 296, 32, 256, 296, 320, 176, + 200, 320, 88, 256, 256, 456, 256, 440, + 32, 32, 256, 256, 168, 296, 320, 40, + 24, 96, 32, 32, 32, 24, 440, 368, + 24, 32, 320, 296, 24, 24, 96, 24, + 40, 368, 88, 256, 256, 256, 328, 24, + 312, 344, 384, 344, 176, 256, 344, 160, + 24, 312, 208, 312, 160, 96, 208, 24, + 328, 24, 176, 344, 96, 424, 320, 120, + 256, 424, 152, 96, 432, 256, 256, 424, + 224, 264, 256, 392, 120, 392, 256, 256, + 96, 208, 256, 344, 176, 248, 112, 360, + 248, 112, 112, 240, 360, 360, 248, 112, + 120, 112, 256, 264, 384, 264, 264, 8, + 264, 208, 208, 256, 264, 120, 264, 248, + 256, 112, 264, 264, 344, 96, 224, 40, + 8, 24, 24, 256, 8, 160, 256, 96, + 8, 24, 8, 8, 152, 416, 256, 32, + 176, 344, 8, 160, 432, 8, 384, 8, + 344, 8, 432, 432, 24, 432, 8, 32, + 176, 256, 8, 256, 256, 16, 248, 256, + 224, 312, 384, 160, 40, 48, 176, 344, + 48, 320, 248, 160, 416, 160, 344, 320, + 176, 160, 160, 48, 40, 384, 160, 40, + 384, 48, 432, 384, 416, 384, 320, 416, + 48, 160, 160, 416, 416, 160, 384, 312, + 384, 256, 256, 432, 256, 432, 344, 432, + 256, 256, 432, 416, 256, 432, 16, 432, + 256, 160, 344, 48, 432, 48, 320, 248, + 264, 432, 264, 104, 232, 16, 376, 112, + 408, 304, 288, 336, 192, 120, 56, 360, + 360, 120, 360, 192, 192, 360, 120, 160, + 360, 336, 192, 304, 192, 360, 408, 408, + 112, 384, 144, 240, 192, 120, 408, 56, + 304, 376, 304, 48, 376, 376, 376, 336, + 432, 56, 304, 376, 64, 304, 304, 376, + 408, 408, 120, 408, 120, 432, 120, 224, + 304, 376, 120, 120, 376, 120, 16, 192, + 192, 192, 408, 120, 368, 376, 376, 416, + 224, 384, 160, 112, 144, 368, 304, 384, + 376, 96, 384, 376, 384, 376, 376, 376, + 408, 8, 440, 80, 144, 240, 376, 376, + 376, 376, 72, 408, 240, 304, 376, 144, + 408, 16, 336, 376, 288, 352, 360, 376, + 264, 16, 408, 144, 352, 408, 376, 16, + 424, 376, 144, 368, 112, 208, 160, 304, + 336, 288, 384, 48, 264, 360, 48, 384, + 336, 112, 384, 288, 304, 136, 112, 56, + 248, 304, 240, 64, 304, 336, 408, 136, + 208, 56, 80, 208, 408, 208, 360, 408, + 208, 264, 16, 160, 304, 88, 408, 56, + 48, 336, 72, 200, 200, 56, 336, 72, + 200, 336, 200, 56, 72, 112, 72, 112, + 112, 200, 416, 112, 72, 200, 432, 240, + 112, 408, 240, 384, 288, 56, 408, 336, + 88, 16, 208, 112, 16, 80, 336, 88, + 408, 16, 112, 16, 16, 112, 408, 16, + 112, 88, 408, 16, 208, 88, 112, 80, + 72, 408, 88, 16, 112, 336, 80, 48, + 56, 112, 80, 336, 112, 16, 88, 72, + 88, 408, 80, 56, 304, 424, 384, 424, + 56, 264, 112, 424, 416, 160, 112, 120, + 80, 432, 88, 240, 200, 424, 72, 112, + 328, 432, 432, 72, 408, 240, 424, 432, + 136, 384, 96, 440, 408, 208, 368, 96, + 96, 368, 208, 368, 96, 160, 408, 384, + 384, 416, 88, 440, 368, 432, 440, 440, + 440, 440, 16, 88, 88, 408, 432, 88, + 88, 16, 160, 232, 216, 304, 88, 80, + 376, 376, 408, 376, 144, 432, 192, 304, + 408, 56, 336, 360, 248, 248, 248, 88, + 56, 408, 336, 248, 24, 24, 336, 408, + 160, 408, 24, 432, 248, 24, 248, 24, + 432, 336, 88, 160, 24, 408, 304, 248, + 64, 248, 160, 24, 160, 424, 88, 424, + 88, 88, 16, 248, 88, 376, 416, 416, + 376, 424, 440, 88, 64, 248, 56, 160, + 56, 416, 416, 56, 336, 16, 336, 416, + 248, 248, 248, 416, 424, 16, 112, 160, + 128, 144, 392, 104, 104, 392, 104, 104, + 104, 392, 424, 16, 120, 144, 200, 368, + 152, 144, 128, 144, 152, 144, 192, 120, + 240, 128, 120, 128, 120, 224, 8, 224, + 424, 144, 144, 8, 128, 416, 120, 152, + 120, 128, 8, 120, 8, 128, 104, 104, + 120, 128, 32, 32, 120, 352, 128, 216, + 120, 144, 120, 128, 120, 128, 120, 144, + 216, 128, 144, 120, 128, 152, 88, 416, + 384, 128, 152, 120, 120, 120, 120, 128, + 328, 352, 120, 144, 128, 144, 128, 416, + 104, 200, 368, 184, 352, 216, 328, 96, + 424, 128, 120, 152, 160, 128, 424, 128, + 144, 424, 152, 128, 96, 152, 120, 96, + 424, 152, 352, 216, 424, 152, 128, 184, + 352, 152, 144, 416, 96, 368, 144, 128, + 200, 368, 424, 240, 128, 232, 240, 440, + 144, 104, 16, 368, 200, 352, 384, 64, + 352, 128, 120, 128, 216, 88, 16, 128, + 368, 88, 88, 144, 128, 128, 104, 144, + 16, 128, 128, 16, 120, 160, 440, 144, + 240, 144, 96, 352, 8, 16, 104, 160, + 128, 128, 152, 144, 104, 216, 8, 16, + 80, 152, 80, 8, 72, 8, 144, 16, + 96, 104, 80, 152, 80, 128, 16, 16, + 16, 144, 32, 104, 72, 64, 104, 32, + 160, 128, 128, 32, 128, 8, 16, 128, + 104, 120, 128, 16, 144, 384, 424, 32, + 16, 32, 240, 128, 432, 32, 128, 216, + 32, 16, 328, 128, 384, 32, 64, 360, + 440, 80, 232, 128, 384, 384, 192, 432, + 120, 424, 416, 128, 120, 352, 128, 384, + 16, 184, 120, 160, 416, 160, 120, 120, + 128, 384, 128, 128, 384, 80, 248, 264, + 128, 352, 248, 128, 16, 416, 16, 416, + 416, 424, 384, 432, 352, 88, 432, 432, + 128, 432, 416, 200, 224, 432, 160, 16, + 104, 208, 120, 200, 360, 368, 8, 240, + 8, 240, 240, 80, 112, 152, 32, 120, + 8, 360, 120, 360, 8, 224, 8, 120, + 8, 120, 120, 120, 32, 120, 240, 32, + 240, 32, 424, 192, 32, 120, 200, 120, + 152, 240, 360, 72, 264, 16, 16, 152, + 120, 120, 432, 240, 152, 32, 432, 88, + 32, 80, 200, 32, 160, 80, 112, 224, + 232, 368, 360, 440, 8, 152, 80, 440, + 152, 32, 248, 88, 200, 120, 192, 120, + 8, 432, 8, 96, 32, 152, 24, 16, + 120, 24, 160, 64, 32, 224, 360, 152, + 32, 120, 160, 88, 24, 120, 32, 104, + 416, 264, 152, 8, 32, 248, 208, 368, + 248, 360, 32, 152, 120, 112, 360, 360, + 8, 24, 112, 264, 8, 360, 264, 32, + 264, 264, 112, 264, 32, 120, 8, 104, + 8, 120, 80, 232, 120, 8, 104, 120, + 8, 104, 8, 96, 120, 32, 120, 440, + 152, 104, 192, 264, 120, 32, 328, 104, + 248, 32, 8, 440, 120, 32, 32, 80, + 440, 368, 248, 152, 120, 96, 232, 264, + 152, 32, 200, 16, 208, 96, 8, 152, + 240, 240, 24, 96, 8, 240, 240, 24, + 440, 16, 368, 8, 240, 240, 440, 152, + 368, 424, 88, 424, 88, 104, 8, 424, + 96, 368, 328, 16, 440, 32, 32, 16, + 96, 16, 32, 16, 96, 32, 424, 248, + 424, 248, 96, 8, 16, 8, 16, 152, + 16, 208, 96, 8, 104, 424, 368, 392, + 32, 8, 16, 424, 232, 32, 32, 88, + 328, 208, 240, 72, 424, 96, 152, 32, + 32, 152, 24, 424, 32, 96, 424, 24, + 32, 424, 32, 240, 96, 424, 152, 152, + 96, 24, 152, 152, 240, 200, 424, 88, + 16, 152, 24, 152, 32, 264, 64, 32, + 16, 240, 200, 24, 80, 240, 240, 16, + 32, 16, 32, 32, 208, 240, 200, 328, + 424, 72, 80, 152, 112, 112, 152, 232, + 80, 112, 8, 424, 424, 112, 80, 72, + 424, 32, 152, 24, 200, 200, 104, 328, + 424, 240, 80, 264, 24, 104, 32, 8, + 240, 32, 424, 232, 424, 240, 32, 424, + 104, 264, 208, 392, 424, 24, 264, 112, + 264, 112, 24, 264, 8, 392, 32, 208, + 104, 16, 80, 8, 240, 200, 112, 88, + 24, 112, 264, 232, 264, 240, 8, 240, + 112, 240, 8, 80, 112, 264, 248, 248, + 16, 240, 112, 232, 104, 240, 264, 104, + 32, 240, 264, 88, 264, 264, 112, 32, + 248, 264, 8, 32, 16, 264, 8, 264, + 16, 32, 88, 8, 104, 104, 8, 248, + 248, 8, 24, 392, 16, 264, 112, 264, + 8, 16, 24, 88, 392, 152, 424, 112, + 88, 232, 16, 152, 264, 16, 112, 32, + 24, 24, 32, 24, 248, 112, 32, 152, + 24, 24, +}; + +static encode_aux _vq_aux_res0_0g = { + _vq_ptr0_res0_0g, + _vq_ptr1_res0_0g, + _vq_p_res0_0g, + _vq_q_res0_0g, + 1610, 1610 +}; + +static static_codebook _vq_book_res0_0g = { + 8, 58, 1, 1610612736, 1614282752, 3, 0, 1, 1, 4, + _vq_quantlist_res0_0g, + _vq_lengthlist_res0_0g, + &_vq_aux_res0_0g, +}; + + +#endif diff --git a/include/vorbis/book/res0a0aux.vqh b/include/vorbis/book/res0a0aux.vqh new file mode 100644 index 0000000..9c29933 --- /dev/null +++ b/include/vorbis/book/res0a0aux.vqh @@ -0,0 +1,291 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by huff/huffbuld + + ********************************************************************/ + +#ifndef _V_res0a0aux_VQH_ +#define _V_res0a0aux_VQH_ +#include "vorbis/codebook.h" + +static long _huff_lengthlist_res0a0aux[] = { + 15,15,15,15,15,15,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,13,14,14,14,14,14,13,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,12,14,14, + 14,14,14,14,14,12,10,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14, + 14,14,14,14,14,14,13,14,14,14,13,13,14,14,13,14, + 14,14,14,14,13,14,13,14,14,14,13,13,13,14,14,13, + 14,14,13,14,14,13,11,14,14,14,14,14,14,14,13,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,13,13,14,13,14, + 14,14,13,12,14,13,12,14,14,14,12,14,12,12,11,14, + 14,14,14,14,14,11,10,14,14,14,14,14,14,13,12,14, + 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,13,12,11,11,11,13, + 14,14,13,11,11,10,11,14,14,14,13,10,12, 9, 8,13, + 14,14,14,13,12, 9, 8,13,14,14,14,14,14,12,12,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,13,14,13,14,14,14,13,12,11,11,12,14, + 14,14,12,11,10,10,10,13,14,14,13,11,10, 8, 8,14, + 14,14,14,12,11, 9, 8,14,14,14,14,14,14,13,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,14,13,14,14,14,13,12,11,11,12,14, + 14,14,13,10,10, 9,10,14,14,13,13,10,10, 7, 7,14, + 14,14,14,12,11, 8, 6,13,14,14,14,14,14,13,11,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14, + 14,14,14,12,12,12,13,14,14,14,14,12,11,10, 9,14, + 14,14,14,13,12, 9, 7,13,14,14,14,14,14,12, 9,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,12,14,14,14,14,14,14,14,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,14,14,14,14,14,14,13,13,14,14,14, + 14,14,14,14,13,13,13,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,13,14,14,14,14,14,14,14,14,13,13,14,14,14, + 14,14,14,14,13,14,13,14,14,14,14,13,13,13,12,14, + 14,14,13,14,14,14,11,14,14,14,14,14,14,14,13,14, + 14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,13,13,13,13,14,14, + 14,14,14,13,13,13,12,14,14,14,14,12,13,11,11,14, + 14,13,13,14,13,12,10,13,14,14,14,14,14,14,13,13, + 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14, + 14,14,13,14,14,14,14,14,14,13,14,11,11,11,11,14, + 14,13,12,10,10, 9,10,14,14,14,13,10,10, 8, 8,13, + 14,13,13,11,12, 9, 8,14,14,14,14,14,14,13,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,12,14,14,14,14,14,13,13,10,10,10,12,14, + 14,13,13,10, 9, 9,10,14,14,14,12,10, 9, 8, 8,13, + 14,14,13,12,12, 9, 8,13,14,14,14,14,14,13,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14, + 14,14,14,13,14,13,13,14,14,14,12,10,10, 9,12,14, + 14,14,13,10, 9, 9,10,14,14,14,13, 9, 8, 7, 7,14, + 14,14,13,12,10, 8, 7,14,14,14,14,14,13,12,10,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,13,14,14,14,13,12,13,12,14,13, + 14,14,14,11,12,11,12,14,14,14,13,13,11, 9,10,14, + 14,14,14,12,11, 9, 8,12,14,14,14,14,14,11, 9,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,11,14,14,14,14,14,14,14,12,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,13,13,14,14,14,14,13,13,13,13,14, + 14,14,14,14,14,13,13,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,13,14,14,14,14,12,12,13,13,14, + 14,14,14,13,12,12,11,14,14,14,13,12,12,12,11,13, + 14,14,13,13,12,12,11,14,14,14,14,14,14,14,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,14,14,14,14,12,11,12,11,12,13, + 14,14,14,10,10, 9,10,14,14,14,14, 9,10, 9, 8,13, + 14,14,12,12,11,10, 9,14,14,14,14,14,14,14,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,13,14,13,14,14,14,14,14,14,13,10,11,11,13,12, + 14,14,13,10,10, 9,10,13,14,14,12, 9, 9, 8, 8,14, + 14,14,13,12,11, 9, 8,14,14,14,14,14,14,13,12,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, + 14,14,14,12,14,14,14,13,14,14,13,10,11,10,11,13, + 14,14,13,10, 9, 9,11,13,14,14,12, 9, 8, 8, 8,12, + 14,14,13,11,10, 9, 8,13,14,14,14,14,13,12,11,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,13,13,13,14,13, + 14,14,14,12,12,12,13,14,14,14,14,13,11,11,11,13, + 14,14,14,14,13, 9, 8,12,14,14,14,14,14,11,10,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,11,12,14,14,14,14,14,14,13,12,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14, + 14,14,14,13,14,14,13,14,14,14,14,14,14,14,14,14, + 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,13,14,14,13,14, + 14,14,13,14,14,13,14,14,14,14,14,13,13,14,13,14, + 14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,13,14,14,14,14,14,13,13,13,11,14, + 14,14,14,14,13,14,11,14,14,14,14,14,14,13,13,14, + 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14, + 14,14,14,13,13,13,13,13,13,14,14,11,11,13,12,12, + 14,14,13,10,10,10,10,13,14,14,14,11,10, 9, 8,12, + 14,14,14,13,12,10, 9,13,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14, + 14,13,13,13,13,13,13,13,14,14,12,11,10,11,12,12, + 14,14,13,10,10,10,11,11,14,14,13,10,10, 8, 8,11, + 14,14,14,13,12,11, 9,11,14,14,14,14,14,14,13,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,13,14,13,13,14,14,12,14,13,13,11,11,11,12,10, + 14,14,12,10,10, 9,11,10,14,14,13,10, 9, 8, 8, 9, + 14,14,14,12,11,10, 9,10,14,14,14,14,14,13,13,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,13,13,13,13,13,14,13, + 14,14,13,12,12,12,13,11,14,14,13,13,12,10,11,11, + 14,14,14,14,12,11,10, 8,14,14,14,14,14,13,11,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,14,14,14,13,14,13,14,14,14,14,14,14,13,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,13,13,14,13,14,14,14,14,14,14,13,14,14,14,12, + 14,14,14,13,13,12,14,12,14,14,14,14,13,12,11,11, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14, + 13,14,14,14,14,14,14,14,14,13,13,14,13,14,13,11, + 14,14,13,13,12,12,12,11,14,14,14,13,12,12,11,10, + 14,14,14,14,14,13,11,10,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,14,13,13,14,14,14,14, + 14,14,13,12,13,14,14,12,14,14,13,12,14,13,14,10, + 14,14,13,12,13,12,12, 9,14,14,14,12,11,10,11, 8, + 14,14,14,14,12,13,11, 8,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,14,14,13,14,13,12,12,13,14,14,11, + 14,14,14,13,14,13,14,11,14,13,14,13,13,13,13, 8, + 14,14,14,14,14,13,13, 7,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,13,14,14,14,14,14,13,14,14,13,13,14,13,13,11, + 14,14,14,14,13,13,14,11,14,14,14,13,14,14,13,10, + 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,13,13,13,14,14,14,14, + 14,14,14,12,14,13,14,14,14,14,13,12,13,13,14,11, + 14,14,13,13,12,13,13, 9,14,14,14,14,13,14,13, 8, + 14,14,14,14,14,13,14, 9,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,13,12,14,14,14,14,14,14,12,11,12,12,13, 9, + 14,14,13,12,13,12,12, 8,14,14,14,13,12,12,13, 6, + 14,14,14,13,14,12,12, 6,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,13,14,14,13,14,14,12,12,13,13,14,11, + 14,14,13,12,13,13,13, 8,14,14,13,13,13,13,14, 6, + 14,14,14,14,13,13,14, 5,14,14,14,14,14,14,13, 6, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,13, + 14,14,14,14,14,14,13,10,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,14,13,14,14,14,12,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,13,12,13,12, + 14,14,14,14,14,13,14,10,14,14,14,14,14,14,14, 8, + 14,14,14,14,13,14,14, 9,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14, + 14,14,13,14,14,14,13,13,14,14,14,12,14,13,14,10, + 14,14,14,13,13,13,14, 8,14,14,14,13,14,13,13, 6, + 14,14,14,14,14,14,14, 6,14,14,14,14,14,14,14, 7, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,13,13,14,11,14,14,14,13,13,14,13,11, + 14,14,13,13,13,13,14, 9,14,14,14,13,12,12,14, 6, + 14,14,14,14,14,13,13, 4,14,14,14,14,14,14,14, 4, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14, 9, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,10, +}; + +static static_codebook _huff_book_res0a0aux = { + 4, 4096, + _huff_lengthlist_res0a0aux, + 0, 0, 0, 0, 0, + NULL, + NULL, + NULL, +}; + + +#endif diff --git a/include/vorbis/book/res0a1aux.vqh b/include/vorbis/book/res0a1aux.vqh new file mode 100644 index 0000000..82e5539 --- /dev/null +++ b/include/vorbis/book/res0a1aux.vqh @@ -0,0 +1,291 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by huff/huffbuld + + ********************************************************************/ + +#ifndef _V_res0a1aux_VQH_ +#define _V_res0a1aux_VQH_ +#include "vorbis/codebook.h" + +static long _huff_lengthlist_res0a1aux[] = { + 13,12,13,13,14,14,17,20,13,13,13,13,14,15,16,20, + 13,12,12,12,14,14,16,20,13,12,12,12,14,14,15,19, + 14,14,14,14,15,16,17,20,15,14,14,14,16,16,17,20, + 15,14,15,15,19,16,18,20,20,20,20,19,20,20,17,19, + 13,13,13,13,14,15,17,18,13,12,12,12,14,14,16,20, + 13,12,12,12,13,14,15,20,13,12,11,11,13,13,15,19, + 14,13,13,13,14,14,16,20,15,13,14,13,14,15,15,20, + 15,15,15,15,16,17,15,18,20,20,20,20,20,20,17,18, + 13,12,12,12,13,14,16,20,13,11,11,11,13,14,15,20, + 12,11,11,10,12,13,15,18,12,10,10,10,11,12,15,18, + 13,12,12,11,13,13,15,18,14,13,13,12,13,13,14,17, + 15,15,14,14,16,15,15,16,20,20,18,19,20,20,17,20, + 13,12,12,11,13,13,15,19,12,11,11,10,12,13,15,20, + 12,10,10,10,11,12,15,19,11,10, 9, 9,10,11,13,20, + 13,11,11,10,11,12,13,18,13,12,12,11,12,12,12,15, + 15,14,13,14,15,14,13,14,20,19,17,18,18,19,16,16, + 15,14,14,13,14,14,16,20,14,13,12,12,13,13,15,20, + 13,12,11,11,13,13,15,20,12,11,10,10,11,12,14,18, + 14,13,12,11,12,12,13,20,15,14,13,12,12,12,13,15, + 18,15,14,14,15,14,13,13,20,20,18,20,18,17,16,15, + 16,14,14,13,14,14,15,20,15,14,14,13,14,14,15,18, + 14,13,13,12,13,14,15,19,13,13,12,11,12,12,14,19, + 15,14,13,11,12,12,14,17,15,14,13,12,12,12,12,15, + 16,14,15,13,14,13,12,13,19,17,17,16,17,16,15,14, + 17,16,16,15,16,15,17,20,17,17,16,16,16,16,17,18, + 17,18,15,15,16,15,16,20,16,16,15,14,14,14,15,20, + 17,17,15,14,14,14,15,20,17,15,15,14,14,13,13,17, + 18,15,14,14,13,13,12,14,19,17,15,15,16,14,14,15, + 20,19,18,19,18,19,18,20,20,19,19,19,20,20,19,20, + 20,20,19,20,20,19,20,18,20,19,20,20,20,20,18,20, + 20,20,20,20,19,19,20,20,20,20,19,19,19,16,16,19, + 19,19,18,17,17,16,14,16,20,19,18,18,17,17,15,14, + 14,13,14,13,15,14,15,20,14,14,13,13,14,14,17,20, + 14,13,13,13,14,14,16,20,14,13,13,12,14,14,15,19, + 16,15,14,14,15,16,17,20,15,15,15,14,16,15,16,20, + 17,16,16,15,17,17,16,19,20,19,19,20,20,20,19,20, + 14,14,13,13,15,15,15,20,14,13,13,13,14,14,17,20, + 14,13,12,12,14,14,17,20,14,13,12,12,13,13,15,20, + 17,15,14,14,15,15,16,18,16,16,14,14,15,15,17,20, + 17,17,16,15,17,16,16,17,20,20,20,20,20,19,19,18, + 15,13,13,12,14,14,16,19,14,13,12,12,13,14,16,19, + 14,12,12,11,13,14,16,20,13,12,11,11,12,13,15,20, + 15,14,13,13,13,14,15,20,15,15,14,14,14,14,15,18, + 17,16,16,16,16,15,15,17,20,20,20,20,20,19,19,19, + 15,13,13,12,13,14,15,19,14,13,12,12,13,14,16,20, + 13,12,11,11,12,13,15,18,13,12,11,10,11,12,14,19, + 15,14,12,11,12,12,14,20,15,14,13,12,13,12,14,17, + 18,15,14,14,15,14,14,16,20,20,20,19,18,18,17,16, + 16,16,15,14,15,14,16,20,16,15,14,14,14,15,15,19, + 15,14,13,12,14,14,16,20,15,14,12,11,13,13,15,19, + 17,15,14,12,13,13,14,20,17,15,14,13,13,13,14,18, + 19,15,15,15,16,15,15,15,20,20,20,20,20,19,18,17, + 18,16,16,15,16,16,16,19,16,16,15,15,15,15,16,20, + 16,15,14,13,15,14,15,18,16,14,13,12,13,13,14,18, + 17,15,14,13,13,13,15,20,17,15,14,13,13,13,13,19, + 17,15,15,14,16,14,14,15,20,19,18,17,19,17,16,17, + 19,18,17,17,17,17,17,20,19,17,17,16,17,15,16,17, + 18,16,16,15,16,15,15,19,18,16,15,14,15,14,14,18, + 17,16,16,15,15,15,15,19,17,16,16,15,15,14,14,18, + 18,15,15,15,16,15,13,16,18,18,17,16,17,16,15,16, + 20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,19, + 20,19,20,20,20,19,17,17,20,19,20,18,20,20,18,16, + 20,20,19,20,20,19,17,19,20,20,18,20,20,18,17,18, + 20,20,18,18,20,18,15,16,20,19,16,16,18,16,14,14, + 14,14,13,13,14,14,15,18,14,14,13,13,14,15,16,20, + 14,14,13,12,14,14,15,20,14,13,13,12,13,13,15,19, + 15,15,14,14,15,14,16,20,16,16,15,14,15,15,16,20, + 16,16,16,15,16,15,15,19,20,20,19,20,20,19,17,20, + 14,14,13,13,14,14,16,20,15,14,13,12,15,15,16,20, + 14,13,12,12,13,14,15,19,15,14,12,11,12,13,15,18, + 17,16,14,13,14,15,16,20,17,15,14,14,14,14,15,18, + 19,16,17,16,15,15,15,19,20,20,20,20,19,20,19,18, + 14,14,13,12,14,14,16,20,15,14,13,12,13,14,16,19, + 15,13,12,11,12,13,15,17,14,13,12,10,11,12,14,17, + 16,15,13,12,12,13,14,19,16,15,14,13,13,13,14,18, + 20,17,15,15,15,14,14,17,20,20,20,20,18,20,17,16, + 15,14,13,13,14,14,15,19,15,14,13,12,13,13,15,19, + 15,13,12,11,12,12,14,17,14,13,11,10,10,11,13,15, + 16,14,13,11,11,11,13,17,17,14,13,11,12,11,12,17, + 17,15,14,13,13,12,12,15,20,19,19,19,20,17,17,15, + 18,17,15,14,15,16,17,18,17,16,15,14,15,15,16,20, + 17,16,14,13,13,13,14,18,16,15,13,11,12,12,13,17, + 18,15,14,12,12,12,13,18,17,16,14,12,12,12,12,17, + 19,16,15,13,14,13,13,16,20,20,20,18,19,18,17,16, + 18,17,16,15,15,16,17,18,17,16,15,15,15,14,15,18, + 17,15,14,14,14,13,14,18,17,15,14,12,13,12,13,17, + 17,16,14,12,13,12,13,19,17,15,14,12,12,12,12,18, + 18,16,15,13,14,12,12,15,20,20,18,17,17,17,15,16, + 18,19,17,17,17,17,17,20,20,19,17,16,17,15,15,19, + 17,16,16,14,15,15,14,16,17,16,14,14,14,13,13,16, + 19,16,15,14,14,14,14,18,18,15,16,14,14,13,12,16, + 18,17,14,13,14,13,12,14,20,19,16,15,16,15,14,15, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,19, + 20,20,19,19,20,17,16,17,20,20,20,19,18,17,15,16, + 20,20,20,20,17,17,16,17,20,20,18,16,17,16,16,17, + 20,19,16,15,17,16,14,15,20,18,15,14,15,15,14,13, + 14,14,14,13,14,14,15,19,14,14,13,13,14,15,15,19, + 14,14,13,12,13,14,15,18,14,14,13,12,13,13,14,19, + 16,15,14,13,14,14,15,18,15,15,14,14,14,14,14,19, + 16,17,15,15,15,15,14,20,19,18,19,19,20,19,18,20, + 14,13,13,13,14,14,15,20,15,14,13,12,14,14,16,19, + 15,13,12,11,13,13,15,19,14,13,12,11,12,13,14,17, + 16,15,14,13,13,13,15,18,16,15,14,13,14,14,14,17, + 17,16,15,15,15,14,14,16,20,19,19,20,20,18,19,16, + 14,13,13,13,14,14,15,18,14,14,13,12,13,14,16,19, + 14,14,12,11,12,12,15,15,14,13,11,10,10,11,13,14, + 16,14,12,11,11,12,13,17,16,14,13,11,12,11,13,17, + 18,15,15,13,13,13,13,16,20,19,19,19,18,18,18,13, + 15,14,13,13,13,14,15,18,15,14,13,12,13,13,15,18, + 15,13,12,10,11,11,13,14,14,13,11, 8, 9, 9,11,13, + 15,14,12, 9, 9, 9,11,16,16,14,12, 9, 9, 9,10,15, + 18,15,13,12,11,11,11,14,20,20,18,16,18,18,15,13, + 18,16,15,15,15,15,16,19,16,16,14,14,15,14,15,18, + 16,15,14,12,12,12,14,16,15,15,12,10,10,10,11,15, + 15,15,13,10, 9, 9,11,16,16,15,13,10, 9, 9,10,15, + 18,16,14,12,11,10,11,15,19,20,19,17,19,16,16,14, + 18,17,17,16,15,15,16,19,18,16,15,14,15,14,14,17, + 17,15,13,13,13,12,13,16,15,14,12,10,10,10,11,16, + 16,15,13,10,10, 9,11,16,16,15,13,10, 9, 8, 9,15, + 17,16,14,11,11,10,10,14,20,20,18,16,17,15,15,14, + 19,20,18,18,18,17,17,19,20,20,17,15,16,15,14,16, + 20,17,16,14,14,13,12,15,18,16,15,12,12,11,11,15, + 18,16,14,12,12,11,11,15,17,16,14,12,11,10,10,15, + 18,15,13,11,12,10, 9,13,19,20,16,14,16,15,13,13, + 20,20,20,20,20,20,20,20,20,20,20,20,20,18,17,18, + 20,20,20,20,19,18,16,16,20,20,20,20,17,18,15,16, + 20,19,19,17,17,17,16,16,20,20,17,16,17,15,15,16, + 20,18,15,14,14,15,13,15,20,17,16,14,16,15,14,11, + 15,16,15,14,16,16,16,19,16,17,16,15,15,16,17,19, + 15,15,15,14,15,14,16,19,16,15,14,14,14,14,15,18, + 17,17,16,15,15,14,16,19,17,16,16,15,15,14,15,18, + 17,16,16,15,15,15,16,19,20,20,20,18,18,18,17,20, + 15,16,15,15,16,16,17,20,16,16,15,14,15,16,16,20, + 16,16,14,13,14,15,15,20,17,15,14,13,13,14,15,18, + 17,17,15,14,15,14,15,18,18,16,15,15,15,14,15,20, + 18,16,16,15,15,15,15,17,20,20,19,18,18,18,18,18, + 15,15,15,14,15,15,17,20,17,15,14,14,15,15,16,20, + 16,15,14,13,14,13,15,19,16,15,13,11,12,12,14,17, + 16,16,14,12,13,13,14,17,17,16,14,13,13,12,13,17, + 18,16,15,14,14,14,14,16,20,20,18,20,19,18,17,15, + 17,15,15,14,15,15,15,19,17,15,14,14,14,14,16,19, + 17,15,13,12,12,12,14,17,16,14,12, 9, 9, 9,12,14, + 17,15,13,10, 9, 9,11,15,16,15,13,10, 9, 9,10,15, + 20,16,14,12,12,11,11,15,20,20,20,18,19,17,16,13, + 18,16,16,15,15,16,16,19,18,18,17,15,16,16,16,20, + 17,16,15,13,13,13,14,18,16,15,13,10, 9,10,12,14, + 17,15,14,10, 9, 8,11,14,16,17,13,10, 8, 8,10,14, + 19,16,15,12,11,10,11,15,20,20,17,17,17,17,16,13, + 20,19,16,15,16,16,16,20,19,19,17,15,16,16,16,18, + 16,16,15,13,13,13,13,17,16,15,13,10,10, 9,11,15, + 16,16,14,10, 9, 8,10,13,16,16,14,10, 8, 7, 8,12, + 19,17,15,11,10, 9, 9,13,20,20,18,15,17,15,15,12, + 19,20,18,18,19,18,18,19,19,18,17,17,17,15,15,18, + 19,18,16,15,15,14,13,16,17,16,15,13,12,11,11,15, + 19,17,15,12,12,11,11,15,18,16,14,12,10, 9, 9,13, + 18,17,14,12,11,10, 9,12,20,20,17,16,16,15,13,13, + 20,20,20,20,20,20,20,20,20,20,20,20,20,18,20,20, + 20,20,20,20,20,18,18,18,20,20,20,18,17,17,15,16, + 20,20,20,17,18,18,16,18,20,20,20,17,17,16,15,17, + 20,20,18,15,18,16,14,15,20,18,17,16,16,16,14,10, + 16,16,16,15,16,16,16,18,17,17,16,16,16,16,17,20, + 16,17,16,15,15,15,16,19,16,16,16,14,14,14,15,18, + 17,17,16,16,15,16,15,17,16,17,16,15,16,15,15,17, + 17,17,16,15,16,15,15,17,20,20,19,18,18,17,15,17, + 16,16,16,15,16,16,17,20,17,17,16,15,16,15,18,20, + 18,16,15,14,15,15,15,20,17,16,15,14,14,14,14,17, + 20,17,16,15,15,15,15,18,18,16,15,15,15,14,14,17, + 17,16,15,14,14,14,14,16,20,20,20,20,18,16,16,17, + 17,16,15,16,15,16,17,20,17,17,16,14,15,15,16,19, + 17,16,15,13,14,14,16,19,16,15,14,12,13,12,14,19, + 18,17,15,13,13,13,14,18,17,16,14,13,13,12,13,17, + 19,16,15,13,14,13,13,15,20,20,18,19,18,17,16,15, + 16,16,15,14,15,15,16,20,17,16,15,14,15,15,16,19, + 16,15,14,12,13,12,14,17,16,14,12,10,10,10,11,15, + 17,15,13,10,10, 9,11,15,18,15,13,10, 9, 9,10,14, + 18,15,14,12,12,11,10,14,20,19,19,17,17,16,15,13, + 17,18,17,16,16,16,17,19,18,17,16,15,15,15,15,20, + 18,17,16,13,14,13,14,19,16,16,13,10, 9, 9,11,14, + 17,16,13,10, 8, 8,10,13,17,16,13,10, 8, 7, 9,12, + 17,17,14,12,11, 9, 9,13,20,20,19,16,16,15,14,12, + 18,18,16,15,17,16,17,18,18,16,16,15,15,15,15,18, + 18,17,15,13,13,13,13,17,17,16,13,10, 9, 9,11,14, + 16,17,13, 9, 8, 7, 9,12,17,16,13, 9, 7, 6, 7,10, + 16,16,14,11, 9, 7, 7,11,20,20,20,16,15,14,14,10, + 17,17,18,16,17,17,16,18,20,17,18,16,17,16,14,17, + 18,18,16,15,15,14,13,16,17,16,14,12,11,11,11,14, + 18,16,14,11,10, 9,10,13,17,16,14,11, 9, 7, 7,11, + 16,16,14,11,10, 7, 6, 9,19,18,17,15,15,13,11,10, + 20,20,20,20,20,20,20,19,20,20,20,20,20,20,19,18, + 20,20,20,19,20,20,18,20,20,20,19,18,17,16,16,15, + 20,20,19,17,17,16,15,15,20,20,18,17,16,15,14,14, + 19,20,18,15,15,14,12,13,19,19,16,15,16,15,13, 8, + 18,19,20,17,16,17,16,20,19,20,18,19,18,17,19,20, + 17,17,17,17,18,17,18,19,16,18,17,16,17,16,16,18, + 19,20,17,17,19,17,18,18,18,20,19,17,19,17,16,16, + 17,19,17,17,16,15,16,16,20,19,19,18,17,16,16,16, + 18,17,19,17,17,16,19,18,17,18,18,17,19,18,19,19, + 18,18,17,16,16,15,16,20,20,18,16,15,16,14,15,18, + 18,18,18,16,16,16,15,17,20,18,17,16,15,16,15,17, + 20,17,16,15,15,15,14,15,20,20,17,18,17,16,15,15, + 17,18,17,17,18,17,16,20,18,19,17,16,16,16,16,19, + 18,17,16,15,16,15,16,18,20,16,16,14,14,14,15,17, + 18,17,17,15,15,15,14,17,17,19,16,14,15,14,13,16, + 18,17,15,14,14,14,13,14,20,20,20,20,17,16,15,14, + 17,17,17,16,17,18,17,18,18,18,17,15,15,15,15,19, + 19,17,16,14,14,13,13,17,17,16,14,12,12,11,12,15, + 18,17,15,12,12,11,12,16,18,17,15,12,11,11,11,15, + 17,17,15,12,12,11,10,13,20,20,17,16,16,15,13,13, + 19,19,17,17,17,17,18,20,19,18,16,16,18,15,17,20, + 18,19,16,14,15,14,14,16,18,18,15,12,12,11,12,16, + 20,18,15,12,11,10,11,15,17,17,15,11,11, 9,10,13, + 19,18,15,12,12,10, 9,13,20,20,18,16,16,15,13,12, + 20,20,17,18,18,16,16,18,18,18,17,15,16,15,14,18, + 18,18,16,14,14,13,13,16,18,17,14,11,11,11,11,14, + 20,19,15,11,10, 9,10,13,18,17,14,10, 9, 7, 7,11, + 18,16,14,11,10, 8, 6,10,19,19,17,15,15,13,11, 9, + 18,19,18,16,17,18,16,18,18,20,17,17,18,15,14,16, + 18,18,17,15,16,14,13,15,17,17,14,12,12,11,10,13, + 18,17,15,12,11,10,10,13,17,18,14,11, 9, 7, 7,10, + 16,14,13,11,10, 7, 4, 7,18,15,16,14,13,12, 8, 7, + 20,20,20,20,20,20,19,19,20,20,19,20,20,20,18,20, + 20,19,20,18,20,19,16,17,20,20,20,18,17,16,14,14, + 20,20,18,16,17,15,14,14,20,20,18,16,15,14,12,12, + 18,19,15,14,14,12, 8, 9,16,17,16,14,15,13,10, 7, + 20,20,20,20,20,20,20,20,20,20,20,19,20,20,20,20, + 20,20,20,20,20,20,20,20,19,20,20,20,20,20,19,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19, + 20,20,20,20,20,20,19,20,20,20,20,20,20,20,20,17, + 20,20,20,20,19,20,20,20,20,19,20,20,20,20,20,20, + 18,20,20,20,20,20,20,20,20,20,20,20,20,20,19,20, + 20,20,19,20,20,20,19,19,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,18,18,20,20,20,20,20,20,19,16, + 20,20,20,19,20,20,19,20,19,20,20,20,20,20,20,20, + 19,20,20,19,20,20,18,20,20,20,20,20,19,19,18,19, + 20,20,20,20,20,20,18,19,20,20,20,19,18,19,20,19, + 20,20,20,18,18,17,16,16,20,20,20,18,16,16,15,14, + 19,20,20,20,19,20,20,20,20,20,20,20,20,20,19,20, + 20,20,20,19,19,20,19,19,20,19,20,17,18,17,16,16, + 20,20,18,20,20,18,17,17,20,20,20,19,18,18,16,16, + 20,20,18,15,15,14,13,14,20,20,18,16,15,14,14,12, + 20,20,20,20,20,20,20,20,20,20,20,20,20,19,20,20, + 20,20,20,20,20,19,17,19,20,20,19,20,18,18,16,16, + 20,20,20,18,20,19,16,17,20,20,20,17,19,16,15,17, + 20,19,20,16,15,15,14,15,20,20,20,16,16,16,14,12, + 20,18,20,20,20,20,19,20,20,20,20,20,20,20,20,20, + 20,20,19,20,20,19,17,18,20,19,18,17,17,16,15,15, + 20,20,20,17,17,16,15,17,20,19,18,17,17,15,14,15, + 20,20,18,15,16,14,12,13,20,20,20,17,16,16,13,12, + 20,20,20,20,20,20,19,20,20,20,20,20,20,19,18,20, + 20,20,19,18,20,19,16,16,20,20,19,16,18,15,14,14, + 20,20,20,16,16,15,13,15,20,19,16,16,15,13,12,13, + 19,20,17,14,14,12, 8, 9,19,20,18,16,17,14,10, 9, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,19,19,20,18,15,20,20,20,18,18,17,14,13, + 20,20,20,18,19,17,14,13,20,20,19,16,17,15,13,12, + 18,20,17,14,15,13,10,10,18,19,16,14,14,12, 9, 2, +}; + +static static_codebook _huff_book_res0a1aux = { + 4, 4096, + _huff_lengthlist_res0a1aux, + 0, 0, 0, 0, 0, + NULL, + NULL, + NULL, +}; + + +#endif diff --git a/include/vorbis/book/res0a_0.vqh b/include/vorbis/book/res0a_0.vqh new file mode 100644 index 0000000..7e06cb1 --- /dev/null +++ b/include/vorbis/book/res0a_0.vqh @@ -0,0 +1,151 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_0_VQH_ +#define _V_res0a_0_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_0[] = { + 0, + 8, + 14, + 20, + 25, + 30, + 34, + 37, + 40, + 42, + 44, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 56, + 58, + 60, + 63, + 66, + 70, + 75, + 80, + 86, + 92, + 100, +}; + +static long _vq_lengthlist_res0a_0[] = { + 20,20,20,20,19,19,19,19,19,19,18,18,18,17,16,15, + 16,18,18,19,18,18,19,19,19,19,19,19,19,19,19,19, + 19,19,19,19,19,18,18,19,17,18,18,17,16,15,14,16, + 17,17,18,18,17,17,17,19,19,19,19,19,19,19,19,19, + 19,19,17,17,17,17,17,18,16,16,16,15,13,12,14,14, + 16,16,16,16,17,17,18,18,19,19,19,19,19,19,19,18, + 17,16,17,15,16,15,15,15,14,14,13,12,11,12,13,14, + 14,14,15,16,16,16,16,18,19,19,19,19,16,17,15,16, + 15,13,13,13,13,13,13,12,13,12,11, 9,11,12,12,13, + 12,13,13,13,14,14,16,17,18,18,19,14,14,14,14,13, + 12,12,11,11,11,11,11,11,10, 9, 8, 9,10,11,11,11, + 11,11,12,12,12,13,16,17,17,17,14,14,14,14,13,11, + 12,11,11,11,11,11,11,10,10, 8,10,10,11,11,11,11, + 11,12,12,12,13,15,16,18,18,14,14,13,14,13,11,11, + 11,11,11,11,11,11,10,10, 8,10,10,11,11,11,11,11, + 11,11,11,13,15,17,17,16,14,14,14,14,12,11,11,11, + 11,11,10,10,10,10, 9, 8, 9,10,10,10,10,11,11,11, + 11,11,13,15,16,16,17,14,14,14,14,12,11,11,11,11, + 11,10,10,10,10, 9, 8, 9,10,10,10,10,10,10,11,11, + 11,12,14,16,17,16,13,14,14,13,12,10,10,10,10,10, + 9, 9,10, 9, 9, 7, 9, 9,10, 9, 9,10,10,10,10,10, + 12,14,16,16,18,14,14,14,13,12,10,10,10,10,10, 9, + 9, 9, 9, 8, 7, 8, 9, 9, 9, 9,10,10,10,10,10,12, + 14,15,18,18,14,15,14,13,12,10,10,10,10,10, 9, 9, + 9, 9, 8, 7, 8, 9, 9, 9, 9,10,10,10,10,10,12,14, + 15,17,17,14,14,13,13,11,10,10,10, 9, 9, 9, 9, 9, + 8, 8, 6, 8, 8, 9, 9, 9, 9, 9,10,10,10,11,13,15, + 16,18,14,14,13,12,10, 9, 9, 9, 9, 9, 8, 8, 8, 7, + 7, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,10,12,14,16, + 16,12,12,11,10, 9, 7, 8, 8, 8, 8, 7, 7, 7, 6, 5, + 4, 5, 6, 7, 7, 7, 8, 8, 8, 8, 7, 8,10,11,12,13, + 14,14,13,11,10, 9, 9, 9, 9, 9, 8, 8, 8, 7, 7, 6, + 7, 7, 8, 8, 8, 9, 9, 9, 9, 9,10,12,14,15,16,14, + 14,13,13,11,10,10,10,10, 9, 9, 9, 9, 8, 8, 6, 8, + 8, 9, 9, 9, 9,10,10,10,10,11,13,14,16,17,14,14, + 14,13,12,10,10,10,10,10, 9, 9, 9, 9, 8, 7, 8, 9, + 10, 9, 9,10,10,10,10,10,12,14,15,17,18,14,14,14, + 13,11,10,10,10,10,10, 9, 9, 9, 9, 8, 7, 8, 9, 9, + 9, 9,10,10,10,10,10,12,14,16,16,18,13,14,14,13, + 12,10,10,10,10,10, 9, 9,10, 9, 9, 7, 9, 9,10, 9, + 10,10,10,10,10,10,12,14,16,16,19,14,14,14,14,12, + 11,11,11,10,10,10,10,10,10, 9, 8, 9,10,10,10,10, + 10,11,11,11,11,12,15,16,18,18,14,14,14,14,12,11, + 11,11,11,11,10,10,10,10, 9, 8, 9,10,10,10,10,11, + 11,11,11,11,13,15,16,18,17,14,14,13,14,13,11,11, + 11,11,11,11,10,11,10,10, 8,10,10,11,11,11,11,11, + 11,11,11,13,15,16,18,18,14,14,14,14,13,12,11,11, + 11,11,11,11,11,10,10, 8,10,10,11,11,11,11,11,11, + 11,12,13,15,16,18,17,15,15,14,14,13,12,12,11,11, + 11,11,11,11,10, 9, 8, 9,10,11,11,11,11,11,12,12, + 12,13,15,16,17,18,16,16,16,15,15,14,13,13,13,13, + 12,13,13,12,11, 9,11,12,12,12,13,13,13,13,13,14, + 16,18,18,19,19,18,18,17,18,16,16,16,17,15,16,14, + 14,14,13,12,11,12,13,14,14,15,15,15,15,16,17,17, + 19,18,19,19,19,19,19,19,18,18,17,18,18,16,16,17, + 15,15,13,12,13,15,16,16,16,17,17,16,17,17,19,19, + 19,19,19,19,19,19,19,19,18,18,18,16,18,19,17,17, + 17,15,13,15,17,17,17,17,18,19,18,18,18,19,19,19, + 19,19,19,19,19,19,19,18,18,19,19,18,18,17,18,19, + 16,15,16,17,18,18,18,19,18,19,19,19,19,19,19,19, + 19, +}; + +static double _vq_quantthresh_res0a_0[] = { + -46, -39, -33, -28, -23, -18, -14.5, -11.5, + -9, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5, + 1.5, 2.5, 3.5, 5, 7, 9, 11.5, 14.5, + 18, 23, 28, 33, 39, 46, +}; + +static long _vq_quantmap_res0a_0[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, +}; + +static encode_aux_threshmatch _vq_aux_res0a_0 = { + _vq_quantthresh_res0a_0, + _vq_quantmap_res0a_0, + 31, + 31 +}; + +static static_codebook _vq_book_res0a_0 = { + 2, 961, + _vq_lengthlist_res0a_0, + 1, -524746752, 1611661312, 7, 0, + _vq_quantlist_res0a_0, + NULL, + &_vq_aux_res0a_0 +}; + + +#endif diff --git a/include/vorbis/book/res0a_1.vqh b/include/vorbis/book/res0a_1.vqh new file mode 100644 index 0000000..1a4b274 --- /dev/null +++ b/include/vorbis/book/res0a_1.vqh @@ -0,0 +1,99 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_1_VQH_ +#define _V_res0a_1_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_1[] = { + 0, + 3, + 6, + 8, + 10, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 22, + 24, + 26, + 29, + 32, +}; + +static long _vq_lengthlist_res0a_1[] = { + 13,13,13,13,13,12,12,11,10, 9,10,11,12,12,13,13, + 13,13,14,13,12,12,12,11,11,11,10, 9, 7, 8,10,11, + 11,11,12,12,12,13,13,12,12,12,11,11,11,10, 9, 7, + 9,10,11,11,11,12,12,12,13,12,11,11,12,11,11,11, + 10, 9, 8, 9,10,11,11,11,12,12,12,12,12,11,11,11, + 11,10,10,10, 8, 7, 8, 9,11,10,11,11,11,11,12,11, + 10,10,11,10,10,10, 9, 8, 7, 8, 9,10,10,10,11,10, + 10,11,11,10,10,11,10,10,10, 9, 8, 7, 8, 9,10,10, + 10,11,10,10,11,10, 9,10,10, 9, 9, 9, 8, 7, 6, 7, + 8, 9, 9, 9,10,10, 9,10, 9, 8, 8, 9, 8, 8, 8, 7, + 6, 5, 6, 7, 8, 8, 8, 9, 8, 8, 9, 8, 7, 7, 8, 7, + 7, 6, 6, 5, 3, 5, 6, 6, 7, 7, 8, 7, 7, 8, 9, 8, + 8, 9, 8, 8, 8, 7, 6, 5, 6, 7, 8, 8, 8, 9, 8, 8, + 9,10, 9,10,10, 9, 9, 9, 8, 7, 6, 7, 8, 9, 9, 9, + 10, 9, 9,10,11,10,10,11,10,10,10, 9, 8, 7, 8, 9, + 10,10,10,11,10,10,11,11,10,10,11,10,10,10, 9, 8, + 7, 8, 9,10,10,10,11,10,10,11,12,11,11,11,11,10, + 10, 9, 8, 7, 8, 9,10,10,11,11,11,11,11,12,11,11, + 12,11,11,11,10, 9, 8, 9,10,11,11,11,12,11,11,12, + 12,12,12,12,11,11,11,10, 9, 7, 9,10,11,11,11,12, + 12,12,12,13,12,12,12,11,11,11,10, 9, 7, 9,10,11, + 11,11,12,12,12,13,13,13,13,13,13,12,12,11,10, 9, + 10,11,12,12,12,13,13,13,14, +}; + +static double _vq_quantthresh_res0a_1[] = { + -14.5, -11.5, -9, -7, -5, -3.5, -2.5, -1.5, + -0.5, 0.5, 1.5, 2.5, 3.5, 5, 7, 9, + 11.5, 14.5, +}; + +static long _vq_quantmap_res0a_1[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, +}; + +static encode_aux_threshmatch _vq_aux_res0a_1 = { + _vq_quantthresh_res0a_1, + _vq_quantmap_res0a_1, + 19, + 19 +}; + +static static_codebook _vq_book_res0a_1 = { + 2, 361, + _vq_lengthlist_res0a_1, + 1, -527433728, 1611661312, 6, 0, + _vq_quantlist_res0a_1, + NULL, + &_vq_aux_res0a_1 +}; + + +#endif diff --git a/include/vorbis/book/res0a_2.vqh b/include/vorbis/book/res0a_2.vqh new file mode 100644 index 0000000..4ada5d2 --- /dev/null +++ b/include/vorbis/book/res0a_2.vqh @@ -0,0 +1,85 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_2_VQH_ +#define _V_res0a_2_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_2[] = { + 0, + 2, + 4, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 16, + 18, + 20, +}; + +static long _vq_lengthlist_res0a_2[] = { + 16,15,13,13,12,11,10, 8,10,11,12,13,13,14,16,14, + 13,12,11,11,10, 8, 7, 8,10,11,11,12,13,14,13,12, + 11,11,10,10, 8, 7, 8,10,10,11,11,12,14,12,11,11, + 11,10, 9, 8, 7, 8, 9,10,11,11,11,12,12,11,10,10, + 10, 9, 8, 7, 8, 9,10,10,10,11,12,11,10, 9, 9, 9, + 8, 7, 6, 7, 8, 9, 9, 9,10,11, 9, 8, 8, 8, 8, 7, + 5, 4, 6, 7, 8, 8, 8, 8, 9, 8, 7, 7, 7, 6, 6, 4, + 3, 4, 6, 6, 7, 7, 7, 8, 9, 8, 8, 8, 8, 7, 5, 4, + 6, 7, 8, 8, 8, 8, 9,11,10, 9, 9, 9, 8, 7, 6, 7, + 8, 9, 9, 9,10,11,12,11,10,10,10, 9, 8, 7, 8, 9, + 10,10,10,11,12,12,11,11,11,10, 9, 8, 7, 8, 9,10, + 10,11,11,12,13,12,11,11,11,10, 8, 7, 8, 9,11,11, + 11,12,13,14,13,12,11,11,10, 8, 7, 8,10,11,11,12, + 13,14,16,15,14,12,12,11,10, 8,10,11,12,13,13,14, + 16, +}; + +static double _vq_quantthresh_res0a_2[] = { + -9, -7, -5, -3.5, -2.5, -1.5, -0.5, 0.5, + 1.5, 2.5, 3.5, 5, 7, 9, +}; + +static long _vq_quantmap_res0a_2[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, +}; + +static encode_aux_threshmatch _vq_aux_res0a_2 = { + _vq_quantthresh_res0a_2, + _vq_quantmap_res0a_2, + 15, + 15 +}; + +static static_codebook _vq_book_res0a_2 = { + 2, 225, + _vq_lengthlist_res0a_2, + 1, -529268736, 1611661312, 5, 0, + _vq_quantlist_res0a_2, + NULL, + &_vq_aux_res0a_2 +}; + + +#endif diff --git a/include/vorbis/book/res0a_3.vqh b/include/vorbis/book/res0a_3.vqh new file mode 100644 index 0000000..9aeeb2d --- /dev/null +++ b/include/vorbis/book/res0a_3.vqh @@ -0,0 +1,74 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_3_VQH_ +#define _V_res0a_3_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_3[] = { + 0, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 12, +}; + +static long _vq_lengthlist_res0a_3[] = { + 14,12,12,11, 9, 8, 9,11,12,12,14,12,11,10, 9, 7, + 6, 8, 9,10,11,12,11,10,10, 9, 8, 7, 8, 9,10,10, + 12,10, 9, 9, 8, 6, 6, 6, 8, 9, 9,10, 9, 7, 8, 6, + 5, 4, 5, 6, 8, 7, 9, 8, 6, 7, 5, 4, 3, 4, 5, 7, + 6, 8, 9, 7, 8, 6, 5, 4, 5, 6, 8, 7, 9,11, 9, 9, + 8, 6, 6, 6, 8, 9, 9,10,12,10,10, 9, 8, 7, 8, 9, + 10,10,12,12,11,10, 9, 8, 6, 7, 9,10,11,12,14,12, + 12,11, 9, 8, 9,11,12,12,14, +}; + +static double _vq_quantthresh_res0a_3[] = { + -5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, + 3.5, 5, +}; + +static long _vq_quantmap_res0a_3[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, +}; + +static encode_aux_threshmatch _vq_aux_res0a_3 = { + _vq_quantthresh_res0a_3, + _vq_quantmap_res0a_3, + 11, + 11 +}; + +static static_codebook _vq_book_res0a_3 = { + 2, 121, + _vq_lengthlist_res0a_3, + 1, -531103744, 1611661312, 4, 0, + _vq_quantlist_res0a_3, + NULL, + &_vq_aux_res0a_3 +}; + + +#endif diff --git a/include/vorbis/book/res0a_4.vqh b/include/vorbis/book/res0a_4.vqh new file mode 100644 index 0000000..ef64452 --- /dev/null +++ b/include/vorbis/book/res0a_4.vqh @@ -0,0 +1,211 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_4_VQH_ +#define _V_res0a_4_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_4[] = { + 0, + 1, + 2, + 3, + 4, + 5, + 6, +}; + +static long _vq_lengthlist_res0a_4[] = { + 18,17,18,17,17,19,18,18,17,15,15,16,17,18,18,16, + 14,14,14,16,17,17,15,14,13,14,15,17,17,16,15,14, + 14,16,17,19,17,16,15,16,17,18,21,18,17,17,17,19, + 20,17,17,15,15,15,16,18,17,15,14,13,14,16,17,16, + 14,13,12,13,14,16,15,14,12,11,12,13,15,16,14,13, + 12,13,14,16,17,15,14,13,14,16,17,17,16,16,15,16, + 16,19,18,16,14,14,14,16,17,16,14,13,12,13,14,16, + 14,13,11,10,11,13,15,14,12,11, 9,10,12,14,15,13, + 11,10,11,13,14,15,14,13,12,13,14,16,18,16,15,14, + 15,16,17,17,16,14,13,14,16,16,15,14,12,11,12,14, + 15,14,12,11,10,11,12,14,13,11,10, 8, 9,11,13,14, + 12,10,10,11,12,14,15,14,12,11,12,13,15,17,15,14, + 13,14,15,16,17,16,15,14,15,16,17,16,14,13,12,13, + 14,15,15,13,11,10,11,13,15,14,12,10, 9,11,12,14, + 15,13,11,10,11,13,15,16,14,13,12,13,14,16,18,16, + 15,14,15,15,19,18,17,16,15,15,17,18,17,15,14,13, + 14,15,16,16,14,13,12,13,14,16,15,13,12,11,12,14, + 15,16,14,13,12,13,14,16,16,15,14,14,14,15,17,18, + 17,16,15,15,17,18,18,18,17,16,16,17,19,19,16,16, + 15,16,17,17,17,16,15,13,14,16,17,16,15,14,13,14, + 15,17,17,16,15,14,15,16,16,19,17,16,15,16,18,19, + 19,18,18,17,18,18,21,17,16,15,15,16,17,18,17,15, + 14,13,14,15,17,16,14,13,12,13,15,16,15,13,12,11, + 12,14,15,16,14,13,12,13,14,16,17,15,14,13,14,16, + 16,19,17,16,15,16,17,18,16,15,14,13,14,15,17,15, + 14,13,13,14,15,15,14,13,12,11,12,13,14,13,13,12, + 11,11,13,14,14,13,12,11,12,13,14,16,15,13,13,13, + 14,15,17,15,14,13,14,15,17,16,14,13,12,13,14,16, + 14,13,12,11,12,13,14,13,12,11,10,11,12,13,12,11, + 10, 9,10,12,12,13,12,11,10,11,12,13,14,13,12,11, + 12,13,14,15,14,13,12,13,14,16,16,13,12,11,12,13, + 15,13,13,12,11,12,13,13,12,12,10, 9,10,12,12,11, + 11, 9, 8, 9,11,11,12,11,10, 9,10,11,12,13,13,11, + 11,12,13,14,15,13,12,11,12,13,15,16,14,13,12,13, + 14,15,14,14,12,11,12,13,14,13,12,11,10,11,12,13, + 12,12,10, 9,10,12,12,13,12,11,10,11,12,13,14,13, + 12,12,12,14,14,15,14,13,12,13,14,16,17,15,14,13, + 14,15,16,16,14,14,13,13,14,15,14,14,12,11,12,13, + 14,14,13,12,11,11,13,13,14,13,12,11,12,13,14,16, + 14,13,13,13,14,16,16,16,14,14,14,16,16,18,16,16, + 15,16,16,17,17,15,14,13,14,15,17,16,14,13,12,13, + 14,16,15,14,12,11,12,14,16,16,14,13,12,13,14,16, + 18,16,14,13,14,16,17,17,17,16,16,16,17,17,16,15, + 14,14,14,16,17,16,14,13,12,13,14,16,14,13,11,10, + 11,13,15,14,12,11,10,11,12,14,15,13,11,10,11,13, + 15,15,14,13,12,13,14,15,17,16,14,14,14,15,17,15, + 14,13,12,13,14,16,14,13,12,11,12,13,14,13,12,11, + 10,11,12,13,12,11,10, 9,10,11,12,13,12,11,10,11, + 12,13,14,13,12,11,12,13,14,16,14,13,12,13,14,16, + 14,13,11,10,11,13,15,13,12,11,10,11,12,13,11,11, + 9, 8, 9,11,11,10,10, 9, 8, 9,10,10,11,11, 9, 9, + 9,11,11,13,12,11,10,11,12,13,14,13,11,11,11,13, + 14,14,12,10,10,11,12,14,12,11,10, 9,10,11,12,10, + 10, 9, 8, 8,10,10, 9, 9, 8, 7, 8, 9, 9,10,10, 9, + 8, 9,10,10,12,11,10, 9,10,11,12,14,12,10, 9,10, + 12,14,14,13,11,11,11,12,15,13,12,11,10,11,12,13, + 11,11, 9, 9, 9,11,11,10,10, 9, 8, 9,10,10,11,11, + 9, 9, 9,11,11,13,12,11,10,11,12,13,14,13,11,11, + 11,13,14,16,14,13,12,13,14,15,14,13,12,11,12,13, + 14,13,12,11,10,11,12,13,12,11,10, 9,10,12,12,13, + 12,11,10,11,12,13,14,13,12,11,12,13,14,15,14,13, + 12,13,14,16,17,16,15,14,14,15,17,15,14,13,12,13, + 14,15,14,13,11,10,11,13,15,14,12,10,10,11,12,14, + 14,13,11,10,11,13,14,16,14,13,12,13,14,15,18,16, + 15,14,15,16,17,16,15,14,13,14,15,16,15,13,12,11, + 12,14,15,13,12,10, 9,10,12,14,13,11,10, 8,10,11, + 13,14,12,10, 9,10,12,14,15,13,12,11,12,13,15,16, + 15,14,13,14,15,17,15,13,12,11,12,13,15,13,12,11, + 10,11,13,13,12,11,10, 9,10,11,12,11,11, 9, 8, 9, + 11,11,12,12,10, 9,10,11,12,13,12,11,11,11,13,13, + 15,13,12,11,12,13,15,14,12,10, 9,10,12,14,12,11, + 10, 9,10,11,12,10,10, 8, 8, 8,10,10, 9, 9, 8, 7, + 8, 9, 9,10,10, 8, 8, 8,10,10,12,11,10, 9,10,11, + 12,13,12,10, 9,10,12,13,12,11, 9, 8, 9,11,13,11, + 10, 9, 8, 9,10,11, 9, 9, 8, 7, 8, 9, 9, 8, 8, 7, + 5, 7, 8, 8, 9, 9, 8, 7, 8, 9, 9,11,11, 9, 8, 9, + 10,11,13,11, 9, 8, 9,11,13,14,12,10, 9,10,12,14, + 12,11,10, 9,10,11,12,10,10, 8, 8, 9,10,10, 9, 9, + 8, 7, 8, 9, 9,10,10, 8, 8, 8,10,10,12,11,10, 9, + 10,11,12,14,12,10, 9,10,12,13,15,13,12,11,12,13, + 15,13,13,11,11,11,12,13,12,11,10, 9,10,11,12,11, + 11, 9, 8, 9,11,11,12,11,10, 9,10,11,12,14,13,11, + 11,11,12,13,15,13,12,11,12,13,15,16,15,14,13,14, + 15,16,15,13,12,11,12,13,15,14,12,10, 9,10,12,14, + 13,11,10, 8,10,11,13,14,12,11, 9,10,12,14,15,14, + 12,11,12,13,15,16,15,14,13,14,15,16,17,16,14,14, + 15,16,16,16,14,13,12,13,14,16,15,13,11,10,11,13, + 15,14,12,11,10,11,12,14,15,13,11,10,11,13,14,15, + 14,13,12,13,14,16,17,15,15,14,14,16,17,16,14,13, + 12,13,14,16,14,13,12,11,12,13,14,13,12,11,10,11, + 12,13,12,12,10, 9,10,11,12,13,12,11,10,11,12,13, + 14,13,12,11,12,13,14,16,14,13,12,13,14,15,14,13, + 11,11,11,13,15,13,12,11,10,11,12,13,11,11, 9, 9, + 9,11,11,10,10, 9, 8, 9,10,10,11,11, 9, 9, 9,11, + 11,13,12,11,10,11,12,13,14,13,11,10,11,13,14,14, + 12,10,10,10,12,14,12,11,10, 9,10,11,12,10,10, 9, + 8, 9,10,10, 9, 9, 8, 7, 8, 9, 9,10,10, 9, 8, 9, + 10,10,12,11,10, 9,10,11,12,14,12,11,10,10,12,14, + 14,13,11,10,11,13,14,13,12,11,10,11,12,13,11,11, + 9, 9, 9,11,11,10,10, 9, 8, 9,10,10,11,11, 9, 9, + 9,11,11,13,12,11,10,11,12,13,14,13,11,10,11,12, + 14,16,14,13,12,13,14,16,14,13,12,11,12,13,14,12, + 12,11,10,11,12,13,12,12,10, 9,10,12,12,13,12,11, + 10,11,12,13,14,13,12,11,12,13,14,16,14,13,12,13, + 14,16,19,16,15,14,14,15,17,16,14,13,12,13,14,16, + 14,13,11,10,11,13,15,14,12,11, 9,10,12,14,15,13, + 11,10,11,13,15,16,14,13,12,13,14,16,17,17,15,14, + 14,15,17,18,16,16,15,15,17,19,17,15,14,13,14,15, + 18,16,14,13,12,13,14,15,15,14,12,11,12,14,15,16, + 14,13,12,13,14,16,16,15,14,13,14,15,16,18,16,16, + 15,16,18,18,16,15,14,14,14,15,17,16,15,14,13,13, + 14,16,14,13,12,12,12,13,14,14,13,11,11,11,13,13, + 14,13,12,11,12,14,14,15,14,13,13,13,15,15,16,15, + 14,13,14,16,17,16,14,13,12,13,14,16,14,13,12,11, + 12,13,14,13,12,11,10,11,12,13,12,12,10, 9,10,12, + 12,13,12,11,10,11,12,13,14,13,12,11,12,14,14,16, + 14,13,12,13,15,16,15,14,12,11,12,13,15,13,13,11, + 11,11,13,13,12,11,10, 9,10,11,12,11,11, 9, 8, 9, + 11,11,12,12,10, 9,10,12,12,13,13,11,11,11,13,13, + 15,14,12,11,12,14,15,16,14,13,12,13,14,16,14,13, + 12,11,12,13,14,13,12,11,10,11,12,13,12,11,10, 9, + 10,12,12,13,12,11,10,11,12,13,14,13,12,12,12,13, + 14,16,14,13,12,13,14,16,16,15,14,14,14,16,16,16, + 14,13,13,13,15,16,14,13,12,11,12,13,14,13,13,11, + 11,11,13,14,14,13,12,11,12,13,14,15,15,13,13,13, + 14,15,16,16,14,13,14,15,16,18,17,16,15,16,17,19, + 17,15,14,13,14,16,17,16,14,13,12,13,14,16,15,13, + 12,11,12,13,15,16,14,13,12,13,14,16,17,15,14,13, + 14,15,17,18,17,15,15,16,16,18,20,18,17,18,17,18, + 19,18,17,16,15,16,17,18,17,16,15,14,15,16,18,16, + 15,14,13,14,15,16,17,16,15,14,14,16,17,18,16,15, + 15,16,17,18,19,17,16,16,17,19,18,18,18,16,15,16, + 17,18,16,15,14,14,14,15,17,16,14,13,12,13,14,17, + 15,13,12,11,12,14,15,16,14,13,12,13,14,16,17,16, + 14,13,14,15,17,19,17,16,15,16,16,18,17,16,15,14, + 15,15,17,16,14,13,12,13,14,16,15,13,11,11,11,13, + 14,14,12,10, 9,10,12,14,15,13,11,11,11,13,15,16, + 15,13,12,13,14,16,17,16,14,14,14,16,17,16,15,14, + 13,14,15,16,15,14,12,11,12,14,15,14,12,11,10,11, + 12,14,13,11,10, 8,10,11,13,14,12,11,10,11,12,14, + 15,13,12,11,12,14,15,17,15,14,13,14,15,16,18,16, + 14,14,14,16,17,15,14,13,12,13,14,16,15,13,11,10, + 11,13,14,14,12,10, 9,11,12,14,15,13,11,10,11,13, + 15,16,14,13,12,13,14,15,16,16,15,14,14,16,19,19, + 18,16,15,16,17,18,18,16,14,14,14,15,17,16,14,13, + 12,13,14,16,15,13,12,11,12,13,15,16,14,13,12,13, + 14,16,16,16,14,13,14,16,16,18,17,16,15,16,16,20, + 19,17,17,16,18,17,19,17,17,16,15,16,17,20,17,16, + 15,14,15,16,18,16,15,14,13,14,15,17,17,16,14,14, + 15,16,17,18,17,16,15,16,17,19,20,18,17,16,18,17, + 17, +}; + +static double _vq_quantthresh_res0a_4[] = { + -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, +}; + +static long _vq_quantmap_res0a_4[] = { + 0, 1, 2, 3, 4, 5, 6, +}; + +static encode_aux_threshmatch _vq_aux_res0a_4 = { + _vq_quantthresh_res0a_4, + _vq_quantmap_res0a_4, + 7, + 7 +}; + +static static_codebook _vq_book_res0a_4 = { + 4, 2401, + _vq_lengthlist_res0a_4, + 1, -533200896, 1611661312, 3, 0, + _vq_quantlist_res0a_4, + NULL, + &_vq_aux_res0a_4 +}; + + +#endif diff --git a/include/vorbis/book/res0a_5.vqh b/include/vorbis/book/res0a_5.vqh new file mode 100644 index 0000000..8b90e46 --- /dev/null +++ b/include/vorbis/book/res0a_5.vqh @@ -0,0 +1,98 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_5_VQH_ +#define _V_res0a_5_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_5[] = { + 0, + 1, + 2, + 3, + 4, +}; + +static long _vq_lengthlist_res0a_5[] = { + 15,14,13,14,16,14,12,11,12,14,13,12,11,12,13,14, + 12,12,12,14,16,14,13,14,16,14,12,12,12,14,12,10, + 9,11,13,11,10, 8,10,12,12,10,10,10,12,14,12,12, + 12,14,13,12,11,12,13,11,10, 9,10,12,11, 8, 7, 9, + 11,11,10, 8,10,12,13,12,11,11,13,14,12,12,12,14, + 12,11,10,10,12,12,10, 8,10,11,12,10,10,11,12,14, + 12,12,12,14,15,14,13,14,15,14,12,11,12,14,13,11, + 11,12,13,14,12,12,12,14,15,14,13,14,16,13,12,11, + 12,14,12,10, 9,10,12,12,10, 9,10,12,13,11,10,11, + 12,14,12,12,12,14,12,10,10,11,12,10, 9, 8, 9,11, + 10, 8, 7, 8,10,11, 9, 8, 9,10,12,10,10,10,12,11, + 10, 9,10,12,10, 8, 7, 8,10, 8, 7, 6, 7, 8, 9, 8, + 7, 8, 9,12,10, 9,10,12,12,11,10,10,12,11, 9, 8, + 9,10,10, 8, 7, 8,10,10, 9, 8, 9,10,12,10,10,10, + 12,14,12,12,12,13,12,10,10,10,12,12,10, 8,10,12, + 12,10,10,10,12,14,12,12,12,14,13,11,11,12,13,11, + 10, 8,10,12,11, 9, 7, 9,11,12,10, 8,10,12,13,11, + 11,12,13,11, 9, 8,10,11, 9, 8, 7, 8, 9, 8, 7, 6, + 7, 8, 9, 8, 7, 8, 9,11, 9, 9, 9,12,10, 8, 7, 8, + 11, 8, 7, 6, 7, 8, 7, 6, 4, 6, 7, 8, 7, 6, 7, 8, + 10, 8, 7, 8,10,11,10, 9, 9,11, 9, 8, 7, 8, 9, 8, + 7, 6, 7, 8, 9, 8, 7, 8, 9,11, 9, 9, 9,11,13,12, + 11,11,13,12,10, 8,10,12,11, 8, 7, 9,11,11,10, 8, + 10,11,13,12,11,11,13,14,12,11,12,14,12,11,10,10, + 12,12,10, 9,10,11,12,10,10,10,12,14,12,11,12,14, + 12,10,10,11,12,10, 9, 8, 9,10,10, 8, 7, 8, 9,10, + 9, 8, 9,10,12,10,10,11,12,11,10, 9,10,11, 9, 8, + 7, 8,10, 8, 7, 6, 7, 8, 9, 8, 7, 8, 9,12,10, 9, + 10,11,12,10,10,10,12,10, 9, 8, 9,10,10, 8, 7, 8, + 10,10, 9, 8, 9,10,12,10,10,10,12,14,12,12,12,14, + 12,10,10,11,12,12,10, 9,10,12,12,10, 9,10,12,14, + 12,11,12,14,15,14,13,14,15,14,12,11,12,14,13,11, + 11,11,13,14,12,12,12,14,15,14,13,14,16,14,12,12, + 12,14,12,10, 9,10,12,12,10, 8,10,12,12,10,10,10, + 12,14,12,12,12,14,13,12,11,12,13,12,10, 8,10,12, + 11, 9, 7, 8,11,12,10, 9,10,11,13,12,11,12,13,14, + 12,12,12,14,12,10, 9,11,12,12, 9, 8,10,12,12,10, + 10,10,12,14,12,11,12,14,16,14,13,14,16,14,12,12, + 12,14,13,12,10,12,13,14,12,11,12,14,16,14,13,14, + 15, +}; + +static double _vq_quantthresh_res0a_5[] = { + -1.5, -0.5, 0.5, 1.5, +}; + +static long _vq_quantmap_res0a_5[] = { + 0, 1, 2, 3, 4, +}; + +static encode_aux_threshmatch _vq_aux_res0a_5 = { + _vq_quantthresh_res0a_5, + _vq_quantmap_res0a_5, + 5, + 5 +}; + +static static_codebook _vq_book_res0a_5 = { + 4, 625, + _vq_lengthlist_res0a_5, + 1, -533725184, 1611661312, 3, 0, + _vq_quantlist_res0a_5, + NULL, + &_vq_aux_res0a_5 +}; + + +#endif diff --git a/include/vorbis/book/res0a_6.vqh b/include/vorbis/book/res0a_6.vqh new file mode 100644 index 0000000..6902a34 --- /dev/null +++ b/include/vorbis/book/res0a_6.vqh @@ -0,0 +1,62 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0a_6_VQH_ +#define _V_res0a_6_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0a_6[] = { + 0, + 1, + 2, +}; + +static long _vq_lengthlist_res0a_6[] = { + 10, 8,10, 8, 7, 8,10, 8,10, 8, 7, 8, 7, 4, 7, 8, + 7, 8,10, 8,10, 8, 7, 8,10, 8,10, 8, 7, 8, 7, 5, + 7, 8, 7, 8, 6, 5, 7, 4, 2, 4, 7, 4, 6, 8, 7, 8, + 7, 5, 7, 8, 7, 8,10, 8,10, 8, 7, 8,10, 8,10, 8, + 7, 8, 7, 4, 7, 8, 7, 8,10, 8,10, 8, 7, 8,10, 8, + 10, +}; + +static double _vq_quantthresh_res0a_6[] = { + -0.5, 0.5, +}; + +static long _vq_quantmap_res0a_6[] = { + 0, 1, 2, +}; + +static encode_aux_threshmatch _vq_aux_res0a_6 = { + _vq_quantthresh_res0a_6, + _vq_quantmap_res0a_6, + 3, + 3 +}; + +static static_codebook _vq_book_res0a_6 = { + 4, 81, + _vq_lengthlist_res0a_6, + 1, -535822336, 1611661312, 2, 0, + _vq_quantlist_res0a_6, + NULL, + &_vq_aux_res0a_6 +}; + + +#endif diff --git a/include/vorbis/book/res0b_0.vqh b/include/vorbis/book/res0b_0.vqh new file mode 100644 index 0000000..8f8f432 --- /dev/null +++ b/include/vorbis/book/res0b_0.vqh @@ -0,0 +1,132 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0b_0_VQH_ +#define _V_res0b_0_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_0[] = { + 0, + 8, + 14, + 20, + 25, + 30, + 34, + 37, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 63, + 66, + 70, + 75, + 80, + 86, + 92, + 100, +}; + +static long _vq_lengthlist_res0b_0[] = { + 19,19,19,19,19,19,19,19,19,19,18,17,16,14,17,18, + 18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19, + 19,18,18,19,17,18,17,15,13,16,17,18,17,17,17,19, + 19,19,19,19,19,19,19,19,19,19,17,17,17,17,17,18, + 16,15,14,12,13,15,16,16,16,17,18,18,19,19,19,19, + 19,19,19,18,17,16,16,15,16,15,15,15,14,12,10,12, + 13,14,15,16,16,16,16,18,19,19,19,19,16,17,15,16, + 15,13,13,13,13,13,13,12,11, 9,11,12,12,13,13,13, + 14,14,15,17,18,18,19,14,14,14,14,13,12,12,11,11, + 11,11,10, 9, 7, 9,10,11,11,11,11,12,12,13,16,17, + 17,17,14,14,14,14,13,11,11,11,11,11,11,10, 9, 8, + 9,10,11,11,11,11,11,12,13,15,16,18,18,14,14,13, + 13,13,11,11,11,11,11,11,10, 9, 8, 9,10,11,11,11, + 11,11,11,13,15,17,16,16,14,14,14,13,12,11,11,11, + 11,11,10,10, 9, 8, 9,10,10,11,11,11,11,11,13,15, + 16,16,17,13,14,14,14,12,11,11,11,10,10,10, 9, 9, + 7, 9, 9,10,10,10,11,11,11,12,14,15,17,16,13,14, + 14,13,12,10,10,10,10,10, 9, 9, 8, 7, 8, 9, 9,10, + 10,10,10,10,12,14,15,16,18,13,13,13,12,11, 9, 9, + 9, 9, 9, 9, 8, 7, 6, 7, 8, 9, 9, 9, 9, 9,10,11, + 13,15,18,17,13,13,12,11,10, 8, 8, 9, 8, 8, 8, 7, + 6, 5, 6, 7, 8, 8, 8, 9, 9, 8,10,12,14,15,17,12, + 12,10, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 3, 4, 6, 7, + 7, 7, 8, 7, 7, 8, 9,11,12,13,13,13,12,11,10, 8, + 9, 9, 8, 8, 8, 7, 6, 5, 6, 7, 8, 8, 8, 9, 9, 8, + 10,12,13,15,16,13,14,13,12,11, 9,10, 9, 9, 9, 9, + 8, 7, 6, 7, 8, 9, 9, 9,10, 9, 9,11,13,15,16,18, + 13,13,13,13,12,10,10,10,10,10, 9, 9, 8, 7, 8, 9, + 9,10,10,10,10,10,12,14,15,16,19,13,14,13,14,12, + 11,11,11,10,10,10, 9, 9, 7, 9, 9,10,10,10,11,11, + 11,12,14,16,18,18,13,14,14,14,12,11,11,11,11,11, + 10,10, 9, 8, 9,10,10,11,11,11,11,11,13,15,16,18, + 17,14,14,13,14,13,11,11,11,11,11,10,10, 9, 8, 9, + 10,11,11,11,11,11,11,13,15,16,18,18,14,14,14,14, + 13,11,11,11,11,11,11,10, 9, 8, 9,10,11,11,11,11, + 11,12,13,15,16,18,17,14,14,14,13,13,12,12,11,11, + 11,11,10, 9, 7, 9,10,11,11,11,11,12,12,13,15,16, + 17,18,16,16,16,15,15,13,13,13,13,13,12,12,10, 9, + 11,12,13,13,13,13,13,14,15,18,18,19,19,18,18,17, + 18,16,16,16,17,15,16,14,14,12,10,12,13,15,15,15, + 15,16,17,17,19,18,19,19,19,19,19,19,18,18,17,18, + 18,16,16,16,14,11,14,15,16,17,17,16,17,17,19,19, + 19,19,19,19,19,19,19,19,18,18,18,16,18,19,16,16, + 13,15,16,17,18,19,18,18,18,19,19,19,19,19,19,19, + 19,19,19,18,18,19,19,18,18,16,17,14,16,18,18,19, + 18,19,19,19,19,19,19,19,19, +}; + +static double _vq_quantthresh_res0b_0[] = { + -46, -39, -33, -28, -23, -18, -14.5, -11.5, + -9, -7, -5, -3, -1, 1, 3, 5, + 7, 9, 11.5, 14.5, 18, 23, 28, 33, + 39, 46, +}; + +static long _vq_quantmap_res0b_0[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, +}; + +static encode_aux_threshmatch _vq_aux_res0b_0 = { + _vq_quantthresh_res0b_0, + _vq_quantmap_res0b_0, + 27, + 27 +}; + +static static_codebook _vq_book_res0b_0 = { + 2, 729, + _vq_lengthlist_res0b_0, + 1, -524746752, 1611661312, 7, 0, + _vq_quantlist_res0b_0, + NULL, + &_vq_aux_res0b_0 +}; + + +#endif diff --git a/include/vorbis/book/res0b_1.vqh b/include/vorbis/book/res0b_1.vqh new file mode 100644 index 0000000..636dddc --- /dev/null +++ b/include/vorbis/book/res0b_1.vqh @@ -0,0 +1,85 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0b_1_VQH_ +#define _V_res0b_1_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_1[] = { + 0, + 3, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 29, + 32, +}; + +static long _vq_lengthlist_res0b_1[] = { + 14,13,13,13,13,12,10, 8,10,12,13,13,13,13,14,13, + 12,12,12,11,11, 9, 7, 9,11,11,12,12,12,13,13,12, + 12,12,11,11, 9, 7, 9,11,11,12,12,12,13,12,11,12, + 12,11,11, 9, 8, 9,11,12,12,12,12,12,12,11,11,11, + 11,10, 8, 7, 9,10,11,11,11,11,12,11,10,10,10,10, + 9, 8, 6, 7, 9,10,10,10,10,11, 9, 8, 8, 9, 8, 7, + 6, 4, 6, 7, 8, 9, 9, 8, 9, 8, 6, 7, 7, 7, 6, 4, + 2, 4, 6, 6, 7, 7, 6, 8, 9, 8, 9, 9, 8, 7, 6, 4, + 6, 7, 8, 9, 9, 8, 9,11,10,10,10,10, 9, 7, 6, 7, + 9,10,10,10,10,11,12,11,11,11,11,10, 9, 7, 8,10, + 11,11,11,11,12,12,12,12,12,11,11, 9, 8, 9,11,11, + 12,12,11,12,12,12,12,12,11,11, 9, 7, 9,11,11,12, + 12,12,12,13,12,12,12,12,11, 9, 7, 9,10,11,12,12, + 12,13,14,13,13,13,13,12,10, 8,10,12,13,13,13,13, + 14, +}; + +static double _vq_quantthresh_res0b_1[] = { + -14.5, -11.5, -9, -7, -5, -3, -1, 1, + 3, 5, 7, 9, 11.5, 14.5, +}; + +static long _vq_quantmap_res0b_1[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, +}; + +static encode_aux_threshmatch _vq_aux_res0b_1 = { + _vq_quantthresh_res0b_1, + _vq_quantmap_res0b_1, + 15, + 15 +}; + +static static_codebook _vq_book_res0b_1 = { + 2, 225, + _vq_lengthlist_res0b_1, + 1, -527433728, 1611661312, 6, 0, + _vq_quantlist_res0b_1, + NULL, + &_vq_aux_res0b_1 +}; + + +#endif diff --git a/include/vorbis/book/res0b_2.vqh b/include/vorbis/book/res0b_2.vqh new file mode 100644 index 0000000..4806995 --- /dev/null +++ b/include/vorbis/book/res0b_2.vqh @@ -0,0 +1,74 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0b_2_VQH_ +#define _V_res0b_2_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_2[] = { + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, +}; + +static long _vq_lengthlist_res0b_2[] = { + 16,14,13,12,10, 8,10,12,13,14,16,14,13,12,10, 8, + 6, 8,10,12,13,14,13,12,11,10, 8, 6, 8,10,11,12, + 13,12,10,10, 9, 7, 6, 7, 9,10,10,12,10, 8, 8, 7, + 6, 4, 5, 7, 8, 8,10, 7, 6, 6, 5, 4, 2, 4, 5, 6, + 6, 7,10, 8, 8, 7, 5, 4, 6, 7, 8, 8,10,12,10,10, + 9, 7, 6, 7, 9,10,10,12,13,12,11,10, 8, 6, 8,10, + 11,12,13,14,13,12,10, 8, 6, 8,10,12,13,14,16,14, + 14,12,10, 8,10,12,13,14,16, +}; + +static double _vq_quantthresh_res0b_2[] = { + -9, -7, -5, -3, -1, 1, 3, 5, + 7, 9, +}; + +static long _vq_quantmap_res0b_2[] = { + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, +}; + +static encode_aux_threshmatch _vq_aux_res0b_2 = { + _vq_quantthresh_res0b_2, + _vq_quantmap_res0b_2, + 11, + 11 +}; + +static static_codebook _vq_book_res0b_2 = { + 2, 121, + _vq_lengthlist_res0b_2, + 1, -529268736, 1611661312, 5, 0, + _vq_quantlist_res0b_2, + NULL, + &_vq_aux_res0b_2 +}; + + +#endif diff --git a/include/vorbis/book/res0b_3.vqh b/include/vorbis/book/res0b_3.vqh new file mode 100644 index 0000000..e272e46 --- /dev/null +++ b/include/vorbis/book/res0b_3.vqh @@ -0,0 +1,211 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0b_3_VQH_ +#define _V_res0b_3_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_3[] = { + 0, + 2, + 4, + 6, + 8, + 10, + 12, +}; + +static long _vq_lengthlist_res0b_3[] = { + 21,21,20,20,21,21,21,21,19,18,18,19,20,19,20,19, + 18,17,18,19,20,20,19,17,15,17,18,19,20,20,18,17, + 19,18,19,20,20,20,19,19,20,20,20,20,20,19,20,19, + 20,20,20,18,19,19,19,20,20,19,17,17,19,19,19,19, + 18,16,15,16,18,19,18,17,15,13,15,17,19,19,18,16, + 15,16,17,19,19,19,18,17,18,19,20,19,19,20,19,20, + 19,20,20,19,20,17,18,19,20,19,19,16,15,17,19,18, + 18,17,14,13,14,17,17,17,15,13,11,13,15,17,19,17, + 14,13,14,16,18,19,18,17,15,17,18,20,19,19,18,17, + 19,19,20,19,19,17,16,18,19,19,18,18,15,13,15,17, + 20,17,15,13,11,13,15,17,15,13,11, 9,11,13,15,17, + 15,13,11,13,15,17,19,17,15,13,15,16,19,19,18,17, + 16,17,20,20,20,20,18,18,18,18,20,20,17,16,15,16, + 19,18,18,16,14,13,14,16,17,16,15,13,11,13,15,16, + 19,17,14,13,14,16,18,19,18,16,15,17,19,18,19,19, + 18,16,19,19,20,20,20,20,18,19,19,20,20,19,18,17, + 18,18,20,19,17,17,14,16,17,19,18,18,15,13,15,17, + 19,19,18,16,15,16,18,19,20,20,18,17,19,19,20,20, + 20,20,17,20,20,20,20,20,19,20,20,19,20,19,20,19, + 19,19,20,20,20,20,19,16,18,19,20,20,19,17,16,17, + 19,19,20,19,19,16,18,19,20,20,20,20,18,20,19,20, + 20,20,20,19,20,20,20,20,20,18,18,20,20,20,20,19, + 17,16,19,19,19,19,18,16,15,16,18,20,19,17,15,13, + 15,17,19,20,19,16,15,17,18,20,19,19,18,18,18,20, + 20,20,19,18,19,19,20,20,20,19,19,17,18,19,20,19, + 17,15,14,17,17,18,19,16,14,13,14,17,18,17,15,13, + 11,13,15,17,18,16,14,13,14,16,18,20,18,16,15,16, + 17,19,20,19,19,17,18,19,19,19,17,16,15,17,19,19, + 19,16,14,13,14,16,18,17,14,12,10,12,14,16,15,13, + 10, 9,11,13,15,17,14,12,11,12,14,16,18,16,14,13, + 14,17,17,19,18,17,15,16,18,19,19,17,15,13,15,17, + 19,17,15,13,11,13,15,18,15,13,11, 9,11,13,15,13, + 11, 9, 7, 9,11,13,15,13,11, 9,11,13,15,18,15,13, + 11,13,15,17,18,18,15,14,15,17,18,20,18,17,16,16, + 18,19,20,16,14,13,14,16,18,17,15,12,10,12,14,17, + 15,13,11, 9,10,13,15,17,14,12,11,12,14,16,19,16, + 14,13,14,17,18,20,19,16,15,16,17,20,20,19,19,17, + 18,19,20,19,18,16,14,16,16,20,19,16,14,13,14,16, + 18,17,15,13,11,13,15,17,17,16,14,13,14,16,19,19, + 19,16,15,16,17,19,19,19,18,18,18,19,20,20,20,19, + 18,20,20,20,20,19,18,17,18,19,20,19,18,16,15,17, + 18,20,17,18,15,13,15,17,18,19,18,16,15,16,17,20, + 20,20,19,18,17,18,20,20,20,19,19,19,20,20,20,18, + 17,17,18,19,20,20,17,16,15,17,18,19,18,16,14,13, + 14,16,19,17,15,13,11,13,15,17,19,17,14,13,14,16, + 19,19,19,16,15,16,18,20,20,19,19,17,19,19,20,18, + 17,16,15,16,17,19,19,16,14,13,14,16,18,16,14,12, + 10,12,14,16,15,13,11, 9,10,13,15,17,14,12,10,12, + 14,17,17,16,14,13,14,16,19,20,18,16,15,16,18,18, + 17,16,15,13,14,17,18,16,14,12,11,12,14,16,14,12, + 10, 9,10,12,14,13,11, 9, 7, 9,10,13,15,12,10, 9, + 10,12,14,16,14,12,11,12,14,16,19,16,14,13,14,16, + 18,17,15,13,11,13,15,17,15,13,11, 9,11,13,15,12, + 10, 9, 7, 9,10,13,11, 9, 7, 6, 7, 9,11,13,10, 9, + 7, 9,10,13,15,12,11, 9,11,13,15,17,15,13,11,13, + 15,17,18,16,14,13,14,16,18,17,14,12,10,12,14,17, + 14,12,10, 9,10,12,14,13,10, 9, 7, 9,11,13,14,12, + 10, 9,10,12,14,17,14,12,11,12,14,16,18,16,14,13, + 14,16,19,19,20,16,15,16,18,18,18,16,14,13,14,15, + 17,17,14,12,10,12,14,16,15,13,11, 9,11,13,15,16, + 14,12,10,12,14,16,17,16,14,13,14,15,19,19,19,16, + 15,16,18,19,20,19,19,16,18,18,20,19,18,17,15,16, + 18,19,19,16,14,12,14,16,19,18,15,13,11,13,15,16, + 18,16,14,13,14,16,18,20,18,16,15,16,18,19,20,19, + 20,17,17,19,20,20,19,17,15,17,18,20,18,17,15,13, + 15,17,18,17,15,12,11,13,15,17,15,13,11, 9,11,13, + 15,17,15,13,11,12,15,17,19,17,14,13,15,16,18,20, + 19,17,15,18,18,19,17,16,15,13,15,16,19,16,15,13, + 11,13,15,17,15,13,10, 9,10,13,15,13,11, 9, 7, 9, + 11,13,14,13,10, 9,10,13,15,17,15,13,11,13,15,16, + 18,17,15,13,15,17,19,17,15,12,11,12,15,16,14,12, + 10, 9,10,12,15,13,10, 9, 7, 9,10,12,11, 9, 7, 5, + 7, 9,11,12,10, 9, 7, 9,10,12,14,12,10, 9,10,13, + 14,17,15,12,11,13,15,16,15,13,11, 8,11,13,15,13, + 11, 9, 7, 9,11,13,10, 8, 7, 5, 7, 8,10, 8, 6, 5, + 3, 5, 6, 8,10, 8, 7, 5, 7, 8,10,13,11, 9, 7, 9, + 11,13,15,13,11, 8,11,13,15,17,15,13,11,12,15,16, + 15,12,10, 9,10,12,15,12,10, 9, 7, 9,10,12,11, 9, + 7, 5, 7, 9,11,12,10, 9, 7, 9,10,12,14,13,10, 9, + 10,12,14,16,15,12,11,12,15,16,19,17,15,13,15,17, + 18,17,15,12,11,13,15,17,15,13,10, 9,11,13,15,13, + 11, 9, 7, 9,11,13,15,13,10, 9,10,12,15,17,15,13, + 11,12,14,17,18,17,15,13,15,17,18,20,19,17,15,17, + 19,20,19,17,15,13,15,17,18,17,15,13,11,13,15,17, + 15,13,11, 8,11,13,15,16,15,13,11,13,15,16,19,17, + 15,13,15,16,18,20,18,16,15,16,19,18,20,19,19,17, + 17,20,20,19,18,17,15,17,19,19,18,16,14,13,14,17, + 18,16,15,13,11,13,15,17,18,17,14,13,14,16,19,18, + 18,16,15,16,18,18,20,20,18,18,17,19,20,19,17,16, + 15,17,19,19,18,16,14,13,14,17,18,16,14,12,10,12, + 14,16,15,13,11, 9,11,13,15,16,14,12,10,12,14,17, + 18,16,14,12,14,16,18,18,18,17,15,16,19,19,19,16, + 15,13,14,16,19,16,14,12,11,12,14,16,14,12,10, 9, + 10,12,14,12,11, 9, 7, 9,10,12,14,12,10, 9,10,12, + 14,16,14,12,11,12,14,17,19,16,14,13,14,17,18,17, + 15,13,11,13,15,17,15,13,11, 9,10,12,14,12,10, 9, + 7, 9,10,12,11, 9, 7, 6, 7, 9,11,12,10, 9, 7, 9, + 10,12,15,13,10, 9,10,13,15,16,15,13,11,13,15,17, + 19,16,14,13,14,16,18,16,14,12,11,12,14,16,14,12, + 10, 9,10,12,14,13,11, 9, 7, 9,10,13,14,12,10, 9, + 10,12,14,16,14,12,10,12,14,16,18,16,14,13,14,16, + 18,19,17,16,16,16,19,20,17,16,14,13,14,16,18,16, + 14,12,10,12,14,17,15,13,11, 9,11,13,15,16,14,12, + 10,12,14,16,18,16,14,12,13,16,19,19,18,17,15,16, + 17,20,20,20,17,17,18,20,20,20,18,16,15,16,18,19, + 18,16,14,13,14,16,18,17,15,13,11,13,15,17,18,16, + 14,13,15,16,19,19,18,17,15,16,19,20,20,18,18,18, + 18,19,19,20,19,19,19,20,20,19,20,18,19,17,18,18, + 19,20,18,16,15,16,19,18,19,17,15,13,15,16,20,20, + 18,16,15,16,19,19,20,18,18,17,18,19,20,20,19,19, + 18,20,20,20,19,19,17,17,18,19,20,18,19,16,15,16, + 19,20,18,16,14,13,14,16,18,16,15,13,11,13,15,17, + 19,16,14,13,14,16,18,18,17,16,15,16,18,19,19,20, + 19,17,18,19,20,20,18,17,15,16,18,18,19,16,14,13, + 14,16,18,17,14,12,11,12,14,17,15,13,11, 9,11,13, + 15,17,14,12,10,12,14,16,18,16,14,13,14,16,17,19, + 18,16,15,16,19,20,17,17,15,13,15,17,19,16,15,13, + 11,13,15,17,15,13,11, 9,11,13,15,13,11, 9, 7, 9, + 11,13,15,13,11, 9,11,13,15,17,15,13,11,13,15,17, + 19,18,15,14,15,17,18,20,18,16,15,17,17,19,18,16, + 14,13,14,16,19,16,14,12,11,12,15,16,15,13,10, 9, + 11,13,15,16,14,12,10,12,14,16,18,16,14,13,14,16, + 19,20,19,17,16,16,19,19,19,19,18,16,18,18,20,20, + 17,16,14,16,18,19,19,16,14,13,14,16,19,17,15,13, + 11,13,15,18,17,16,14,12,14,16,18,20,18,16,15,15, + 16,20,20,19,17,17,18,20,20,20,20,20,19,20,20,20, + 19,19,17,17,19,20,20,19,18,16,15,16,18,20,20,17, + 15,13,15,17,19,20,18,17,15,16,18,20,20,20,18,18, + 17,18,20,20,20,19,18,20,19,20,20,20,19,20,20,20, + 20,20,20,20,18,20,20,20,20,20,19,17,19,19,20,20, + 18,17,15,17,19,19,20,19,18,17,18,19,20,20,20,19, + 18,19,20,20,20,19,20,20,20,20,20,20,20,20,18,20, + 20,20,20,19,18,17,18,20,20,19,18,16,15,17,18,20, + 18,17,15,13,15,17,18,19,18,16,15,16,17,20,20,19, + 18,16,17,18,19,20,19,19,19,20,20,20,20,20,19,17, + 20,20,20,20,18,16,15,16,18,19,18,17,14,13,14,16, + 18,17,15,13,11,13,15,17,18,16,14,13,14,17,17,19, + 18,16,15,16,17,19,20,19,19,17,19,19,20,19,20,17, + 16,17,19,20,19,17,15,13,15,17,20,17,15,13,11,13, + 15,17,15,13,11, 9,11,13,15,16,15,13,11,13,15,17, + 18,18,15,13,15,18,19,19,19,17,16,17,18,20,19,19, + 17,17,19,19,20,20,18,17,15,16,18,20,18,16,14,13, + 14,16,19,17,15,13,11,13,15,16,18,16,14,13,14,16, + 19,19,18,16,15,17,18,20,20,20,18,17,19,19,20,20, + 20,19,18,20,20,19,20,19,19,17,19,20,20,19,18,16, + 15,17,19,19,18,18,15,13,15,17,20,19,19,16,15,16, + 17,20,19,19,17,17,17,19,20,20,20,19,20,19,19,20, + 20,20,20,20,20,20,20,20,20,20,20,19,19,20,20,19, + 18,17,17,20,20,19,18,18,15,17,19,19,18,19,19,16, + 19,19,20,20,20,19,19,19,20,20,20,20,19,20,19,20, + 20, +}; + +static double _vq_quantthresh_res0b_3[] = { + -5, -3, -1, 1, 3, 5, +}; + +static long _vq_quantmap_res0b_3[] = { + 0, 1, 2, 3, 4, 5, 6, +}; + +static encode_aux_threshmatch _vq_aux_res0b_3 = { + _vq_quantthresh_res0b_3, + _vq_quantmap_res0b_3, + 7, + 7 +}; + +static static_codebook _vq_book_res0b_3 = { + 4, 2401, + _vq_lengthlist_res0b_3, + 1, -531103744, 1611661312, 4, 0, + _vq_quantlist_res0b_3, + NULL, + &_vq_aux_res0b_3 +}; + + +#endif diff --git a/include/vorbis/book/res0b_4.vqh b/include/vorbis/book/res0b_4.vqh new file mode 100644 index 0000000..ff4cbda --- /dev/null +++ b/include/vorbis/book/res0b_4.vqh @@ -0,0 +1,98 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0b_4_VQH_ +#define _V_res0b_4_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_4[] = { + 0, + 1, + 3, + 5, + 6, +}; + +static long _vq_lengthlist_res0b_4[] = { + 14,14,13,15,16,14,14,12,14,15,13,12, 9,12,13,14, + 14,12,14,15,15,15,13,15,16,15,13,12,14,15,14,12, + 10,13,14,12,11, 8,10,12,14,13,10,12,13,15,14,12, + 14,15,13,12,10,12,13,12,11, 8,11,12,10, 8, 6, 8, + 10,12,11, 8,11,12,13,12,10,12,13,14,14,12,14,15, + 14,13,11,13,14,12,11, 8,11,12,14,13,10,13,14,15, + 14,12,14,15,16,15,13,14,15,15,14,11,13,15,13,12, + 9,12,13,14,14,12,14,15,15,15,13,15,16,14,13,11, + 14,15,14,12,10,12,14,12,10, 8,10,12,14,12,11,12, + 14,15,14,12,13,14,13,12,10,13,14,12,12,10,12,13, + 11,10, 8,10,11,13,12,10,12,12,13,12,11,12,14,12, + 10, 8,11,12,10,10, 8,10,11, 8, 8, 5, 8, 8,11,10, + 8,10,10,11,11, 8,10,12,14,12,10,12,13,13,12,10, + 12,13,10,10, 8,10,11,12,12,10,12,13,13,13,11,13, + 14,15,13,11,13,14,13,13,10,13,14,12,10, 8,11,12, + 14,13,10,12,14,15,14,12,13,15,12,11, 9,12,13,12, + 10, 8,11,12, 9, 8, 6, 8, 9,12,10, 8,10,12,12,11, + 9,12,13,11,10, 8,10,11,10,10, 8,10,10, 8, 8, 5, + 8, 8,10,10, 8,10,10,11,10, 8,10,11, 9, 8, 6, 8, + 9, 8, 7, 5, 7, 8, 6, 5, 3, 5, 6, 8, 8, 5, 7, 8, + 9, 8, 6, 8, 9,11,10, 8,10,11,10,10, 8,10,10, 8, + 8, 5, 8, 8,10,10, 7,10,10,11,10, 8,10,11,13,12, + 9,11,13,11,10, 8,10,12,10, 8, 6, 8,10,12,10, 8, + 10,12,13,12, 9,12,12,15,14,12,13,15,14,12,11,13, + 14,12,10, 8,10,12,14,13,10,13,13,14,13,11,14,15, + 14,13,11,12,14,13,12,10,12,12,10,10, 8,10,10,13, + 12,10,12,13,13,12,10,13,14,12,10, 8,10,12,10,10, + 8,10,10, 8, 8, 5, 8, 8,11,10, 8,10,10,12,11, 8, + 11,12,14,13,10,12,14,12,12,10,12,13,10,10, 8,10, + 11,12,12,10,12,12,13,13,10,12,13,15,14,12,14,15, + 14,12,10,12,14,12,10, 8,11,12,14,13,10,12,14,15, + 14,12,13,14,16,15,13,15,16,15,13,12,14,15,13,12, + 9,12,13,15,13,11,13,15,15,14,13,15,16,15,14,12, + 14,15,14,13,11,13,14,12,11, 8,11,12,14,13,10,13, + 14,15,14,12,14,15,13,12,10,12,13,12,11, 8,10,12, + 10, 8, 6, 8,10,12,11, 8,11,12,13,12,10,12,13,15, + 14,12,14,15,14,13,10,13,14,12,10, 8,11,12,14,13, + 10,12,14,15,14,12,13,15,16,15,13,15,16,14,14,12, + 14,15,13,12, 9,12,13,15,14,11,13,15,16,15,13,14, + 15, +}; + +static double _vq_quantthresh_res0b_4[] = { + -2, -1, 1, 2, +}; + +static long _vq_quantmap_res0b_4[] = { + 0, 1, 2, 3, 4, +}; + +static encode_aux_threshmatch _vq_aux_res0b_4 = { + _vq_quantthresh_res0b_4, + _vq_quantmap_res0b_4, + 5, + 5 +}; + +static static_codebook _vq_book_res0b_4 = { + 4, 625, + _vq_lengthlist_res0b_4, + 1, -533200896, 1611661312, 3, 0, + _vq_quantlist_res0b_4, + NULL, + &_vq_aux_res0b_4 +}; + + +#endif diff --git a/include/vorbis/book/res0b_5.vqh b/include/vorbis/book/res0b_5.vqh new file mode 100644 index 0000000..b7f8e9f --- /dev/null +++ b/include/vorbis/book/res0b_5.vqh @@ -0,0 +1,62 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/latticebuild + + ********************************************************************/ + +#ifndef _V_res0b_5_VQH_ +#define _V_res0b_5_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_5[] = { + 0, + 2, + 4, +}; + +static long _vq_lengthlist_res0b_5[] = { + 11, 9,12, 9, 7, 9,12, 9,12, 9, 7,10, 7, 4, 7, 9, + 7, 9,12, 9,11, 9, 7, 9,12, 9,12, 9, 7, 9, 7, 4, + 7, 9, 7, 9, 7, 4, 7, 4, 2, 4, 7, 4, 7, 9, 7, 9, + 7, 4, 7, 9, 7, 9,12, 9,12,10, 7, 9,11, 9,12, 9, + 7,10, 7, 4, 7,10, 7, 9,12, 9,12, 9, 7,10,12, 9, + 11, +}; + +static double _vq_quantthresh_res0b_5[] = { + -1, 1, +}; + +static long _vq_quantmap_res0b_5[] = { + 0, 1, 2, +}; + +static encode_aux_threshmatch _vq_aux_res0b_5 = { + _vq_quantthresh_res0b_5, + _vq_quantmap_res0b_5, + 3, + 3 +}; + +static static_codebook _vq_book_res0b_5 = { + 4, 81, + _vq_lengthlist_res0b_5, + 1, -533725184, 1611661312, 3, 0, + _vq_quantlist_res0b_5, + NULL, + &_vq_aux_res0b_5 +}; + + +#endif diff --git a/include/vorbis/book/res0b_6.vqh b/include/vorbis/book/res0b_6.vqh new file mode 100644 index 0000000..35d3409 --- /dev/null +++ b/include/vorbis/book/res0b_6.vqh @@ -0,0 +1,166 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by vq/somethingorother + + ********************************************************************/ + +#ifndef _V_res0b_6_VQH_ +#define _V_res0b_6_VQH_ +#include "vorbis/codebook.h" + +static long _vq_quantlist_res0b_6[] = { + 0, + 1, + 2, +}; + +static long _vq_lengthlist_res0b_6[] = { + 10, 8,10, 8, 7, 8,10, 8,10, 8, 6, 8, 7, 0, 4, 8, + 7, 8,10, 8,10, 8, 6, 8,10, 8,10, 8, 7, 8, 7, 0, + 6, 8, 7, 8, 4, 0, 6, 0, 2, 0, 6, 0, 6, 8, 6, 8, + 7, 0, 3, 8, 4, 8,10, 8,10, 8, 6, 8,10, 8,10, 8, + 6, 8, 6, 0, 4, 8, 7, 8,10, 8,10, 8, 6, 8,10, 8, + 10, +}; + +static double _vq_quantthresh_res0b_6[] = { + -0.5, 0.5, +}; + +static long _vq_quantmap_res0b_6[] = { + 0, 1, 2, +}; + +static encode_aux_threshmatch _vq_auxt_res0b_6 = { + _vq_quantthresh_res0b_6, + _vq_quantmap_res0b_6, + 3, + 3 +}; + +static long _vq_ptr0_res0b_6[] = { + -1, -2, -3, -4, -5, 4, -7, 28, + 40, -10, -11, 10, 38, -14, -15, 28, + 40, -18, 38, 40, -21, -22, -23, 10, + 40, -26, -27, 36, 46, -30, 40, 46, + -33, 22, -35, 40, 46, -38, -39, -40, + 4, -42, 12, 22, -45, -46, -47, 12, + 42, -50, 40, 42, -53, 30, 40, -56, + -57, -58, 30, -60, 40, 58, -63, -64, + 36, 48, -67, -68, 40, 66, -71, 48, + -73, -74, -75, -76, 4, -78, 14, 22, + -81, -82, -83, 14, 44, -86, 40, 44, + -89, 32, 40, -92, -93, -94, 32, -96, + 40, 58, -99, -100, 38, 50, -103, -104, + 40, 68, -107, 50, -109, -110, -111, -112, + 4, -114, 34, 40, -117, -118, -119, -120, + 16, 40, 40, -124, 34, 22, -127, -128, + -129, 16, -131, -132, 16, 44, 40, 44, + -137, -138, -139, -140, 34, -142, 40, 58, + -145, 40, 44, -148, 40, 42, -151, -152, + 22, -154, 40, -156, -157, 40, 52, -160, + 44, 52, 22, -164, 40, -166, 40, 70, +}; + +static long _vq_ptr1_res0b_6[] = { + -72, -37, -20, -9, -6, 40, -8, 58, + 58, -13, -12, 40, 40, -17, -16, 64, + 64, -19, 64, 64, -32, -25, -24, 46, + 46, -29, -28, 64, 64, -31, 64, 64, + -34, 46, -36, 76, 76, -55, -44, -41, + 40, -43, 40, 40, -52, -49, -48, 48, + 48, -51, 48, 48, -54, 42, 42, -62, + -59, 58, 66, -61, 66, 66, -66, -65, + 66, 66, -70, -69, 76, 76, 66, 76, + -108, -91, -80, -77, 40, -79, 40, 40, + -88, -85, -84, 50, 50, -87, 50, 50, + -90, 44, 44, -98, -95, 58, 68, -97, + 68, 68, -102, -101, 68, 68, -106, -105, + 76, 76, 68, 76, -126, -116, -113, 40, + 58, -115, 58, 58, -125, -123, -122, -121, + 44, 44, 42, 40, 44, 40, -150, -136, + -130, 42, -134, -133, 52, 52, -135, 52, + -147, -144, -141, 58, 70, -143, 70, 70, + -146, 70, 70, -149, 70, 70, -162, -153, + 52, -155, 42, -159, -158, 70, 70, -161, + 70, 70, -163, -165, 58, -167, 76, 76, +}; + +static long _vq_p_res0b_6[] = { + 144, 152, 112, 16, 16, 16, 112, 112, + 160, 40, 40, 40, 152, 112, 112, 112, + 160, 152, 152, 160, 40, 40, 40, 40, + 160, 144, 144, 144, 184, 160, 160, 184, + 88, 88, 160, 160, 184, 48, 16, 16, + 16, 48, 48, 88, 48, 48, 48, 48, + 168, 160, 160, 168, 120, 120, 160, 120, + 120, 120, 120, 160, 160, 232, 144, 144, + 144, 192, 160, 160, 160, 264, 192, 192, + 152, 56, 16, 16, 16, 56, 56, 88, + 56, 56, 56, 56, 176, 160, 160, 176, + 128, 128, 160, 128, 128, 128, 128, 160, + 160, 232, 152, 152, 152, 200, 160, 160, + 160, 272, 200, 200, 16, 16, 16, 16, + 16, 136, 136, 160, 64, 64, 64, 64, + 64, 160, 160, 136, 136, 88, 136, 64, + 168, 64, 64, 64, 64, 176, 160, 176, + 136, 136, 136, 136, 136, 160, 160, 232, + 160, 160, 176, 160, 160, 168, 208, 88, + 88, 168, 160, 160, 160, 160, 208, 176, + 176, 208, 88, 232, 160, 160, 160, 280, +}; + +static long _vq_q_res0b_6[] = { + 176, 168, 144, 40, 112, 160, 160, 232, + 232, 112, 152, 160, 160, 152, 160, 256, + 256, 160, 256, 256, 88, 144, 160, 184, + 184, 160, 184, 256, 256, 184, 256, 256, + 160, 184, 184, 304, 304, 144, 120, 48, + 160, 88, 160, 160, 120, 160, 168, 192, + 192, 168, 192, 192, 160, 168, 168, 144, + 160, 232, 264, 232, 264, 264, 160, 192, + 264, 264, 192, 264, 304, 304, 264, 304, + 168, 152, 128, 56, 160, 88, 160, 160, + 128, 160, 176, 200, 200, 176, 200, 200, + 160, 176, 176, 152, 160, 232, 272, 232, + 272, 272, 160, 200, 272, 272, 200, 272, + 304, 304, 272, 304, 280, 64, 136, 160, + 232, 160, 232, 232, 88, 136, 168, 160, + 176, 176, 168, 160, 176, 160, 304, 136, + 208, 168, 160, 176, 208, 208, 208, 208, + 168, 176, 160, 232, 280, 232, 280, 280, + 176, 280, 280, 168, 280, 280, 304, 160, + 208, 208, 168, 176, 208, 280, 280, 208, + 280, 280, 304, 280, 232, 280, 304, 304, +}; + +static encode_aux_nearestmatch _vq_auxn_res0b_6 = { + _vq_ptr0_res0b_6, + _vq_ptr1_res0b_6, + _vq_p_res0b_6, + _vq_q_res0b_6, + 168, 168 +}; + +static static_codebook _vq_book_res0b_6 = { + 4, 81, + _vq_lengthlist_res0b_6, + 1, -535822336, 1611661312, 2, 0, + _vq_quantlist_res0b_6, + &_vq_auxn_res0b_6, + &_vq_auxt_res0b_6, +}; + + +#endif diff --git a/include/vorbis/book/resaux0_long.vqh b/include/vorbis/book/resaux0_long.vqh new file mode 100644 index 0000000..b6b5856 --- /dev/null +++ b/include/vorbis/book/resaux0_long.vqh @@ -0,0 +1,289 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by huff/huffbuld + + ********************************************************************/ + +#ifndef _V_resaux0_long_VQH_ +#define _V_resaux0_long_VQH_ +#include "vorbis/codebook.h" + +static long _huff_lengthlist_resaux0_long[] = { + 19,19,19,19,19,19,18,18,18,16,17,15,18,17,18,18, + 18,17,15,15,16,17,17,18,18,16,15,15,17,17,18,18, + 18,17,17,17,16,16,18,18,18,18,17,18,18,18,18,18, + 18,18,18,18,17,18,18,18,18,18,18,18,18,18,18,18, + 18,17,18,17,18,18,18,18,16,13,12,13,13,15,18,18, + 18,13,12,12,13,15,18,18,18,15,13,13,13,14,16,18, + 18,17,15,14,15,16,16,18,18,18,18,16,16,16,17,18, + 18,18,18,18,17,16,17,18,18,18,18,18,18,18,18,18, + 18,18,17,17,18,18,18,18,18,13,12,13,14,15,18,18, + 17,13,11,12,13,15,16,18,18,14,12,12,13,15,15,18, + 18,18,14,13,13,14,15,18,18,17,15,15,15,15,16,18, + 18,18,18,17,16,16,16,17,18,18,18,18,18,18,18,18, + 18,18,18,18,18,17,18,18,18,15,14,14,15,16,18,18, + 18,15,13,14,15,15,18,18,18,16,14,14,13,14,17,18, + 18,17,14,14,13,14,15,18,18,17,15,14,14,14,15,17, + 18,18,16,15,15,15,17,16,18,18,18,18,18,18,18,17, + 18,18,18,18,18,18,18,18,18,17,16,15,16,17,18,18, + 18,17,15,15,15,16,18,18,18,17,14,14,14,14,16,18, + 18,18,15,14,13,14,15,18,18,17,15,15,14,14,15,18, + 18,18,17,16,15,15,15,18,18,18,18,18,18,17,17,18, + 18,18,18,18,18,18,18,18,18,18,17,17,17,17,18,18, + 18,18,16,17,17,17,18,18,18,18,16,16,16,15,17,17, + 18,18,16,15,14,15,17,18,17,17,16,14,14,15,15,17, + 18,18,17,16,14,15,15,18,18,18,18,18,16,17,17,16, + 18,18,18,18,18,18,18,18,18,18,18,18,17,17,18,18, + 18,18,18,18,18,18,18,18,18,18,18,17,16,17,18,18, + 18,18,17,16,16,16,17,18,18,17,17,16,16,15,15,17, + 18,18,18,15,14,14,14,16,18,18,18,17,17,14,15,15, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,16,17,18, + 18,18,18,18,17,15,15,16,18,18,18,18,17,16,15,15, + 18,18,18,17,18,17,18,18,18,14,13,13,14,16,18,18, + 18,14,12,12,13,16,17,18,18,14,13,12,13,14,18,18, + 18,16,14,14,15,16,17,18,17,17,17,16,17,16,17,18, + 18,18,18,16,16,15,18,18,18,18,18,18,18,18,18,18, + 18,15,15,15,16,16,18,18,17,10, 9,10,11,14,17,18, + 16,10, 8, 9,11,13,17,18,16,12,10,10,11,13,18,18, + 16,13,12,11,12,14,16,17,18,16,14,14,14,16,17,18, + 18,18,18,16,17,16,16,18,18,18,18,18,18,18,18,18, + 18,17,16,16,15,16,17,18,17,11, 9,10,12,14,18,18, + 17,10, 8, 9,10,13,16,18,16,11, 9,10,11,13,16,18, + 17,13,11,11,12,13,14,18,18,16,13,13,13,14,15,18, + 18,17,16,15,15,16,16,18,18,18,18,18,18,18,17,18, + 18,16,17,17,16,16,18,18,18,13,12,12,13,15,18,18, + 17,12,10,11,11,13,16,18,18,13,11,11,11,13,15,18, + 18,15,12,11,11,13,15,18,18,16,14,13,13,13,15,18, + 18,17,16,15,14,15,15,18,18,18,18,17,17,18,18,18, + 18,18,16,17,17,17,18,18,18,16,14,14,14,16,18,18, + 18,16,12,12,13,14,16,18,17,16,13,12,12,13,16,18, + 18,16,13,12,12,13,15,17,17,18,14,13,13,13,15,18, + 18,18,16,16,14,14,15,16,18,18,18,18,17,17,16,17, + 18,18,18,17,18,18,18,18,18,17,16,17,16,17,17,18, + 18,18,16,15,15,16,18,18,18,17,15,14,14,14,16,18, + 18,17,14,14,14,14,16,18,18,18,15,14,14,14,15,17, + 18,18,17,16,14,14,14,16,18,18,18,18,18,17,16,17, + 18,18,18,17,18,18,18,18,18,18,18,18,17,18,18,18, + 18,18,17,17,18,18,18,18,18,18,17,16,16,17,17,18, + 18,18,17,17,16,16,16,18,18,18,16,16,15,13,15,18, + 18,18,17,16,15,13,13,14,18,18,18,18,17,14,13,14, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,17,16,18, + 18,18,18,18,17,16,16,16,18,18,18,18,17,16,15,16, + 18,18,18,17,16,18,18,18,17,14,14,15,15,17,18,18, + 16,15,13,13,15,17,18,18,17,15,14,14,13,15,17,18, + 18,17,15,14,15,15,18,18,18,17,16,16,15,17,18,18, + 18,18,17,18,16,17,18,18,18,18,18,18,18,18,18,18, + 18,17,17,17,16,17,18,18,17,12,11,11,13,16,18,18, + 15,12,10,10,12,14,16,18,15,14,12,11,12,13,16,18, + 15,15,13,13,13,14,16,18,17,17,16,15,15,15,17,18, + 17,18,18,18,17,18,17,18,18,18,18,18,18,18,18,18, + 18,17,17,15,15,15,18,18,17,12,10,11,12,14,17,18, + 15,12, 8, 8, 9,11,15,18,15,13, 9, 9,10,11,14,18, + 15,14,11,10,11,11,13,18,16,17,14,13,13,13,13,17, + 18,18,16,16,15,15,15,16,18,18,18,18,18,18,17,18, + 18,18,18,15,16,16,18,18,18,15,12,12,12,15,17,18, + 18,13, 9, 9,10,11,14,18,16,14,10, 9,10,10,13,18, + 17,15,11,10,10,10,12,17,18,17,14,13,11,11,11,15, + 18,18,18,15,15,14,13,15,18,18,18,18,18,17,17,17, + 18,18,17,18,17,17,17,18,18,17,15,14,14,16,18,18, + 17,14,11,10,11,12,15,18,18,15,11,10,10,11,13,18, + 17,15,12,11,10,10,12,17,17,16,13,12,11,11,11,16, + 18,17,16,15,14,13,12,15,18,18,18,18,18,18,16,14, + 18,18,18,18,17,17,17,18,18,18,17,16,16,16,17,18, + 18,17,13,12,12,13,15,18,17,16,13,12,12,12,13,17, + 18,17,13,12,12,12,13,17,17,17,13,13,12,12,12,17, + 18,16,14,14,13,12,12,14,18,18,18,18,17,16,15,16, + 18,18,18,18,18,18,17,18,18,18,18,18,17,17,18,18, + 18,18,18,16,15,15,16,17,18,18,16,16,15,14,15,18, + 18,18,15,15,14,14,14,17,18,17,15,14,13,13,13,16, + 18,18,15,14,12,12,12,13,18,17,18,16,14,13,13,14, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,17,17,18,17,18,18,18,18,16,16,16,16, + 18,18,17,18,15,14,13,14,18,18,18,18,16,14,14,14, + 18,18,18,18,18,17,18,18,18,15,17,16,17,18,18,18, + 18,17,16,17,17,16,17,18,18,18,16,15,16,17,18,18, + 17,17,17,17,16,16,18,18,18,18,18,17,18,18,17,18, + 18,18,18,18,18,17,18,18,18,18,18,18,18,18,18,18, + 18,18,18,17,16,18,17,18,18,15,15,15,14,16,17,18, + 17,16,13,13,13,14,18,18,16,17,14,13,13,14,17,18, + 17,17,15,14,14,15,16,17,18,17,17,16,15,16,17,18, + 18,18,18,18,17,17,18,18,18,18,18,18,18,18,18,18, + 18,18,18,17,17,17,17,18,18,15,13,13,13,15,18,18, + 16,13,10, 9,10,11,14,18,16,14,10,10,10,11,13,18, + 17,15,12,10,10,11,12,18,17,18,14,13,12,12,13,16, + 18,17,17,15,15,14,15,16,18,18,18,18,18,18,18,17, + 18,18,17,18,15,15,17,18,18,17,14,14,13,15,17,18, + 18,14,10, 9,10,11,13,18,17,14,10, 9, 9,10,12,17, + 17,16,11,10, 9, 9,11,17,17,17,13,12,10,10,11,15, + 18,18,16,14,13,12,12,14,18,18,18,18,17,17,17,16, + 18,18,18,17,16,16,18,18,18,18,15,14,15,15,16,18, + 16,16,11,10,10,11,14,18,18,15,11,10, 9,10,11,18, + 17,15,11,10, 9, 9,10,16,18,16,12,11,10, 9,10,14, + 18,18,15,13,12,11,10,13,18,18,18,17,18,15,15,15, + 18,18,18,17,16,16,17,18,18,18,16,16,15,17,15,18, + 18,17,13,13,12,12,14,17,17,16,13,12,11,11,12,17, + 18,16,13,11,10,10,11,15,18,17,13,11,10,10,10,14, + 18,17,14,13,11,11,10,12,18,18,17,17,16,15,14,14, + 18,18,18,17,17,17,18,18,18,18,18,18,17,16,16,18, + 18,18,17,16,14,14,15,17,17,18,16,15,14,13,13,15, + 18,18,14,14,13,12,12,15,18,17,14,13,12,11,11,14, + 18,17,14,13,12,11,10,12,18,18,17,16,14,14,13,13, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,17,18,18,18,18,18,18,17,17,17, + 18,18,18,18,18,16,17,17,18,18,18,17,16,15,15,15, + 18,18,18,16,15,14,13,14,18,18,18,17,16,15,14,15, + 18,18,18,18,18,18,18,18,18,18,17,18,18,17,18,18, + 18,18,17,17,16,17,18,18,18,18,18,17,17,16,18,18, + 18,18,17,17,16,17,16,18,18,18,18,17,17,17,16,18, + 18,18,18,18,18,17,17,18,18,18,18,18,18,17,17,18, + 18,18,17,18,18,18,18,18,18,17,16,17,16,18,17,18, + 17,18,15,14,14,15,16,18,18,17,14,15,14,15,18,18, + 17,18,17,15,14,15,16,18,18,18,16,17,15,15,17,18, + 18,18,18,17,16,16,17,18,18,18,18,18,18,18,18,18, + 18,18,18,17,17,17,17,18,17,17,14,14,14,15,17,18, + 17,15,11,10,11,12,15,18,18,15,11,10,10,11,13,18, + 18,16,12,11,10,11,12,17,18,18,14,13,12,12,12,15, + 18,18,17,16,13,13,13,16,18,18,18,17,18,17,18,17, + 18,17,17,18,16,17,17,18,18,17,15,14,14,15,17,18, + 18,15,11,10,10,11,13,18,18,15,11, 9, 9, 9,11,17, + 18,15,11,10, 9, 9,10,16,18,16,13,11,10,10,10,14, + 18,18,15,13,12,11,11,14,18,18,18,18,17,16,16,17, + 18,18,18,17,15,17,18,18,18,17,15,15,15,15,17,18, + 18,15,11,10,10,11,13,18,18,14,11, 9, 9, 9,11,18, + 17,16,11, 9, 8, 8, 9,15,17,16,12,10, 9, 8, 9,13, + 18,18,15,12,11,10, 9,12,18,18,18,17,15,15,14,16, + 18,18,17,18,18,17,16,17,18,18,17,16,16,14,16,18, + 18,17,13,12,12,12,13,17,18,17,12,11,10,10,11,16, + 17,17,12,10, 9, 9,10,14,17,17,13,10, 9, 8, 8,12, + 18,18,14,12,10, 9, 8,10,18,18,17,15,14,14,12,13, + 18,18,18,17,18,17,15,17,18,18,18,18,18,18,15,17, + 18,18,16,15,15,14,13,17,17,17,15,13,13,12,12,16, + 18,17,14,12,11,11,11,14,17,18,13,11,10, 9, 9,13, + 17,17,14,12,10, 9, 8,10,18,18,18,16,13,13,12,11, + 18,18,18,18,18,18,18,17,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,17,18,18,18,18,18,17,17,16,17, + 18,18,18,18,17,15,15,16,18,18,18,17,14,14,14,16, + 18,18,17,15,13,12,12,13,18,18,18,17,14,13,13,12, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,17,17,16,17,18,18, + 18,18,18,18,18,17,17,18,18,18,18,18,16,17,16,18, + 18,18,18,18,17,15,16,18,18,18,18,18,17,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,16,16,17,16,18,18,17,18,17,17,17,17,17,18, + 18,18,17,16,15,15,15,18,18,18,18,17,15,16,17,18, + 18,18,17,17,16,16,18,17,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,17,18,17,17,15,17,16,17,18,18, + 17,17,13,12,12,13,15,17,18,17,13,12,11,12,14,17, + 18,17,14,12,11,11,13,18,18,18,16,13,12,12,13,16, + 17,18,16,15,14,13,13,15,18,18,17,17,18,17,16,17, + 18,18,18,17,17,18,16,18,18,18,16,15,16,16,16,18, + 18,16,12,11,11,12,13,17,18,16,11,10,10,11,12,16, + 18,18,12,10,10, 9,11,15,18,18,14,12,10,10,10,14, + 17,18,15,13,12,11,11,14,18,18,18,18,17,16,15,16, + 18,18,18,17,18,18,16,17,18,16,17,16,16,16,17,18, + 17,16,12,11,11,11,13,17,17,16,11, 9, 9, 9,11,16, + 18,17,11, 9, 8, 8, 9,14,17,17,12,10, 9, 8, 8,12, + 18,17,14,12,10, 9, 9,11,18,18,18,16,15,14,13,14, + 18,18,18,18,16,17,15,18,18,17,17,17,17,17,17,18, + 18,16,13,12,12,12,13,17,18,16,12,10,10,10,11,15, + 18,16,11,10, 8, 8, 9,13,18,17,12,10, 8, 7, 7,11, + 17,18,14,12,10, 8, 7, 9,18,18,16,15,14,12,11,11, + 18,18,18,18,18,18,15,17,18,18,17,17,18,17,16,18, + 18,18,17,15,15,14,13,15,17,18,14,13,12,12,12,15, + 17,18,13,12,10, 9,10,13,17,17,14,11, 9, 8, 8,11, + 17,17,14,12, 9, 7, 6, 8,18,18,16,16,13,11, 9, 8, + 18,18,18,18,18,18,17,18,18,18,18,18,18,18,17,18, + 18,18,18,18,18,18,18,17,18,18,18,18,17,17,15,16, + 18,18,17,17,15,14,13,15,18,18,16,16,14,12,12,13, + 18,18,17,15,14,11,10,11,18,18,18,16,14,12,11,10, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,17,18,18, + 18,18,18,18,18,17,18,18,18,18,18,18,17,18,18,18, + 18,18,18,18,18,18,17,17,18,18,18,18,18,18,18,17, + 18,18,18,18,18,18,18,18,18,18,18,18,18,17,18,18, + 18,18,17,18,17,18,18,18,18,18,18,17,18,17,18,18, + 18,18,18,18,17,17,18,17,18,18,18,17,18,16,17,18, + 18,18,18,18,17,17,17,17,18,18,18,18,17,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,15,15,14,16,17,18,18,18,15,15,14,14,15,17, + 18,18,17,14,14,13,14,18,18,18,17,16,14,13,13,15, + 18,18,17,16,15,14,13,15,18,18,17,17,18,16,15,16, + 18,18,18,18,18,18,18,18,18,18,18,18,18,17,17,18, + 18,17,13,13,13,14,15,18,18,17,13,12,12,12,13,16, + 18,17,13,12,11,11,12,15,18,18,16,13,12,11,11,14, + 18,18,16,15,13,12,11,13,18,18,18,17,16,15,13,14, + 18,18,18,18,18,17,18,17,18,18,18,16,17,17,18,18, + 18,17,14,12,13,13,14,17,18,17,13,11,11,11,12,16, + 18,18,13,11,10,10,10,14,17,18,13,12,10, 9, 9,13, + 18,18,16,13,11,10, 9,11,18,18,17,17,16,13,12,13, + 18,18,18,18,18,18,16,18,18,18,18,18,16,17,16,17, + 18,18,14,13,13,14,13,16,18,18,13,11,10,11,11,14, + 18,17,13,11, 9, 9, 9,12,17,18,13,11, 9, 8, 8,11, + 17,18,15,12,10, 8, 7, 8,18,18,17,16,14,12,10,10, + 18,18,18,18,18,17,17,18,18,18,18,18,18,18,18,18, + 18,18,15,15,14,14,13,14,18,18,15,13,12,12,11,14, + 17,18,14,12,10,10,10,12,16,18,14,11, 9, 8, 7,10, + 17,18,14,11, 9, 7, 5, 6,18,18,18,15,13,10, 7, 6, + 18,18,18,18,18,18,17,17,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,17,17,18,18,18,18,18,17,15,15, + 18,18,18,16,16,14,13,14,18,18,17,14,13,12,10,12, + 17,18,15,14,12, 9, 7, 8,17,18,17,14,14,11, 8, 6, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,17, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,16,17, + 18,18,18,18,18,18,15,17,18,18,18,18,18,18,17,17, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,17,18,18,18,18,18,18,18,17,17,17,18,18, + 18,18,18,18,18,18,17,17,18,18,18,18,18,16,15,16, + 18,18,18,17,17,17,15,15,18,18,18,18,17,16,16,16, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,17,17,18,18,18,18,18,17,18,17,18,15,17, + 18,18,18,17,17,16,15,16,18,18,18,17,17,15,13,14, + 18,18,18,18,17,14,13,13,18,18,18,18,17,15,14,13, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,17,17,17,17,18,18,18,18,18,15,16,15,16, + 18,18,18,16,15,15,13,14,18,18,18,17,14,13,12,12, + 18,18,18,16,14,12,10,11,18,17,18,17,16,13,11,11, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,17,15,17,18,18,17,16,18,15,14,15, + 18,18,16,16,14,14,12,13,18,18,16,14,14,11,10,11, + 18,18,17,14,12, 9, 7, 8,18,18,17,16,14,11, 8, 7, + 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, + 18,18,18,18,18,18,17,18,18,18,18,17,18,18,16,17, + 18,18,18,17,17,15,14,14,18,18,17,15,15,13,11,11, + 18,18,18,17,13,10, 7, 8,18,18,15,14,13,10, 7, 2, +}; + +static static_codebook _huff_book_resaux0_long = { + 4, 4096, 0, 0, 0, 0, 0, 0, 0, 0, + NULL, + _huff_lengthlist_resaux0_long, + NULL, +}; + + +#endif diff --git a/include/vorbis/book/resaux0_short.vqh b/include/vorbis/book/resaux0_short.vqh new file mode 100644 index 0000000..8798195 --- /dev/null +++ b/include/vorbis/book/resaux0_short.vqh @@ -0,0 +1,289 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * + * by 1999 Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: static codebook autogenerated by huff/huffbuld + + ********************************************************************/ + +#ifndef _V_resaux0_short_VQH_ +#define _V_resaux0_short_VQH_ +#include "vorbis/codebook.h" + +static long _huff_lengthlist_resaux0_short[] = { + 14,14,11,14,13,14,14,14,14,11, 8, 9,11,13,14,14, + 12,11, 8, 8,10,11,12,14,14,14,12,11,11,13,13,14, + 14,14,13,14,12,11,11,14,14,14,14,14,13,14,12,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,13,14, + 14,14,11,14,12,12,14,14,12, 9, 6, 8,10,12,13,14, + 11, 9, 6, 7, 8, 9,10,14,14,13,10, 9,11,11,12,14, + 14,14,14,11,13,11,11,13,14,14,14,13,13,11,11,14, + 14,14,14,14,14,12,11,14,14,14,14,14,14,14,11,14, + 13,14,14,14,12,14,14,14,14,12,11,11,13,14,14,14, + 11,11, 8, 8, 9,10,11,14,14,14,11,10, 9,10,12,14, + 14,14,11,11,10,11,10,14,14,14,14,12,12,10,11,14, + 14,14,14,14,14,13,12,13,14,14,14,14,14,13,12,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,13,12,12,12,14,14,14,14,14,11,10,10,12,14, + 14,14,13,12,12,11,11,14,14,14,14,12,10,14,12,14, + 14,14,14,13,12,12,12,13,14,14,14,14,14,14,13,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,12,14,14,14,14,13,14,12,12,14,14, + 14,14,14,12,11,11,12,14,14,14,14,14,11,12,12,14, + 14,14,14,13,14,11,10,11,14,14,14,14,14,14,12,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,12,12,14,14,14,14,14,14,11,11,12,14, + 14,14,14,14,12,11,10,12,14,14,14,14,14,14,10,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,12,14,14,14,14,14,14,12,11,12,14, + 14,14,14,14,11, 9, 9,11,14,14,14,14,14,14, 9, 9, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,10,11,14,14,14,14,14,13, 9, 9, + 14,14,13,14,14,14,14,13,13,11, 8, 9,12,14,13,14, + 14,11, 8, 9,10,12,14,12,14,14,12,12,14,13,13,14, + 14,14,13,14,12,13,12,14,14,14,14,14,14,13,14,14, + 14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14, + 12,12,10,13,14,13,14,14,12,10, 6, 8,10,11,14,14, + 10, 8, 6, 7, 8, 9,11,14,14,13,11,11,10,10,13,14, + 14,14,12,12,11,12,11,12,14,14,14,14,14,12,13,13, + 14,14,14,14,14,12,12,12,14,14,14,14,14,14,12,13, + 14,14,13,14,13,14,14,14,12,11,10,11,13,13,14,14, + 14,11, 8, 8, 9, 9,13,14,14,14,10,10,10,10,13,14, + 14,14,13,11,10,10,11,13,14,14,14,12,12,14,14,13, + 14,14,14,14,13,14,11,12,14,14,14,14,14,14,13,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,14,13,14,14,14,14,14,13,11,11,11,14,14, + 14,14,12,12,10,11,11,13,14,14,13,13,12,11,13,13, + 14,14,14,14,14,12,11,10,14,14,14,14,14,14,12,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,12,12,14,14,14,14,14,13,12,11,14,14, + 14,14,12,12,11,13,14,14,14,14,14,13,13,13,14,14, + 14,14,14,14,13,12,10,12,14,14,14,14,14,14,12,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,13,14,14,14,14,14,14,13,14,14,14, + 14,14,14,12,11,13,14,14,14,14,14,12,13,12,11,14, + 14,14,14,14,12,10,10,13,14,14,14,14,14,14,11,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,12,14,14,14,14,14,13,14,12,13,14, + 14,14,14,14,12,10, 9,12,14,14,14,14,14,12, 9,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,11,11,13,14,14,14,14,14,13, 9,10, + 14,14,14,14,14,11,12,13,14,14,14,13,14,14,14,14, + 14,14,12,14,13,13,12,11,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,11,11,14,14, 9,10,12,12,11,13, + 14,13, 9,10,11,12,10,11,14,14,12,13,14,12,12,10, + 14,14,14,14,14,14,13, 7,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,12,14,14,14,11,13,14,13,13,12, + 14,14,10,10,11,13,10,11,14,14,12,13,12,12,12,11, + 14,14,13,13,14,12,12, 7,14,14,14,14,14,12,14, 6, + 14,14,14,14,14,14,14, 7,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,13,10,13,13,12,13,14,14,14,14,12,13,13,14, + 14,14,13,13,12,12,14,10,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,13, 7,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, + 14,14,14,14,14,14,14,14,14,14,14,13,13,12,13,14, + 14,14,14,12,13,12,12,12,14,14,13,14,13,14,14, 9, + 14,14,14,14,14,14,13, 7,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14, + 14,14,13,12,12,14,13,14,14,14,14,13,14,13,13,11, + 14,14,14,14,11,11,13, 7,14,14,14,14,14,14,12, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,12,13,14,14,14,14,14,14,11,12,14,14, + 14,14,14,13,14,10, 9,10,14,14,14,14,14,14, 9, 9, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,13,12,11,11,14,14,14,14,14,14, 9,10, + 14,14,14,14,14,14,11,14,14,14,14,14,14,14,13,14, + 14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,11,12,14,14,11,11,13,12,12,14, + 14,14,11,11,12,12,13,11,14,14,14,14,14,14,13, 9, + 14,14,14,14,14,14,14, 9,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,12,12,14,14,14,11,14,14,14,13,14, + 14,14,11,11,13,14,11,11,14,14,14,14,14,14,13,11, + 14,14,14,14,14,13,14, 7,14,14,14,14,14,14,13, 7, + 14,14,14,14,14,14,14, 8,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,12,14,14,14,14,14, + 14,14,13,11,12,13,14,13,14,14,14,14,12,14,14,14, + 14,14,14,12,14,14,14,10,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14, 7,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14, + 14,14,13,12,13,14,13,14,14,14,14,13,13,13,14,12, + 14,14,13,13,14,14,14,12,14,14,14,14,14,13,14, 9, + 14,14,14,14,12,13,14, 7,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,14,14,14,14,14,14,12,14,12,14,14, + 14,14,14,13,14,13,14,14,14,14,14,14,13,12,13,11, + 14,14,14,13,11,13,12, 6,14,14,14,14,14,14,14, 7, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,12,14,13,14,14,14,14,13,12,10,11,13, + 14,14,14,12,12,10, 9, 8,14,14,14,14,14,11, 9, 7, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14, + 14,14,14,14,12,10, 9,13,14,14,14,14,14,14, 8, 9, + 14,14,14,14,14,13,12,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,12,11,14,14,14,14,14,13,13,12,14, + 14,14,13,13,14,14,12,12,14,14,14,14,14,14,13,10, + 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,11,14,14,14,14,14,13,14,13,13, + 14,14,13,12,13,14,14,13,14,14,14,13,14,14,13,11, + 14,14,14,13,13,14,13, 9,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14, 9,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,13,14,14,14,12,14,13,14,13,14, + 14,14,13,12,14,14,13,12,14,14,14,14,14,14,14,12, + 14,14,14,14,13,14,14,11,14,14,14,14,14,13,13, 9, + 14,14,14,14,14,14,14, 8,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14, + 14,14,14,13,12,14,14,14,14,14,14,12,12,13,14,13, + 14,14,14,12,13,14,14,12,14,14,14,14,14,14,14,10, + 14,14,14,14,14,13,14, 7,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,11,14,14,14,14,14,13,13,12,13,14,14, + 14,14,14,14,12,12,14,14,14,14,14,14,12,12,12,12, + 14,14,14,14,11,12,13, 6,14,14,14,14,14,14,13, 6, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,12,13,14,14,14,14,14,14,12,11,12,13, + 14,14,13,13,11, 9, 9, 8,14,14,14,14,12,11, 9, 6, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,13,14,13,11,14, + 14,14,14,14,13,11, 9,11,14,14,14,14,14,11, 8, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,11,13,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,13,13,14,14,14,14,14,14,13,11, + 14,14,14,14,14,14,12,14,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,14,14,12,13,14,14,14,14,13,14,14,12, + 14,14,14,14,14,13,13,10,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,13,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,12,14,14,14,14,14,14,14,12, + 14,14,14,14,14,14,14,10,14,14,14,14,14,14,14,11, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,13,13,14,14,14,14,14,14,14,13,14,14,14, + 14,14,14,13,13,14,12,13,14,14,14,14,11,14,14,12, + 14,14,14,14,14,14,14, 8,14,14,14,14,14,14,14, 9, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,13,13,13,14,14,14,14,14,14,14,13,13,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,12,12,13,11, + 14,14,14,14,12,10,12, 7,14,14,14,14,14,14,14, 7, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,13,12,12,14,14,14,14,14,14,13,13,13,14,14, + 14,14,14,14,13,12,14,14,14,14,14,14,11,10,11,14, + 14,14,14,13,11, 9,10, 7,14,14,14,14,14,11, 9, 6, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,13,14,14,14,14,14,14,14,13,13,14, + 14,14,14,13,12,11, 9,12,14,14,14,14,14,12, 8, 9, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14, + 14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,10, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,13,13,14, + 14,14,14,14,14,13,14, 9,14,14,14,14,14,14,14, 7, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14, + 14,14,13,14,13,11,12, 6,14,14,14,14,14,14,14, 5, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,12,10,14,14,14,14,14,13,13, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,13, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,11,14,14,14,14,14,14,14, 8, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,13,13,13,13,13,13,13, 7, +}; + +static static_codebook _huff_book_resaux0_short = { + 4, 4096, 0, 0, 0, 0, 0, 0, 0, 0, + NULL, + _huff_lengthlist_resaux0_short, + NULL, +}; + + +#endif diff --git a/include/vorbis/codebook.h b/include/vorbis/codebook.h index d9680fb..ffe9a3d 100644 --- a/include/vorbis/codebook.h +++ b/include/vorbis/codebook.h @@ -12,7 +12,7 @@ ******************************************************************** function: codebook types - last mod: $Id: codebook.h,v 1.4 2000/01/28 09:05:00 xiphmont Exp $ + last mod: $Id: codebook.h,v 1.5 2000/05/08 20:49:43 xiphmont Exp $ ********************************************************************/ @@ -33,23 +33,40 @@ */ typedef struct static_codebook{ - long dim; /* codebook dimensions (elements per vector) */ - long entries; /* codebook entries */ - - /* mapping */ - long q_min; /* packed 24 bit float; quant value 0 maps to minval */ - long q_delta; /* packed 24 bit float; val 1 - val 0 == delta */ - int q_quant; /* 0 < quant <= 16 */ - int q_sequencep; /* bitflag */ - - long *quantlist; /* list of dim*entries quantized entry values */ - - long *lengthlist; /* codeword lengths in bits */ - - struct encode_aux *encode_tree; + long dim; /* codebook dimensions (elements per vector) */ + long entries; /* codebook entries */ + long *lengthlist; /* codeword lengths in bits */ + + /* mapping ***************************************************************/ + int maptype; /* 0=none + 1=implicitly populated values from map column + 2=listed arbitrary values */ + + /* The below does a linear, single monotonic sequence mapping. */ + long q_min; /* packed 32 bit float; quant value 0 maps to minval */ + long q_delta; /* packed 32 bit float; val 1 - val 0 == delta */ + int q_quant; /* bits: 0 < quant <= 16 */ + int q_sequencep; /* bitflag */ + + /* additional information for log (dB) mapping; the linear mapping + is assumed to actually be values in dB. encodebias is used to + assign an error weight to 0 dB. We have two additional flags: + zeroflag indicates if entry zero is to represent -Inf dB; negflag + indicates if we're to represent negative linear values in a + mirror of the positive mapping. */ + + long *quantlist; /* map == 1: (int)(entries/dim) element column map + map == 2: list of dim*entries quantized entry vals + */ + + /* encode helpers ********************************************************/ + struct encode_aux_nearestmatch *nearest_tree; + struct encode_aux_threshmatch *thresh_tree; } static_codebook; -typedef struct encode_aux{ +/* this structures an arbitrary trained book to quickly find the + nearest cell match */ +typedef struct encode_aux_nearestmatch{ /* pre-calculated partitioning tree */ long *ptr0; long *ptr1; @@ -58,7 +75,15 @@ typedef struct encode_aux{ long *q; /* decision points (each is an entry) */ long aux; /* number of tree entries */ long alloc; -} encode_aux; +} encode_aux_nearestmatch; + +/* assumes a maptype of 1; encode side only, so that's OK */ +typedef struct encode_aux_threshmatch{ + double *quantthresh; + long *quantmap; + int quantvals; + int threshvals; +} encode_aux_threshmatch; typedef struct decode_aux{ long *ptr0; @@ -77,8 +102,6 @@ typedef struct codebook{ } codebook; -#define VQ_FEXP_BIAS 20 /* bias toward values smaller than 1. */ - #endif diff --git a/include/vorbis/codec.h b/include/vorbis/codec.h index 709e5e6..c283cce 100644 --- a/include/vorbis/codec.h +++ b/include/vorbis/codec.h @@ -12,7 +12,7 @@ ******************************************************************** function: libvorbis codec headers - last mod: $Id: codec.h,v 1.14 2000/05/01 06:27:05 jon Exp $ + last mod: $Id: codec.h,v 1.15 2000/05/08 20:49:43 xiphmont Exp $ ********************************************************************/ @@ -52,9 +52,35 @@ typedef struct { /* psychoacoustic setup ********************************************/ typedef struct vorbis_info_psy{ - double maskthresh[MAX_BARK]; - double lrolldB; - double hrolldB; + int athp; + int decayp; + int smoothp; + int noisefitp; + int noisefit_subblock; + double noisefit_threshdB; + + double ath_att; + + int tonemaskp; + double toneatt_250Hz[5]; + double toneatt_500Hz[5]; + double toneatt_1000Hz[5]; + double toneatt_2000Hz[5]; + double toneatt_4000Hz[5]; + double toneatt_8000Hz[5]; + + int noisemaskp; + double noiseatt_250Hz[5]; + double noiseatt_500Hz[5]; + double noiseatt_1000Hz[5]; + double noiseatt_2000Hz[5]; + double noiseatt_4000Hz[5]; + double noiseatt_8000Hz[5]; + + double max_curve_dB; + + double attack_coeff; + double decay_coeff; } vorbis_info_psy; /* vorbis_info contains all the setup information specific to the diff --git a/include/vorbis/internal.h b/include/vorbis/internal.h index 63f4ae5..c3ef48b 100644 --- a/include/vorbis/internal.h +++ b/include/vorbis/internal.h @@ -13,7 +13,7 @@ function: libvorbis codec internal types. These structures are 'visible', but generally uninteresting to the developer - last mod: $Id: internal.h,v 1.4 2000/01/22 13:28:12 xiphmont Exp $ + last mod: $Id: internal.h,v 1.5 2000/05/08 20:49:43 xiphmont Exp $ ********************************************************************/ diff --git a/include/vorbis/modes.h b/include/vorbis/modes.h index 2c4c920..f7d952a 100644 --- a/include/vorbis/modes.h +++ b/include/vorbis/modes.h @@ -12,7 +12,7 @@ ******************************************************************** function: predefined encoding modes - last mod: $Id: modes.h,v 1.9 2000/02/23 11:42:00 xiphmont Exp $ + last mod: $Id: modes.h,v 1.10 2000/05/08 20:49:43 xiphmont Exp $ ********************************************************************/ @@ -25,43 +25,68 @@ #include "vorbis/book/lsp20_0.vqh" #include "vorbis/book/lsp32_0.vqh" - -#include "vorbis/book/resshort8aux.vqh" -#include "vorbis/book/reslong8aux.vqh" - -#include "vorbis/book/resX_1.vqh" - -#include "vorbis/book/res128_0a.vqh" -#include "vorbis/book/res1024_0a.vqh" -/*#include "vorbis/book/res128_0b.vqh" -#include "vorbis/book/res128_0c7x4.vqh" -#include "vorbis/book/res1024_1a.vqh" -#include "vorbis/book/res1024_0b.vqh" -#include "vorbis/book/res1024_0c8x4.vqh"*/ - -/* - 0 1 2 3 4 5 6 7 8 9 - 0, 100, 200, 300, 400, 510, 630, 770, 920, 1080, - - 10 11 12 13 14 15 16 17 18 19 - 1270, 1480, 1720, 2000, 2320, 2700, 3150, 3700, 4400, 5300, - - 20 21 22 23 24 25 26 Bark - 6400, 7700, 9500, 12000, 15500, 20500, 27000 Hz */ - -/* a good set of rolloffs for nigh-transparent masking */ +#include "vorbis/book/res0a0aux.vqh" +#include "vorbis/book/res0a1aux.vqh" + +#include "vorbis/book/res0a_0.vqh" +#include "vorbis/book/res0a_1.vqh" +#include "vorbis/book/res0a_2.vqh" +#include "vorbis/book/res0a_3.vqh" +#include "vorbis/book/res0a_4.vqh" +#include "vorbis/book/res0a_5.vqh" +#include "vorbis/book/res0a_6.vqh" + +#include "vorbis/book/res0b_0.vqh" +#include "vorbis/book/res0b_1.vqh" +#include "vorbis/book/res0b_2.vqh" +#include "vorbis/book/res0b_3.vqh" +#include "vorbis/book/res0b_4.vqh" +#include "vorbis/book/res0b_5.vqh" +#include "vorbis/book/res0b_6.vqh" + +/* A farily high quality setting mix */ static vorbis_info_psy _psy_set0={ - { -20, -20, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -16, -16, -16, -16, -18, -18, -16, -16, - -12, -10, -6, -3, -2, -1, -0}, 16,8 + 1,/*athp*/ + 1,/*decayp*/ + 1,/*smoothp*/ + 0,8,0., + + -130., + + 1,/* tonemaskp*/ + {-35.,-40.,-60.,-80.,-80.}, /* remember that el 4 is an 80 dB curve, not 100 */ + {-35.,-40.,-60.,-80.,-95.}, + {-35.,-40.,-60.,-80.,-95.}, + {-35.,-40.,-60.,-80.,-95.}, + {-35.,-40.,-60.,-80.,-95.}, + {-65.,-60.,-60.,-80.,-90.}, /* remember that el 1 is a 60 dB curve, not 40 */ + + 1,/*noisemaskp*/ + {-100.,-100.,-100.,-200.,-200.}, /* this is the 500 Hz curve, which + is too wrong to work */ + {-60.,-60.,-60.,-80.,-80.}, + {-60.,-60.,-60.,-80.,-80.}, + {-60.,-60.,-60.,-80.,-80.}, + {-60.,-60.,-60.,-80.,-80.}, + {-50.,-55.,-60.,-80.,-80.}, + + 110., + + .9998, .9998 /* attack/decay control */ }; /* with GNUisms, this could be short and readable. Oh well */ static vorbis_info_time0 _time_set0={0}; -static vorbis_info_floor0 _floor_set0={20, 44100, 64, 12,140, 1, {0} }; -static vorbis_info_floor0 _floor_set1={32, 44100, 256, 12,140, 1, {1} }; -static vorbis_info_residue0 _residue_set0={0, 128, 8,4,2,{0,1,1,1},{4,6,6}}; -static vorbis_info_residue0 _residue_set1={0,1024, 8,4,3,{0,1,1,1},{5,6,6}}; +static vorbis_info_floor0 _floor_set0={20, 44100, 64, 12,150, 1, {0} }; +static vorbis_info_floor0 _floor_set1={32, 44100, 256, 12,150, 1, {1} }; +static vorbis_info_residue0 _residue_set0={0, 128, 16,8,2, + {16.5,10.5,6.5,3.5,2.5,1.5,.5}, + {1,1,1,1,1,1,1,0}, + {4,5,6,7,8,9,10}}; +static vorbis_info_residue0 _residue_set1={0,1024, 16,8,3, + {16.5,10.5,6.5,3.5,2.5,1.5,.5}, + {1,1,1,1,1,1,1,0}, + {4,5,6,7,8,9,10}}; static vorbis_info_mapping0 _mapping_set0={1, {0,0}, {0}, {0}, {0}, {0}}; static vorbis_info_mapping0 _mapping_set1={1, {0,0}, {0}, {1}, {1}, {0}}; static vorbis_info_mode _mode_set0={0,0,0,0}; @@ -74,7 +99,7 @@ vorbis_info info_A={ /* smallblock, largeblock */ {256, 2048}, /* modes,maps,times,floors,residues,books,psys */ - 2, 2, 1, 2, 2, 7, 1, + 2, 2, 1, 2, 2, 11, 1, /* modes */ {&_mode_set0,&_mode_set1}, /* maps */ @@ -89,23 +114,16 @@ vorbis_info info_A={ {&_vq_book_lsp20_0, /* 0 */ &_vq_book_lsp32_0, /* 1 */ - &_huff_book_resshort8aux,/* 2 */ - &_huff_book_reslong8aux, /* 3 */ - - &_vq_book_res128_0a, /* 4 */ - &_vq_book_res1024_0a, /* 5 */ - -#if 0 - &_vq_book_res128_0a, /* 4 */ - &_vq_book_res128_0b, /* 5 */ - &_vq_book_res128_0c7x4, /* 6 */ - &_vq_book_res1024_1a, /* 7 */ - &_vq_book_res1024_0b, /* 8 */ - &_vq_book_res1024_0c8x4,/* 9 */ -#endif - - &_vq_book_resX_1, + &_huff_book_res0a0aux, + &_huff_book_res0a1aux, + &_vq_book_res0a_0, + &_vq_book_res0a_1, + &_vq_book_res0a_2, + &_vq_book_res0a_3, + &_vq_book_res0a_4, + &_vq_book_res0b_5, + &_vq_book_res0b_6, }, /* psy */ {&_psy_set0}, diff --git a/lib/Makefile.in b/lib/Makefile.in index 68c7ead..f40a99e 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -1,6 +1,6 @@ # vorbis makefile configured for use with gcc on any platform -# $Id: Makefile.in,v 1.25 2000/04/12 07:55:06 msmith Exp $ +# $Id: Makefile.in,v 1.26 2000/05/08 20:49:47 xiphmont Exp $ ############################################################################### # # @@ -31,17 +31,17 @@ HFILES = ../include/vorbis/codec.h \ ../include/vorbis/internal.h ../include/vorbis/backends.h \ ../include/vorbis/codebook.h \ bitwise.h envelope.h lpc.h lsp.h bookinternal.h misc.h\ - psy.h smallft.h window.h scales.h os.h mdct.h registry.h + psy.h smallft.h window.h scales.h os.h mdct.h registry.h\ + masking.h sharedbook.h LFILES = framing.o mdct.o smallft.o block.o envelope.o window.o\ lsp.o lpc.o analysis.o synthesis.o psy.o info.o bitwise.o\ time0.o floor0.o res0.o mapping0.o registry.o\ - codebook.o + codebook.o sharedbook.o vorbisfile.o VF_HFILES = ../include/vorbis/vorbisfile.h ../include/vorbis/codec.h \ ../include/vorbis/internal.h ../include/vorbis/codebook.h \ os.h misc.h VF_LFILES = vorbisfile.o - all: $(MAKE) target CFLAGS="$(OPT)" @@ -54,7 +54,7 @@ analysis: profile: $(MAKE) target CFLAGS="$(PROFILE)" -target: libvorbis.a vorbisfile.a +target: libvorbis.a vorbisfile.a psytune selftest: $(MAKE) clean @@ -62,11 +62,15 @@ selftest: $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST bitwise.c\ -o test_bitwise -lm $(CC) $(DEBUG) $(LDFLAGS) -c bitwise.c - $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST codebook.c bitwise.o\ - -o test_codebook -lm + $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST sharedbook.c\ + -o test_sharedbook -lm + $(CC) $(DEBUG) $(LDFLAGS) -c sharedbook.c + $(CC) $(DEBUG) $(LDFLAGS) -D_V_SELFTEST codebook.c \ + sharedbook.o bitwise.o -o test_codebook -lm @echo @./test_framing @./test_bitwise + @./test_sharedbook @./test_codebook libvorbis.a: $(LFILES) @@ -77,6 +81,10 @@ vorbisfile.a: $(VF_LFILES) $(AR) -r vorbisfile.a $^ $(RANLIB) vorbisfile.a +psytune: mdct.o psy.o lpc.o smallft.o window.o psytune.o floor0.o \ + bitwise.o lsp.o codebook.o sharedbook.o + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) + $(LFILES): $(HFILES) $(VF_LFILES): $(VF_HFILES) diff --git a/lib/analysis.c b/lib/analysis.c index ba0c31b..6043aba 100644 --- a/lib/analysis.c +++ b/lib/analysis.c @@ -12,7 +12,7 @@ ******************************************************************** function: single-block PCM analysis mode dispatch - last mod: $Id: analysis.c,v 1.25 2000/03/10 13:21:18 xiphmont Exp $ + last mod: $Id: analysis.c,v 1.26 2000/05/08 20:49:48 xiphmont Exp $ ********************************************************************/ @@ -22,7 +22,7 @@ #include "vorbis/codec.h" #include "bitwise.h" #include "registry.h" -#include "misc.h" +#include "scales.h" /* decides between modes, dispatches to the appropriate mapping. */ int vorbis_analysis(vorbis_block *vb,ogg_packet *op){ @@ -70,17 +70,30 @@ int vorbis_analysis(vorbis_block *vb,ogg_packet *op){ } /* there was no great place to put this.... */ -void _analysis_output(char *base,int i,double *v,int n){ +void _analysis_output(char *base,int i,double *v,int n,int bark,int dB){ #ifdef ANALYSIS int j; FILE *of; char buffer[80]; sprintf(buffer,"%s_%d.m",base,i); of=fopen(buffer,"w"); - for(j=0;j>=1; - } - return(ret); -} - -/* code that packs the 24 bit float can be found in vq/bookutil.c */ - -static double _float24_unpack(long val){ - double mant=val&0x3ffff; - double sign=val&0x800000; - double exp =(val&0x7c0000)>>18; - if(sign)mant= -mant; - return(ldexp(mant,exp-17-VQ_FEXP_BIAS)); -} - -/* given a list of word lengths, generate a list of codewords. Works - for length ordered or unordered, always assigns the lowest valued - codewords first */ -long *_make_words(long *l,long n){ - long i,j; - long marker[33]; - long *r=malloc(n*sizeof(long)); - memset(marker,0,sizeof(marker)); - - for(i=0;i>length)){ - /* error condition; the lengths must specify an overpopulated tree */ - free(r); - return(NULL); - } - r[i]=entry; - - /* Look to see if the next shorter marker points to the node - above. if so, update it and repeat. */ - { - for(j=length;j>0;j--){ - - if(marker[j]&1){ - /* have to jump branches */ - if(j==1) - marker[1]++; - else - marker[j]=marker[j-1]<<1; - break; /* invariant says next upper marker would already - have been moved if it was on the same path */ - } - marker[j]++; - } - } - - /* prune the tree; the implicit invariant says all the longer - markers were dangling from our just-taken node. Dangle them - from our *new* node. */ - for(j=length+1;j<33;j++) - if((marker[j]>>1) == entry){ - entry=marker[j]; - marker[j]=marker[j-1]<<1; - }else - break; - } - - /* bitreverse the words because our bitwise packer/unpacker is LSb - endian */ - for(i=0;i>j)&1; - } - r[i]=temp; - } - - return(r); -} - -/* build the decode helper tree from the codewords */ -decode_aux *_make_decode_tree(codebook *c){ - const static_codebook *s=c->c; - long top=0,i,j; - decode_aux *t=malloc(sizeof(decode_aux)); - long *ptr0=t->ptr0=calloc(c->entries*2,sizeof(long)); - long *ptr1=t->ptr1=calloc(c->entries*2,sizeof(long)); - long *codelist=_make_words(s->lengthlist,s->entries); - - if(codelist==NULL)return(NULL); - t->aux=c->entries*2; - - for(i=0;ientries;i++){ - long ptr=0; - for(j=0;jlengthlist[i]-1;j++){ - int bit=(codelist[i]>>j)&1; - if(!bit){ - if(!ptr0[ptr]) - ptr0[ptr]= ++top; - ptr=ptr0[ptr]; - }else{ - if(!ptr1[ptr]) - ptr1[ptr]= ++top; - ptr=ptr1[ptr]; - } - } - if(!((codelist[i]>>j)&1)) - ptr0[ptr]=-i; - else - ptr1[ptr]=-i; - } - free(codelist); - return(t); -} - -/* unpack the quantized list of values for encode/decode ***********/ -static double *_book_unquantize(const static_codebook *b){ - long j,k; - if(b->quantlist){ - double mindel=_float24_unpack(b->q_min); - double delta=_float24_unpack(b->q_delta); - double *r=malloc(sizeof(double)*b->entries*b->dim); - - for(j=0;jentries;j++){ - double last=0.; - for(k=0;kdim;k++){ - double val=b->quantlist[j*b->dim+k]*delta+last+mindel; - r[j*b->dim+k]=val; - if(b->q_sequencep)last=val; - } - } - return(r); - }else - return(NULL); -} - -void vorbis_staticbook_clear(static_codebook *b){ - if(b->quantlist)free(b->quantlist); - if(b->lengthlist)free(b->lengthlist); - if(b->encode_tree){ - free(b->encode_tree->ptr0); - free(b->encode_tree->ptr1); - free(b->encode_tree->p); - free(b->encode_tree->q); - memset(b->encode_tree,0,sizeof(encode_aux)); - free(b->encode_tree); - } - memset(b,0,sizeof(static_codebook)); -} - -void vorbis_book_clear(codebook *b){ - /* static book is not cleared; we're likely called on the lookup and - the static codebook belongs to the info struct */ - if(b->decode_tree){ - free(b->decode_tree->ptr0); - free(b->decode_tree->ptr1); - memset(b->decode_tree,0,sizeof(decode_aux)); - free(b->decode_tree); - } - if(b->valuelist)free(b->valuelist); - if(b->codelist)free(b->codelist); - memset(b,0,sizeof(codebook)); -} - -int vorbis_book_init_encode(codebook *c,const static_codebook *s){ - memset(c,0,sizeof(codebook)); - c->c=s; - c->entries=s->entries; - c->dim=s->dim; - c->codelist=_make_words(s->lengthlist,s->entries); - c->valuelist=_book_unquantize(s); - return(0); -} - -int vorbis_book_init_decode(codebook *c,const static_codebook *s){ - memset(c,0,sizeof(codebook)); - c->c=s; - c->entries=s->entries; - c->dim=s->dim; - c->valuelist=_book_unquantize(s); - c->decode_tree=_make_decode_tree(c); - if(c->decode_tree==NULL)goto err_out; - return(0); - err_out: - vorbis_book_clear(c); - return(-1); -} - /* packs the given codebook into the bitstream **************************/ int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){ @@ -254,42 +59,88 @@ int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){ long last=c->lengthlist[i-1]; if(this>last){ for(j=last;jentries-count)); + _oggpack_write(opb,i-count,_ilog(c->entries-count)); count=i; } } } - _oggpack_write(opb,i-count,ilog(c->entries-count)); - + _oggpack_write(opb,i-count,_ilog(c->entries-count)); + }else{ /* length random. Again, we don't code the codeword itself, just the length. This time, though, we have to encode each length */ _oggpack_write(opb,0,1); /* unordered */ + + /* algortihmic mapping has use for 'unused entries', which we tag + here. The algorithmic mapping happens as usual, but the unused + entry has no codeword. */ for(i=0;ientries;i++) - _oggpack_write(opb,c->lengthlist[i]-1,5); + if(c->lengthlist[i]==0)break; + + if(i==c->entries){ + _oggpack_write(opb,0,1); /* no unused entries */ + for(i=0;ientries;i++) + _oggpack_write(opb,c->lengthlist[i]-1,5); + }else{ + _oggpack_write(opb,1,1); /* we have unused entries; thus we tag */ + for(i=0;ientries;i++){ + if(c->lengthlist[i]==0){ + _oggpack_write(opb,0,1); + }else{ + _oggpack_write(opb,1,1); + _oggpack_write(opb,c->lengthlist[i]-1,5); + } + } + } } /* is the entry number the desired return value, or do we have a - mapping? */ - if(c->quantlist){ - /* we have a mapping. bundle it out. */ - _oggpack_write(opb,1,1); - + mapping? If we have a mapping, what type? */ + _oggpack_write(opb,c->maptype,4); + switch(c->maptype){ + case 0: + /* no mapping */ + break; + case 1:case 2: + /* implicitly populated value mapping */ + /* explicitly populated value mapping */ + + if(!c->quantlist){ + /* no quantlist? error */ + return(-1); + } + /* values that define the dequantization */ - _oggpack_write(opb,c->q_min,24); - _oggpack_write(opb,c->q_delta,24); + _oggpack_write(opb,c->q_min,32); + _oggpack_write(opb,c->q_delta,32); _oggpack_write(opb,c->q_quant-1,4); _oggpack_write(opb,c->q_sequencep,1); + + { + int quantvals; + switch(c->maptype){ + case 1: + /* a single column of (c->entries/c->dim) quantized values for + building a full value list algorithmically (square lattice) */ + quantvals=_book_maptype1_quantvals(c); + break; + case 2: + /* every value (c->entries*c->dim total) specified explicitly */ + quantvals=c->entries*c->dim; + break; + } - /* quantized values */ - for(i=0;ientries*c->dim;i++) - _oggpack_write(opb,c->quantlist[i],c->q_quant); + /* quantized values */ + for(i=0;iquantlist[i]),c->q_quant); - }else{ - /* no mapping. */ - _oggpack_write(opb,0,1); + } + break; + default: + /* error case; we don't have any other map types now */ + return(-1); } - + return(0); } @@ -312,10 +163,26 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){ case 0: /* unordered */ s->lengthlist=malloc(sizeof(long)*s->entries); - for(i=0;ientries;i++){ - long num=_oggpack_read(opb,5); - if(num==-1)goto _eofout; - s->lengthlist[i]=num+1; + + /* allocated but unused entries? */ + if(_oggpack_read(opb,1)){ + /* yes, unused entries */ + + for(i=0;ientries;i++){ + if(_oggpack_read(opb,1)){ + long num=_oggpack_read(opb,5); + if(num==-1)goto _eofout; + s->lengthlist[i]=num+1; + }else + s->lengthlist[i]=0; + } + }else{ + /* all entries used; no tagging */ + for(i=0;ientries;i++){ + long num=_oggpack_read(opb,5); + if(num==-1)goto _eofout; + s->lengthlist[i]=num+1; + } } break; @@ -324,9 +191,9 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){ { long length=_oggpack_read(opb,5)+1; s->lengthlist=malloc(sizeof(long)*s->entries); - + for(i=0;ientries;){ - long num=_oggpack_read(opb,ilog(s->entries-i)); + long num=_oggpack_read(opb,_ilog(s->entries-i)); if(num==-1)goto _eofout; for(j=0;jlengthlist[i]=length; @@ -340,88 +207,103 @@ int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){ } /* Do we have a mapping to unpack? */ - if(_oggpack_read(opb,1)){ + switch((s->maptype=_oggpack_read(opb,4))){ + case 0: + /* no mapping */ + break; + case 1: case 2: + /* implicitly populated value mapping */ + /* explicitly populated value mapping */ - /* values that define the dequantization */ - s->q_min=_oggpack_read(opb,24); - s->q_delta=_oggpack_read(opb,24); + s->q_min=_oggpack_read(opb,32); + s->q_delta=_oggpack_read(opb,32); s->q_quant=_oggpack_read(opb,4)+1; s->q_sequencep=_oggpack_read(opb,1); - /* quantized values */ - s->quantlist=malloc(sizeof(double)*s->entries*s->dim); - for(i=0;ientries*s->dim;i++) - s->quantlist[i]=_oggpack_read(opb,s->q_quant); - if(s->quantlist[i-1]==-1)goto _eofout; + { + int quantvals; + switch(s->maptype){ + case 1: + quantvals=_book_maptype1_quantvals(s); + break; + case 2: + quantvals=s->entries*s->dim; + break; + } + + /* quantized values */ + s->quantlist=malloc(sizeof(double)*quantvals); + for(i=0;iquantlist[i]=_oggpack_read(opb,s->q_quant); + + if(s->quantlist[quantvals-1]==-1)goto _eofout; + } + break; + default: + goto _errout; } /* all set */ return(0); - + _errout: _eofout: vorbis_staticbook_clear(s); return(-1); } -/* returns the number of bits ***************************************/ +/* returns the number of bits ************************************************/ int vorbis_book_encode(codebook *book, int a, oggpack_buffer *b){ _oggpack_write(b,book->codelist[a],book->c->lengthlist[a]); return(book->c->lengthlist[a]); } -static int _best(codebook *book, double *a){ - encode_aux *t=book->c->encode_tree; - int dim=book->dim; - int ptr=0,k; - /* optimized, using the decision tree */ - while(1){ - double c=0.; - double *p=book->valuelist+t->p[ptr]; - double *q=book->valuelist+t->q[ptr]; - - for(k=0;k0.) /* in A */ - ptr= -t->ptr0[ptr]; - else /* in B */ - ptr= -t->ptr1[ptr]; - if(ptr<=0)break; - } - return(-ptr); -} +/* One the encode side, our vector writers are each designed for a +specific purpose, and the encoder is not flexible without modification: + +The LSP vector coder uses a single stage nearest-match with no +interleave, so no step and no error return. This is specced by floor0 +and doesn't change. + +Residue0 encoding interleaves, uses multiple stages, and each stage +peels of a specific amount of resolution from a lattice (thus we want +to match by threshhold, not nearest match). Residue doesn't *have* to +be encoded that way, but to change it, one will need to add more +infrastructure on the encode side (decode side is specced and simpler) */ +/* floor0 LSP (single stage, non interleaved, nearest match) */ /* returns the number of bits and *modifies a* to the quantization value *****/ -int vorbis_book_encodev(codebook *book, double *a, oggpack_buffer *b){ - int dim=book->dim; - int best=_best(book,a); - memcpy(a,book->valuelist+best*dim,dim*sizeof(double)); - return(vorbis_book_encode(book,best,b));} - -/* returns the number of bits and *modifies a* to the quantization error *****/ -int vorbis_book_encodevE(codebook *book, double *a, oggpack_buffer *b){ +int vorbis_book_encodev(codebook *book,double *a,oggpack_buffer *b){ int dim=book->dim,k; - int best=_best(book,a); + int best=_best(book,a,1); for(k=0;kvaluelist+best*dim)[k]; + a[k]=(book->valuelist+best*dim)[k]; return(vorbis_book_encode(book,best,b)); } -/* returns the total squared quantization error for best match and sets each - element of a to local error ***************/ -double vorbis_book_vE(codebook *book, double *a){ - int dim=book->dim,k; - int best=_best(book,a); - double acc=0.; - for(k=0;kvaluelist+best*dim)[k]; - a[k]-=val; - acc+=a[k]*a[k]; - } - return(acc); +/* res0 (multistage, interleave, lattice) */ +/* returns the number of bits and *modifies a* to the remainder value ********/ +int vorbis_book_encodevs(codebook *book,double *a,oggpack_buffer *b, + int step,int addmul){ + + int best=vorbis_book_besterror(book,a,step,addmul); + return(vorbis_book_encode(book,best,b)); } +/* Decode side is specced and easier, because we don't need to find + matches using different criteria; we simply read and map. There are + two things we need to do 'depending': + + We may need to support interleave. We don't really, but it's + convenient to do it here rather than rebuild the vector later. + + Cascades may be additive or multiplicitive; this is not inherent in + the codebook, but set in the code using the codebook. Like + interleaving, it's easiest to do it here. + stage==0 -> declarative (set the value) + stage==1 -> additive + stage==2 -> multiplicitive */ + /* returns the entry number or -1 on eof *************************************/ long vorbis_book_decode(codebook *book, oggpack_buffer *b){ long ptr=0; @@ -442,11 +324,25 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){ } /* returns the entry number or -1 on eof *************************************/ -long vorbis_book_decodev(codebook *book, double *a, oggpack_buffer *b){ +long vorbis_book_decodevs(codebook *book,double *a,oggpack_buffer *b, + int step,int addmul){ long entry=vorbis_book_decode(book,b); - int i; + int i,o; if(entry==-1)return(-1); - for(i=0;idim;i++)a[i]+=(book->valuelist+entry*book->dim)[i]; + switch(addmul){ + case -1: + for(i=0,o=0;idim;i++,o+=step) + a[o]=(book->valuelist+entry*book->dim)[i]; + break; + case 0: + for(i=0,o=0;idim;i++,o+=step) + a[o]+=(book->valuelist+entry*book->dim)[i]; + break; + case 1: + for(i=0,o=0;idim;i++,o+=step) + a[o]*=(book->valuelist+entry*book->dim)[i]; + break; + } return(entry); } @@ -460,10 +356,10 @@ long vorbis_book_decodev(codebook *book, double *a, oggpack_buffer *b){ #include #include "vorbis/book/lsp20_0.vqh" #include "vorbis/book/lsp32_0.vqh" +#include "vorbis/book/res0_1a.vqh" #define TESTSIZE 40 -#define TESTDIM 4 -double test1[40]={ +double test1[TESTSIZE]={ 0.105939, 0.215373, 0.429117, @@ -515,7 +411,7 @@ double test1[40]={ 0.708603, }; -double test2[40]={ +double test2[TESTSIZE]={ 0.088654, 0.165742, 0.279013, @@ -567,8 +463,16 @@ double test2[40]={ 0.375124, }; -static_codebook *testlist[]={&_vq_book_lsp20_0,&_vq_book_lsp32_0,NULL}; -double *testvec[]={test1,test2}; +double test3[TESTSIZE]={ + 0,1,-2,3,4,-5,6,7,8,9, + 8,-2,7,-1,4,6,8,3,1,-9, + 10,11,12,13,14,15,26,17,18,19, + 30,-25,-30,-1,-5,-32,4,3,-2,0}; + +static_codebook *testlist[]={&_vq_book_lsp20_0, + &_vq_book_lsp32_0, + &_vq_book_res0_1a,NULL}; +double *testvec[]={test1,test2,test3}; int main(){ oggpack_buffer write; @@ -594,10 +498,10 @@ int main(){ we can write */ vorbis_staticbook_pack(testlist[ptr],&write); fprintf(stderr,"Codebook size %ld bytes... ",_oggpack_bytes(&write)); - for(i=0;i.000001){ - fprintf(stderr,"input (%g) != output (%g) at position (%ld)\n", - iv[i],testvec[ptr][i]-qv[i],i); + fprintf(stderr,"read (%g) != written (%g) at position (%ld)\n", + iv[i],qv[i],i); exit(1); } fprintf(stderr,"OK\n"); ptr++; } + + /* The above is the trivial stuff; now try unquantizing a log scale codebook */ + exit(0); } diff --git a/lib/envelope.c b/lib/envelope.c index a66b23a..5ec2c6e 100644 --- a/lib/envelope.c +++ b/lib/envelope.c @@ -12,7 +12,7 @@ ******************************************************************** function: PCM data envelope analysis and manipulation - last mod: $Id: envelope.c,v 1.16 2000/03/10 13:21:18 xiphmont Exp $ + last mod: $Id: envelope.c,v 1.17 2000/05/08 20:49:48 xiphmont Exp $ Preecho calculation. @@ -90,30 +90,6 @@ void _ve_envelope_deltas(vorbis_dsp_state *v){ } v->envelope_current=dtotal; -#ifdef ANALYSIS - { - static int frameno=0; - FILE *out; - char buffer[80]; - int j,k; - - sprintf(buffer,"delt%d.m",frameno); - out=fopen(buffer,"w+"); - for(j=0;jenvelope_current;j++) - fprintf(out,"%d %g\n",j*vi->envelopesa+vi->envelopesa/2,v->multipliers[j]); - fclose(out); - - sprintf(buffer,"deltpcm%d.m",frameno++); - out=fopen(buffer,"w+"); - for(k=0;kchannels;k++){ - for(j=0;jpcm_current;j++) - fprintf(out,"%d %g\n",j,v->pcm[k][j]); - fprintf(out,"\n"); - } - fclose(out); - } -#endif - } } diff --git a/lib/floor0.c b/lib/floor0.c index 728a74a..241766e 100644 --- a/lib/floor0.c +++ b/lib/floor0.c @@ -12,7 +12,7 @@ ******************************************************************** function: floor backend 0 implementation - last mod: $Id: floor0.c,v 1.13 2000/04/06 15:47:55 xiphmont Exp $ + last mod: $Id: floor0.c,v 1.14 2000/05/08 20:49:48 xiphmont Exp $ ********************************************************************/ @@ -25,16 +25,16 @@ #include "lpc.h" #include "lsp.h" #include "bookinternal.h" +#include "sharedbook.h" #include "scales.h" #include "misc.h" #include "os.h" typedef struct { long n; - long m; - - double ampscale; - double ampvals; + int ln; + int m; + int *linearmap; vorbis_info_floor0 *vi; lpc_lookup lpclook; @@ -50,6 +50,7 @@ static void free_info(vorbis_info_floor *i){ static void free_look(vorbis_look_floor *i){ vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; if(i){ + if(look->linearmap)free(look->linearmap); lpc_clear(&look->lpclook); memset(look,0,sizeof(vorbis_look_floor0)); free(look); @@ -64,8 +65,8 @@ static void pack (vorbis_info_floor *i,oggpack_buffer *opb){ _oggpack_write(opb,info->barkmap,16); _oggpack_write(opb,info->ampbits,6); _oggpack_write(opb,info->ampdB,8); - _oggpack_write(opb,info->stages-1,4); - for(j=0;jstages;j++) + _oggpack_write(opb,info->numbooks-1,4); + for(j=0;jnumbooks;j++) _oggpack_write(opb,info->books[j],8); } @@ -77,14 +78,14 @@ static vorbis_info_floor *unpack (vorbis_info *vi,oggpack_buffer *opb){ info->barkmap=_oggpack_read(opb,16); info->ampbits=_oggpack_read(opb,6); info->ampdB=_oggpack_read(opb,8); - info->stages=_oggpack_read(opb,4)+1; + info->numbooks=_oggpack_read(opb,4)+1; if(info->order<1)goto err_out; if(info->rate<1)goto err_out; if(info->barkmap<1)goto err_out; - if(info->stages<1)goto err_out; + if(info->numbooks<1)goto err_out; - for(j=0;jstages;j++){ + for(j=0;jnumbooks;j++){ info->books[j]=_oggpack_read(opb,8); if(info->books[j]<0 || info->books[j]>=vi->books)goto err_out; } @@ -94,60 +95,183 @@ static vorbis_info_floor *unpack (vorbis_info *vi,oggpack_buffer *opb){ return(NULL); } +/* initialize Bark scale and normalization lookups. We could do this + with static tables, but Vorbis allows a number of possible + combinations, so it's best to do it computationally. + + The below is authoritative in terms of defining scale mapping. + Note that the scale depends on the sampling rate as well as the + linear block and mapping sizes */ + static vorbis_look_floor *look (vorbis_dsp_state *vd,vorbis_info_mode *mi, vorbis_info_floor *i){ + int j; + double scale; vorbis_info *vi=vd->vi; vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; vorbis_look_floor0 *look=malloc(sizeof(vorbis_look_floor0)); look->m=info->order; look->n=vi->blocksizes[mi->blockflag]/2; + look->ln=info->barkmap; look->vi=info; - lpc_init(&look->lpclook,look->n,info->barkmap,info->rate,look->m); + lpc_init(&look->lpclook,look->ln,look->m); + /* we choose a scaling constant so that: + floor(bark(rate/2-1)*C)=mapped-1 + floor(bark(rate/2)*C)=mapped */ + scale=look->ln/toBARK(info->rate/2.); + + /* the mapping from a linear scale to a smaller bark scale is + straightforward. We do *not* make sure that the linear mapping + does not skip bark-scale bins; the decoder simply skips them and + the encoder may do what it wishes in filling them. They're + necessary in some mapping combinations to keep the scale spacing + accurate */ + look->linearmap=malloc(look->n*sizeof(int)); + for(j=0;jn;j++){ + int val=floor( toBARK((info->rate/2.)/look->n*j) + *scale); /* bark numbers represent band edges */ + if(val>look->ln)val=look->ln; /* guard against the approximation */ + look->linearmap[j]=val; + } return look; } #include + +/* less efficient than the decode side (written for clarity). We're + not bottlenecked here anyway */ +double _curve_to_lpc(double *curve,double *lpc,vorbis_look_floor0 *l, + long frameno){ + /* map the input curve to a bark-scale curve for encoding */ + + int mapped=l->ln; + double *work=alloca(sizeof(double)*mapped); + int i,j,last=0; + + memset(work,0,sizeof(double)*mapped); + + /* Only the decode side is behavior-specced; for now in the encoder, + we select the maximum value of each band as representative (this + helps make sure peaks don't go out of range. In error terms, + selecting min would make more sense, but the codebook is trained + numerically, so we don't actually lose. We'd still want to + use the original curve for error and noise estimation */ + + for(i=0;in;i++){ + int bark=l->linearmap[i]; + if(work[bark]last+1){ + /* If the bark scale is climbing rapidly, some bins may end up + going unused. This isn't a waste actually; it keeps the + scale resolution even so that the LPC generator has an easy + time. However, if we leave the bins empty we lose energy. + So, fill 'em in. The decoder does not do anything with he + unused bins, so we can fill them anyway we like to end up + with a better spectral curve */ + + /* we'll always have a bin zero, so we don't need to guard init */ + long span=bark-last; + for(j=1;jlpclook)); +} + +/* generate the whole freq response curve of an LPC IIR filter */ + +void _lpc_to_curve(double *curve,double *lpc,double amp, + vorbis_look_floor0 *l,char *name,long frameno){ + double *lcurve=alloca(sizeof(double)*(l->ln*2)); + int i; + + if(amp==0){ + memset(curve,0,sizeof(double)*l->n); + return; + } + vorbis_lpc_to_curve(lcurve,lpc,amp,&(l->lpclook)); + +#if 0 + { /******************/ + FILE *of; + char buffer[80]; + int i; + + sprintf(buffer,"%s_%d.m",name,frameno); + of=fopen(buffer,"w"); + for(i=0;iln;i++) + fprintf(of,"%g\n",lcurve[i]); + fclose(of); + } +#endif + + for(i=0;in;i++)curve[i]=lcurve[l->linearmap[i]]; + +} + +static long seq=0; static int forward(vorbis_block *vb,vorbis_look_floor *i, double *in,double *out){ - long j,k,stage; + long j,k; vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; vorbis_info_floor0 *info=look->vi; + double *work=alloca(look->n*sizeof(double)); double amp; long bits=0; + /* our floor comes in on a linear scale; go to a [-Inf...0] dB + scale. The curve has to be positive, so we offset it. */ + for(j=0;jn;j++)work[j]=todB(in[j])+info->ampdB; + /* use 'out' as temp storage */ /* Convert our floor to a set of lpc coefficients */ - amp=sqrt(vorbis_curve_to_lpc(in,out,&look->lpclook)); - - /* amp is in the range 0. to 1. (well, more like .7). Log scale it */ + amp=sqrt(_curve_to_lpc(work,out,look,vb->sequence)); - /* 0 == 0 dB - (1<ampdB); long maxval=(1<ampbits)-1; - - long val=todB(amp*ampscale)/info->ampdB*maxval+1; + + long val=rint(amp/info->ampdB*maxval); if(val<0)val=0; /* likely */ if(val>maxval)val=maxval; /* not bloody likely */ _oggpack_write(&vb->opb,val,info->ampbits); if(val>0) - amp=fromdB((val-.5)/maxval*info->ampdB)/ampscale; + amp=(float)val/maxval*info->ampdB; else amp=0; } if(amp>0){ - double *work=alloca(sizeof(double)*look->m); - + /* LSP <-> LPC is orthogonal and LSP quantizes more stably */ vorbis_lpc_to_lsp(out,out,look->m); - memcpy(work,out,sizeof(double)*look->m); - +#ifdef ANALYSIS + if(vb->mode==0)_analysis_output("lsp",seq++,out,look->m,0,0); +#endif #ifdef TRAIN { int j; @@ -162,43 +286,39 @@ static int forward(vorbis_block *vb,vorbis_look_floor *i, } #endif +#if 0 + { /******************/ + vorbis_lsp_to_lpc(out,work,look->m); + _lpc_to_curve(work,work,amp,look,"Fprefloor",vb->sequence); + } +#endif + /* code the spectral envelope, and keep track of the actual quantized values; we don't want creeping error as each block is nailed to the last quantized value of the previous block. */ - - /* first stage is a bit different because quantization error must be - handled carefully */ - for(stage=0;stagestages;stage++){ - codebook *b=vb->vd->fullbooks+info->books[stage]; - - if(stage==0){ - double last=0.; - for(j=0;jm;){ - for(k=0;kdim;k++)out[j+k]-=last; - bits+=vorbis_book_encodev(b,out+j,&vb->opb); - for(k=0;kdim;k++,j++){ - out[j]+=last; - work[j]-=out[j]; - } - last=out[j-1]; - } - }else{ - memcpy(out,work,sizeof(double)*look->m); - for(j=0;jm;){ - bits+=vorbis_book_encodev(b,out+j,&vb->opb); - for(k=0;kdim;k++,j++)work[j]-=out[j]; - } + + /* the spec supports using one of a number of codebooks. Right + now, encode using this lib supports only one */ + _oggpack_write(&vb->opb,0,_ilog(info->numbooks)); + + { + codebook *b=vb->vd->fullbooks+info->books[0]; + double last=0.; + for(j=0;jm;){ + for(k=0;kdim;k++)out[j+k]-=last; + bits+=vorbis_book_encodev(b,out+j,&vb->opb); + for(k=0;kdim;k++,j++)out[j]+=last; + last=out[j-1]; } } + /* take the coefficients back to a spectral envelope curve */ vorbis_lsp_to_lpc(out,out,look->m); - vorbis_lpc_to_curve(out,out,amp,&look->lpclook); - fprintf(stderr,"Encoded %ld LSP coefficients in %ld bits\n",look->m,bits); + _lpc_to_curve(out,out,amp,look,"Ffloor",vb->sequence); + for(j=0;jn;j++)out[j]= fromdB(out[j]-info->ampdB); return(1); } - fprintf(stderr,"Encoded %ld LSP coefficients in %ld bits\n",look->m,bits); - memset(out,0,sizeof(double)*look->n); return(0); } @@ -206,35 +326,34 @@ static int forward(vorbis_block *vb,vorbis_look_floor *i, static int inverse(vorbis_block *vb,vorbis_look_floor *i,double *out){ vorbis_look_floor0 *look=(vorbis_look_floor0 *)i; vorbis_info_floor0 *info=look->vi; - int j,k,stage; + int j,k; - long ampraw=_oggpack_read(&vb->opb,info->ampbits); + int ampraw=_oggpack_read(&vb->opb,info->ampbits); if(ampraw>0){ - long ampscale=fromdB(info->ampdB); long maxval=(1<ampbits)-1; - double amp=fromdB((ampraw-.5)/maxval*info->ampdB)/ampscale; + double amp=(float)ampraw/maxval*info->ampdB; + int booknum=_oggpack_read(&vb->opb,_ilog(info->numbooks)); + codebook *b=vb->vd->fullbooks+info->books[booknum]; + double last=0.; memset(out,0,sizeof(double)*look->m); - for(stage=0;stagestages;stage++){ - codebook *b=vb->vd->fullbooks+info->books[stage]; - for(j=0;jm;j+=b->dim) - vorbis_book_decodev(b,out+j,&vb->opb); - if(stage==0){ - double last=0.; - for(j=0;jm;){ - for(k=0;kdim;k++,j++)out[j]+=last; - last=out[j-1]; - } - } + + for(j=0;jm;j+=b->dim) + vorbis_book_decodevs(b,out+j,&vb->opb,1,-1); + for(j=0;jm;){ + for(k=0;kdim;k++,j++)out[j]+=last; + last=out[j-1]; } - /* take the coefficients back to a spectral envelope curve */ vorbis_lsp_to_lpc(out,out,look->m); - vorbis_lpc_to_curve(out,out,amp,&look->lpclook); + _lpc_to_curve(out,out,amp,look,"",0); + + for(j=0;jn;j++)out[j]= fromdB(out[j]-info->ampdB); return(1); }else memset(out,0,sizeof(double)*look->n); + return(0); } diff --git a/lib/info.c b/lib/info.c index c73cb02..43b823d 100644 --- a/lib/info.c +++ b/lib/info.c @@ -12,7 +12,7 @@ ******************************************************************** function: maintain the info structure, info <-> header packets - last mod: $Id: info.c,v 1.23 2000/03/10 13:21:18 xiphmont Exp $ + last mod: $Id: info.c,v 1.24 2000/05/08 20:49:48 xiphmont Exp $ ********************************************************************/ @@ -24,6 +24,7 @@ #include "vorbis/codec.h" #include "vorbis/backends.h" #include "bitwise.h" +#include "sharedbook.h" #include "bookinternal.h" #include "registry.h" #include "window.h" @@ -341,7 +342,7 @@ static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){ } static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){ - char temp[]="Xiphophorus libVorbis I 20000223"; + char temp[]="Xiphophorus libVorbis I 20000508"; /* preamble */ _oggpack_write(opb,0x03,8); diff --git a/lib/lpc.c b/lib/lpc.c index 63e510f..f2d30b0 100644 --- a/lib/lpc.c +++ b/lib/lpc.c @@ -12,7 +12,7 @@ ******************************************************************** function: LPC low level routines - last mod: $Id: lpc.c,v 1.19 2000/05/01 05:46:23 jon Exp $ + last mod: $Id: lpc.c,v 1.20 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -114,7 +114,7 @@ double vorbis_lpc_from_data(double *data,double *lpc,int n,int m){ /* Input : n element envelope spectral curve Output: m lpc coefficients, excitation energy */ -double vorbis_lpc_from_spectrum(double *curve,double *lpc,lpc_lookup *l){ +double vorbis_lpc_from_curve(double *curve,double *lpc,lpc_lookup *l){ int n=l->ln; int m=l->m; double *work=alloca(sizeof(double)*(n+n)); @@ -143,132 +143,23 @@ double vorbis_lpc_from_spectrum(double *curve,double *lpc,lpc_lookup *l){ return(vorbis_lpc_from_data(work,lpc,n,m)); } -/* initialize Bark scale and normalization lookups. We could do this - with static tables, but Vorbis allows a number of possible - combinations, so it's best to do it computationally. - - The below is authoritative in terms of defining scale mapping. - Note that the scale depends on the sampling rate as well as the - linear block and mapping sizes */ - -void lpc_init(lpc_lookup *l,int n, long mapped, long rate, int m){ - int i; - double scale; +void lpc_init(lpc_lookup *l,long mapped, int m){ memset(l,0,sizeof(lpc_lookup)); - l->n=n; l->ln=mapped; l->m=m; - l->linearmap=malloc(n*sizeof(int)); - l->barknorm=malloc(mapped*sizeof(double)); - - /* we choose a scaling constant so that: - floor(bark(rate/2-1)*C)=mapped-1 - floor(bark(rate/2)*C)=mapped */ - - scale=mapped/toBARK(rate/2.); - - /* the mapping from a linear scale to a smaller bark scale is - straightforward. We do *not* make sure that the linear mapping - does not skip bark-scale bins; the decoder simply skips them and - the encoder may do what it wishes in filling them. They're - necessary in some mapping combinations to keep the scale spacing - accurate */ - { - int last=-1; - for(i=0;i=mapped)val=mapped; /* guard against the approximation */ - l->linearmap[i]=val; - last=val; - } - } - - /* 'Normalization' is just making sure that power isn't lost in the - log scale by virtue of compressing the scale in higher - frequencies. We figure the weight of bands in proportion to - their linear/bark width ratio below, again, authoritatively. We - use computed width (not the number of actual bins above) for - smoothness in the scale; they should agree closely */ - - /* keep it 0. to 1., else the dynamic range starts spreading through - all the squaring... */ - - for(i=0;ibarknorm[i]=(fromBARK((i+1)/scale)-fromBARK(i/scale)); - for(i=0;ibarknorm[i]/=l->barknorm[mapped-1]; - - /* we cheat decoding the LPC spectrum via FFTs */ - + /* we cheat decoding the LPC spectrum via FFTs */ drft_init(&l->fft,mapped*2); } void lpc_clear(lpc_lookup *l){ if(l){ - if(l->barknorm)free(l->barknorm); - if(l->linearmap)free(l->linearmap); drft_clear(&l->fft); } } - -/* less efficient than the decode side (written for clarity). We're - not bottlenecked here anyway */ -static int frameno=-1; - -double vorbis_curve_to_lpc(double *curve,double *lpc,lpc_lookup *l){ - /* map the input curve to a bark-scale curve for encoding */ - - int mapped=l->ln; - double *work=alloca(sizeof(double)*mapped); - int i,j,last=0; - - frameno++; - _analysis_output("lpc_pre",frameno,curve,l->n); - - memset(work,0,sizeof(double)*mapped); - - /* Only the decode side is behavior-specced; for now in the encoder, - we select the maximum value of each band as representative (this - helps make sure peaks don't go out of range. In error terms, - selecting min would make more sense, but the codebook is trained - numerically, so we don't actually lose. We'd still want to - use the original curve for error and noise estimation */ - - for(i=0;in;i++){ - int bark=l->linearmap[i]; - if(work[bark]last+1){ - /* If the bark scale is climbing rapidly, some bins may end up - going unused. This isn't a waste actually; it keeps the - scale resolution even so that the LPC generator has an easy - time. However, if we leave the bins empty we lose energy. - So, fill 'em in. The decoder does not do anything with he - unused bins, so we can fill them anyway we like to end up - with a better spectral curve */ - - /* we'll always have a bin zero, so we don't need to guard init */ - long span=bark-last; - for(j=1;jln); - for(i=0;ibarknorm[i]; - _analysis_output("lpc_prelognorm",frameno,work,l->ln); - - return vorbis_lpc_from_spectrum(work,lpc,l); -} - - /* One can do this the long way by generating the transfer function in the time domain and taking the forward FFT of the result. The results from direct calculation are cleaner and faster. @@ -276,8 +167,8 @@ double vorbis_curve_to_lpc(double *curve,double *lpc,lpc_lookup *l){ This version does a linear curve generation and then later interpolates the log curve from the linear curve. */ -void _vlpc_de_helper(double *curve,double *lpc,double amp, - lpc_lookup *l){ +void vorbis_lpc_to_curve(double *curve,double *lpc,double amp, + lpc_lookup *l){ int i; memset(curve,0,sizeof(double)*l->ln*2); if(amp==0)return; @@ -303,26 +194,6 @@ void _vlpc_de_helper(double *curve,double *lpc,double amp, } } -/* generate the whole freq response curve of an LPC IIR filter */ - -void vorbis_lpc_to_curve(double *curve,double *lpc,double amp,lpc_lookup *l){ - double *lcurve=alloca(sizeof(double)*(l->ln*2)); - int i; - - if(amp==0){ - memset(curve,0,sizeof(double)*l->n); - return; - } - _vlpc_de_helper(lcurve,lpc,amp,l); - _analysis_output("lpc_lognorm",frameno,lcurve,l->ln); - - for(i=0;iln;i++)lcurve[i]/=l->barknorm[i]; - _analysis_output("lpc_log",frameno,lcurve,l->ln); - for(i=0;in;i++)curve[i]=lcurve[l->linearmap[i]]; - _analysis_output("lpc",frameno,curve,l->n); - -} - /* subtract or add an lpc filter to data. Vorbis doesn't actually use this. */ void vorbis_lpc_residue(double *coeff,double *prime,int m, diff --git a/lib/lpc.h b/lib/lpc.h index 21d4912..677dd18 100644 --- a/lib/lpc.h +++ b/lib/lpc.h @@ -12,7 +12,7 @@ ******************************************************************** function: LPC low level routines - last mod: $Id: lpc.h,v 1.9 2000/01/28 09:05:12 xiphmont Exp $ + last mod: $Id: lpc.h,v 1.10 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -24,26 +24,20 @@ typedef struct lpclook{ /* en/decode lookups */ - int *linearmap; - double *barknorm; drft_lookup fft; - int n; int ln; int m; } lpc_lookup; -extern void lpc_init(lpc_lookup *l,int n, long mapped, long rate, int m); +extern void lpc_init(lpc_lookup *l,long mapped, int m); extern void lpc_clear(lpc_lookup *l); /* simple linear scale LPC code */ extern double vorbis_lpc_from_data(double *data,double *lpc,int n,int m); -extern double vorbis_lpc_from_spectrum(double *curve,double *lpc,lpc_lookup *l); - -/* log scale layer */ -extern double vorbis_curve_to_lpc(double *curve,double *lpc,lpc_lookup *l); -extern void vorbis_lpc_to_curve(double *curve,double *lpc, double amp, +extern double vorbis_lpc_from_curve(double *curve,double *lpc,lpc_lookup *l); +extern void vorbis_lpc_to_curve(double *curve,double *lpc,double amp, lpc_lookup *l); /* standard lpc stuff */ diff --git a/lib/lsp.c b/lib/lsp.c index 959912d..286cb9a 100644 --- a/lib/lsp.c +++ b/lib/lsp.c @@ -12,7 +12,7 @@ ******************************************************************** function: LSP (also called LSF) conversion routines - last mod: $Id: lsp.c,v 1.7 2000/04/06 16:46:51 xiphmont Exp $ + last mod: $Id: lsp.c,v 1.8 2000/05/08 20:49:49 xiphmont Exp $ The LSP generation code is taken (with minimal modification) from "On the Computation of the LSP Frequencies" by Joseph Rothweiler @@ -22,9 +22,20 @@ ********************************************************************/ +/* Note that the lpc-lsp conversion finds the roots of polynomial with + an iterative root polisher (CACM algorithm 283). It *is* possible + to confuse this algorithm into not converging; that should only + happen with absurdly closely spaced roots (very sharp peaks in the + LPC f response) which in turn should be impossible in our use of + the code. If this *does* happen anyway, it's a bug in the floor + finder; find the cause of the confusion (probably a single bin + spike or accidental near-double-limit resolution problems) and + correct it. */ + #include #include #include +#include "lsp.h" #include "os.h" #include "misc.h" @@ -76,29 +87,18 @@ void vorbis_lsp_to_lpc(double *lsp,double *lpc,int m){ } } -static void kw(double *r,int n) { - double *s=alloca(sizeof(double)*(n/2+1)); - double *c=alloca(sizeof(double)*(n+1)); - int i, j, k; - - s[0] = 1.0; - s[1] = -2.0; - s[2] = 2.0; - for(i=3;i<=n/2;i++) s[i] = s[i-2]; - - for(k=0;k<=n;k++) { - c[k] = r[k]; - j = 1; - for(i=k+2;i<=n;i+=2) { - c[k] += s[j]*r[i]; - s[j] -= s[j-1]; - j++; +static void cheby(double *g, int ord) { + int i, j; + + g[0] *= 0.5; + for(i=2; i<= ord; i++) { + for(j=ord; j >= i; j--) { + g[j-2] -= g[j]; + g[j] += g[j]; } } - for(k=0;k<=n;k++) r[k] = c[k]; } - static int comp(const void *a,const void *b){ if(*(double *)a<*(double *)b) return(1); @@ -126,6 +126,7 @@ static void cacm283(double *a,int ord,double *r){ } delta = val/p; r[i] -= delta; + error += delta*delta; } } @@ -160,8 +161,8 @@ void vorbis_lpc_to_lsp(double *lpc,double *lsp,int m){ for(i=0; iresidue_func[i]->free_look(l->residue_look[i]); if(l->psy_look)_vp_psy_clear(l->psy_look+i); } + if(l->decay){ + for(i=0;ich;i++){ + if(l->decay[i])free(l->decay[i]); + } + free(l->decay); + } free(l->time_func); free(l->floor_func); free(l->residue_func); @@ -119,6 +129,13 @@ static vorbis_look_mapping *look(vorbis_dsp_state *vd,vorbis_info_mode *vm, } } + look->ch=vi->channels; + if(vi->psys){ + look->decay=calloc(vi->channels,sizeof(double *)); + for(i=0;ichannels;i++) + look->decay[i]=calloc(vi->blocksizes[vm->blockflag]/2,sizeof(double)); + } + return(look); } @@ -178,8 +195,10 @@ static vorbis_info_mapping *unpack(vorbis_info *vi,oggpack_buffer *opb){ #include "psy.h" #include "bitwise.h" #include "spectrum.h" +#include "scales.h" /* no time mapping implementation for now */ +static long seq=0; static int forward(vorbis_block *vb,vorbis_look_mapping *l){ vorbis_dsp_state *vd=vb->vd; vorbis_info *vi=vd->vi; @@ -213,52 +232,52 @@ static int forward(vorbis_block *vb,vorbis_look_mapping *l){ } { - double *decfloor=_vorbis_block_alloc(vb,n*sizeof(double)/2); - /*double *floor=_vorbis_block_alloc(vb,n*sizeof(double)/2);*/ + double *floor=_vorbis_block_alloc(vb,n*sizeof(double)/2); double *mask=_vorbis_block_alloc(vb,n*sizeof(double)/2); for(i=0;ichannels;i++){ double *pcm=vb->pcm[i]; + double *decay=look->decay[i]; int submap=info->chmuxlist[i]; - /* perform psychoacoustics; takes PCM vector; - returns two curves: the desired transform floor and the masking curve */ - /*memset(floor,0,sizeof(double)*n/2);*/ - memset(mask,0,sizeof(double)*n/2); - /*_vp_mask_floor(look->psy_look+submap,pcm,floor,0); we use - unnormalized masks as floors for now */ - _vp_mask_floor(look->psy_look+submap,pcm,mask,1); + /* if some other mode/mapping was called last frame, our decay + accumulator is out of date. Clear it. */ + if(look->lastframe+1 != vb->sequence) + memset(decay,0,n*sizeof(double)/2); + + /* perform psychoacoustics; do masking */ + _vp_compute_mask(look->psy_look+submap,pcm,floor,mask,decay); - /* perform floor encoding; takes transform floor, returns decoded floor */ - /* nonzero[i]=look->floor_func[submap]-> - forward(vb,look->floor_look[submap],floor,decfloor);*/ + _analysis_output("mdct",seq,pcm,n/2,0,1); + _analysis_output("lmdct",seq,pcm,n/2,0,0); + _analysis_output("prefloor",seq,floor,n/2,0,1); + + /* perform floor encoding */ nonzero[i]=look->floor_func[submap]-> - forward(vb,look->floor_look[submap],mask,decfloor); + forward(vb,look->floor_look[submap],floor,floor); + + _analysis_output("floor",seq,floor,n/2,0,1); + /* apply the floor, do optional noise levelling */ + _vp_apply_floor(look->psy_look+submap,pcm,floor,mask); + + _analysis_output("res",seq++,pcm,n/2,0,0); + #ifdef TRAIN if(nonzero[i]){ FILE *of; char buffer[80]; int i; - sprintf(buffer,"masked_%d.vqd",vb->mode); + sprintf(buffer,"residue_%d.vqd",vb->mode); of=fopen(buffer,"a"); for(i=0;imode); - of=fopen(buffer,"a"); - for(i=0;ilastframe=vb->sequence; return(0); } @@ -305,6 +325,7 @@ static int inverse(vorbis_block *vb,vorbis_look_mapping *l){ int submap=info->chmuxlist[i]; nonzero[i]=look->floor_func[submap]-> inverse(vb,look->floor_look[submap],pcm); + _analysis_output("ifloor",seq+i,pcm,n/2,0,1); } /* recover the residue, apply directly to the spectral envelope */ @@ -323,6 +344,7 @@ static int inverse(vorbis_block *vb,vorbis_look_mapping *l){ /* only MDCT right now.... */ for(i=0;ichannels;i++){ double *pcm=vb->pcm[i]; + _analysis_output("out",seq++,pcm,n/2,0,0); mdct_backward(vd->transform[vb->W][0],pcm,pcm); } diff --git a/lib/masking.h b/lib/masking.h index dd9c67c..b398b6b 100644 --- a/lib/masking.h +++ b/lib/masking.h @@ -12,7 +12,7 @@ ******************************************************************** function: masking curve data for psychoacoustics - last mod: $Id: masking.h,v 1.1 2000/03/27 03:10:54 xiphmont Exp $ + last mod: $Id: masking.h,v 1.2 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -37,113 +37,173 @@ double ATH_Bark_dB[]={ #define EHMER_MAX 56 double tone_250_40dB_SL[EHMER_MAX]={ - -67, -61, -55, -49, -43, -37, -31, -25, -19,-13, -7, -1, 4, 9, 15, 20, - 22, 23, 22, 19, 18, 18, 16, 13, 9, 7, 3, 1, -1, -3, -6, -8, - -10, -13, -16, -19, -21, -24, -28, -32, -36,-40,-44,-48,-52,-56,-60,-65, - -70, -75, -80, -85, -90, -95,-100,-105}; +-900,-900,-900,-900,-900,-900,-900,-900, -19, -13, -7, -1, 4, 9, 15, 20, + 22, 23, 22, 19, 18, 18, 16, 13, 9, 7, 3, 1, -1, -3, -6, -8, + -10, -13, -16, -19, -21, -24, -28, -32, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_250_60dB_SL[EHMER_MAX]={ - -58, -50, -42, -36, -30, -23, -17, -11, -5, 1, 7, 13, 19, 25, 30, 33, +-900,-900,-900,-900,-900,-900,-900, -10, -5, 1, 7, 13, 19, 25, 30, 33, 36, 39, 38, 37, 38, 39, 39, 40, 38, 36, 35, 34, 33, 31, 29, 28, 28, 28, 25, 20, 14, 10, 5, 0, -5,-10,-15,-20,-25,-30,-35,-40, - -45, -50, -55, -60, -65, -70, -75, -80}; +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_250_80dB_SL[EHMER_MAX]={ - -45, -38, -31, -24, -17, -10, -2, 4, 10, 17, 24, 30, 37, 41, 48, 49, +-900,-900,-900,-900,-900,-900,-900, -10, 10, 17, 24, 30, 37, 41, 48, 49, 50, 53, 54, 53, 53, 54, 55, 57, 57, 57, 58, 59, 60, 58, 57, 58, 59, 58, 57, 54, 52, 50, 49, 47, 46, 47, 46, 44, 43, 42, 41, 40, 38, 32, 27, 22, 17, 11, 6, 0}; double tone_500_40dB_SL[EHMER_MAX]={ - -74, -68, -62, -56, -50, -44, -38, -32, -26,-20,-14, -8, -2, 4, 10, 17, - 23, 16, 12, 9, 6, 3, 0, -3, -7,-10,-13,-16,-20,-23,-26,-30, - -33, -36, -40, -43, -46, -50, -55, -60, -63,-66,-70,-75,-80,-85,-90,-95, --100,-105,-110,-115,-120,-125,-130,-135}; +-900,-900,-900,-900,-900,-900,-900, -10, -26, -20, -14, -8, -2, 4, 10, 17, + 23, 16, 12, 9, 6, 3, 0, -3, -7, -10, -13, -16, -20, -23, -26, -30, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_500_60dB_SL[EHMER_MAX]={ - -64, -58, -52, -46, -40, -36, -30, -24, -18,-12, -6, 0, 6, 13, 20, 30, - 39, 34, 31, 29, 29, 27, 24, 21, 18, 16, 13, 8, 6, 3, 1, -1, - -5, -2, -5, -8, -12, -15, -18, -22, -25,-30,-35,-40,-45,-50,-55,-60, - -65, -70, -75, -80, -85, -90, -95,-100}; +-900,-900,-900,-900,-900,-900,-900,-900, -18, -12, -6, 0, 6, 13, 20, 30, + 39, 34, 31, 29, 29, 27, 24, 21, 18, 16, 13, 8, 6, 3, 1, -1, + -5, -2, -5, -8, -12, -15, -18, -22, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_500_80dB_SL[EHMER_MAX]={ - -70, -64, -58, -52, -46, -40, -34, -28, -22,-16,-10, 0, 10, 20, 32, 43, +-900,-900,-900,-900,-900,-900,-900,-900, -22,-16,-10, 0, 10, 20, 32, 43, 53, 52, 52, 50, 49, 50, 52, 55, 55, 54, 51, 49, 46, 44, 44, 42, 38, 34, 32, 29, 29, 28, 25, 23, 20, 16, 10, 7, 4, 2, -1, -4, -7, -10, -15, -20, -25, -30, -35, -40}; double tone_500_100dB_SL[EHMER_MAX]={ - -56, -50, -44, -38, -32, -26, -20, -13, -7, 2, 10, 19, 27, 35, 55, 56, +-900,-900,-900,-900,-900,-900,-900, -10, -7, 2, 10, 19, 27, 35, 55, 56, 62, 61, 60, 58, 57, 57, 59, 63, 65, 66, 62, 60, 57, 57, 58, 58, 57, 56, 56, 56, 57, 57, 56, 57, 57, 54, 47, 41, 37, 28, 21, 16, 10, 3, -3, -8, -13, -18, -23, -28}; double tone_1000_40dB_SL[EHMER_MAX]={ --135,-125,-115,-105, -95, -85, -75, -65, -55, -45, -35, -25, -15, -5, 5, 15, - 25, 20, 13, 8, 3, -3, -9, -15, -20, -26, -31, -36, -42, -47, -52, -58, - -63, -69, -74, -79, -85, -90, -95, -101,-106,-111,-116,-122,-127,-132,-138,-143, --148,-153,-159,-164,-169,-175,-180, -185}; - +-900,-900,-900,-900,-900,-900,-900,-900, -55, -40, -30, -20, -10, 0, 9, 20, + 27, 20, 13, 14, 13, 5, -1, -6, -11, -20, -30,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_1000_60dB_SL[EHMER_MAX]={ --120,-110,-100, -90, -80, -70, -60, -50, -40,-30,-20,-10, 0, 10, 20, 30, - 39, 33, 24, 23, 21, 17, 13, 8, 3, -2, -8,-13,-18, -23, -28, -33, - -38, -43, -48, -53, -58, -63, -68, -73, -78,-83,-88,-93,-98,-103,-108,-113, --118,-123,-128,-133,-138,-143,-148,-153}; +-900,-900,-900,-900,-900,-900,-900, -43, -33,-23,-13, -3, 7, 17, 25, 37, + 42, 33, 25, 25, 23, 18, 13, 9, 4, -1, -7,-13,-18, -23, -28, -33, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_1000_80dB_SL[EHMER_MAX]={ --120,-110,-100, -90, -80, -70, -60, -50, -40,-30,-20,-10, 0, 10, 24, 42, - 56, 55, 46, 41, 39, 37, 41, 46, 45, 41, 39, 35, 35, 34, 33, 31, - 28, 22, 15, 10, 5, -2, -10, -18, -26,-34,-42,-50,-58,-66,-74,-82, - -90, -95,-100,-105,-110,-115,-120,-125}; +-900,-900,-900,-900,-900,-900,-900, -35, -25,-14, -4, 6, 16, 27, 33, 50, + 59, 57, 47, 41, 40, 43, 47, 48, 47, 42, 39, 37, 37, 36, 35, 32, + 30, 27, 21, 15, 5, -2, -10, -18, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_1000_100dB_SL[EHMER_MAX]={ --114,-104, -94, -84, -74, -64, -54, -44, -34,-24,-14, -4, 6, 16, 33, 53, - 65, 65, 55, 49, 43, 40, 44, 54, 59, 58, 49, 43, 52, 57, 57, 58, +-900,-900,-900,-900,-900,-900, -40, -30, -20,-10, 0, 10, 23, 33, 45, 60, + 70, 72, 55, 49, 43, 40, 44, 54, 59, 58, 49, 43, 52, 57, 57, 58, 58, 54, 49, 47, 42, 39, 33, 28, 20, 15, 5, 0, -5,-15,-20,-25, - -30, -35, -40, -45, -50, -55, -60, -65}; +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_2000_40dB_SL[EHMER_MAX]={ --120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -12, -3, 5, 12, 20, - 25, 21, 15, 5, -5, -15, -25, -35, -45, -55, -65, -75, -85, -95,-104,-112, --120,-125,-130,-135,-140,-145,-150,-155, -160,-165,-170,-175,-180,-185,-190,-195, --200,-205,-210,-215,-220,-225,-230,-235}; +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -3, 5, 12, 20, + 24, 21, 14, 5, -5, -15, -25, -35, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_2000_60dB_SL[EHMER_MAX]={ --120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -12, -2, 8, 19, 32, - 38, 34, 25, 17, 14, 13, 11, 7, 3, -2, -6, -10, -14, -20, -26, -32, - -40, -48, -56, -64, -72, -80, -88, -96, -104,-112,-120,-128,-135,-142,-149,-156, --163,-170,-177,-184,-191,-198,-205,-212}; +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 8, 19, 31, + 38, 34, 24, 17, 14, 13, 11, 7, 3, -2, -6, -10, -14, -20, -26, -32, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_2000_80dB_SL[EHMER_MAX]={ --120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -12, -2, 13, 28, 41, - 52, 51, 43, 35, 28, 29, 35, 37, 37, 35, 31, 28, 25, 22, 19, 15, - 11, 8, 6, 2, -6, -14, -22, -30, -38, -44, -52, -60, -68, -76, -84, -90, - -95,-100,-105,-110,-115,-120,-125,-130}; +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 13, 28, 40, + 51, 51, 43, 35, 28, 29, 35, 37, 37, 35, 31, 28, 25, 22, 19, 15, + 11, 8, 6, 2, -6, -14, -22, -30, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_2000_100dB_SL[EHMER_MAX]={ --120,-110,-100, -90, -80, -70, -60, -50, -40, -30, -21, -10, 6, 25, 42, 60, - 67, 61, 53, 43, 35, 31, 34, 47, 58, 51, 43, 45, 54, 59, 59, 56, - 54, 51, 40, 29, 20, 11, 2, -8, -17, -26, -35, -44, -53, -62, -71, -80, - -89, -98,-105,-110,-115,-120,-125,-130}; +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -10, 6, 25, 42, 60, + 66, 60, 53, 43, 35, 31, 34, 47, 58, 51, 43, 45, 54, 59, 59, 56, + 54, 51, 40, 29, 20, 11, 2, -8, -17, -26, -35,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_4000_40dB_SL[EHMER_MAX]={ --150,-140,-130,-120,-110,-100, -90, -80, -70, -56, -43, -30, -17, -5, 7, 15, - 21, 13, 5, -2, -10, -17, -24, -31, -38, -45, -52, -59, -66, -73, -80, -87, - -94,-100,-105,-110,-115,-120,-125,-130, -135,-140,-145,-150,-155,-160,-165,-170, --175,-180,-185,-190,-195,-200,-205,-210}; +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, 0, 3, 10, 18, + 24, 21, 14, 5, -5, -15, -25, -35, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + double tone_4000_60dB_SL[EHMER_MAX]={ --150,-140,-130,-120,-110,-100, -90, -80, -70, -56, -43, -30, -17, -5, 10, 27, - 37, 32, 20, 16, 10, 5, -5, -15, -20, -25, -30, -35, -40, -45, -50, -55, - -60, -65, -70, -75, -80, -85, -90, -95, -100,-105,-110,-115,-120,-125,-130,-135, --140,-145,-150,-155,-160,-165,-170,-175}; +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -2, 8, 19, 31, + 38, 34, 26, 20, 16, 11, 9, 7, 3, -2, -6, -10, -14, -20, -26, -32, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + double tone_4000_80dB_SL[EHMER_MAX]={ --140,-130,-120,-110,-100, -90, -80, -70, -60, -50, -40, -29, -12, 5, 19, 37, - 49, 48, 35, 33, 36, 36, 36, 31, 27, 17, 8, 0, -8, -16, -24, -32, - -40, -48, -56, -64, -70, -75, -80, -85, -90, -95,-100,-105,-110,-115,-120,-125, --130,-135,-140,-145,-150,-155,-160,-165}; +-900,-900,-900,-900,-900,-900,-900,-900, -60, -50, -40, -29, -12, 5, 19, 37, + 51, 49, 38, 32, 36, 36, 36, 31, 30, 22, 15, 5, -5, -16, -24, -32, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + double tone_4000_100dB_SL[EHMER_MAX]={ - -20, -12, -8, -4, 0, 4, 8, 11, 15, 22, 26, 28, 32, 36, 43, 54, - 61, 60, 45, 41, 48, 49, 40, 26, 40, 40, 33, 29, 24, 19, 14, 9, - 4, -1, -6, -11, -16, -21, -26, -31, -36, -41, -46, -51, -56, -61, -66, -71, - -76, -81, -86, -91, -96,-101,-106,-111}; + -20, -12, -8, -4, 0, 4, 8, 11, 15, 22, 26, 28, 32, 36, 43, 52, + 65, 61, 45, 41, 48, 49, 40, 30, 45, 30, 20, 10, 0, -10, -19, -28, + -37,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double tone_8000_60dB_SL[EHMER_MAX]={ +-900,-900,-900,-900,-900,-900,-900,-900, -40, -30, -21, -12, -5, 0, 15, 35, + 43, 40, 37, 36, 33, 30, 27, 24, 21, 18, 15, 12, 9, 5, -5, -15, + -25, -35,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double tone_8000_80dB_SL[EHMER_MAX]={ +-900,-900,-900,-900,-900,-900,-900, -10, -1, 2, 6, 10, 13, 19, 25, 35, + 63, 60, 56, 53, 50, 47, 44, 41, 38, 35, 32, 29, 26, 22, 15, 5, + -5, -15, -25, -35,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; double tone_8000_100dB_SL[EHMER_MAX]={ -18, -12, -7, -3, 0, 2, 6, 9, 12, 19, 22, 21, 19, 21, 40, 40, - 69, 55, - /* educated guessing from here on out */ - 35, 31, 38, 39, 30, 16, 30, 30, 23, 19, 14, 9, 4, -1, - -6, -11, -16, -21, -26, -31, -36, -41, -46, -51, -56, -61, -66, -71, -76, -81, - -86, -91, -96,-101,-106,-111,-116,-121}; + 80, 60, 35, 25, 15, 5, -5, -15, -25, -35,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_500_60dB_SL[EHMER_MAX]={ +-900,-900,-900,-900,-900, -20, -11, -2, 7, 16, 25, 34, 43, 52, 61, 66, + 69, 68, 58, 50, 44, 38, 32, 28, 25, 24, 20, 18, 17, 12, 10, 8, + 5, 0, -5, -8, -12, -15, -18, -22, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_500_80dB_SL[EHMER_MAX]={ +-900,-900,-900, -20, -10, -1, 8, 17, 26, 35, 44, 53, 62, 70, 79, 83, + 85, 85, 81, 77, 74, 71, 68, 63, 61, 59, 56, 55, 54, 52, 48, 47, + 45, 46, 45, 43, 40, 37, 33, 32, 35, 32, 30, 29, 20, 10, 0, -10, + -20, -30,-900,-900,-900,-900,-900,-900}; + +double noise_1000_60dB_SL[EHMER_MAX]={ +-900,-900,-900,-900, -24, -15, -6, 3, 12, 21, 28, 34, 40, 48, 57, 60, + 61, 56, 54, 45, 36, 27, 21, 19, 17, 13, 10, 0, -10, -20, -20,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_1000_80dB_SL[EHMER_MAX]={ +-900, -26, -17, -8, 1, 10, 19, 28, 37, 41, 46, 51, 58, 68, 74, 81, + 80, 81, 70, 66, 58, 61, 59, 55, 54, 53, 52, 49, 48, 42, 38, 38, + 39, 34, 30, 27, 20, 10, 0, -10, -20, -30,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_2000_60dB_SL[EHMER_MAX]={ +-900,-900,-900, -34, -25, -16, -7, 2, 11, 18, 23, 30, 35, 42, 51, 58, + 58, 57, 50, 40, 30, 21, 15, 10, 0, -10, -20, -30,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_2000_80dB_SL[EHMER_MAX]={ +-900, -26, -17, -8, 1, 10, 19, 28, 33, 38, 43, 48, 53, 62, 70, 77, + 77, 75, 70, 67, 68, 66, 62, 61, 60, 59, 52, 47, 39, 35, 34, 35, + 35, 33, 30, 27, 20, 10, 0, -10, -20, -30,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_4000_60dB_SL[EHMER_MAX]={ +-900,-900,-900, -34, -25, -16, -7, 2, 11, 20, 25, 31, 37, 45, 56, 62, + 64, 61, 50, 35, 25, 15, 5, -5, -15 -25, -35,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; + +double noise_4000_80dB_SL[EHMER_MAX]={ +-900, -26, -17, -8, 1, 10, 19, 26, 33, 39, 45, 50, 55, 65, 75, 82, + 84, 81, 78, 72, 70, 69, 66, 61, 50, 48, 46, 40, 35, 30, 25, 20, + 15, 10, 5, 0, -10, -20, -30,-900, -900,-900,-900,-900,-900,-900,-900,-900, +-900,-900,-900,-900,-900,-900,-900,-900}; #endif diff --git a/lib/misc.h b/lib/misc.h index 7a4ae1b..5e4eceb 100644 --- a/lib/misc.h +++ b/lib/misc.h @@ -12,7 +12,7 @@ ******************************************************************** function: miscellaneous prototypes - last mod: $Id: misc.h,v 1.3 2000/03/10 13:21:18 xiphmont Exp $ + last mod: $Id: misc.h,v 1.4 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -22,7 +22,7 @@ extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes); extern void _vorbis_block_ripcord(vorbis_block *vb); -extern void _analysis_output(char *base,int i,double *v,int n); +extern void _analysis_output(char *base,int i,double *v,int n,int bark,int dB); #ifdef DEBUG_LEAKS extern void *_VDBG_malloc(void *ptr,long bytes,char *file,long line); diff --git a/lib/os.h b/lib/os.h index 7c0c65d..6509aee 100644 --- a/lib/os.h +++ b/lib/os.h @@ -14,7 +14,7 @@ ******************************************************************** function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os.h,v 1.4 2000/05/01 06:26:52 jon Exp $ + last mod: $Id: os.h,v 1.5 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -25,14 +25,10 @@ #define M_PI (3.1415926539) #endif -#ifndef rint -/* not strictly correct, but Vorbis doesn't care */ -#define rint(x) (floor((x)+0.5)) -#endif - -#ifndef alloca +#ifndef __GNUC__ #ifdef _WIN32 # define alloca(x) (_alloca(x)) +# define rint(x) (floor((x)+0.5)) #endif #endif diff --git a/lib/psy.c b/lib/psy.c index f0af41f..27bdff3 100644 --- a/lib/psy.c +++ b/lib/psy.c @@ -12,16 +12,16 @@ ******************************************************************** function: psychoacoustics not including preecho - last mod: $Id: psy.c,v 1.18 2000/04/03 08:30:49 xiphmont Exp $ + last mod: $Id: psy.c,v 1.19 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ #include #include #include -#include #include "vorbis/codec.h" +#include "masking.h" #include "psy.h" #include "os.h" #include "lpc.h" @@ -29,8 +29,20 @@ #include "scales.h" #include "misc.h" -/* Set up decibel threshhold slopes on a Bark frequency scale */ +/* Why Bark scale for encoding but not masking? Because masking has a + strong harmonic dependancy */ + +/* the beginnings of real psychoacoustic infrastructure. This is + still not tightly tuned */ +void _vi_psy_free(vorbis_info_psy *i){ + if(i){ + memset(i,0,sizeof(vorbis_info_psy)); + free(i); + } +} +/* Set up decibel threshhold slopes on a Bark frequency scale */ +/* the only bit left on a Bark scale. No reason to change it right now */ static void set_curve(double *ref,double *c,int n, double crate){ int i,j=0; @@ -45,104 +57,560 @@ static void set_curve(double *ref,double *c,int n, double crate){ } } +static void min_curve(double *c, + double *c2){ + int i; + for(i=0;ic[i])c[i]=c2[i]; +} + +static void attenuate_curve(double *c,double att){ + int i; + for(i=0;i=0;i--){ + for(j=0;jmaskthresh=malloc(n*sizeof(double)); - p->barknum=malloc(n*sizeof(double)); + p->ath=malloc(n*sizeof(double)); + p->octave=malloc(n*sizeof(int)); p->vi=vi; p->n=n; /* set up the lookups for a given blocksize and sample rate */ /* Vorbis max sample rate is limited by 26 Bark (54kHz) */ - set_curve(vi->maskthresh, p->maskthresh, n,rate); - + set_curve(ATH_Bark_dB, p->ath,n,rate); for(i=0;ibarknum[i]=toBARK(rate/2.*i/n); + p->ath[i]=fromdB(p->ath[i]+vi->ath_att); -#ifdef ANALYSIS - { - int j; - FILE *out; - char buffer[80]; - - sprintf(buffer,"mask_threshhold_%d.m",n); - out=fopen(buffer,"w+"); - for(j=0;jmaskthresh[j]); - fclose(out); + for(i=0;i10)oc=10; + p->octave[i]=oc; + } + + p->tonecurves=malloc(11*sizeof(double **)); + p->noisecurves=malloc(11*sizeof(double **)); + for(i=0;i<11;i++){ + p->tonecurves[i]=malloc(9*sizeof(double *)); + p->noisecurves[i]=malloc(9*sizeof(double *)); } -#endif + for(i=0;i<11;i++) + for(j=0;j<9;j++){ + p->tonecurves[i][j]=malloc(EHMER_MAX*sizeof(double)); + p->noisecurves[i][j]=malloc(EHMER_MAX*sizeof(double)); + } + + memcpy(p->tonecurves[0][2],tone_250_40dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[0][4],tone_250_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[0][6],tone_250_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[0][8],tone_250_80dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->tonecurves[2][2],tone_500_40dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[2][4],tone_500_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[2][6],tone_500_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[2][8],tone_500_100dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->tonecurves[4][2],tone_1000_40dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[4][4],tone_1000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[4][6],tone_1000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[4][8],tone_1000_100dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->tonecurves[6][2],tone_2000_40dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[6][4],tone_2000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[6][6],tone_2000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[6][8],tone_2000_100dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->tonecurves[8][2],tone_4000_40dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[8][4],tone_4000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[8][6],tone_4000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[8][8],tone_4000_100dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->tonecurves[10][2],tone_8000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[10][4],tone_8000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[10][6],tone_8000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->tonecurves[10][8],tone_8000_100dB_SL,sizeof(double)*EHMER_MAX); + + + memcpy(p->noisecurves[0][2],noise_500_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[0][4],noise_500_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[0][6],noise_500_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[0][8],noise_500_80dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->noisecurves[2][2],noise_500_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[2][4],noise_500_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[2][6],noise_500_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[2][8],noise_500_80dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->noisecurves[4][2],noise_1000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[4][4],noise_1000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[4][6],noise_1000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[4][8],noise_1000_80dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->noisecurves[6][2],noise_2000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[6][4],noise_2000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[6][6],noise_2000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[6][8],noise_2000_80dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->noisecurves[8][2],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[8][4],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[8][6],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[8][8],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX); + + memcpy(p->noisecurves[10][2],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[10][4],noise_4000_60dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[10][6],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX); + memcpy(p->noisecurves[10][8],noise_4000_80dB_SL,sizeof(double)*EHMER_MAX); + + setup_curve(p->tonecurves[0],0,vi->toneatt_250Hz); + setup_curve(p->tonecurves[2],2,vi->toneatt_500Hz); + setup_curve(p->tonecurves[4],4,vi->toneatt_1000Hz); + setup_curve(p->tonecurves[6],6,vi->toneatt_2000Hz); + setup_curve(p->tonecurves[8],8,vi->toneatt_4000Hz); + setup_curve(p->tonecurves[10],10,vi->toneatt_8000Hz); + + setup_curve(p->noisecurves[0],0,vi->noiseatt_250Hz); + setup_curve(p->noisecurves[2],2,vi->noiseatt_500Hz); + setup_curve(p->noisecurves[4],4,vi->noiseatt_1000Hz); + setup_curve(p->noisecurves[6],6,vi->noiseatt_2000Hz); + setup_curve(p->noisecurves[8],8,vi->noiseatt_4000Hz); + setup_curve(p->noisecurves[10],10,vi->noiseatt_8000Hz); + + for(i=1;i<11;i+=2) + for(j=0;j<9;j++){ + interp_curve_dB(p->tonecurves[i][j], + p->tonecurves[i-1][j], + p->tonecurves[i+1][j],.5); + interp_curve_dB(p->noisecurves[i][j], + p->noisecurves[i-1][j], + p->noisecurves[i+1][j],.5); + } } void _vp_psy_clear(vorbis_look_psy *p){ + int i,j; if(p){ - if(p->maskthresh)free(p->maskthresh); - if(p->barknum)free(p->barknum); + if(p->ath)free(p->ath); + if(p->octave)free(p->octave); + if(p->noisecurves){ + for(i=0;i<11;i++){ + for(j=0;j<9;j++){ + free(p->tonecurves[i][j]); + free(p->noisecurves[i][j]); + } + free(p->noisecurves[i]); + free(p->tonecurves[i]); + } + free(p->tonecurves); + free(p->noisecurves); + } memset(p,0,sizeof(vorbis_look_psy)); } } -/* Masking curve: linear rolloff on a Bark/dB scale, attenuated by - maskthresh */ +static void compute_decay(vorbis_look_psy *p,double *f, double *decay, int n){ + int i; + /* handle decay */ + if(p->vi->decayp && decay){ + double decscale=1.-pow(p->vi->decay_coeff,n); + double attscale=1.-pow(p->vi->attack_coeff,n); + for(i=0;i0) + /* add energy */ + decay[i]+=del*attscale; + else + /* remove energy */ + decay[i]+=del*decscale; + if(decay[i]>f[i])f[i]=decay[i]; + } + } +} -void _vp_mask_floor(vorbis_look_psy *p,double *f, double *floor,int attp){ - int n=p->n; - double hroll=p->vi->hrolldB; - double lroll=p->vi->lrolldB; - double curmask=todB(f[0])+(attp?p->maskthresh[0]:0); - double curoc=0.; - long i; +static double _eights[EHMER_MAX+1]={ + .2500000000000000000,.2726269331663144148, + .2973017787506802667,.3242098886627524165, + .3535533905932737622,.3855527063519852059, + .4204482076268572715,.4585020216023356159, + .5000000000000000000,.5452538663326288296, + .5946035575013605334,.6484197773255048330, + .7071067811865475244,.7711054127039704118, + .8408964152537145430,.9170040432046712317, + 1.000000000000000000,1.090507732665257659, + 1.189207115002721066,1.296839554651009665, + 1.414213562373095048,1.542210825407940823, + 1.681792830507429085,1.834008086409342463, + 2.000000000000000000,2.181015465330515318, + 2.378414230005442133,2.593679109302019331, + 2.828427124746190097,3.084421650815881646, + 3.363585661014858171,3.668016172818684926, + 4.000000000000000000,4.362030930661030635, + 4.756828460010884265,5.187358218604038662, + 5.656854249492380193,6.168843301631763292, + 6.727171322029716341,7.336032345637369851, + 8.000000000000000000,8.724061861322061270, + 9.513656920021768529,10.37471643720807732, + 11.31370849898476038,12.33768660326352658, + 13.45434264405943268,14.67206469127473970, + 16.00000000000000000,17.44812372264412253, + 19.02731384004353705,20.74943287441615464, + 22.62741699796952076,24.67537320652705316, + 26.90868528811886536,29.34412938254947939}; + +static void seed_peaks(double *floor, + double **curves, + double amp,double specmax, + int x,int n,double specatt){ + int i; + double x16=x*(1./16.); + int prevx=x*_eights[0]-x16; + int nextx; + + /* make this attenuation adjustable */ + int choice=rint((todB(amp)-specmax+specatt)/10.)-2; + if(choice<0)choice=0; + if(choice>8)choice=8; + + for(i=0;ivi; + long n=p->n,i; + + /* prime the working vector with peak values */ + /* Use the 250 Hz curve up to 250 Hz and 8kHz curve after 8kHz. */ + for(i=0;iflr[i]) + seed_peaks(flr,curves[p->octave[i]],f[i], + specmax,i,n,vi->max_curve_dB); +} + +/* bleaugh, this is more complicated than it needs to be */ +static void max_seeds(vorbis_look_psy *p,double *flr){ + long n=p->n,i,j; + long *posstack=alloca(n*sizeof(long)); + double *ampstack=alloca(n*sizeof(double)); + long stack=0; - /* run mask forward then backward */ for(i=0;imaskthresh[i]:0); - double newoc=p->barknum[i]; - double roll=curmask-(newoc-curoc)*hroll; - double troll; - if(newmask>roll){ - roll=curmask=newmask; - curoc=newoc; + if(stack<2){ + posstack[stack]=i; + ampstack[stack++]=flr[i]; + }else{ + while(1){ + if(flr[i]1 && ampstack[stack-1]maskthresh[n-1]:0); - curoc=p->barknum[n-1]; - for(i=n-1;i>=0;i--){ - double newmask=todB(f[i])+(attp?p->maskthresh[i]:0); - double newoc=p->barknum[i]; - double roll=curmask-(curoc-newoc)*lroll; - double troll; - if(newmask>roll){ - roll=curmask=newmask; - curoc=newoc; + } + + /* the stack now contains only the positions that are relevant. Scan + 'em straight through */ + { + long pos=0; + for(i=0;iampstack[i]){ + endpos=posstack[i+1]; + }else{ + endpos=posstack[i]*17/15; + } + if(endpos>n)endpos=n; + for(j=pos;jn; + long lo=0,hi=0; + double acc=0.; + + for(i=0;in)newhi=n; + + for(;lon); + double *work=alloca(sizeof(double)*p->n); + int i,n=p->n; + double specmax=0.; + + frameno++; + + /* don't use the smoothed data for noise */ + third_octave_noise(p,f,noise); + + /* compute, update and apply decay accumulator */ + for(i=0;ivi->smoothp){ + /* compute power^.5 of three neighboring bins to smooth for peaks + that get split twixt bins/peaks that nail the bin. This evens + out treatment as we're not doing additive masking any longer. */ + double acc=work[0]*work[0]+work[1]*work[1]; + double prev=work[0]; + + work[0]=sqrt(acc); + for(i=1;ispecmax)specmax=work[i]; + } + specmax=todB(specmax); + + memset(flr,0,n*sizeof(double)); + /* seed the tone masking */ + if(p->vi->tonemaskp) + seed_generic(p,p->tonecurves,work,flr,specmax); + + /* seed the noise masking */ + if(p->vi->noisemaskp) + seed_generic(p,p->noisecurves,noise,flr,specmax); + + /* chase the seeds */ + max_seeds(p,flr); + + /* mask off the ATH */ + if(p->vi->athp) + for(i=0;iath[i],flr[i]*.5); + else + for(i=0;in*sizeof(double)); + double thresh=fromdB(p->vi->noisefit_threshdB); + int i,j,addcount=0; + thresh*=thresh; - s[i]=acc; + /* subtract the floor */ + for(j=0;jn;j++){ + if(flr[j]<=0 || fabs(f[j])vi->noisefitp){ + double **index=alloca(p->vi->noisefit_subblock*sizeof(double *)); + + /* we're looking for zero values that we want to reinstate (to + floor level) in order to raise the SL noise level back closer + to original. Desired result; the SL of each block being as + close to (but still less than) the original as possible. Don't + bother if the net result is a change of less than + p->vi->noisefit_thresh dB */ + for(i=0;in;){ + double original_SL=0.; + double current_SL=0.; + int z=0; + + /* compute current SL */ + for(j=0;jvi->noisefit_subblock && in;j++,i++){ + double y=(f[i]*f[i]); + original_SL+=y; + if(work[i]){ + current_SL+=y; + }else{ + index[z++]=f+i; + } + } + + /* sort the values below mask; add back the largest first, stop + when we violate the desired result above (which may be + immediately) */ + if(z && current_SL*thresh0) + work[p]=1; + else + work[p]=-1; + current_SL=val; + }else + break; + } + } + } } + memcpy(f,work,p->n*sizeof(double)); } + diff --git a/lib/psy.h b/lib/psy.h index 5f41163..1e708e8 100644 --- a/lib/psy.h +++ b/lib/psy.h @@ -12,19 +12,27 @@ ******************************************************************** function: random psychoacoustics (not including preecho) - last mod: $Id: psy.h,v 1.11 2000/02/12 08:33:08 xiphmont Exp $ + last mod: $Id: psy.h,v 1.12 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ #ifndef _V_PSY_H_ #define _V_PSY_H_ +#include "smallft.h" + +#ifndef EHMER_MAX +#define EHMER_MAX 56 +#endif typedef struct { int n; struct vorbis_info_psy *vi; - double *maskthresh; - double *barknum; + double ***tonecurves; + double ***noisecurves; + + double *ath; + int *octave; } vorbis_look_psy; @@ -32,9 +40,13 @@ extern void _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,int n,long rat extern void _vp_psy_clear(vorbis_look_psy *p); extern void *_vi_psy_dup(void *source); extern void _vi_psy_free(vorbis_info_psy *i); +extern void _vp_compute_mask(vorbis_look_psy *p,double *f, + double *floor, + double *mask, + double *decay); +extern void _vp_apply_floor(vorbis_look_psy *p,double *f, + double *flr,double *mask); -extern void _vp_mask_floor(vorbis_look_psy *p,double *pcm,double *floor, - int attp); #endif diff --git a/lib/psytune.c b/lib/psytune.c index e615df8..9ad8c9c 100644 --- a/lib/psytune.c +++ b/lib/psytune.c @@ -13,7 +13,7 @@ function: simple utility that runs audio through the psychoacoustics without encoding - last mod: $Id: psytune.c,v 1.2 2000/04/03 08:30:49 xiphmont Exp $ + last mod: $Id: psytune.c,v 1.3 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -27,35 +27,184 @@ #include "psy.h" #include "mdct.h" #include "window.h" +#include "scales.h" +#include "lpc.h" static vorbis_info_psy _psy_set0={ - {-20, -20, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -16, -16, -16, -16, -18, -18, -16, -16, - -12, -10, -6, -3, -1, -1, -0}, 0., (.6/1024), 10,4 + 1,/*athp*/ + 1,/*decayp*/ + 1,/*smoothp*/ + 1,8,0., + + -130., + + 1,/* tonemaskp*/ + {-35.,-40.,-60.,-80.,-80.}, /* remember that el 4 is an 80 dB curve, not 100 */ + {-35.,-40.,-60.,-80.,-95.}, + {-35.,-40.,-60.,-80.,-95.}, + {-35.,-40.,-60.,-80.,-95.}, + {-35.,-40.,-60.,-80.,-95.}, + {-65.,-60.,-60.,-80.,-90.}, /* remember that el 1 is a 60 dB curve, not 40 */ + + 1,/*noisemaskp*/ + {-100.,-100.,-100.,-200.,-200.}, /* this is the 500 Hz curve, which + is too wrong to work */ + {-60.,-60.,-60.,-80.,-80.}, + {-60.,-60.,-60.,-80.,-80.}, + {-60.,-60.,-60.,-80.,-80.}, + {-60.,-60.,-60.,-80.,-80.}, + {-50.,-55.,-60.,-80.,-80.}, + + 110., + + .9998, .9997 /* attack/decay control */ }; +static int noisy=0; +void analysis(char *base,int i,double *v,int n,int bark,int dB){ + if(noisy){ + int j; + FILE *of; + char buffer[80]; + sprintf(buffer,"%s_%d.m",base,i); + of=fopen(buffer,"w"); + + for(j=0;jm=m; + look->n=n; + look->ln=ln; + lpc_init(&look->lpclook,look->ln,look->m); + + scale=look->ln/toBARK(22050.); + + look->linearmap=malloc(look->n*sizeof(int)); + for(j=0;jn;j++){ + int val=floor( toBARK(22050./n*j) *scale); + if(val>look->ln)val=look->ln; + look->linearmap[j]=val; + } +} + int main(int argc,char *argv[]){ int eos=0; + double nonz=0.; double acc=0.; double tot=0.; - int framesize=argv[1]?atoi(argv[1]):2048; - double *pcm[2],*out[2],*window,*mask,*decay[2]; + + int framesize=2048; + int order=32; + + double *pcm[2],*out[2],*window,*decay[2],*lpc,*floor,*mask; signed char *buffer,*buffer2; mdct_lookup m_look; vorbis_look_psy p_look; + long i,j,k; + + vorbis_look_floor0 floorlook; + + int ath=0; + int decayp=0; + argv++; + while(*argv){ + if(*argv[0]=='-'){ + /* option */ + if(argv[0][1]=='v'){ + noisy=0; + } + if(argv[0][1]=='A'){ + ath=0; + } + if(argv[0][1]=='D'){ + decayp=0; + } + if(argv[0][1]=='X'){ + ath=0; + decayp=0; + } + }else + if(*argv[0]=='+'){ + /* option */ + if(argv[0][1]=='v'){ + noisy=1; + } + if(argv[0][1]=='A'){ + ath=1; + } + if(argv[0][1]=='D'){ + decayp=1; + } + if(argv[0][1]=='X'){ + ath=1; + decayp=1; + } + }else + framesize=atoi(argv[0]); + argv++; + } + pcm[0]=malloc(framesize*sizeof(double)); pcm[1]=malloc(framesize*sizeof(double)); out[0]=calloc(framesize/2,sizeof(double)); out[1]=calloc(framesize/2,sizeof(double)); decay[0]=calloc(framesize/2,sizeof(double)); decay[1]=calloc(framesize/2,sizeof(double)); - mask=malloc(framesize/2*sizeof(double)); + floor=malloc(framesize*sizeof(double)); + mask=malloc(framesize*sizeof(double)); + lpc=malloc(order*sizeof(double)); buffer=malloc(framesize*4); buffer2=buffer+framesize*2; window=_vorbis_window(0,framesize,framesize/2,framesize/2); mdct_init(&m_look,framesize); _vp_psy_init(&p_look,&_psy_set0,framesize/2,44100); + floorinit(&floorlook,framesize/2,order,framesize/8); + + for(i=0;i<11;i++) + for(j=0;j<9;j++) + analysis("Ptonecurve",i*10+j,p_look.tonecurves[i][j],EHMER_MAX,0,1); + for(i=0;i<11;i++) + for(j=0;j<9;j++) + analysis("Pnoisecurve",i*10+j,p_look.noisecurves[i][j],EHMER_MAX,0,1); /* we cheat on the WAV header; we just bypass 44 bytes and never verify that it matches 16bit/stereo/44.1kHz. */ @@ -64,10 +213,11 @@ int main(int argc,char *argv[]){ fwrite(buffer,1,44,stdout); memset(buffer,0,framesize*2); + analysis("window",0,window,framesize,0,0); + fprintf(stderr,"Processing for frame size %d...\n",framesize); while(!eos){ - long i,j,k; long bytes=fread(buffer2,1,framesize*2,stdin); if(bytespartvals;j++) free(look->decodemap[j]); free(look->decodemap); - if(look->partstages)free(look->partstages); memset(i,0,sizeof(vorbis_look_residue0)); free(i); } @@ -98,8 +95,9 @@ vorbis_info_residue *unpack(vorbis_info *vi,oggpack_buffer *opb){ info->grouping=_oggpack_read(opb,24)+1; info->partitions=_oggpack_read(opb,6)+1; info->groupbook=_oggpack_read(opb,8); - for(j=0;jpartitions;j++) + for(j=0;jpartitions;j++){ acc+=info->secondstages[j]=_oggpack_read(opb,4); + } for(j=0;jbooklist[j]=_oggpack_read(opb,8); @@ -126,7 +124,6 @@ vorbis_look_residue *look (vorbis_dsp_state *vd,vorbis_info_mode *vm, dim=look->phrasebook->dim; look->partbooks=calloc(look->parts,sizeof(codebook **)); - look->partstages=calloc(look->parts,sizeof(int)); for(j=0;jparts;j++){ int stages=info->secondstages[j]; @@ -135,10 +132,9 @@ vorbis_look_residue *look (vorbis_dsp_state *vd,vorbis_info_mode *vm, for(k=0;kpartbooks[j][k]=vd->fullbooks+info->booklist[acc++]; } - look->partstages[j]=stages; } - look->partvals=pow(look->parts,dim); + look->partvals=rint(pow(look->parts,dim)); look->decodemap=malloc(look->partvals*sizeof(int *)); for(j=0;jpartvals;j++){ long val=j; @@ -155,76 +151,48 @@ vorbis_look_residue *look (vorbis_dsp_state *vd,vorbis_info_mode *vm, return(look); } -/* returns the distance error from encoding with this book set */ -static double _testpart(double *vec,int n, int stages, codebook **books){ - int i,j; - - double *work=alloca(n*sizeof(double)),acc=0.; - memcpy(work,vec,n*sizeof(double)); - - if(stages==0){ - /* a mild hack. We want partitions with samples values under - fabs(.5) to be fully zeroed; if this case is met, we return an - error of -1 (which cannot be beaten). If the samples values - don't meet this criteria, return the real error */ - for(i=0;i.5)break; - if(i==n)return(-1.); - - /* real (squared) error */ - for(i=0;idim) - acc+=vorbis_book_vE(books[j],work+i); - } - } - - return(acc); -} - -static int _testhack(double *vec,int n){ - int i; - double acc=0.; +/* classify by max quantized amplitude only */ +static int _testhack(double *vec,int n,vorbis_look_residue0 *look){ + vorbis_info_residue0 *info=look->info; double max=0.; + int i; + for(i=0;imax?fabs(vec[i]):max); - - if(max<.5)return(0); - if(max<2.5 && acc<1.5)return(1); - if(max<6.)return(2); - return(3); + if(fabs(vec[i])>max)max=fabs(vec[i]); + + for(i=0;iparts-1;i++) + if(max>=info->ampmax[i]) + break; + return(i); } static int _encodepart(oggpack_buffer *opb,double *vec, int n, int stages, codebook **books){ int i,j,bits=0; - double *work=alloca(n*sizeof(double)); - memcpy(work,vec,n*sizeof(double)); + for(j=0;jdim; + int step=n/dim; + for(i=0;idim) - bits+=vorbis_book_encodevE(books[j],work+i,opb); - return(bits); } static int _decodepart(oggpack_buffer *opb,double *work,double *vec, int n, int stages, codebook **books){ int i,j; - - memset(work,0,n*sizeof(double)); - for(j=0;jdim) - vorbis_book_decodev(books[j],work+i,opb); - + + memset(work,0,sizeof(double)*n); + for(j=0;jdim; + int step=n/dim; + for(i=0;isequence,in[0],n); memset(resbits,0,sizeof(long)*possible_partitions); memset(resvals,0,sizeof(long)*possible_partitions); @@ -264,34 +231,16 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl, memset(partword[i],0,n/samples_per_partition*sizeof(long)); } - for(i=info->begin,l=0;iend;i+=samples_per_partition,l++){ - for(j=0;jpartstages[0],look->partbooks[0]); - for(k=1;kpartitions;k++){ - double this=_testpart(in[j]+i,samples_per_partition, - look->partstages[k],look->partbooks[k]); - if(thisbegin,l=0;iend;i+=samples_per_partition,l++) + for(j=0;jbegin,l=0;iend;){ /* first we encode a partition codeword for each channel */ @@ -306,7 +255,7 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl, for(j=0;jopb,in[j]+i,samples_per_partition, - look->partstages[partword[j][l]], + info->secondstages[partword[j][l]], look->partbooks[partword[j][l]]); resvals[partword[j][l]]+=samples_per_partition; } @@ -314,12 +263,13 @@ int forward(vorbis_block *vb,vorbis_look_residue *vl, } for(i=0;iend-info->begin),phrasebits,resbitsT); for(i=0;iopb,work,in[j]+i,samples_per_partition, - look->partstages[part], + info->secondstages[part], look->partbooks[part]); } } - if(ch)_analysis_output("s_res",vb->sequence,in[0],n); - return(0); } diff --git a/lib/scales.h b/lib/scales.h index 3e9519d..3a50701 100644 --- a/lib/scales.h +++ b/lib/scales.h @@ -12,7 +12,7 @@ ******************************************************************** function: linear scale -> dB, Bark and Mel scales - last mod: $Id: scales.h,v 1.1 2000/01/04 09:05:03 xiphmont Exp $ + last mod: $Id: scales.h,v 1.2 2000/05/08 20:49:49 xiphmont Exp $ ********************************************************************/ @@ -25,6 +25,7 @@ #define max(x,y) ((x)<(y)?(y):(x)) /* 20log10(x) */ +#define DYNAMIC_RANGE_dB 200. #define todB(x) ((x)==0?-9.e40:log(fabs(x))*8.6858896) #define fromdB(x) (exp((x)*.11512925)) @@ -38,9 +39,16 @@ all f in Hz, z in Bark */ -#define toBARK(f) (13.1*atan(.00074*(f))+2.24*atan((f)*(f)*1.85e-8)+1e-4*(f)) +#define toBARK(f) (13.1*atan(.00074*(f))+2.24*atan((f)*(f)*1.85e-8)+1e-4*(f)) #define fromBARK(z) (102.*(z)-2.*pow(z,2.)+.4*pow(z,3)+pow(1.46,z)-1.) -#define toMEL(f) (log(1.+(f)*.001)*1442.695) +#define toMEL(f) (log(1.+(f)*.001)*1442.695) #define fromMEL(m) (1000.*exp((m)/1442.695)-1000.) +/* Frequency to octave. We arbitrarily declare 250.0 Hz to be octave + 0.0 */ + +#define toOC(f) (log(f)*1.442695-7.965784) +#define fromOC(o) (exp(((o)+7.965784)*.693147)) + #endif + diff --git a/lib/sharedbook.c b/lib/sharedbook.c new file mode 100644 index 0000000..b8b0075 --- /dev/null +++ b/lib/sharedbook.c @@ -0,0 +1,545 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 * + * by Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: basic shared codebook operations + last mod: $Id: sharedbook.c,v 1.2 2000/05/08 20:49:49 xiphmont Exp $ + + ********************************************************************/ + +#include +#include +#include "vorbis/codec.h" +#include "vorbis/codebook.h" +#include "bitwise.h" +#include "scales.h" +#include "sharedbook.h" + +/**** pack/unpack helpers ******************************************/ +int _ilog(unsigned int v){ + int ret=0; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +/* 32 bit float (not IEEE; nonnormalized mantissa + + biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm + Why not IEEE? It's just not that important here. */ + +#define VQ_FEXP 10 +#define VQ_FMAN 21 +#define VQ_FEXP_BIAS 768 /* bias toward values smaller than 1. */ + +/* doesn't currently guard under/overflow */ +long _float32_pack(double val){ + int sign=0; + long exp; + long mant; + if(val<0){ + sign=0x80000000; + val= -val; + } + exp= floor(log(val)/log(2)); + mant=rint(ldexp(val,(VQ_FMAN-1)-exp)); + exp=(exp+VQ_FEXP_BIAS)<>VQ_FMAN; + if(sign)mant= -mant; + return(ldexp(mant,exp-(VQ_FMAN-1)-VQ_FEXP_BIAS)); +} + +/* given a list of word lengths, generate a list of codewords. Works + for length ordered or unordered, always assigns the lowest valued + codewords first. Extended to handle unused entries (length 0) */ +long *_make_words(long *l,long n){ + long i,j; + long marker[33]; + long *r=malloc(n*sizeof(long)); + memset(marker,0,sizeof(marker)); + + for(i=0;i0){ + long entry=marker[length]; + + /* when we claim a node for an entry, we also claim the nodes + below it (pruning off the imagined tree that may have dangled + from it) as well as blocking the use of any nodes directly + above for leaves */ + + /* update ourself */ + if(length<32 && (entry>>length)){ + /* error condition; the lengths must specify an overpopulated tree */ + free(r); + return(NULL); + } + r[i]=entry; + + /* Look to see if the next shorter marker points to the node + above. if so, update it and repeat. */ + { + for(j=length;j>0;j--){ + + if(marker[j]&1){ + /* have to jump branches */ + if(j==1) + marker[1]++; + else + marker[j]=marker[j-1]<<1; + break; /* invariant says next upper marker would already + have been moved if it was on the same path */ + } + marker[j]++; + } + } + + /* prune the tree; the implicit invariant says all the longer + markers were dangling from our just-taken node. Dangle them + from our *new* node. */ + for(j=length+1;j<33;j++) + if((marker[j]>>1) == entry){ + entry=marker[j]; + marker[j]=marker[j-1]<<1; + }else + break; + } + } + + /* bitreverse the words because our bitwise packer/unpacker is LSb + endian */ + for(i=0;i>j)&1; + } + r[i]=temp; + } + + return(r); +} + +/* build the decode helper tree from the codewords */ +decode_aux *_make_decode_tree(codebook *c){ + const static_codebook *s=c->c; + long top=0,i,j; + decode_aux *t=malloc(sizeof(decode_aux)); + long *ptr0=t->ptr0=calloc(c->entries*2,sizeof(long)); + long *ptr1=t->ptr1=calloc(c->entries*2,sizeof(long)); + long *codelist=_make_words(s->lengthlist,s->entries); + + if(codelist==NULL)return(NULL); + t->aux=c->entries*2; + + for(i=0;ientries;i++){ + if(s->lengthlist[i]>0){ + long ptr=0; + for(j=0;jlengthlist[i]-1;j++){ + int bit=(codelist[i]>>j)&1; + if(!bit){ + if(!ptr0[ptr]) + ptr0[ptr]= ++top; + ptr=ptr0[ptr]; + }else{ + if(!ptr1[ptr]) + ptr1[ptr]= ++top; + ptr=ptr1[ptr]; + } + } + if(!((codelist[i]>>j)&1)) + ptr0[ptr]=-i; + else + ptr1[ptr]=-i; + } + } + free(codelist); + return(t); +} + +/* there might be a straightforward one-line way to do the below + that's portable and totally safe against roundoff, but I haven't + thought of it. Therefore, we opt on the side of caution */ +long _book_maptype1_quantvals(const static_codebook *b){ + long vals=floor(pow(b->entries,1./b->dim)); + + /* the above *should* be reliable, but we'll not assume that FP is + ever reliable when bitstream sync is at stake; verify via integer + means that vals really is the greatest value of dim for which + vals^b->bim <= b->entries */ + /* treat the above as an initial guess */ + while(1){ + long acc=1; + long acc1=1; + int i; + for(i=0;idim;i++){ + acc*=vals; + acc1*=vals+1; + } + if(acc<=b->entries && acc1>b->entries){ + return(vals); + }else{ + if(acc>b->entries){ + vals--; + }else{ + vals++; + } + } + } +} + +/* unpack the quantized list of values for encode/decode ***********/ +/* we need to deal with two map types: in map type 1, the values are + generated algorithmically (each column of the vector counts through + the values in the quant vector). in map type 2, all the values came + in in an explicit list. Both value lists must be unpacked */ +double *_book_unquantize(const static_codebook *b){ + long j,k; + if(b->maptype==1 || b->maptype==2){ + int quantvals; + double mindel=_float32_unpack(b->q_min); + double delta=_float32_unpack(b->q_delta); + double *r=calloc(b->entries*b->dim,sizeof(double)); + + /* maptype 1 and 2 both use a quantized value vector, but + different sizes */ + switch(b->maptype){ + case 1: + /* most of the time, entries%dimensions == 0, but we need to be + well defined. We define that the possible vales at each + scalar is values == entries/dim. If entries%dim != 0, we'll + have 'too few' values (values*dimentries;j++){ + double last=0.; + int indexdiv=1; + for(k=0;kdim;k++){ + int index= (j/indexdiv)%quantvals; + double val=b->quantlist[index]; + val=fabs(val)*delta+mindel+last; + if(b->q_sequencep)last=val; + r[j*b->dim+k]=val; + indexdiv*=quantvals; + } + } + break; + case 2: + for(j=0;jentries;j++){ + double last=0.; + for(k=0;kdim;k++){ + double val=b->quantlist[j*b->dim+k]; + val=fabs(val)*delta+mindel+last; + if(b->q_sequencep)last=val; + r[j*b->dim+k]=val; + } + } + } + return(r); + } + return(NULL); +} + +void vorbis_staticbook_clear(static_codebook *b){ + if(b->quantlist)free(b->quantlist); + if(b->lengthlist)free(b->lengthlist); + if(b->nearest_tree){ + free(b->nearest_tree->ptr0); + free(b->nearest_tree->ptr1); + free(b->nearest_tree->p); + free(b->nearest_tree->q); + memset(b->nearest_tree,0,sizeof(encode_aux_nearestmatch)); + free(b->nearest_tree); + } + if(b->thresh_tree){ + free(b->thresh_tree->quantthresh); + free(b->thresh_tree->quantmap); + memset(b->thresh_tree,0,sizeof(encode_aux_threshmatch)); + free(b->thresh_tree); + } + memset(b,0,sizeof(static_codebook)); +} + +void vorbis_book_clear(codebook *b){ + /* static book is not cleared; we're likely called on the lookup and + the static codebook belongs to the info struct */ + if(b->decode_tree){ + free(b->decode_tree->ptr0); + free(b->decode_tree->ptr1); + memset(b->decode_tree,0,sizeof(decode_aux)); + free(b->decode_tree); + } + if(b->valuelist)free(b->valuelist); + if(b->codelist)free(b->codelist); + memset(b,0,sizeof(codebook)); +} + +int vorbis_book_init_encode(codebook *c,const static_codebook *s){ + memset(c,0,sizeof(codebook)); + c->c=s; + c->entries=s->entries; + c->dim=s->dim; + c->codelist=_make_words(s->lengthlist,s->entries); + c->valuelist=_book_unquantize(s); + return(0); +} + +int vorbis_book_init_decode(codebook *c,const static_codebook *s){ + memset(c,0,sizeof(codebook)); + c->c=s; + c->entries=s->entries; + c->dim=s->dim; + c->valuelist=_book_unquantize(s); + c->decode_tree=_make_decode_tree(c); + if(c->decode_tree==NULL)goto err_out; + return(0); + err_out: + vorbis_book_clear(c); + return(-1); +} + +int _best(codebook *book, double *a, int step){ + encode_aux_nearestmatch *nt=book->c->nearest_tree; + encode_aux_threshmatch *tt=book->c->thresh_tree; + int dim=book->dim; + int ptr=0,k,o; + + /* we assume for now that a thresh tree is the only other possibility */ + if(tt){ + int index=0; + /* find the quant val of each scalar */ + for(k=0,o=step*(dim-1);k 8 entries, it would be faster to bisect, this would be + a misplaced optimization for now */ + for(i=0;ithreshvals-1;i++) + if(a[o]quantthresh[i])break; + + index=(index*tt->quantvals)+tt->quantmap[i]; + } + /* regular lattices are easy :-) */ + if(book->c->lengthlist[index]>0) /* is this unused? If so, we'll + use a decision tree after all + and fall through*/ + return(index); + } + + if(nt){ + /* optimized using the decision tree */ + while(1){ + double c=0.; + double *p=book->valuelist+nt->p[ptr]; + double *q=book->valuelist+nt->q[ptr]; + + for(k=0,o=0;k0.) /* in A */ + ptr= -nt->ptr0[ptr]; + else /* in B */ + ptr= -nt->ptr1[ptr]; + if(ptr<=0)break; + } + return(-ptr); + } + + return(-1); +} + +static double _dist(int el,double *a, double *b){ + int i; + double acc=0.; + for(i=0;idim,i,o; + int best=_best(book,a,step); + switch(addmul){ + case 0: + for(i=0,o=0;ivaluelist+best*dim)[i]; + break; + case 1: + for(i=0,o=0;ivaluelist+best*dim)[i]; + if(val==0){ + a[o]=0; + }else{ + a[o]/=val; + } + } + break; + } + return(best); +} + +long vorbis_book_codeword(codebook *book,int entry){ + return book->codelist[entry]; +} + +long vorbis_book_codelen(codebook *book,int entry){ + return book->c->lengthlist[entry]; +} + +#ifdef _V_SELFTEST + +/* Unit tests of the dequantizer; this stuff will be OK + cross-platform, I simply want to be sure that special mapping cases + actually work properly; a bug could go unnoticed for a while */ + +#include + +/* cases: + + no mapping + full, explicit mapping + algorithmic mapping + + nonsequential + sequential +*/ + +static long full_quantlist1[]={0,1,2,3, 4,5,6,7, 8,3,6,1}; +static long partial_quantlist1[]={0,7,2}; + +/* no mapping */ +static_codebook test1={ + 4,16, + NULL, + 0, + 0,0,0,0, + NULL, + NULL,NULL +}; +static double *test1_result=NULL; + +/* linear, full mapping, nonsequential */ +static_codebook test2={ + 4,3, + NULL, + 2, + -533200896,1611661312,4,0, + full_quantlist1, + NULL,NULL +}; +static double test2_result[]={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2}; + +/* linear, full mapping, sequential */ +static_codebook test3={ + 4,3, + NULL, + 2, + -533200896,1611661312,4,1, + full_quantlist1, + NULL,NULL +}; +static double test3_result[]={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6}; + +/* linear, algorithmic mapping, nonsequential */ +static_codebook test4={ + 3,27, + NULL, + 1, + -533200896,1611661312,4,0, + partial_quantlist1, + NULL,NULL +}; +static double test4_result[]={-3,-3,-3, 4,-3,-3, -1,-3,-3, + -3, 4,-3, 4, 4,-3, -1, 4,-3, + -3,-1,-3, 4,-1,-3, -1,-1,-3, + -3,-3, 4, 4,-3, 4, -1,-3, 4, + -3, 4, 4, 4, 4, 4, -1, 4, 4, + -3,-1, 4, 4,-1, 4, -1,-1, 4, + -3,-3,-1, 4,-3,-1, -1,-3,-1, + -3, 4,-1, 4, 4,-1, -1, 4,-1, + -3,-1,-1, 4,-1,-1, -1,-1,-1}; + +/* linear, algorithmic mapping, sequential */ +static_codebook test5={ + 3,27, + NULL, + 1, + -533200896,1611661312,4,1, + partial_quantlist1, + NULL,NULL +}; +static double test5_result[]={-3,-6,-9, 4, 1,-2, -1,-4,-7, + -3, 1,-2, 4, 8, 5, -1, 3, 0, + -3,-4,-7, 4, 3, 0, -1,-2,-5, + -3,-6,-2, 4, 1, 5, -1,-4, 0, + -3, 1, 5, 4, 8,12, -1, 3, 7, + -3,-4, 0, 4, 3, 7, -1,-2, 2, + -3,-6,-7, 4, 1, 0, -1,-4,-5, + -3, 1, 0, 4, 8, 7, -1, 3, 2, + -3,-4,-5, 4, 3, 2, -1,-2,-3}; + +void run_test(static_codebook *b,double *comp){ + double *out=_book_unquantize(b); + int i; + + if(comp){ + if(!out){ + fprintf(stderr,"_book_unquantize incorrectly returned NULL\n"); + exit(1); + } + + for(i=0;ientries*b->dim;i++) + if(fabs(out[i]-comp[i])>.0001){ + fprintf(stderr,"disagreement in unquantized and reference data:\n" + "position %d, %g != %g\n",i,out[i],comp[i]); + exit(1); + } + + }else{ + if(out){ + fprintf(stderr,"_book_unquantize returned a value array: \n" + " correct result should have been NULL\n"); + exit(1); + } + } +} + +int main(){ + /* run the nine dequant tests, and compare to the hand-rolled results */ + fprintf(stderr,"Dequant test 1... "); + run_test(&test1,test1_result); + fprintf(stderr,"OK\nDequant test 2... "); + run_test(&test2,test2_result); + fprintf(stderr,"OK\nDequant test 3... "); + run_test(&test3,test3_result); + fprintf(stderr,"OK\nDequant test 4... "); + run_test(&test4,test4_result); + fprintf(stderr,"OK\nDequant test 5... "); + run_test(&test5,test5_result); + fprintf(stderr,"OK\n\n"); + + return(0); +} + +#endif diff --git a/lib/sharedbook.h b/lib/sharedbook.h new file mode 100644 index 0000000..df2c1fc --- /dev/null +++ b/lib/sharedbook.h @@ -0,0 +1,43 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 * + * by Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: basic shared codebook operations + last mod: $Id: sharedbook.h,v 1.2 2000/05/08 20:49:50 xiphmont Exp $ + + ********************************************************************/ + +#ifndef _V_INT_SHCODEBOOK_H_ +#define _V_INT_SHCODEBOOK_H_ + +#include "vorbis/codebook.h" + +extern void vorbis_staticbook_clear(static_codebook *b); +extern int vorbis_book_init_encode(codebook *dest,const static_codebook *source); +extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source); +extern void vorbis_book_clear(codebook *b); + +extern double *_book_unquantize(const static_codebook *b); +extern double *_book_logdist(const static_codebook *b,double *vals); +extern double _float32_unpack(long val); +extern long _float32_pack(double val); +extern int _best(codebook *book, double *a, int step); +extern int _ilog(unsigned int v); +extern long _book_maptype1_quantvals(const static_codebook *b); + +extern int vorbis_book_besterror(codebook *book,double *a,int step,int addmul); +extern long vorbis_book_codeword(codebook *book,int entry); +extern long vorbis_book_codelen(codebook *book,int entry); + + + +#endif diff --git a/vq/Makefile.in b/vq/Makefile.in index d088a2f..79720ac 100644 --- a/vq/Makefile.in +++ b/vq/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.10 2000/02/23 09:24:33 xiphmont Exp $ +# $Id: Makefile.in,v 1.11 2000/05/08 20:49:50 xiphmont Exp $ ############################################################################### # # @@ -27,9 +27,10 @@ LIBS=@LIBS@ -lm HFILES = ../include/vorbis/codebook.h vqgen.h vqext.h bookutil.h -OFILES = vqgen.o vqsplit.o bookutil.o +OFILES = vqgen.o vqsplit.o bookutil.o ../lib/sharedbook.o ALLOFILES = $(OFILES) lspdata.o genericdata.o train.o build.o run.o\ - cascade.o partition.o metrics.o residuedata.o + cascade.o partition.o metrics.o residuedata.o latticebuild.o\ + latticepare.o all: $(MAKE) target CFLAGS="$(OPT)" @@ -40,7 +41,7 @@ debug: profile: $(MAKE) target CFLAGS="$(PROFILE)" -target: lspvqtrain genericvqtrain residuevqtrain vqbuild vqcascade vqpartition vqmetrics +target: lspvqtrain genericvqtrain residuevqtrain vqbuild vqcascade vqmetrics latticebuild latticepare lspvqtrain: $(OFILES) lspdata.o train.o $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) @@ -57,12 +58,16 @@ vqbuild: $(OFILES) build.o vqcascade: $(OFILES) run.o cascade.o $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) -vqpartition: $(OFILES) run.o partition.o +vqmetrics: $(OFILES) run.o metrics.o $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) -vqmetrics: $(OFILES) run.o metrics.o +latticebuild: $(OFILES) latticebuild.o $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) +latticepare: $(OFILES) latticepare.o + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) + + $(ALLOFILES): $(HFILES) .c.o: @@ -73,7 +78,7 @@ $(OFILES): $(HFILES) clean: -rm -f *.o *.a test* *~ *.out *.m config.* \ lspvqtrain genericvqtrain residuevqtrain\ - vqbuild vqmetrics vqpartition vqcascade + vqbuild vqmetrics latticebuild vqcascade latticepare distclean: clean -rm -f Makefile diff --git a/vq/bookutil.c b/vq/bookutil.c index cb4d43a..b6c8bff 100644 --- a/vq/bookutil.c +++ b/vq/bookutil.c @@ -12,7 +12,7 @@ ******************************************************************** function: utility functions for loading .vqh and .vqd files - last mod: $Id: bookutil.c,v 1.12 2000/02/23 09:10:10 xiphmont Exp $ + last mod: $Id: bookutil.c,v 1.13 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -22,26 +22,9 @@ #include #include #include "vorbis/codebook.h" +#include "../lib/sharedbook.h" #include "bookutil.h" -void codebook_unquantize(codebook *b){ - long j,k; - const static_codebook *c=b->c; - double mindel=float24_unpack(c->q_min); - double delta=float24_unpack(c->q_delta); - if(!b->valuelist)b->valuelist=malloc(sizeof(double)*c->entries*c->dim); - - for(j=0;jentries;j++){ - double last=0.; - for(k=0;kdim;k++){ - double val=c->quantlist[j*c->dim+k]*delta+last+mindel; - b->valuelist[j*c->dim+k]=val; - if(c->q_sequencep)last=val; - - } - } -} - /* A few little utils for reading files */ /* read a line. Use global, persistent buffering */ static char *linebuffer=NULL; @@ -135,6 +118,13 @@ void reset_next_value(void){ v_sofar=0; } +char *setup_line(FILE *in){ + reset_next_value(); + value_line_buff=get_line(in); + return(value_line_buff); +} + + int get_vector(codebook *b,FILE *in,int start, int n,double *a){ int i; const static_codebook *c=b->c; @@ -190,13 +180,13 @@ char *find_seek_to(FILE *in,char *s){ codebook *codebook_load(char *filename){ codebook *b=calloc(1,sizeof(codebook)); static_codebook *c=(static_codebook *)(b->c=calloc(1,sizeof(static_codebook))); - encode_aux *a=calloc(1,sizeof(encode_aux)); + encode_aux_nearestmatch *a=NULL; + encode_aux_threshmatch *t=NULL; + int quant_to_read=0; FILE *in=fopen(filename,"r"); char *line; long i; - c->encode_tree=a; - if(in==NULL){ fprintf(stderr,"Couldn't open codebook %s\n",filename); exit(1); @@ -207,36 +197,133 @@ codebook *codebook_load(char *filename){ /* get the major important values */ line=get_line(in); - if(sscanf(line,"%ld, %ld, %ld, %ld, %d, %d", - &(c->dim),&(c->entries),&(c->q_min),&(c->q_delta),&(c->q_quant), - &(c->q_sequencep))!=6){ + if(sscanf(line,"%ld, %ld,", + &(c->dim),&(c->entries))!=2){ fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line); exit(1); } - - /* find the auxiliary encode struct (if any) */ - find_seek_to(in,"static encode_aux _vq_aux_"); - /* how big? */ line=get_line(in); line=get_line(in); - line=get_line(in); - line=get_line(in); - line=get_line(in); - if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){ - fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line); + if(sscanf(line,"%d, %ld, %ld, %d, %d,", + &(c->maptype),&(c->q_min),&(c->q_delta),&(c->q_quant), + &(c->q_sequencep))!=5){ + fprintf(stderr,"1: syntax in %s in line:\t %s",filename,line); exit(1); } + + /* find the auxiliary encode struct[s] (if any) */ + if(find_seek_to(in,"static encode_aux_nearestmatch _vq_aux")){ + /* how big? */ + c->nearest_tree=a=calloc(1,sizeof(encode_aux_nearestmatch)); + line=get_line(in); + line=get_line(in); + line=get_line(in); + line=get_line(in); + line=get_line(in); + if(sscanf(line,"%ld, %ld",&(a->aux),&(a->alloc))!=2){ + fprintf(stderr,"2: syntax in %s in line:\t %s",filename,line); + exit(1); + } + + /* load ptr0 */ + find_seek_to(in,"static long _vq_ptr0"); + reset_next_value(); + a->ptr0=malloc(sizeof(long)*a->aux); + for(i=0;iaux;i++) + if(get_next_ivalue(in,a->ptr0+i)){ + fprintf(stderr,"out of data while reading codebook %s\n",filename); + exit(1); + } + + /* load ptr1 */ + find_seek_to(in,"static long _vq_ptr1"); + reset_next_value(); + a->ptr1=malloc(sizeof(long)*a->aux); + for(i=0;iaux;i++) + if(get_next_ivalue(in,a->ptr1+i)){ + fprintf(stderr,"out of data while reading codebook %s\n",filename); + exit(1); + } + + + /* load p */ + find_seek_to(in,"static long _vq_p_"); + reset_next_value(); + a->p=malloc(sizeof(long)*a->aux); + for(i=0;iaux;i++) + if(get_next_ivalue(in,a->p+i)){ + fprintf(stderr,"out of data while reading codebook %s\n",filename); + exit(1); + } + + /* load q */ + find_seek_to(in,"static long _vq_q_"); + reset_next_value(); + a->q=malloc(sizeof(long)*a->aux); + for(i=0;iaux;i++) + if(get_next_ivalue(in,a->q+i)){ + fprintf(stderr,"out of data while reading codebook %s\n",filename); + exit(1); + } + } + + if(find_seek_to(in,"static encode_aux_threshmatch _vq_aux")){ + /* how big? */ + c->thresh_tree=t=calloc(1,sizeof(encode_aux_threshmatch)); + line=get_line(in); + line=get_line(in); + line=get_line(in); + if(sscanf(line,"%d",&(t->quantvals))!=1){ + fprintf(stderr,"3: syntax in %s in line:\t %s",filename,line); + exit(1); + } + line=get_line(in); + if(sscanf(line,"%d",&(t->threshvals))!=1){ + fprintf(stderr,"4: syntax in %s in line:\t %s",filename,line); + exit(1); + } + /* load quantthresh */ + find_seek_to(in,"static double _vq_quantthresh_"); + reset_next_value(); + t->quantthresh=malloc(sizeof(double)*t->threshvals); + for(i=0;ithreshvals-1;i++) + if(get_next_value(in,t->quantthresh+i)){ + fprintf(stderr,"out of data 1 while reading codebook %s\n",filename); + exit(1); + } + /* load quantmap */ + find_seek_to(in,"static long _vq_quantmap_"); + reset_next_value(); + t->quantmap=malloc(sizeof(long)*t->threshvals); + for(i=0;ithreshvals;i++) + if(get_next_ivalue(in,t->quantmap+i)){ + fprintf(stderr,"out of data 2 while reading codebook %s\n",filename); + exit(1); + } + } + + switch(c->maptype){ + case 0: + quant_to_read=0; + break; + case 1: + quant_to_read=_book_maptype1_quantvals(c); + break; + case 2: + quant_to_read=c->entries*c->dim; + break; + } /* load the quantized entries */ find_seek_to(in,"static long _vq_quantlist_"); reset_next_value(); - c->quantlist=malloc(sizeof(long)*c->entries*c->dim); - for(i=0;ientries*c->dim;i++) + c->quantlist=malloc(sizeof(long)*quant_to_read); + for(i=0;iquantlist+i)){ fprintf(stderr,"out of data while reading codebook %s\n",filename); exit(1); } - + /* load the lengthlist */ find_seek_to(in,"static long _vq_lengthlist"); reset_next_value(); @@ -247,112 +334,14 @@ codebook *codebook_load(char *filename){ exit(1); } - /* load ptr0 */ - find_seek_to(in,"static long _vq_ptr0"); - reset_next_value(); - a->ptr0=malloc(sizeof(long)*a->aux); - for(i=0;iaux;i++) - if(get_next_ivalue(in,a->ptr0+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - /* load ptr1 */ - find_seek_to(in,"static long _vq_ptr1"); - reset_next_value(); - a->ptr1=malloc(sizeof(long)*a->aux); - for(i=0;iaux;i++) - if(get_next_ivalue(in,a->ptr1+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - - /* load p */ - find_seek_to(in,"static long _vq_p_"); - reset_next_value(); - a->p=malloc(sizeof(long)*a->aux); - for(i=0;iaux;i++) - if(get_next_ivalue(in,a->p+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - - /* load q */ - find_seek_to(in,"static long _vq_q_"); - reset_next_value(); - a->q=malloc(sizeof(long)*a->aux); - for(i=0;iaux;i++) - if(get_next_ivalue(in,a->q+i)){ - fprintf(stderr,"out of data while reading codebook %s\n",filename); - exit(1); - } - /* got it all */ fclose(in); + + vorbis_book_init_encode(b,c); - /* unquantize the entries while we're at it */ - codebook_unquantize(b); - - /* don't need n and c */ return(b); } -int codebook_entry(codebook *b,double *val){ - const static_codebook *c=b->c; - encode_aux *t=c->encode_tree; - double *n=alloca(c->dim*sizeof(double)); - int ptr=0,k; - - do{ - double C=0.; - double *p=b->valuelist+t->p[ptr]; - double *q=b->valuelist+t->q[ptr]; - - for(k=0;kdim;k++){ - n[k]=p[k]-q[k]; - C-=(p[k]+q[k])*n[k]; - } - C/=2.; - - for(k=0;kdim;k++) - C+=n[k]*val[k]; - - if(C>0.) /* in A */ - ptr=-t->ptr0[ptr]; - else /* in B */ - ptr=-t->ptr1[ptr]; - }while(ptr>0); - - return(-ptr); -} - -/* 24 bit float (not IEEE; nonnormalized mantissa + - biased exponent ): neeeeemm mmmmmmmm mmmmmmmm */ - -long float24_pack(double val){ - int sign=0; - long exp; - long mant; - if(val<0){ - sign=0x800000; - val= -val; - } - exp= floor(log(val)/log(2)); - mant=rint(ldexp(val,17-exp)); - exp=(exp+VQ_FEXP_BIAS)<<18; - - return(sign|exp|mant); -} - -double float24_unpack(long val){ - double mant=val&0x3ffff; - double sign=val&0x800000; - double exp =(val&0x7c0000)>>18; - if(sign)mant= -mant; - return(ldexp(mant,exp-17-VQ_FEXP_BIAS)); -} - void spinnit(char *s,int n){ static int p=0; static long lasttime=0; @@ -388,6 +377,8 @@ void spinnit(char *s,int n){ void build_tree_from_lengths(int vals, long *hist, long *lengths){ int i,j; long *membership=malloc(vals*sizeof(long)); + long *histsave=alloca(vals*sizeof(long)); + memcpy(histsave,hist,vals*sizeof(long)); for(i=0;ithresh_tree; + encode_aux_nearestmatch *n=c->nearest_tree; + int j,k; + + /* save the book in C header form */ + fprintf(out, + "/********************************************************************\n" + " * *\n" + " * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *\n" + " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n" + " * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *\n" + " * PLEASE READ THESE TERMS DISTRIBUTING. *\n" + " * *\n" + " * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *\n" + " * by 1999 Monty and The XIPHOPHORUS Company *\n" + " * http://www.xiph.org/ *\n" + " * *\n" + " ********************************************************************\n" + "\n" + " function: static codebook autogenerated by vq/somethingorother\n" + "\n" + " ********************************************************************/\n\n"); + + fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name); + fprintf(out,"#include \"vorbis/codebook.h\"\n\n"); + + /* first, the static vectors, then the book structure to tie it together. */ + /* quantlist */ + if(c->quantlist){ + long vals=(c->maptype==1?_book_maptype1_quantvals(c):c->entries*c->dim); + fprintf(out,"static long _vq_quantlist_%s[] = {\n",name); + for(j=0;jquantlist[j]); + } + fprintf(out,"};\n\n"); + } + + /* lengthlist */ + fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name); + for(j=0;jentries;){ + fprintf(out,"\t"); + for(k=0;k<16 && jentries;k++,j++) + fprintf(out,"%2ld,",c->lengthlist[j]); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + if(t){ + /* quantthresh */ + fprintf(out,"static double _vq_quantthresh_%s[] = {\n",name); + for(j=0;jthreshvals-1;){ + fprintf(out,"\t"); + for(k=0;k<8 && jthreshvals-1;k++,j++) + fprintf(out,"%.5g, ",t->quantthresh[j]); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + /* quantmap */ + fprintf(out,"static long _vq_quantmap_%s[] = {\n",name); + for(j=0;jthreshvals;){ + fprintf(out,"\t"); + for(k=0;k<8 && jthreshvals;k++,j++) + fprintf(out,"%5ld,",t->quantmap[j]); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + fprintf(out,"static encode_aux_threshmatch _vq_auxt_%s = {\n",name); + fprintf(out,"\t_vq_quantthresh_%s,\n",name); + fprintf(out,"\t_vq_quantmap_%s,\n",name); + fprintf(out,"\t%d,\n",t->quantvals); + fprintf(out,"\t%d\n};\n\n",t->threshvals); + } + + if(n){ + + /* ptr0 */ + fprintf(out,"static long _vq_ptr0_%s[] = {\n",name); + for(j=0;jaux;){ + fprintf(out,"\t"); + for(k=0;k<8 && jaux;k++,j++) + fprintf(out,"%6ld,",n->ptr0[j]); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + /* ptr1 */ + fprintf(out,"static long _vq_ptr1_%s[] = {\n",name); + for(j=0;jaux;){ + fprintf(out,"\t"); + for(k=0;k<8 && jaux;k++,j++) + fprintf(out,"%6ld,",n->ptr1[j]); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + /* p */ + fprintf(out,"static long _vq_p_%s[] = {\n",name); + for(j=0;jaux;){ + fprintf(out,"\t"); + for(k=0;k<8 && jaux;k++,j++) + fprintf(out,"%6ld,",n->p[j]*c->dim); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + /* q */ + fprintf(out,"static long _vq_q_%s[] = {\n",name); + for(j=0;jaux;){ + fprintf(out,"\t"); + for(k=0;k<8 && jaux;k++,j++) + fprintf(out,"%6ld,",n->q[j]*c->dim); + fprintf(out,"\n"); + } + fprintf(out,"};\n\n"); + + fprintf(out,"static encode_aux_nearestmatch _vq_auxn_%s = {\n",name); + fprintf(out,"\t_vq_ptr0_%s,\n",name); + fprintf(out,"\t_vq_ptr1_%s,\n",name); + fprintf(out,"\t_vq_p_%s,\n",name); + fprintf(out,"\t_vq_q_%s,\n",name); + fprintf(out,"\t%ld, %ld\n};\n\n",n->aux,n->aux); + } + + /* tie it all together */ + + fprintf(out,"static static_codebook _vq_book_%s = {\n",name); + + fprintf(out,"\t%ld, %ld,\n",c->dim,c->entries); + fprintf(out,"\t_vq_lengthlist_%s,\n",name); + fprintf(out,"\t%d, %ld, %ld, %d, %d,\n", + c->maptype,c->q_min,c->q_delta,c->q_quant,c->q_sequencep); + if(c->quantlist) + fprintf(out,"\t_vq_quantlist_%s,\n",name); + else + fprintf(out,"\tNULL,\n"); + + if(n) + fprintf(out,"\t&_vq_auxn_%s,\n",name); + else + fprintf(out,"\tNULL,\n"); + if(t) + fprintf(out,"\t&_vq_auxt_%s,\n",name); + else + fprintf(out,"\tNULL,\n"); + + fprintf(out,"};\n\n"); + + fprintf(out,"\n#endif\n"); +} diff --git a/vq/bookutil.h b/vq/bookutil.h index cc5f4bc..583c548 100644 --- a/vq/bookutil.h +++ b/vq/bookutil.h @@ -12,7 +12,7 @@ ******************************************************************** function: utility functions for loading .vqh and .vqd files - last mod: $Id: bookutil.h,v 1.4 2000/02/21 01:12:54 xiphmont Exp $ + last mod: $Id: bookutil.h,v 1.5 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -24,8 +24,8 @@ #include "vorbis/codebook.h" -extern void codebook_unquantize(codebook *b); extern char *get_line(FILE *in); +extern char *setup_line(FILE *in); extern int get_line_value(FILE *in,double *value); extern int get_next_value(FILE *in,double *value); extern int get_next_ivalue(FILE *in,long *ivalue); @@ -34,11 +34,9 @@ extern int get_vector(codebook *b,FILE *in,int start,int num,double *a); extern char *find_seek_to(FILE *in,char *s); extern codebook *codebook_load(char *filename); -extern int codebook_entry(codebook *b,double *val); +extern void write_codebook(FILE *out,char *name,const static_codebook *c); extern void spinnit(char *s,int n); -extern long float24_pack(double val); -extern double float24_unpack(long val); extern void build_tree_from_lengths(int vals, long *hist, long *lengths); #endif diff --git a/vq/build.c b/vq/build.c index eb15d00..09dfb20 100644 --- a/vq/build.c +++ b/vq/build.c @@ -12,7 +12,7 @@ ******************************************************************** function: utility main for building codebooks from training sets - last mod: $Id: build.c,v 1.12 2000/02/16 16:18:34 xiphmont Exp $ + last mod: $Id: build.c,v 1.13 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -22,6 +22,8 @@ #include #include #include "vorbis/codebook.h" +#include "../lib/sharedbook.h" +#include "bookutil.h" #include "vqgen.h" #include "vqsplit.h" @@ -183,109 +185,14 @@ int main(int argc,char *argv[]){ /* build the book */ vqsp_book(&v,&b,quantlist); + c.q_min=q.min; + c.q_delta=q.delta; + c.q_quant=q.quant; + c.q_sequencep=q.sequencep; /* save the book in C header form */ - fprintf(out, - "/********************************************************************\n" - " * *\n" - " * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. *\n" - " * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *\n" - " * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. *\n" - " * PLEASE READ THESE TERMS DISTRIBUTING. *\n" - " * *\n" - " * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 *\n" - " * by 1999 Monty and The XIPHOPHORUS Company *\n" - " * http://www.xiph.org/ *\n" - " * *\n" - " ********************************************************************\n" - "\n" - " function: static codebook autogenerated by vq/vqbuild\n" - "\n" - " ********************************************************************/\n\n"); + write_codebook(out,name,b.c); - fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name); - fprintf(out,"#include \"vorbis/codebook.h\"\n\n"); - - /* first, the static vectors, then the book structure to tie it together. */ - /* quantlist */ - fprintf(out,"static long _vq_quantlist_%s[] = {\n",name); - i=0; - for(j=0;jaux;){ - fprintf(out,"\t"); - for(k=0;k<8 && jaux;k++,j++) - fprintf(out,"%6ld,",c.encode_tree->ptr0[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* ptr1 */ - fprintf(out,"static long _vq_ptr1_%s[] = {\n",name); - for(j=0;jaux;){ - fprintf(out,"\t"); - for(k=0;k<8 && jaux;k++,j++) - fprintf(out,"%6ld,",c.encode_tree->ptr1[j]); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* p */ - fprintf(out,"static long _vq_p_%s[] = {\n",name); - for(j=0;jaux;){ - fprintf(out,"\t"); - for(k=0;k<8 && jaux;k++,j++) - fprintf(out,"%6ld,",c.encode_tree->p[j]*c.dim); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* q */ - fprintf(out,"static long _vq_q_%s[] = {\n",name); - for(j=0;jaux;){ - fprintf(out,"\t"); - for(k=0;k<8 && jaux;k++,j++) - fprintf(out,"%6ld,",c.encode_tree->q[j]*c.dim); - fprintf(out,"\n"); - } - fprintf(out,"};\n\n"); - - /* tie it all together */ - - fprintf(out,"static encode_aux _vq_aux_%s = {\n",name); - fprintf(out,"\t_vq_ptr0_%s,\n",name); - fprintf(out,"\t_vq_ptr1_%s,\n",name); - fprintf(out,"\t_vq_p_%s,\n",name); - fprintf(out,"\t_vq_q_%s,\n",name); - fprintf(out,"\t%ld, %ld\n};\n\n",c.encode_tree->aux,c.encode_tree->aux); - - fprintf(out,"static static_codebook _vq_book_%s = {\n",name); - fprintf(out,"\t%ld, %ld, %ld, %ld, %d, %d,\n", - c.dim,c.entries,q.min,q.delta,q.quant,q.sequencep); - fprintf(out,"\t_vq_quantlist_%s,\n",name); - fprintf(out,"\t_vq_lengthlist_%s,\n",name); - fprintf(out,"\t&_vq_aux_%s,\n",name); - fprintf(out,"};\n\n"); - - fprintf(out,"\n#endif\n"); fclose(out); exit(0); } diff --git a/vq/cascade.c b/vq/cascade.c index dfd2a6e..dac193b 100644 --- a/vq/cascade.c +++ b/vq/cascade.c @@ -12,7 +12,7 @@ ******************************************************************** function: function call to do simple data cascading - last mod: $Id: cascade.c,v 1.5 2000/01/21 13:42:37 xiphmont Exp $ + last mod: $Id: cascade.c,v 1.6 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -21,49 +21,64 @@ #include #include #include +#include "vorbis/codebook.h" +#include "../lib/sharedbook.h" #include "bookutil.h" /* set up metrics */ double count=0.; -int dim=-1; -double *work=NULL; + void process_preprocess(codebook **bs,char *basename){ - while(*bs){ - codebook *b=*bs; - if(dim==-1){ - dim=b->c->dim; - work=malloc(sizeof(double)*dim); - }else{ - if(dim!=b->c->dim){ - fprintf(stderr,"Each codebook in a cascade must have the same dimensional order\n"); - exit(1); - } - } - bs++; - } } void process_postprocess(codebook **b,char *basename){ fprintf(stderr,"Done. \n"); } -void process_vector(codebook **bs,double *a){ - int i; - memcpy(work,a,dim*sizeof(double)); +double process_one(codebook *b,double *a,int dim,int step,int addmul, + double base){ + int j; + + if(b->c->q_sequencep){ + double temp; + for(j=0;jvaluelist+b->c->dim*entry; + int dim=b->dim; + + if(inter){ + for(i=0;ic->dim;i++)work[i]-=e[i]; bs++; + booknum++; + bi++; } - for(i=0;i.vqh [ +|* ]... \n" + " datafile.vqd [datafile.vqd]...\n\n" " data can be taken on stdin. residual error data sent to\n" " stdout.\n\n"); diff --git a/vq/genericdata.c b/vq/genericdata.c index 08a31bb..2a6ffb9 100644 --- a/vq/genericdata.c +++ b/vq/genericdata.c @@ -12,7 +12,7 @@ ******************************************************************** function: generic euclidian distance metric for VQ codebooks - last mod: $Id: genericdata.c,v 1.4 2000/02/21 01:12:55 xiphmont Exp $ + last mod: $Id: genericdata.c,v 1.5 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -47,7 +47,7 @@ double vqext_metric(vqgen *v,double *e, double *p){ return sqrt(acc/v->elements); } -void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols){ +void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num){ vqgen_addpoint(v,b+start,NULL); } diff --git a/vq/huffbuild.c b/vq/huffbuild.c index 757b34e..ba12f6e 100644 --- a/vq/huffbuild.c +++ b/vq/huffbuild.c @@ -12,7 +12,7 @@ ******************************************************************** function: hufftree builder - last mod: $Id: huffbuild.c,v 1.2 2000/02/23 09:23:51 xiphmont Exp $ + last mod: $Id: huffbuild.c,v 1.3 2000/05/08 20:49:42 xiphmont Exp $ ********************************************************************/ @@ -176,10 +176,11 @@ int main(int argc, char *argv[]){ /* the toplevel book */ fprintf(file,"static static_codebook _huff_book_%s = {\n",base); - fprintf(file,"\t%d, %ld, %d, %d, %d, %d,\n", - subn,vals,0,0,0,0); - fprintf(file,"\tNULL,\n"); + fprintf(file,"\t%d, %ld,\n",subn,vals); fprintf(file,"\t_huff_lengthlist_%s,\n",base); + fprintf(file,"\t0, 0, 0, 0, 0,\n"); + fprintf(file,"\tNULL,\n"); + fprintf(file,"\tNULL,\n"); fprintf(file,"\tNULL,\n"); fprintf(file,"};\n\n"); diff --git a/vq/latticebuild.c b/vq/latticebuild.c new file mode 100644 index 0000000..9dadcbc --- /dev/null +++ b/vq/latticebuild.c @@ -0,0 +1,336 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * + * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * + * PLEASE READ THESE TERMS DISTRIBUTING. * + * * + * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 * + * by Monty and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: utility main for building codebooks from lattice descriptions + last mod: $Id: latticebuild.c,v 1.2 2000/05/08 20:49:50 xiphmont Exp $ + + ********************************************************************/ + +#include +#include +#include +#include +#include +#include "vorbis/codebook.h" +#include "../lib/sharedbook.h" +#include "bookutil.h" + +/* The purpose of this util is actually just to count hits and finish + packaging the description into a static codebook. + + command line: + vqlattice description.vql datafile.vqd + + the lattice description file contains five lines: + + + ... + + ... + ... + + vqlattice sends residual data (for the next stage) to stdout, and + produces description.vqh */ + +static int ilog(unsigned int v){ + int ret=0; + while(v){ + ret++; + v>>=1; + } + return(ret); +} + +int main(int argc,char *argv[]){ + codebook b; + static_codebook c; + encode_aux_threshmatch t; + double *quantlist; + long *hits; + + int entries=-1,dim=-1,quantvals=-1,addmul=-1,threshvals=-1; + FILE *out=NULL; + FILE *in=NULL; + char *line,*name; + long j,k; + + memset(&b,0,sizeof(b)); + memset(&c,0,sizeof(c)); + memset(&t,0,sizeof(t)); + + if(argv[1]==NULL){ + fprintf(stderr,"Need a lattice description file on the command line.\n"); + exit(1); + } + + { + char *ptr; + char *filename=calloc(strlen(argv[1])+4,1); + + strcpy(filename,argv[1]); + in=fopen(filename,"r"); + if(!in){ + fprintf(stderr,"Could not open input file %s\n",filename); + exit(1); + } + + ptr=strrchr(filename,'.'); + if(ptr){ + *ptr='\0'; + name=strdup(filename); + sprintf(ptr,".vqh"); + }else{ + name=strdup(filename); + strcat(filename,".vqh"); + } + + out=fopen(filename,"w"); + if(out==NULL){ + fprintf(stderr,"Unable to open %s for writing\n",filename); + exit(1); + } + } + + /* read the description */ + line=get_line(in); + if(sscanf(line,"%d %d %d",&quantvals,&dim,&addmul)!=3){ + fprintf(stderr,"Syntax error reading book file (line 1)\n"); + exit(1); + } + entries=pow(quantvals,dim); + c.thresh_tree=&t; + c.dim=dim; + c.entries=entries; + c.lengthlist=malloc(entries*sizeof(long)); + c.maptype=1; + c.q_sequencep=0; + c.quantlist=calloc(quantvals,sizeof(long)); + + quantlist=malloc(sizeof(long)*c.dim*c.entries); + hits=malloc(c.entries*sizeof(long)); + for(j=0;jc.q_quant)c.q_quant=ilog(c.quantlist[j]); + } + } + + vorbis_book_init_encode(&b,&c); + fclose(in); + + /* at this point, we have enough to do best entry matching. We + don't have counts yet, but that's OK; match, write residual data, + and track hits. The build word lengths when we're done */ + + /* we have to do our own de-interleave */ + if(argv[2]==NULL){ + fprintf(stderr,"Need a data file on the command line.\n"); + exit(1); + } + in=fopen(argv[2],"r"); + if(!in){ + fprintf(stderr,"Could not open input file %s\n",argv[2]); + exit(1); + } + + { + int cols=0; + long lines=0; + double *vec; + int interleaved; + line=setup_line(in); + /* count cols before we start reading */ + { + char *temp=line; + while(*temp==' ')temp++; + for(cols=0;*temp;cols++){ + while(*temp>32)temp++; + while(*temp==' ')temp++; + } + } + vec=alloca(cols*sizeof(double)); + interleaved=cols/dim; + + while(line){ + lines++; + + if(!(lines&0xff))spinnit("lines so far...",lines); + + /* don't need to deinterleave; besterror does that for us */ + for(j=0;j and The XIPHOPHORUS Company *\n" + " * http://www.xiph.org/ *\n" + " * *\n" + " ********************************************************************\n" + "\n" + " function: static codebook autogenerated by vq/latticebuild\n" + "\n" + " ********************************************************************/\n\n"); + + fprintf(out,"#ifndef _V_%s_VQH_\n#define _V_%s_VQH_\n",name,name); + fprintf(out,"#include \"vorbis/codebook.h\"\n\n"); + + /* first, the static vectors, then the book structure to tie it together. */ + /* quantlist */ + fprintf(out,"static long _vq_quantlist_%s[] = {\n",name); + for(j=0;j<_book_maptype1_quantvals(&c);j++){ + fprintf(out,"\t%ld,\n",c.quantlist[j]); + } + fprintf(out,"};\n\n"); + + /* lengthlist */ + fprintf(out,"static long _vq_lengthlist_%s[] = {\n",name); + for(j=0;j and The XIPHOPHORUS Company * + * http://www.xiph.org/ * + * * + ******************************************************************** + + function: utility for paring low hit count cells from lattice codebook + last mod: $Id: latticepare.c,v 1.2 2000/05/08 20:49:50 xiphmont Exp $ + + ********************************************************************/ + +#include +#include +#include +#include +#include +#include "vorbis/codebook.h" +#include "../lib/sharedbook.h" +#include "bookutil.h" +#include "vqgen.h" +#include "vqsplit.h" + +/* Lattice codebooks have two strengths: important fetaures that are + poorly modelled by global error minimization training (eg, strong + peaks) are not neglected 2) compact quantized representation. + + A fully populated lattice codebook, however, swings point 1 too far + in the opposite direction; rare features need not be modelled quite + so religiously and as such, we waste bits unless we eliminate the + least common cells. The codebook rep supports unused cells, so we + need to tag such cells and build an auxiliary (non-thresh) search + mechanism to find the proper match quickly */ + +/* two basic steps; first is pare the cell for which dispersal creates + the least additional error. This will naturally choose + low-population cells and cells that have not taken on points from + neighboring paring (but does not result in the lattice collapsing + inward and leaving low population ares totally unmodelled). After + paring has removed the desired number of cells, we need to build an + auxiliary search for each culled point */ + +/* Although lattice books (due to threshhold-based matching) do not + actually use error to make cell selections (in fact, it need not + bear any relation), the 'secondbest' entry finder here is in fact + error/distance based, so latticepare is only useful on such books */ + +/* command line: + latticepare latticebook.vqh input_data.vqd + + produces a new output book on stdout +*/ + +static double _dist(int el,double *a, double *b){ + int i; + double acc=0.; + for(i=0;idim,i,j; + int step=n/dim; + for(i=0;ic->thresh_tree; + int dim=b->dim; + int i,j,spiral=1; + int *index=alloca(dim*sizeof(int)*2); + int *mod=index+dim; + int entry=best; + + double bestmetric=0; + int bestentry=-1; + + /* decompose index */ + for(i=0;iquantvals; + best/=tt->quantvals; + } + + /* hit one off on all sides of it; most likely we'll find a possible + match */ + /* suboptimal for unaligned entries */ +#if 0 + for(i=0;iquantvals){ + int newentry=entry+rint(pow(tt->quantvals,i)); + if(b->c->lengthlist[newentry]>0){ + double thismetric=_dist(dim, vec, b->valuelist+newentry*dim); + + if(bestentry==-1 || bestmetric>thismetric){ + bestmetric=thismetric; + bestentry=newentry; + } + } + } + + /* one down */ + if(index[i]-1>=0){ + int newentry=entry-rint(pow(tt->quantvals,i)); + if(b->c->lengthlist[newentry]>0){ + double thismetric=_dist(dim, vec, b->valuelist+newentry*dim); + + if(bestentry==-1 || bestmetric>thismetric){ + bestmetric=thismetric; + bestentry=newentry; + } + } + } + } + +#endif + /* no match? search all cells, binary count, that are one away on + one or more axes. Then continue out until there's a match. + We'll find one eventually, it's relatively OK to be inefficient + as the attempt above will almost always succeed */ + while(bestentry==-1){ + for(i=0;i=tt->quantvals){ + newentry=-1; + break; + } + newentry+=mod[j]*rint(pow(tt->quantvals,j)); + } + + if(newentry!=-1 && newentry!=entry) + if(b->c->lengthlist[newentry]>0){ + double thismetric=_dist(dim, vec, b->valuelist+newentry*dim); + + if(bestentry==-1 || bestmetric>thismetric){ + bestmetric=thismetric; + bestentry=newentry; + } + } + mod[0]++; + } + spiral++; + } + + return(bestentry); +} + +void usage(void){ + fprintf(stderr,"Ogg/Vorbis lattice codebook paring utility\n\n" + "usage: latticepare book.vqh data.vqd \n" + " - [-]\n\n" + "where is the desired number of final cells (or -1\n" + "for no change) and n,n,n,n...n are explicit entries to cull\n\n" + "produces new book on stdout\n\n"); + exit(1); +} + +int main(int argc,char *argv[]){ + char *basename; + codebook *b=NULL; + int entries=0; + int dim=0; + long i,j,target=-1; + int *cvec=NULL; + + long *cullist=malloc(sizeof(int)); + long culls=0; + + argv++; + + + if(*argv==NULL){ + usage(); + exit(1); + } + + /* yes, this is evil. However, it's very convenient to parse file + extentions */ + + while(*argv){ + if(*argv[0]=='-'){ + char *ptr=argv[0]; + long index=0; + /* explicit cull */ + if(!b)usage(); + if(!cvec)cvec=malloc(dim*sizeof(int)); /* lazy ;-) */ + + for(i=0;i=b->c->thresh_tree->quantvals){ + fprintf(stderr,"value too large in cull argument %s\n",argv[0]); + exit(1); + } + + ptr=strchr(ptr+1,','); + } + if(ptr){ + fprintf(stderr,"too many values in cull argument %s\n",argv[0]); + exit(1); + } + for(i=dim;i>0;i--) + index=index*b->c->thresh_tree->quantvals+cvec[i-1]; + + cullist=realloc(cullist,++culls*sizeof(long)); + cullist[culls-1]=index; + fprintf(stderr,"\rExplicitly culling index %ld\n",index); + argv++; + + }else{ + /* input file. What kind? */ + char *dot; + char *ext=NULL; + char *name=strdup(*argv++); + dot=strrchr(name,'.'); + if(dot) + ext=dot+1; + else{ + ext=""; + target=atol(name); + if(target==0)target=entries; + } + + + /* codebook */ + if(!strcmp(ext,"vqh")){ + + basename=strrchr(name,'/'); + if(basename) + basename=strdup(basename)+1; + else + basename=strdup(name); + dot=strrchr(basename,'.'); + if(dot)*dot='\0'; + + b=codebook_load(name); + dim=b->dim; + entries=b->entries; + } + + /* data file; we do actually need to suck it into memory */ + /* we're dealing with just one book, so we can de-interleave */ + if(!strcmp(ext,"vqd") && !points){ + int cols; + long lines=0; + char *line; + double *vec; + FILE *in=fopen(name,"r"); + if(!in){ + fprintf(stderr,"Could not open input file %s\n",name); + exit(1); + } + + reset_next_value(); + line=setup_line(in); + /* count cols before we start reading */ + { + char *temp=line; + while(*temp==' ')temp++; + for(cols=0;*temp;cols++){ + while(*temp>32)temp++; + while(*temp==' ')temp++; + } + } + vec=alloca(cols*sizeof(double)); + /* count, then load, to avoid fragmenting the hell out of + memory */ + while(line){ + lines++; + for(j=0;jvaluelist+dim*firstentry,ppt); + double secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt); + + if(!(i&0xff))spinnit("initializing... ",points-i); + + membership[i]=cellhead[firstentry]; + cellhead[firstentry]=i; + + cellerror1[firstentry]+=firstmetric; + cellcount[firstentry]++; + globalerror+=firstmetric; + cellerror2[firstentry]+=secondmetric; + + } + + /* handle the explicit cull list */ + for(i=0;ic->lengthlist[bestcell]>0){ + long head=cellhead[bestcell]; + b->c->lengthlist[bestcell]=0; + cellhead[bestcell]=-1; + while(head!=-1){ + /* head is a point number */ + double *ppt=pointlist+head*dim; + int newentry=secondbest(b,ppt,bestcell); + int secondentry=secondbest(b,pointlist+head*dim,newentry); + double firstmetric=_dist(dim,b->valuelist+dim*newentry,ppt); + double secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt); + long next=membership[head]; + cellcount[newentry]++; + cellcount[bestcell]--; + cellerror1[newentry]+=firstmetric; + cellerror2[newentry]+=secondmetric; + spinnit(buf,cellcount[bestcell]); + + membership[head]=cellhead[newentry]; + cellhead[newentry]=head; + head=next; + } + cellsleft--; + } + } + + /* do the automatic cull request */ + while(cellsleft>target){ + int bestcell=-1; + double besterror=0; + long head=-1; + spinnit("cells left to eliminate... ",cellsleft-target); + + /* find the cell with lowest removal impact */ + for(i=0;ic->lengthlist[i]>0){ + double thiserror=globalerror-cellerror1[i]+cellerror2[i]; + if(bestcell==-1 || besterror>thiserror){ + besterror=thiserror; + bestcell=i; + } + } + } + + /* disperse it. move each point out, adding it (properly) to + the second best */ + b->c->lengthlist[bestcell]=0; + head=cellhead[bestcell]; + cellhead[bestcell]=-1; + while(head!=-1){ + /* head is a point number */ + double *ppt=pointlist+head*dim; + int newentry=secondbest(b,ppt,bestcell); + int secondentry=secondbest(b,pointlist+head*dim,newentry); + double firstmetric=_dist(dim,b->valuelist+dim*newentry,ppt); + double secondmetric=_dist(dim,b->valuelist+dim*secondentry,ppt); + long next=membership[head]; + cellerror1[newentry]+=firstmetric; + cellerror2[newentry]+=secondmetric; + + membership[head]=cellhead[newentry]; + cellhead[newentry]=head; + head=next; + } + + cellsleft--; + } + + /* paring is over. Build decision trees using points that now fall + through the thresh matcher. */ + /* we don't free membership; we flatten it in order to use in lp_split */ + + for(i=0;ic->lengthlist[i]>0) + entryindex[target++]=i; + } + + /* make working space for a reverse entry index */ + reventry=malloc(entries*sizeof(long)); + + /* do the split */ + nt=b->c->nearest_tree= + calloc(1,sizeof(encode_aux_nearestmatch)); + + nt->alloc=4096; + nt->ptr0=malloc(sizeof(long)*nt->alloc); + nt->ptr1=malloc(sizeof(long)*nt->alloc); + nt->p=malloc(sizeof(long)*nt->alloc); + nt->q=malloc(sizeof(long)*nt->alloc); + nt->aux=0; + + fprintf(stderr,"Leaves added: %d \n", + lp_split(pointlist,points, + b,entryindex,target, + pointindex,indexedpoints, + membership,reventry, + 0,&pointssofar)); + free(membership); + free(reventry); + free(pointindex); + + /* recount hits. Build new lengthlist. reuse entryindex storage */ + for(i=0;ic->lengthlist[i]>0) + entryindex[upper++]=entryindex[i]; + + /* sanity check */ + if(upper != target){ + fprintf(stderr,"\nINTERNAL ERROR; packed the wrong number of entries\n"); + exit(1); + } + + + build_tree_from_lengths(upper,entryindex,lengthlist); + + upper=0; + for(i=0;ic->lengthlist[i]>0) + b->c->lengthlist[i]=lengthlist[upper++]; + } + } + /* we're done. write it out. */ + write_codebook(stdout,"foo",b->c); + + fprintf(stderr,"\r \nDone.\n"); + return(0); +} + + + + diff --git a/vq/lspdata.c b/vq/lspdata.c index a377eb7..1181ac4 100644 --- a/vq/lspdata.c +++ b/vq/lspdata.c @@ -12,7 +12,7 @@ ******************************************************************** function: metrics and quantization code for LSP VQ codebooks - last mod: $Id: lspdata.c,v 1.11 2000/02/21 01:12:56 xiphmont Exp $ + last mod: $Id: lspdata.c,v 1.12 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -21,24 +21,70 @@ #include #include "vqgen.h" #include "vqext.h" +#include "../lib/sharedbook.h" char *vqext_booktype="LSPdata"; quant_meta q={0,0,0,1}; /* set sequence data */ int vqext_aux=1; +double global_maxdel=M_PI; +double global_mindel=M_PI; +#if 0 +void vqext_quantize(vqgen *v,quant_meta *q){ + double delta,mindel; + double maxquant=((1<quant)-1); + int j,k; + + /* first find the basic delta amount from the maximum span to be + encoded. Loosen the delta slightly to allow for additional error + during sequence quantization */ + + delta=(global_maxdel-global_mindel)/((1<quant)-1.5); + + q->min=_float32_pack(global_mindel); + q->delta=_float32_pack(delta); + + mindel=_float32_unpack(q->min); + delta=_float32_unpack(q->delta); + + for(j=0;jentries;j++){ + double last=0; + for(k=0;kelements;k++){ + double val=_now(v,j)[k]; + double now=rint((val-last-mindel)/delta); + + _now(v,j)[k]=now; + if(now<0){ + /* be paranoid; this should be impossible */ + fprintf(stderr,"fault; quantized value<0\n"); + exit(1); + } + + if(now>maxquant){ + /* be paranoid; this should be impossible */ + fprintf(stderr,"fault; quantized value>max\n"); + exit(1); + } + last=(now*delta)+mindel+last; + } + } + +} +#else void vqext_quantize(vqgen *v,quant_meta *q){ vqgen_quantize(v,q); } +#endif +double *weight=NULL; +#if 0 /* LSP training metric. We weight error proportional to distance *between* LSP vector values. The idea of this metric is not to set final cells, but get the midpoint spacing into a form conducive to what we want, which is weighting toward preserving narrower features. */ -double global_maxdel=M_PI; #define FUDGE (global_maxdel-weight[i]) -double *weight=NULL; double *vqext_weight(vqgen *v,double *p){ int i; @@ -52,6 +98,12 @@ double *vqext_weight(vqgen *v,double *p){ } return p; } +#else +#define FUDGE 1. +double *vqext_weight(vqgen *v,double *p){ + return p; +} +#endif /* candidate,actual */ double vqext_metric(vqgen *v,double *e, double *p){ @@ -72,7 +124,7 @@ double vqext_metric(vqgen *v,double *e, double *p){ trailing space */ /* assume vqext_aux==1 */ -void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols){ +void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num){ double *a=alloca(sizeof(double)*(dim+1)); /* +aux */ double base=0; int i; @@ -92,16 +144,17 @@ void vqext_preprocess(vqgen *v){ long j,k; global_maxdel=0.; + global_mindel=M_PI; for(j=0;jpoints;j++){ double last=0.; for(k=0;kelements+v->aux;k++){ double p=_point(v,j)[k]; if(p-last>global_maxdel)global_maxdel=p-last; + if(p-lastelements); } diff --git a/vq/metrics.c b/vq/metrics.c index 5b55595..79089b3 100644 --- a/vq/metrics.c +++ b/vq/metrics.c @@ -12,7 +12,7 @@ ******************************************************************** function: function calls to collect codebook metrics - last mod: $Id: metrics.c,v 1.6 2000/02/16 16:18:37 xiphmont Exp $ + last mod: $Id: metrics.c,v 1.7 2000/05/08 20:49:50 xiphmont Exp $ ********************************************************************/ @@ -20,67 +20,67 @@ #include #include #include +#include "vorbis/codebook.h" +#include "../lib/sharedbook.h" #include "bookutil.h" +/* collect the following metrics: + + mean and mean squared amplitude + mean and mean squared error + mean and mean squared error (per sample) by entry + worst case fit by entry + entry cell size + hits by entry + total bits + total samples + (average bits per sample)*/ + + /* set up metrics */ double meanamplitude_acc=0.; double meanamplitudesq_acc=0.; double meanerror_acc=0.; double meanerrorsq_acc=0.; -double meandev_acc=0.; - -double *histogram=NULL; -double *histogram_error=NULL; -double *histogram_errorsq=NULL; -double *histogram_distance=NULL; -double *histogram_hi=NULL; -double *histogram_lo=NULL; +double **histogram=NULL; +double **histogram_error=NULL; +double **histogram_errorsq=NULL; +double **histogram_hi=NULL; +double **histogram_lo=NULL; +double bits=0.; double count=0.; -int books=0; -int dim=-1; -double *work; - static double *_now(codebook *c, int i){ return c->valuelist+i*c->c->dim; } -int histerrsort(const void *a, const void *b){ - double av=histogram_distance[*((long *)a)]; - double bv=histogram_distance[*((long *)b)]; - if(avc->dim; - work=malloc(sizeof(double)*dim); - }else{ - if(dim!=b->c->dim){ - fprintf(stderr,"Each codebook in a cascade must have the same dimensional order\n"); - exit(1); - } - } - books++; - } - + int i; + while(bs[books])books++; + if(books){ - const static_codebook *b=bs[books-1]->c; - histogram=calloc(b->entries,sizeof(double)); - histogram_distance=calloc(b->entries,sizeof(double)); - histogram_errorsq=calloc(b->entries*dim,sizeof(double)); - histogram_error=calloc(b->entries*dim,sizeof(double)); - histogram_hi=calloc(b->entries*dim,sizeof(double)); - histogram_lo=calloc(b->entries*dim,sizeof(double)); + histogram=calloc(books,sizeof(double *)); + histogram_error=calloc(books,sizeof(double *)); + histogram_errorsq=calloc(books,sizeof(double *)); + histogram_hi=calloc(books,sizeof(double *)); + histogram_lo=calloc(books,sizeof(double *)); }else{ fprintf(stderr,"Specify at least one codebook\n"); exit(1); } + + for(i=0;ientries,sizeof(double)); + histogram_error[i]=calloc(b->entries*b->dim,sizeof(double)); + histogram_errorsq[i]=calloc(b->entries*b->dim,sizeof(double)); + histogram_hi[i]=calloc(b->entries*b->dim,sizeof(double)); + histogram_lo[i]=calloc(b->entries*b->dim,sizeof(double)); + } } static double _dist(int el,double *a, double *b){ @@ -93,189 +93,197 @@ static double _dist(int el,double *a, double *b){ return acc; } -void cell_spacing(codebook **b){ - int i,j,k; - for(i=0;ic->entries;j++){ + /* minimum, maximum, mean, ms cell spacing */ + for(j=0;jc->entries;j++){ + if(c->c->lengthlist[j]>0){ double localmin=-1.; for(k=0;kc->entries;k++){ - double this=_dist(c->c->dim,_now(c,j),_now(c,k)); - if(j!=k && - (localmin==-1 || thisc->lengthlist[k]>0){ + double this=_dist(c->c->dim,_now(c,j),_now(c,k)); + if(j!=k && + (localmin==-1 || thismax)max=localmin; + if(min==-1 || localminmax)max=localmin; mean+=sqrt(localmin); meansq+=localmin; + total++; } - - fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min)); - fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max)); - fprintf(stderr,"\tmean closest side spacing: %g\n",mean/c->c->entries); - fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/c->c->entries)); } + + fprintf(stderr,"\tminimum cell spacing (closest side): %g\n",sqrt(min)); + fprintf(stderr,"\tmaximum cell spacing (closest side): %g\n",sqrt(max)); + fprintf(stderr,"\tmean closest side spacing: %g\n",mean/total); + fprintf(stderr,"\tmean sq closest side spacing: %g\n",sqrt(meansq/total)); } -void process_postprocess(codebook **b,char *basename){ - int i,j,k; +void process_postprocess(codebook **bs,char *basename){ + int i,k,book; char *buffer=alloca(strlen(basename)+80); - codebook *bb=b[books-1]; - fprintf(stderr,"Done. Processed %ld data points for %ld entries:\n", - (long)count,bb->c->entries); - fprintf(stderr,"\tglobal mean amplitude: %g\n", - meanamplitude_acc/(count*dim)); - fprintf(stderr,"\tglobal mean squared amplitude: %g\n", - sqrt(meanamplitudesq_acc/(count*dim))); + fprintf(stderr,"Done. Processed %ld data points:\n\n", + (long)count); + + fprintf(stderr,"Global statistics:******************\n\n"); + + fprintf(stderr,"\ttotal samples: %ld\n",(long)count); + fprintf(stderr,"\ttotal bits required to code: %ld\n",(long)bits); + fprintf(stderr,"\taverage bits per sample: %g\n\n",bits/count); - fprintf(stderr,"\tglobal mean error: %g\n", - meanerror_acc/(count*dim)); - fprintf(stderr,"\tglobal mean squared error: %g\n", - sqrt(meanerrorsq_acc/(count*dim))); - fprintf(stderr,"\tglobal mean deviation: %g\n", - meandev_acc/(count*dim)); + fprintf(stderr,"\tmean sample amplitude: %g\n", + meanamplitude_acc/count); + fprintf(stderr,"\tmean squared sample amplitude: %g\n\n", + sqrt(meanamplitudesq_acc/count)); - cell_spacing(b); + fprintf(stderr,"\tmean code error: %g\n", + meanerror_acc/count); + fprintf(stderr,"\tmean squared code error: %g\n\n", + sqrt(meanerrorsq_acc/count)); - { + for(book=0;bookc->entries; + int dim=b->c->dim; - sprintf(buffer,"%s-mse.m",basename); + fprintf(stderr,"Book %d statistics:------------------\n",book); + + cell_spacing(b); + + sprintf(buffer,"%s-%d-mse.m",basename,book); out=fopen(buffer,"w"); if(!out){ fprintf(stderr,"Could not open file %s for writing\n",buffer); exit(1); } - - for(i=0;ic->entries;i++){ - for(k=0;kc->dim;k++){ - fprintf(out,"%ld, %g, %g\n", - i*bb->c->dim+k,(bb->valuelist+i*bb->c->dim)[k], - sqrt((histogram_errorsq+i*bb->c->dim)[k]/histogram[i])); + + for(i=0;ivaluelist+i*dim)[k], + sqrt((histogram_errorsq[book]+i*dim)[k]/histogram[book][i])); } } fclose(out); - - sprintf(buffer,"%s-me.m",basename); + + sprintf(buffer,"%s-%d-me.m",basename,book); out=fopen(buffer,"w"); if(!out){ fprintf(stderr,"Could not open file %s for writing\n",buffer); exit(1); } - - for(i=0;ic->entries;i++){ - for(k=0;kc->dim;k++){ - fprintf(out,"%ld, %g, %g\n", - i*bb->c->dim+k,(bb->valuelist+i*bb->c->dim)[k], - (histogram_error+i*bb->c->dim)[k]/histogram[i]); + + for(i=0;ivaluelist+i*dim)[k], + (histogram_error[book]+i*dim)[k]/histogram[book][i]); } } fclose(out); - sprintf(buffer,"%s-worst.m",basename); + sprintf(buffer,"%s-%d-worst.m",basename,book); out=fopen(buffer,"w"); if(!out){ fprintf(stderr,"Could not open file %s for writing\n",buffer); exit(1); } - - for(i=0;ic->entries;i++){ - for(k=0;kc->dim;k++){ - fprintf(out,"%ld, %g, %g, %g\n", - i*bb->c->dim+k,(bb->valuelist+i*bb->c->dim)[k], - (bb->valuelist+i*bb->c->dim)[k]+(histogram_lo+i*bb->c->dim)[k], - (bb->valuelist+i*bb->c->dim)[k]+(histogram_hi+i*bb->c->dim)[k]); + + for(i=0;ivaluelist+i*dim)[k], + (b->valuelist+i*dim)[k]+(histogram_lo[book]+i*dim)[k], + (b->valuelist+i*dim)[k]+(histogram_hi[book]+i*dim)[k]); } } fclose(out); } +} - { - FILE *out; - long *index=alloca(sizeof(long)*bb->c->entries); - sprintf(buffer,"%s-distance.m",basename); - out=fopen(buffer,"w"); - if(!out){ - fprintf(stderr,"Could not open file %s for writing\n",buffer); - exit(1); - } - for(j=0;jc->entries;j++){ - if(histogram[j])histogram_distance[j]/=histogram[j]; - index[j]=j; +double process_one(codebook *b,int book,double *a,int dim,int step,int addmul, + double base){ + int j,entry; + double amplitude=0.; + + if(book==0){ + double last=base; + for(j=0;jc->entries,sizeof(long),histerrsort); + if(b->c->q_sequencep){ + double temp; + for(j=0;jc->entries;j++) - for(k=0;kerror) + histogram_lo[book][entry*dim+j]=error; } + return base; } -void process_vector(codebook **bs,double *a){ + +void process_vector(codebook **bs,int *addmul,int inter,double *a,int n){ int bi; int i; - double amplitude=0.; - double distance=0.; - double base=0.; - int entry; - double *e; - memcpy(work,a,sizeof(double)*dim); for(bi=0;bivaluelist+b->c->dim*entry; - for(i=0;ic->dim;i++)work[i]-=e[i]; - } + int dim=b->dim; + double base=0.; - for(i=0;ic->q_sequencep){ - amplitude=a[i]-base; - base=a[i]; - }else - amplitude=a[i]; - - meanamplitude_acc+=fabs(amplitude); - meanamplitudesq_acc+=amplitude*amplitude; - meanerror_acc+=fabs(error); - meanerrorsq_acc+=error*error; - - if(amplitude) - meandev_acc+=fabs(error/amplitude); - else - meandev_acc+=fabs(error); /* yeah, yeah */ - - histogram_errorsq[entry*dim+i]+=error*error; - histogram_error[entry*dim+i]+=fabs(error); - if(histogram[entry]==0 || histogram_hi[entry*dim+i]error) - histogram_lo[entry*dim+i]=error; - distance+=error*error; + if(inter){ + for(i=0;i.vqh datafile.vqd [datafile.vqd]...\n\n" - " data can be taken on stdin. Output goes to output files:\n" + "usage: vqmetrics [-i] +|*.vqh [ +|* ]... \n" + " datafile.vqd [datafile.vqd]...\n\n" + " data can be taken on stdin. -i indicates interleaved coding.\n" + " Output goes to output files:\n" " basename-me.m: gnuplot: mean error by entry value\n" " basename-mse.m: gnuplot: mean square error by entry value\n" " basename-worst.m: gnuplot: worst error by entry value\n" diff --git a/vq/partition.c b/vq/partition.c deleted file mode 100644 index 4694c57..0000000 --- a/vq/partition.c +++ /dev/null @@ -1,86 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * - * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * - * PLEASE READ THESE TERMS DISTRIBUTING. * - * * - * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000 * - * by Monty and The XIPHOPHORUS Company * - * http://www.xiph.org/ * - * * - ******************************************************************** - - function: function call to do data partitioning - last mod: $Id: partition.c,v 1.3 2000/01/21 13:42:39 xiphmont Exp $ - - ********************************************************************/ - -/* make n files, one for each cell. partition the input data into the - N cells */ - -#include -#include -#include "bookutil.h" - -/* open all the partitioning files */ -FILE **out; -long count; - -void process_preprocess(codebook **b,char *basename){ - int i; - char *buffer=alloca(strlen(basename)+80); - codebook *b0=*b; - - if(!b0){ - fprintf(stderr,"Specify at least one codebook, binky.\n"); - exit(1); - } - if(b[1]){ - fprintf(stderr,"Ignoring all but first codebook\n"); - exit(1); - } - - out=malloc(sizeof(FILE *)*b0->c->entries); - for(i=0;ic->entries;i++){ - sprintf(buffer,"%s-%dp.vqd",basename,i); - out[i]=fopen(buffer,"w"); - if(out[i]==NULL){ - fprintf(stderr,"Could not open file %s\n",buffer); - exit(1); - } - } -} - -void process_postprocess(codebook **b,char *basename){ - codebook *b0=*b; - int i; - for(i=0;ic->entries;i++) - fclose(out[i]); - fprintf(stderr,"Done. \n"); -} - -/* just redirect this entry to the appropriate partition file */ -void process_vector(codebook **b,double *a){ - codebook *b0=*b; - int entry=codebook_entry(b0,a); - int i; - - for(i=0;ic->dim;i++) - fprintf(out[entry],"%f, ",a[i]); - fprintf(out[entry],"\n"); - if(count++%100)spinnit("working.... lines: ",count); -} - -void process_usage(void){ - fprintf(stderr, - "usage: vqpartition codebook.vqh datafile.vqd [datafile.vqd]...\n\n" - " data can be taken on stdin. partitioning data is written to\n" - - " files named -p.vqh.\n\n"); - -} - - - - diff --git a/vq/residue_entropy b/vq/residue_entropy new file mode 100755 index 0000000..7aa44bc --- /dev/null +++ b/vq/residue_entropy @@ -0,0 +1,51 @@ +#!/usr/bin/perl + +use POSIX; +my($groupn,$quant,$sink)=@ARGV; +my%hash; +my$count=0; +my$lines=0; + +if(!defined($quant)){ + print "Usage: residue_entropy \n"; + exit(1); +} +$|=1; + +while () { + chop; + my@nums = (); + @nums = split(/,/); + $lines++; + + my$step=$#nums/$groupn; + for(my$i=0;$i<$step;$i++){ + my$key=""; + for(my$j=$i;$j<$#nums;$j+=$step){ + + $num=$nums[$j]; + if($num!=0){ + if($num<0){ + $num= -POSIX::floor(log(-$num)*8.6858896/$quant+.5)-1; + }else{ + $num= POSIX::floor(log($num)*8.6858896/$quant+.5)+1; + } + }else{ + $num=0; + } + $key.=":$num"; + } + + if(!defined($hash{$key})){ + $count++; + $hash{$key}=1; + } + } + + if(($lines % 1000)==0){ + print "\rworking... $lines lines, found $count values so far"; + } +} + +print "\r$count values total \n"; +print "Done.\n\n"; diff --git a/vq/residuedata.c b/vq/residuedata.c index a1b68a9..84bd6d9 100644 --- a/vq/residuedata.c +++ b/vq/residuedata.c @@ -12,7 +12,7 @@ ******************************************************************** function: metrics and quantization code for residue VQ codebooks - last mod: $Id: residuedata.c,v 1.2 2000/02/21 01:12:57 xiphmont Exp $ + last mod: $Id: residuedata.c,v 1.3 2000/05/08 20:49:51 xiphmont Exp $ ********************************************************************/ @@ -22,68 +22,43 @@ #include #include "vqgen.h" #include "bookutil.h" +#include "../lib/sharedbook.h" +#include "../lib/scales.h" #include "vqext.h" +float scalequant=3.; char *vqext_booktype="RESdata"; quant_meta q={0,0,0,0}; /* set sequence data */ int vqext_aux=0; static double *quant_save=NULL; -/* LSP training metric. We weight error proportional to distance - *between* LSP vector values. The idea of this metric is not to set - final cells, but get the midpoint spacing into a form conducive to - what we want, which is weighting toward preserving narrower - features. */ - double *vqext_weight(vqgen *v,double *p){ return p; } -/* quantize aligned on unit boundaries */ - -static double _delta(double min,double max,int bits){ - double delta=1.; - int vals=(1<vals){ - delta*=2; - }else if(qvals*2<=vals){ - delta*=.5; - }else{ - min=qmin*delta; - break; - } - } - return(delta); -} +/* quantize aligned on unit boundaries. Because our grid is likely + very coarse, play 'shuffle the blocks'; don't allow multiple + entries to fill the same spot as is nearly certain to happen. */ void vqext_quantize(vqgen *v,quant_meta *q){ - int i,j,k; + int j,k; long dim=v->elements; long n=v->entries; - double min,vals,delta=1.; + double max=-1; double *test=alloca(sizeof(double)*dim); int moved=0; - min=-((1<quant)/2-1); - vals=1<quant; - q->min=float24_pack(rint(min/delta)*delta); - q->delta=float24_pack(delta); /* allow movement only to unoccupied coordinates on the coarse grid */ for(j=0;j=vals)val=vals-1; - test[k]=val; + double norm=rint(fabs(val)/scalequant); + if(norm>max)max=norm; + test[k]=norm; } + /* allow move only if unoccupied */ if(quant_save){ for(k=0;kmin=_float32_pack(0.); + q->delta=_float32_pack(scalequant); + q->quant=_ilog(max); + if(quant_save){ memcpy(_now(v,0),quant_save,sizeof(double)*dim*n); fprintf(stderr,"cells shifted this iteration: %d\n",moved); } } -/* this should probably go to a x^6/4 error metric */ - /* candidate,actual */ double vqext_metric(vqgen *v,double *e, double *p){ int i; @@ -118,15 +99,18 @@ double vqext_metric(vqgen *v,double *e, double *p){ return sqrt(acc); } -void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols){ +/* We don't interleave here; we assume that the interleave is provided + for us by residuesplit in vorbis/huff/ */ +void vqext_addpoint_adj(vqgen *v,double *b,int start,int dim,int cols,int num){ vqgen_addpoint(v,b+start,NULL); } /* need to reseed because of the coarse quantization we tend to use on residuals (which causes lots & lots of dupes) */ void vqext_preprocess(vqgen *v){ - long i,j,k,l,min,max; + long i,j,k,l; double *test=alloca(sizeof(double)*v->elements); + scalequant=q.quant; vqext_quantize(v,&q); vqgen_unquantize(v,&q); @@ -142,17 +126,14 @@ void vqext_preprocess(vqgen *v){ if(kentries){ fprintf(stderr,"reseeding with quantization....\n"); - min=-((1<points && jentries;i++){ for(k=0;kelements;k++){ - test[k]=rint(_point(v,i)[k]); - if(test[k]max)test[k]=max; + double val=_point(v,i)[k]; + test[k]=rint(val/scalequant)*scalequant; } for(l=0;l #include #include -#include "../lib/scales.h" #include "../vq/bookutil.h" -/* take a masking curve and raw residue; eliminate the inaduble and - quantize to the final form handed to the VQ. All and any tricks to - squeeze out bits given knowledge of the encoding mode should go - here too */ - -/* modifies the pcm vector, returns book membership in aux */ - -/* This is currently a bit specific to/hardwired for mapping 0; things - will need to change in the future when we het real multichannel - mappings */ - -static double _maxval(double *v,int n){ - int i; - double acc=0.; - for(i=0;imax)max=fabs(res[i+j]); + for(j=0;j=bound[j]) break; aux=j; - - fprintf(of,"%d, ",aux); - - for(j=0;j []...\n" + "residuesplit []...\n" " where begin,n,group is first scalar, \n" " number of scalars of each in line,\n" " number of scalars in a group\n" - " m,a,f are the boundary conditions for each group\n" - "eg: residuesplit mask.vqd floor.vqd 0,1024,32 res .5 2.5,1.5 ,,.25\n" + " min is the minimum peak value required for membership in a group\n" + "eg: residuesplit mask.vqd floor.vqd 0,1024,16 res 25.5 13.5 7.5 1.5 0\n" "produces resaux.vqd and res_0...n.vqd\n\n"); exit(1); } @@ -125,18 +96,16 @@ int main(int argc, char *argv[]){ char *buffer; char *base; int i,parts,begin,n,subn; - FILE *mask; - FILE *floor; - double *maskmbound,*maskabound,*maskvec; - double *floorbound,*floorvec; + FILE *res; + double *bound,*vec; + long c=0; + if(argc<5)usage(); - if(argc<6)usage(); - - base=strdup(argv[4]); + base=strdup(argv[3]); buffer=alloca(strlen(base)+20); { - char *pos=strchr(argv[3],','); - begin=atoi(argv[3]); + char *pos=strchr(argv[2],','); + begin=atoi(argv[2]); if(!pos) usage(); else @@ -152,44 +121,20 @@ int main(int argc, char *argv[]){ } } - /* how many parts? Need to scan m,f... */ - parts=argc-4; /* yes, one past */ - maskmbound=malloc(sizeof(double)*parts); - maskabound=malloc(sizeof(double)*parts); - floorbound=malloc(sizeof(double)*parts); + /* how many parts?... */ + parts=argc-3; + bound=malloc(sizeof(double)*parts); for(i=0;ic->dim); } /* data file */ if(!strcmp(ext,"vqd")){ + int cols; + long lines=0; + char *line; + double *vec; FILE *in=fopen(name,"r"); if(!in){ fprintf(stderr,"Could not open input file %s\n",name); @@ -121,10 +140,29 @@ int main(int argc,char *argv[]){ } reset_next_value(); - - while(get_vector(*b,in,start,num,a)!=-1) - process_vector(b,a); - + line=setup_line(in); + /* count cols before we start reading */ + { + char *temp=line; + while(*temp==' ')temp++; + for(cols=0;*temp;cols++){ + while(*temp>32)temp++; + while(*temp==' ')temp++; + } + } + vec=alloca(cols*sizeof(double)); + while(line){ + lines++; + for(j=0;j32)temp++; + while(*temp==' ')temp++; + } + } + vec=alloca(cols*sizeof(double)); + while(line){ + lines++; + for(j=0;j\n" " -e[rror] \n" " -i[terations] \n" - " -d[istance] desired minimum cell radius from midpoint\n\n" + " -d[istance] desired minimum cell radius from midpoint\n" + " -b eliminate cell size biasing; use normal LBG\n\n" "examples:\n" " train a new codebook to 1%% tolerance on datafile 'foo':\n" " xxxvqtrain book -p 256,6,8 -e .01 foo\n" @@ -78,6 +79,7 @@ int main(int argc,char *argv[]){ int start=0,num=-1; double desired=.05,mindist=0.; int iter=1000; + int biasp=1; FILE *out=NULL; char *line; @@ -213,6 +215,9 @@ int main(int argc,char *argv[]){ if(sscanf(argv[1],"%d",&iter)!=1) goto syner; break; + case 'b': + biasp=0; + break; default: fprintf(stderr,"Unknown option %s\n",argv[0]); exit(1); @@ -275,7 +280,7 @@ int main(int argc,char *argv[]){ } if(num<=0)num=(cols-start)/dim; for(i=0;ientries]; int count=0; @@ -190,8 +192,11 @@ void vqgen_quantize(vqgen *v,quant_meta *q){ delta=(maxdel-mindel)/((1<quant)-1.5); - q->min=float24_pack(mindel); - q->delta=float24_pack(delta); + q->min=_float32_pack(mindel); + q->delta=_float32_pack(delta); + + mindel=_float32_unpack(q->min); + delta=_float32_unpack(q->delta); for(j=0;jentries;j++){ double last=0; @@ -216,19 +221,20 @@ void vqgen_quantize(vqgen *v,quant_meta *q){ } } -/* much easier :-) */ +/* much easier :-). Unlike in the codebook, we don't un-log log + scales; we just make sure they're properly offset. */ void vqgen_unquantize(vqgen *v,quant_meta *q){ long j,k; - double mindel=float24_unpack(q->min); - double delta=float24_unpack(q->delta); + double mindel=_float32_unpack(q->min); + double delta=_float32_unpack(q->delta); for(j=0;jentries;j++){ double last=0.; for(k=0;kelements;k++){ - double now=_now(v,j)[k]*delta+last+mindel; - _now(v,j)[k]=now; + double now=_now(v,j)[k]; + now=fabs(now)*delta+last+mindel; if(q->sequencep)last=now; - + _now(v,j)[k]=now; } } } @@ -274,7 +280,7 @@ void vqgen_addpoint(vqgen *v, double *p,double *a){ if(!(v->points&0xff))spinnit("loading... ",v->points); } -double vqgen_iterate(vqgen *v){ +double vqgen_iterate(vqgen *v,int biasp){ long i,j,k; long biasable; @@ -311,109 +317,113 @@ double vqgen_iterate(vqgen *v){ memset(nearcount,0,sizeof(long)*v->entries); memset(v->assigned,0,sizeof(long)*v->entries); biasable=0; - for(i=0;ipoints;i++){ - double *ppt=v->weight_func(v,_point(v,i)); - double firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0]; - double secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1]; - long firstentry=0; - long secondentry=1; - int biasflag=1; - - if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i); - - if(firstmetric>secondmetric){ - double temp=firstmetric; - firstmetric=secondmetric; - secondmetric=temp; - firstentry=1; - secondentry=0; - } - - for(j=2;jentries;j++){ - double thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j]; - if(thismetricentries;j++){ + if(biasp){ + for(i=0;ipoints;i++){ + double *ppt=v->weight_func(v,_point(v,i)); + double firstmetric=v->metric_func(v,_now(v,0),ppt)+v->bias[0]; + double secondmetric=v->metric_func(v,_now(v,1),ppt)+v->bias[1]; + long firstentry=0; + long secondentry=1; + int biasflag=1; - double thismetric,localmetric; - double *nearbiasptr=nearbias+desired2*j; - long k=nearcount[j]; + if(!(i&0xff))spinnit("biasing... ",v->points+v->points+v->entries-i); - localmetric=v->metric_func(v,_now(v,j),ppt); - /* 'thismetric' is to be the bias value necessary in the current - arrangement for entry j to capture point i */ - if(firstentry==j){ - /* use the secondary entry as the threshhold */ - thismetric=secondmetric-localmetric; - }else{ - /* use the primary entry as the threshhold */ - thismetric=firstmetric-localmetric; + if(firstmetric>secondmetric){ + double temp=firstmetric; + firstmetric=secondmetric; + secondmetric=temp; + firstentry=1; + secondentry=0; } - - /* support the idea of 'minimum distance'... if we want the - cells in a codebook to be roughly some minimum size (as with - the low resolution residue books) */ - if(localmetric>=v->mindist){ - - /* a cute two-stage delayed sorting hack */ - if(kpoints+v->points+v->entries-i); - qsort(nearbiasptr,desired,sizeof(double),directdsort); + for(j=2;jentries;j++){ + double thismetric=v->metric_func(v,_now(v,j),ppt)+v->bias[j]; + if(thismetricentries;j++){ + + double thismetric,localmetric; + double *nearbiasptr=nearbias+desired2*j; + long k=nearcount[j]; + + localmetric=v->metric_func(v,_now(v,j),ppt); + /* 'thismetric' is to be the bias value necessary in the current + arrangement for entry j to capture point i */ + if(firstentry==j){ + /* use the secondary entry as the threshhold */ + thismetric=secondmetric-localmetric; + }else{ + /* use the primary entry as the threshhold */ + thismetric=firstmetric-localmetric; + } + + /* support the idea of 'minimum distance'... if we want the + cells in a codebook to be roughly some minimum size (as with + the low resolution residue books) */ + + if(localmetric>=v->mindist){ - }else if(thismetric>nearbiasptr[desired-1]){ - nearbiasptr[k]=thismetric; - k++; - if(k==desired2){ - spinnit("biasing... ",v->points+v->points+v->entries-i); - qsort(nearbiasptr,desired2,sizeof(double),directdsort); - k=desired; + /* a cute two-stage delayed sorting hack */ + if(kpoints+v->points+v->entries-i); + qsort(nearbiasptr,desired,sizeof(double),directdsort); + } + + }else if(thismetric>nearbiasptr[desired-1]){ + nearbiasptr[k]=thismetric; + k++; + if(k==desired2){ + spinnit("biasing... ",v->points+v->points+v->entries-i); + qsort(nearbiasptr,desired2,sizeof(double),directdsort); + k=desired; + } } - } - nearcount[j]=k; - }else - biasflag=0; + nearcount[j]=k; + }else + biasflag=0; + } + biasable+=biasflag; } - biasable+=biasflag; - } - - /* inflate/deflate */ - - for(i=0;ientries;i++){ - double *nearbiasptr=nearbias+desired2*i; - - spinnit("biasing... ",v->points+v->entries-i); - - /* due to the delayed sorting, we likely need to finish it off....*/ - if(nearcount[i]>desired) - qsort(nearbiasptr,nearcount[i],sizeof(double),directdsort); - - /* desired is the *maximum* bias queue size. If we're using - minimum distance, we're not interested in the max size... we're - interested in the biasable number of points */ - { - long localdesired=(double)biasable/v->entries; - if(localdesired) - v->bias[i]=nearbiasptr[localdesired-1]; - else - v->bias[i]=nearbiasptr[0]; + + /* inflate/deflate */ + + for(i=0;ientries;i++){ + double *nearbiasptr=nearbias+desired2*i; + + spinnit("biasing... ",v->points+v->entries-i); + + /* due to the delayed sorting, we likely need to finish it off....*/ + if(nearcount[i]>desired) + qsort(nearbiasptr,nearcount[i],sizeof(double),directdsort); + + /* desired is the *maximum* bias queue size. If we're using + minimum distance, we're not interested in the max size... we're + interested in the biasable number of points */ + { + long localdesired=(double)biasable/v->entries; + if(localdesired) + v->bias[i]=nearbiasptr[localdesired-1]; + else + v->bias[i]=nearbiasptr[0]; + } } + }else{ + memset(v->bias,0,v->entries*sizeof(double)); } /* Now assign with new bias and find new midpoints */ diff --git a/vq/vqgen.h b/vq/vqgen.h index 738484b..8de0e0b 100644 --- a/vq/vqgen.h +++ b/vq/vqgen.h @@ -12,7 +12,7 @@ ******************************************************************** function: build a VQ codebook - last mod: $Id: vqgen.h,v 1.12 2000/02/21 01:13:01 xiphmont Exp $ + last mod: $Id: vqgen.h,v 1.13 2000/05/08 20:49:51 xiphmont Exp $ ********************************************************************/ @@ -68,7 +68,7 @@ extern void vqgen_init(vqgen *v, double *(*weight)(vqgen *,double *)); extern void vqgen_addpoint(vqgen *v, double *p,double *aux); -extern double vqgen_iterate(vqgen *v); +extern double vqgen_iterate(vqgen *v,int biasp); extern void vqgen_unquantize(vqgen *v,quant_meta *q); extern void vqgen_quantize(vqgen *v,quant_meta *q); extern void vqgen_cellmetric(vqgen *v); diff --git a/vq/vqsplit.c b/vq/vqsplit.c index 2655205..c54751b 100644 --- a/vq/vqsplit.c +++ b/vq/vqsplit.c @@ -12,7 +12,7 @@ ******************************************************************** function: build a VQ codebook and the encoding decision 'tree' - last mod: $Id: vqsplit.c,v 1.18 2000/02/23 09:10:13 xiphmont Exp $ + last mod: $Id: vqsplit.c,v 1.19 2000/05/08 20:49:51 xiphmont Exp $ ********************************************************************/ @@ -34,6 +34,7 @@ #include "vqgen.h" #include "vqsplit.h" #include "bookutil.h" +#include "../lib/sharedbook.h" /* Codebook generation happens in two steps: @@ -67,18 +68,39 @@ int iascsort(const void *a,const void *b){ return(av-bv); } -/* grab it from vqgen.c */ -extern double _dist(vqgen *v,double *a, double *b); +static double _Ndist(int el,double *a, double *b){ + int i; + double acc=0.; + for(i=0;ielements;k++) - position+=ppt[k]*n[k]; - if(position>0.) - entryA[firstentry]=1; - else - entryB[firstentry]=1; + double *ppt=_Npoint(pointindex[i]); + long firstentry=membership[pointindex[i]]; + + if(firstentry==besti){ + entryA[reventry[firstentry]]=1; + if(splitp)temppointsA[pointsA++]=pointindex[i]; + continue; + } + if(firstentry==bestj){ + entryB[reventry[firstentry]]=1; + if(splitp)temppointsB[pointsB++]=pointindex[i]; + continue; + } + { + double distA=_Ndist(dim,ppt,_Nnow(besti)); + double distB=_Ndist(dim,ppt,_Nnow(bestj)); + if(distAelements;k++){ - double center=(p[k]+q[k])/2.; - n[k]=(center-q[k])*2.; - *c+=center*n[k]; + if(splitp){ + memcpy(pointindex,temppointsA,sizeof(long)*pointsA); + memcpy(pointindex+pointsA,temppointsB,sizeof(long)*pointsB); + free(temppointsA); + free(temppointsB); } + return(pointsA); } -int lp_split(vqgen *v,codebook *b, +int lp_split(double *pointlist,long totalpoints, + codebook *b, long *entryindex,long entries, long *pointindex,long points, + long *membership,long *reventry, long depth, long *pointsofar){ - encode_aux *t=b->c->encode_tree; + encode_aux_nearestmatch *t=b->c->nearest_tree; /* The encoder, regardless of book, will be using a straight euclidian distance-to-point metric to determine closest point. @@ -138,9 +171,9 @@ int lp_split(vqgen *v,codebook *b, codebook set spacing and distribution using special metrics and even a midpoint division won't disturb the basic properties) */ + int dim=b->dim; + double *entrylist=b->valuelist; long ret; - double *n=alloca(sizeof(double)*v->elements); - double c; long *entryA=calloc(entries,sizeof(long)); long *entryB=calloc(entries,sizeof(long)); long entriesA=0; @@ -149,39 +182,15 @@ int lp_split(vqgen *v,codebook *b, long pointsA=0; long i,j,k; - long *membership=malloc(sizeof(long)*points); - long besti=-1; long bestj=-1; - - char spinbuf[80]; - sprintf(spinbuf,"splitting [%ld left]... ",v->points-*pointsofar); - - if(depth==22 && points==9 && entries==2 && *pointsofar==252935){ - fprintf(stderr,"HERE\n"); - - } - - /* which cells do points belong to? Do this before n^2 best pair chooser. */ - - for(i=0;i64*1024)spinnit(spinbuf,entries); + char spinbuf[80]; + sprintf(spinbuf,"splitting [%ld left]... ",totalpoints-*pointsofar); - for(j=1;jentries;i++)reventry[i]=-1; + for(i=0;ivaluelist,pointlist,dim, + membership,reventry, entryindex,entries, - pointindex,points, + pointindex,points,0, entryA,entryB, - n, c, + entryindex[i],entryindex[j], &entriesA,&entriesB,&entriesC); this=(entriesA-entriesC)*(entriesB-entriesC); @@ -221,20 +230,20 @@ int lp_split(vqgen *v,codebook *b, } } }else{ - double *p=alloca(v->elements*sizeof(double)); - double *q=alloca(v->elements*sizeof(double)); + double *p=alloca(dim*sizeof(double)); + double *q=alloca(dim*sizeof(double)); double best=0.; /* try COG/normal and furthest pairs */ /* meanpoint */ /* eventually, we want to select the closest entry and figure n/c from p/q (because storing n/c is too large */ - for(k=0;kelements;k++){ + for(k=0;kentrylist[entryindex[j]*v->elements+k]; + p[k]+=b->valuelist[entryindex[j]*dim+k]; p[k]/=entries; } @@ -244,18 +253,18 @@ int lp_split(vqgen *v,codebook *b, center */ for(i=0;ielements;k++) + for(k=0;kvaluelist,pointlist,dim, + membership,reventry, entryindex,entries, - pointindex,points, + pointindex,points,0, entryA,entryB, - n, c, + entryindex[i],ref_j, &entriesA,&entriesB,&entriesC); this=(entriesA-entriesC)*(entriesB-entriesC); @@ -297,44 +306,13 @@ int lp_split(vqgen *v,codebook *b, /* find cells enclosing points */ /* count A/B points */ - pq_in_out(v,n,&c,_now(v,besti),_now(v,bestj)); - vqsp_count(v,membership, - entryindex,entries, - pointindex,points, - entryA,entryB, - n, c, - &entriesA,&entriesB,&entriesC); - - free(membership); - - /* the point index is split, so we do an Order n rearrangement into - A first/B last and just pass it on */ - { - long Aptr=0; - long Bptr=points-1; - while(Aptr<=Bptr){ - while(Aptr<=Bptr){ - double position=-c; - for(k=0;kelements;k++) - position+=_point(v,pointindex[Aptr])[k]*n[k]; - if(position<=0.)break; /* not in A */ - Aptr++; - } - while(Aptr<=Bptr){ - double position=-c; - for(k=0;kelements;k++) - position+=_point(v,pointindex[Bptr])[k]*n[k]; - if(position>0.)break; /* not in B */ - Bptr--; - } - if(Aptrvaluelist,pointlist,dim, + membership,reventry, + entryindex,entries, + pointindex,points,1, + entryA,entryB, + besti,bestj, + &entriesA,&entriesB,&entriesC); /* fprintf(stderr,"split: total=%ld depth=%ld set A=%ld:%ld:%ld=B\n", entries,depth,entriesA-entriesC,entriesC,entriesB-entriesC);*/ @@ -357,7 +335,8 @@ int lp_split(vqgen *v,codebook *b, *pointsofar+=pointsA; }else{ t->ptr0[thisaux]= -t->aux; - ret=lp_split(v,b,entryA,entriesA,pointindex,pointsA,depth+1,pointsofar); + ret=lp_split(pointlist,totalpoints,b,entryA,entriesA,pointindex,pointsA, + membership,reventry,depth+1,pointsofar); } if(entriesB==1){ ret++; @@ -365,7 +344,8 @@ int lp_split(vqgen *v,codebook *b, *pointsofar+=points-pointsA; }else{ t->ptr1[thisaux]= -t->aux; - ret+=lp_split(v,b,entryB,entriesB,pointindex+pointsA,points-pointsA, + ret+=lp_split(pointlist,totalpoints,b,entryB,entriesB,pointindex+pointsA, + points-pointsA,membership,reventry, depth+1,pointsofar); } } @@ -374,7 +354,7 @@ int lp_split(vqgen *v,codebook *b, return(ret); } -static int _node_eq(encode_aux *v, long a, long b){ +static int _node_eq(encode_aux_nearestmatch *v, long a, long b){ long Aptr0=v->ptr0[a]; long Aptr1=v->ptr1[a]; long Bptr0=v->ptr0[b]; @@ -393,12 +373,13 @@ static int _node_eq(encode_aux *v, long a, long b){ void vqsp_book(vqgen *v, codebook *b, long *quantlist){ long i,j; static_codebook *c=(static_codebook *)b->c; - encode_aux *t; + encode_aux_nearestmatch *t; memset(b,0,sizeof(codebook)); memset(c,0,sizeof(static_codebook)); b->c=c; - t=c->encode_tree=calloc(1,sizeof(encode_aux)); + t=c->nearest_tree=calloc(1,sizeof(encode_aux_nearestmatch)); + c->maptype=2; /* make sure there are no duplicate entries and that every entry has points */ @@ -406,7 +387,7 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){ for(i=0;ientries;){ /* duplicate? if so, eliminate */ for(j=0;jelements,_now(v,i),_now(v,j))==0.){ fprintf(stderr,"found a duplicate entry! removing...\n"); v->entries--; memcpy(_now(v,i),_now(v,v->entries),sizeof(double)*v->elements); @@ -422,13 +403,13 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){ v->assigned=calloc(v->entries,sizeof(long)); for(i=0;ipoints;i++){ double *ppt=_point(v,i); - double firstmetric=_dist(v,_now(v,0),ppt); + double firstmetric=_Ndist(v->elements,_now(v,0),ppt); long firstentry=0; if(!(i&0xff))spinnit("checking... ",v->points-i); for(j=0;jentries;j++){ - double thismetric=_dist(v,_now(v,j),ppt); + double thismetric=_Ndist(v->elements,_now(v,j),ppt); if(thismetricentries*sizeof(long *)); long *pointindex=malloc(v->points*sizeof(long)); + long *membership=malloc(v->points*sizeof(long)); + long *reventry=malloc(v->entries*sizeof(long)); long pointssofar=0; for(i=0;ientries;i++)entryindex[i]=i; @@ -471,12 +454,41 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){ c->dim=v->elements; c->entries=v->entries; c->lengthlist=calloc(c->entries,sizeof(long)); + b->valuelist=v->entrylist; /* temporary; replaced later */ + b->dim=c->dim; + b->entries=c->entries; + + for(i=0;ipoints;i++)membership[i]=-1; + for(i=0;ipoints;i++){ + double *ppt=_point(v,i); + long firstentry=0; + double firstmetric=_Ndist(v->elements,_now(v,0),ppt); + if(!(i&0xff))spinnit("assigning... ",v->points-i); + + for(j=1;jentries;j++){ + if(v->assigned[j]!=-1){ + double thismetric=_Ndist(v->elements,_now(v,j),ppt); + if(thismetric<=firstmetric){ + firstmetric=thismetric; + firstentry=j; + } + } + } + + membership[i]=firstentry; + } + fprintf(stderr,"Leaves added: %d \n", - lp_split(v,b,entryindex,v->entries, - pointindex,v->points,0,&pointssofar)); + lp_split(v->pointlist,v->points, + b,entryindex,v->entries, + pointindex,v->points, + membership,reventry, + 0,&pointssofar)); free(pointindex); + free(membership); + free(reventry); fprintf(stderr,"Paring/rerouting redundant branches... "); @@ -536,14 +548,16 @@ void vqsp_book(vqgen *v, codebook *b, long *quantlist){ { long *probability=malloc(c->entries*sizeof(long)); for(i=0;ientries;i++)probability[i]=1; /* trivial guard */ - b->valuelist=v->entrylist; /* temporary for vqenc_entry; replaced later */ + b->dim=c->dim; /* sigh. A necessary hack */ for(i=0;iaux;i++)t->p[i]*=c->dim; for(i=0;iaux;i++)t->q[i]*=c->dim; for(i=0;ipoints;i++){ - int ret=codebook_entry(b,v->pointlist+i*v->elements); + /* we use the linear matcher regardless becuase the trainer + doesn't convert log to linear */ + int ret=_best(b,v->pointlist+i*v->elements,1); probability[ret]++; if(!(i&0xff))spinnit("counting hits... ",v->points-i); } diff --git a/vq/vqsplit.h b/vq/vqsplit.h index 6c91046..d09265b 100644 --- a/vq/vqsplit.h +++ b/vq/vqsplit.h @@ -12,7 +12,7 @@ ******************************************************************** function: build a VQ codebook decision tree - last mod: $Id: vqsplit.h,v 1.1 2000/01/05 10:15:00 xiphmont Exp $ + last mod: $Id: vqsplit.h,v 1.2 2000/05/08 20:49:51 xiphmont Exp $ ********************************************************************/ @@ -23,6 +23,12 @@ extern void vqsp_book(vqgen *v,codebook *b,long *quantlist); extern int vqenc_entry(codebook *b,double *val); +extern int lp_split(double *pointlist,long totalpoints, + codebook *b, + long *entryindex,long entries, + long *pointindex,long points, + long *membership,long *reventry, + long depth, long *pointsofar); #endif