FFmpeg
dirac_vlc.c
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #include "dirac_vlc.h"
20 
21 enum {
22  /* Next byte contains an exactly aligned start to a new symbol (even bit) */
24  /* Next byte should end the current value on an odd bit */
25  STATE_FOLLOW = 256,
26  /* Byte is completely data and doesn't end nor start a value */
27  STATE_DATA = 512,
28  /* Byte has the current value's sign bit and starts a new value */
29  STATE_SIGN = 768,
30 };
31 
32 /* Exactly 128 bits */
33 typedef struct LUTState {
34  int16_t val0; /* Bits to which to add after applying preshift */
35  int16_t val1;
36  int16_t val2;
37  int16_t val3;
38  int16_t val4;
39  uint8_t val0_bits; /* The size of val0 in bits */
40  int8_t sign; /* Sign of the current value (0 == zero the value) */
41  int8_t num; /* Number of values in this byte */
42  uint8_t val; /* Init value in case current value was terminated */
43  uint16_t state; /* Expected state for the next byte */
44 } LUTState;
45 
47  { +16, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
48  { +17, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
49  { +8, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
50  { +8, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
51  { +18, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
52  { +19, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
53  { +9, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
54  { +9, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
55  { +4, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
56  { +4, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
57  { +4, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
58  { +4, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
59  { +4, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
60  { +4, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
61  { +4, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
62  { +4, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
63  { +20, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
64  { +21, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
65  { +10, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
66  { +10, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
67  { +22, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
68  { +23, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
69  { +11, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
70  { +11, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
71  { +5, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
72  { +5, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
73  { +5, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
74  { +5, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
75  { +5, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
76  { +5, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
77  { +5, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
78  { +5, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
79  { +2, 0, 0, 0, 0, 2, +1, 1, 4, STATE_FOLLOW },
80  { +2, 0, 0, 0, 0, 2, +1, 1, 5, STATE_FOLLOW },
81  { +2, +1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
82  { +2, -1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
83  { +2, 0, 0, 0, 0, 2, +1, 1, 6, STATE_FOLLOW },
84  { +2, 0, 0, 0, 0, 2, +1, 1, 7, STATE_FOLLOW },
85  { +2, +2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
86  { +2, -2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
87  { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_DATA },
88  { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_SIGN },
89  { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_DATA },
90  { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_SIGN },
91  { +2, 0, 0, 0, 0, 2, +1, 3, 2, STATE_FOLLOW },
92  { +2, 0, 0, 0, 0, 2, +1, 3, 3, STATE_FOLLOW },
93  { +2, 0, 0, 0, 0, 2, +1, 4, 1, STATE_DATA },
94  { +2, 0, 0, 0, 0, 2, +1, 5, 0, STATE_START },
95  { +2, 0, 0, 0, 0, 2, -1, 1, 4, STATE_FOLLOW },
96  { +2, 0, 0, 0, 0, 2, -1, 1, 5, STATE_FOLLOW },
97  { +2, +1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
98  { +2, -1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
99  { +2, 0, 0, 0, 0, 2, -1, 1, 6, STATE_FOLLOW },
100  { +2, 0, 0, 0, 0, 2, -1, 1, 7, STATE_FOLLOW },
101  { +2, +2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
102  { +2, -2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
103  { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_DATA },
104  { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_SIGN },
105  { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_DATA },
106  { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_SIGN },
107  { +2, 0, 0, 0, 0, 2, -1, 3, 2, STATE_FOLLOW },
108  { +2, 0, 0, 0, 0, 2, -1, 3, 3, STATE_FOLLOW },
109  { +2, 0, 0, 0, 0, 2, -1, 4, 1, STATE_DATA },
110  { +2, 0, 0, 0, 0, 2, -1, 5, 0, STATE_START },
111  { +24, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
112  { +25, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
113  { +12, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
114  { +12, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
115  { +26, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
116  { +27, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
117  { +13, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
118  { +13, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
119  { +6, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
120  { +6, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
121  { +6, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
122  { +6, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
123  { +6, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
124  { +6, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
125  { +6, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
126  { +6, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
127  { +28, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
128  { +29, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
129  { +14, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
130  { +14, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
131  { +30, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
132  { +31, 0, 0, 0, 0, 5, +1, 0, 0, STATE_FOLLOW },
133  { +15, 0, 0, 0, 0, 4, +1, 1, 0, STATE_START },
134  { +15, 0, 0, 0, 0, 4, -1, 1, 0, STATE_START },
135  { +7, 0, 0, 0, 0, 3, +1, 1, 2, STATE_FOLLOW },
136  { +7, 0, 0, 0, 0, 3, +1, 1, 3, STATE_FOLLOW },
137  { +7, 0, 0, 0, 0, 3, +1, 2, 1, STATE_DATA },
138  { +7, 0, 0, 0, 0, 3, +1, 3, 0, STATE_START },
139  { +7, 0, 0, 0, 0, 3, -1, 1, 2, STATE_FOLLOW },
140  { +7, 0, 0, 0, 0, 3, -1, 1, 3, STATE_FOLLOW },
141  { +7, 0, 0, 0, 0, 3, -1, 2, 1, STATE_DATA },
142  { +7, 0, 0, 0, 0, 3, -1, 3, 0, STATE_START },
143  { +3, 0, 0, 0, 0, 2, +1, 1, 4, STATE_FOLLOW },
144  { +3, 0, 0, 0, 0, 2, +1, 1, 5, STATE_FOLLOW },
145  { +3, +1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
146  { +3, -1, 0, 0, 0, 2, +1, 2, 0, STATE_START },
147  { +3, 0, 0, 0, 0, 2, +1, 1, 6, STATE_FOLLOW },
148  { +3, 0, 0, 0, 0, 2, +1, 1, 7, STATE_FOLLOW },
149  { +3, +2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
150  { +3, -2, 0, 0, 0, 2, +1, 2, 0, STATE_START },
151  { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_DATA },
152  { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_SIGN },
153  { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_DATA },
154  { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_SIGN },
155  { +3, 0, 0, 0, 0, 2, +1, 3, 2, STATE_FOLLOW },
156  { +3, 0, 0, 0, 0, 2, +1, 3, 3, STATE_FOLLOW },
157  { +3, 0, 0, 0, 0, 2, +1, 4, 1, STATE_DATA },
158  { +3, 0, 0, 0, 0, 2, +1, 5, 0, STATE_START },
159  { +3, 0, 0, 0, 0, 2, -1, 1, 4, STATE_FOLLOW },
160  { +3, 0, 0, 0, 0, 2, -1, 1, 5, STATE_FOLLOW },
161  { +3, +1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
162  { +3, -1, 0, 0, 0, 2, -1, 2, 0, STATE_START },
163  { +3, 0, 0, 0, 0, 2, -1, 1, 6, STATE_FOLLOW },
164  { +3, 0, 0, 0, 0, 2, -1, 1, 7, STATE_FOLLOW },
165  { +3, +2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
166  { +3, -2, 0, 0, 0, 2, -1, 2, 0, STATE_START },
167  { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_DATA },
168  { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_SIGN },
169  { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_DATA },
170  { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_SIGN },
171  { +3, 0, 0, 0, 0, 2, -1, 3, 2, STATE_FOLLOW },
172  { +3, 0, 0, 0, 0, 2, -1, 3, 3, STATE_FOLLOW },
173  { +3, 0, 0, 0, 0, 2, -1, 4, 1, STATE_DATA },
174  { +3, 0, 0, 0, 0, 2, -1, 5, 0, STATE_START },
175  { 0, 0, 0, 0, 0, 0, 0, 1, 8, STATE_DATA },
176  { 0, 0, 0, 0, 0, 0, 0, 1, 8, STATE_SIGN },
177  { 0, 0, 0, 0, 0, 0, 0, 1, 9, STATE_DATA },
178  { 0, 0, 0, 0, 0, 0, 0, 1, 9, STATE_SIGN },
179  { 0, +3, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
180  { 0, +3, 0, 0, 0, 0, 0, 3, 0, STATE_START },
181  { 0, -3, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
182  { 0, -3, 0, 0, 0, 0, 0, 3, 0, STATE_START },
183  { 0, 0, 0, 0, 0, 0, 0, 1, 10, STATE_DATA },
184  { 0, 0, 0, 0, 0, 0, 0, 1, 10, STATE_SIGN },
185  { 0, 0, 0, 0, 0, 0, 0, 1, 11, STATE_DATA },
186  { 0, 0, 0, 0, 0, 0, 0, 1, 11, STATE_SIGN },
187  { 0, +4, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
188  { 0, +4, 0, 0, 0, 0, 0, 3, 0, STATE_START },
189  { 0, -4, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
190  { 0, -4, 0, 0, 0, 0, 0, 3, 0, STATE_START },
191  { 0, +1, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
192  { 0, +1, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
193  { 0, +1, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
194  { 0, +1, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
195  { 0, +1, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
196  { 0, +1, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
197  { 0, +1, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
198  { 0, +1, 0, 0, 0, 0, 0, 5, 0, STATE_START },
199  { 0, -1, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
200  { 0, -1, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
201  { 0, -1, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
202  { 0, -1, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
203  { 0, -1, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
204  { 0, -1, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
205  { 0, -1, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
206  { 0, -1, 0, 0, 0, 0, 0, 5, 0, STATE_START },
207  { 0, 0, 0, 0, 0, 0, 0, 1, 12, STATE_DATA },
208  { 0, 0, 0, 0, 0, 0, 0, 1, 12, STATE_SIGN },
209  { 0, 0, 0, 0, 0, 0, 0, 1, 13, STATE_DATA },
210  { 0, 0, 0, 0, 0, 0, 0, 1, 13, STATE_SIGN },
211  { 0, +5, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
212  { 0, +5, 0, 0, 0, 0, 0, 3, 0, STATE_START },
213  { 0, -5, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
214  { 0, -5, 0, 0, 0, 0, 0, 3, 0, STATE_START },
215  { 0, 0, 0, 0, 0, 0, 0, 1, 14, STATE_DATA },
216  { 0, 0, 0, 0, 0, 0, 0, 1, 14, STATE_SIGN },
217  { 0, 0, 0, 0, 0, 0, 0, 1, 15, STATE_DATA },
218  { 0, 0, 0, 0, 0, 0, 0, 1, 15, STATE_SIGN },
219  { 0, +6, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
220  { 0, +6, 0, 0, 0, 0, 0, 3, 0, STATE_START },
221  { 0, -6, 0, 0, 0, 0, 0, 2, 1, STATE_DATA },
222  { 0, -6, 0, 0, 0, 0, 0, 3, 0, STATE_START },
223  { 0, +2, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
224  { 0, +2, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
225  { 0, +2, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
226  { 0, +2, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
227  { 0, +2, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
228  { 0, +2, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
229  { 0, +2, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
230  { 0, +2, 0, 0, 0, 0, 0, 5, 0, STATE_START },
231  { 0, -2, 0, 0, 0, 0, 0, 2, 2, STATE_DATA },
232  { 0, -2, 0, 0, 0, 0, 0, 2, 2, STATE_SIGN },
233  { 0, -2, 0, 0, 0, 0, 0, 2, 3, STATE_DATA },
234  { 0, -2, 0, 0, 0, 0, 0, 2, 3, STATE_SIGN },
235  { 0, -2, 0, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
236  { 0, -2, 0, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
237  { 0, -2, 0, 0, 0, 0, 0, 4, 1, STATE_DATA },
238  { 0, -2, 0, 0, 0, 0, 0, 5, 0, STATE_START },
239  { 0, 0, 0, 0, 0, 0, 0, 2, 8, STATE_FOLLOW },
240  { 0, 0, 0, 0, 0, 0, 0, 2, 9, STATE_FOLLOW },
241  { 0, 0, +3, 0, 0, 0, 0, 3, 0, STATE_START },
242  { 0, 0, -3, 0, 0, 0, 0, 3, 0, STATE_START },
243  { 0, 0, 0, 0, 0, 0, 0, 2, 10, STATE_FOLLOW },
244  { 0, 0, 0, 0, 0, 0, 0, 2, 11, STATE_FOLLOW },
245  { 0, 0, +4, 0, 0, 0, 0, 3, 0, STATE_START },
246  { 0, 0, -4, 0, 0, 0, 0, 3, 0, STATE_START },
247  { 0, 0, +1, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
248  { 0, 0, +1, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
249  { 0, 0, +1, 0, 0, 0, 0, 4, 1, STATE_DATA },
250  { 0, 0, +1, 0, 0, 0, 0, 5, 0, STATE_START },
251  { 0, 0, -1, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
252  { 0, 0, -1, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
253  { 0, 0, -1, 0, 0, 0, 0, 4, 1, STATE_DATA },
254  { 0, 0, -1, 0, 0, 0, 0, 5, 0, STATE_START },
255  { 0, 0, 0, 0, 0, 0, 0, 2, 12, STATE_FOLLOW },
256  { 0, 0, 0, 0, 0, 0, 0, 2, 13, STATE_FOLLOW },
257  { 0, 0, +5, 0, 0, 0, 0, 3, 0, STATE_START },
258  { 0, 0, -5, 0, 0, 0, 0, 3, 0, STATE_START },
259  { 0, 0, 0, 0, 0, 0, 0, 2, 14, STATE_FOLLOW },
260  { 0, 0, 0, 0, 0, 0, 0, 2, 15, STATE_FOLLOW },
261  { 0, 0, +6, 0, 0, 0, 0, 3, 0, STATE_START },
262  { 0, 0, -6, 0, 0, 0, 0, 3, 0, STATE_START },
263  { 0, 0, +2, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
264  { 0, 0, +2, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
265  { 0, 0, +2, 0, 0, 0, 0, 4, 1, STATE_DATA },
266  { 0, 0, +2, 0, 0, 0, 0, 5, 0, STATE_START },
267  { 0, 0, -2, 0, 0, 0, 0, 3, 2, STATE_FOLLOW },
268  { 0, 0, -2, 0, 0, 0, 0, 3, 3, STATE_FOLLOW },
269  { 0, 0, -2, 0, 0, 0, 0, 4, 1, STATE_DATA },
270  { 0, 0, -2, 0, 0, 0, 0, 5, 0, STATE_START },
271  { 0, 0, 0, 0, 0, 0, 0, 3, 4, STATE_DATA },
272  { 0, 0, 0, 0, 0, 0, 0, 3, 4, STATE_SIGN },
273  { 0, 0, 0, 0, 0, 0, 0, 3, 5, STATE_DATA },
274  { 0, 0, 0, 0, 0, 0, 0, 3, 5, STATE_SIGN },
275  { 0, 0, 0, +1, 0, 0, 0, 4, 1, STATE_DATA },
276  { 0, 0, 0, +1, 0, 0, 0, 5, 0, STATE_START },
277  { 0, 0, 0, -1, 0, 0, 0, 4, 1, STATE_DATA },
278  { 0, 0, 0, -1, 0, 0, 0, 5, 0, STATE_START },
279  { 0, 0, 0, 0, 0, 0, 0, 3, 6, STATE_DATA },
280  { 0, 0, 0, 0, 0, 0, 0, 3, 6, STATE_SIGN },
281  { 0, 0, 0, 0, 0, 0, 0, 3, 7, STATE_DATA },
282  { 0, 0, 0, 0, 0, 0, 0, 3, 7, STATE_SIGN },
283  { 0, 0, 0, +2, 0, 0, 0, 4, 1, STATE_DATA },
284  { 0, 0, 0, +2, 0, 0, 0, 5, 0, STATE_START },
285  { 0, 0, 0, -2, 0, 0, 0, 4, 1, STATE_DATA },
286  { 0, 0, 0, -2, 0, 0, 0, 5, 0, STATE_START },
287  { 0, 0, 0, 0, 0, 0, 0, 4, 4, STATE_FOLLOW },
288  { 0, 0, 0, 0, 0, 0, 0, 4, 5, STATE_FOLLOW },
289  { 0, 0, 0, 0, +1, 0, 0, 5, 0, STATE_START },
290  { 0, 0, 0, 0, -1, 0, 0, 5, 0, STATE_START },
291  { 0, 0, 0, 0, 0, 0, 0, 4, 6, STATE_FOLLOW },
292  { 0, 0, 0, 0, 0, 0, 0, 4, 7, STATE_FOLLOW },
293  { 0, 0, 0, 0, +2, 0, 0, 5, 0, STATE_START },
294  { 0, 0, 0, 0, -2, 0, 0, 5, 0, STATE_START },
295  { 0, 0, 0, 0, 0, 0, 0, 5, 2, STATE_DATA },
296  { 0, 0, 0, 0, 0, 0, 0, 5, 2, STATE_SIGN },
297  { 0, 0, 0, 0, 0, 0, 0, 5, 3, STATE_DATA },
298  { 0, 0, 0, 0, 0, 0, 0, 5, 3, STATE_SIGN },
299  { 0, 0, 0, 0, 0, 0, 0, 6, 2, STATE_FOLLOW },
300  { 0, 0, 0, 0, 0, 0, 0, 6, 3, STATE_FOLLOW },
301  { 0, 0, 0, 0, 0, 0, 0, 7, 1, STATE_DATA },
302  { 0, 0, 0, 0, 0, 0, 0, 8, 0, STATE_START },
303  { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
304  { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
305  { 0, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
306  { 0, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
307  { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
308  { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
309  { +1, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
310  { +1, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
311  { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
312  { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
313  { 0, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
314  { 0, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
315  { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
316  { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
317  { 0, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
318  { 0, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
319  { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
320  { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
321  { +2, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
322  { +2, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
323  { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
324  { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
325  { +3, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
326  { +3, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
327  { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
328  { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
329  { +1, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
330  { +1, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
331  { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
332  { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
333  { +1, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
334  { +1, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
335  { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_FOLLOW },
336  { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_FOLLOW },
337  { 0, +1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
338  { 0, -1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
339  { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_FOLLOW },
340  { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_FOLLOW },
341  { 0, +2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
342  { 0, -2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
343  { 0, 0, 0, 0, 0, 1, +1, 2, 2, STATE_DATA },
344  { 0, 0, 0, 0, 0, 1, +1, 2, 2, STATE_SIGN },
345  { 0, 0, 0, 0, 0, 1, +1, 2, 3, STATE_DATA },
346  { 0, 0, 0, 0, 0, 1, +1, 2, 3, STATE_SIGN },
347  { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_FOLLOW },
348  { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_FOLLOW },
349  { 0, 0, 0, 0, 0, 1, +1, 4, 1, STATE_DATA },
350  { 0, 0, 0, 0, 0, 1, +1, 5, 0, STATE_START },
351  { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_FOLLOW },
352  { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_FOLLOW },
353  { 0, +1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
354  { 0, -1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
355  { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_FOLLOW },
356  { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_FOLLOW },
357  { 0, +2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
358  { 0, -2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
359  { 0, 0, 0, 0, 0, 1, -1, 2, 2, STATE_DATA },
360  { 0, 0, 0, 0, 0, 1, -1, 2, 2, STATE_SIGN },
361  { 0, 0, 0, 0, 0, 1, -1, 2, 3, STATE_DATA },
362  { 0, 0, 0, 0, 0, 1, -1, 2, 3, STATE_SIGN },
363  { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_FOLLOW },
364  { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_FOLLOW },
365  { 0, 0, 0, 0, 0, 1, -1, 4, 1, STATE_DATA },
366  { 0, 0, 0, 0, 0, 1, -1, 5, 0, STATE_START },
367  { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
368  { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
369  { +4, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
370  { +4, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
371  { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
372  { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
373  { +5, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
374  { +5, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
375  { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
376  { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
377  { +2, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
378  { +2, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
379  { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
380  { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
381  { +2, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
382  { +2, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
383  { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
384  { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
385  { +6, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
386  { +6, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
387  { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
388  { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_FOLLOW },
389  { +7, 0, 0, 0, 0, 3, +1, 1, 0, STATE_START },
390  { +7, 0, 0, 0, 0, 3, -1, 1, 0, STATE_START },
391  { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_FOLLOW },
392  { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_FOLLOW },
393  { +3, 0, 0, 0, 0, 2, +1, 2, 1, STATE_DATA },
394  { +3, 0, 0, 0, 0, 2, +1, 3, 0, STATE_START },
395  { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_FOLLOW },
396  { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_FOLLOW },
397  { +3, 0, 0, 0, 0, 2, -1, 2, 1, STATE_DATA },
398  { +3, 0, 0, 0, 0, 2, -1, 3, 0, STATE_START },
399  { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_FOLLOW },
400  { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_FOLLOW },
401  { +1, +1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
402  { +1, -1, 0, 0, 0, 1, +1, 2, 0, STATE_START },
403  { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_FOLLOW },
404  { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_FOLLOW },
405  { +1, +2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
406  { +1, -2, 0, 0, 0, 1, +1, 2, 0, STATE_START },
407  { +1, 0, 0, 0, 0, 1, +1, 2, 2, STATE_DATA },
408  { +1, 0, 0, 0, 0, 1, +1, 2, 2, STATE_SIGN },
409  { +1, 0, 0, 0, 0, 1, +1, 2, 3, STATE_DATA },
410  { +1, 0, 0, 0, 0, 1, +1, 2, 3, STATE_SIGN },
411  { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_FOLLOW },
412  { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_FOLLOW },
413  { +1, 0, 0, 0, 0, 1, +1, 4, 1, STATE_DATA },
414  { +1, 0, 0, 0, 0, 1, +1, 5, 0, STATE_START },
415  { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_FOLLOW },
416  { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_FOLLOW },
417  { +1, +1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
418  { +1, -1, 0, 0, 0, 1, -1, 2, 0, STATE_START },
419  { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_FOLLOW },
420  { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_FOLLOW },
421  { +1, +2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
422  { +1, -2, 0, 0, 0, 1, -1, 2, 0, STATE_START },
423  { +1, 0, 0, 0, 0, 1, -1, 2, 2, STATE_DATA },
424  { +1, 0, 0, 0, 0, 1, -1, 2, 2, STATE_SIGN },
425  { +1, 0, 0, 0, 0, 1, -1, 2, 3, STATE_DATA },
426  { +1, 0, 0, 0, 0, 1, -1, 2, 3, STATE_SIGN },
427  { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_FOLLOW },
428  { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_FOLLOW },
429  { +1, 0, 0, 0, 0, 1, -1, 4, 1, STATE_DATA },
430  { +1, 0, 0, 0, 0, 1, -1, 5, 0, STATE_START },
431  { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_FOLLOW },
432  { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_FOLLOW },
433  { 0, +3, 0, 0, 0, 0, +1, 2, 0, STATE_START },
434  { 0, -3, 0, 0, 0, 0, +1, 2, 0, STATE_START },
435  { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_FOLLOW },
436  { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_FOLLOW },
437  { 0, +4, 0, 0, 0, 0, +1, 2, 0, STATE_START },
438  { 0, -4, 0, 0, 0, 0, +1, 2, 0, STATE_START },
439  { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
440  { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
441  { 0, +1, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
442  { 0, +1, 0, 0, 0, 0, +1, 4, 0, STATE_START },
443  { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
444  { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
445  { 0, -1, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
446  { 0, -1, 0, 0, 0, 0, +1, 4, 0, STATE_START },
447  { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_FOLLOW },
448  { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_FOLLOW },
449  { 0, +5, 0, 0, 0, 0, +1, 2, 0, STATE_START },
450  { 0, -5, 0, 0, 0, 0, +1, 2, 0, STATE_START },
451  { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_FOLLOW },
452  { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_FOLLOW },
453  { 0, +6, 0, 0, 0, 0, +1, 2, 0, STATE_START },
454  { 0, -6, 0, 0, 0, 0, +1, 2, 0, STATE_START },
455  { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
456  { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
457  { 0, +2, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
458  { 0, +2, 0, 0, 0, 0, +1, 4, 0, STATE_START },
459  { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_FOLLOW },
460  { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_FOLLOW },
461  { 0, -2, 0, 0, 0, 0, +1, 3, 1, STATE_DATA },
462  { 0, -2, 0, 0, 0, 0, +1, 4, 0, STATE_START },
463  { 0, 0, 0, 0, 0, 0, +1, 2, 4, STATE_DATA },
464  { 0, 0, 0, 0, 0, 0, +1, 2, 4, STATE_SIGN },
465  { 0, 0, 0, 0, 0, 0, +1, 2, 5, STATE_DATA },
466  { 0, 0, 0, 0, 0, 0, +1, 2, 5, STATE_SIGN },
467  { 0, 0, +1, 0, 0, 0, +1, 3, 1, STATE_DATA },
468  { 0, 0, +1, 0, 0, 0, +1, 4, 0, STATE_START },
469  { 0, 0, -1, 0, 0, 0, +1, 3, 1, STATE_DATA },
470  { 0, 0, -1, 0, 0, 0, +1, 4, 0, STATE_START },
471  { 0, 0, 0, 0, 0, 0, +1, 2, 6, STATE_DATA },
472  { 0, 0, 0, 0, 0, 0, +1, 2, 6, STATE_SIGN },
473  { 0, 0, 0, 0, 0, 0, +1, 2, 7, STATE_DATA },
474  { 0, 0, 0, 0, 0, 0, +1, 2, 7, STATE_SIGN },
475  { 0, 0, +2, 0, 0, 0, +1, 3, 1, STATE_DATA },
476  { 0, 0, +2, 0, 0, 0, +1, 4, 0, STATE_START },
477  { 0, 0, -2, 0, 0, 0, +1, 3, 1, STATE_DATA },
478  { 0, 0, -2, 0, 0, 0, +1, 4, 0, STATE_START },
479  { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_FOLLOW },
480  { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_FOLLOW },
481  { 0, 0, 0, +1, 0, 0, +1, 4, 0, STATE_START },
482  { 0, 0, 0, -1, 0, 0, +1, 4, 0, STATE_START },
483  { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_FOLLOW },
484  { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_FOLLOW },
485  { 0, 0, 0, +2, 0, 0, +1, 4, 0, STATE_START },
486  { 0, 0, 0, -2, 0, 0, +1, 4, 0, STATE_START },
487  { 0, 0, 0, 0, 0, 0, +1, 4, 2, STATE_DATA },
488  { 0, 0, 0, 0, 0, 0, +1, 4, 2, STATE_SIGN },
489  { 0, 0, 0, 0, 0, 0, +1, 4, 3, STATE_DATA },
490  { 0, 0, 0, 0, 0, 0, +1, 4, 3, STATE_SIGN },
491  { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_FOLLOW },
492  { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_FOLLOW },
493  { 0, 0, 0, 0, 0, 0, +1, 6, 1, STATE_DATA },
494  { 0, 0, 0, 0, 0, 0, +1, 7, 0, STATE_START },
495  { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_FOLLOW },
496  { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_FOLLOW },
497  { 0, +3, 0, 0, 0, 0, -1, 2, 0, STATE_START },
498  { 0, -3, 0, 0, 0, 0, -1, 2, 0, STATE_START },
499  { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_FOLLOW },
500  { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_FOLLOW },
501  { 0, +4, 0, 0, 0, 0, -1, 2, 0, STATE_START },
502  { 0, -4, 0, 0, 0, 0, -1, 2, 0, STATE_START },
503  { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
504  { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
505  { 0, +1, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
506  { 0, +1, 0, 0, 0, 0, -1, 4, 0, STATE_START },
507  { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
508  { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
509  { 0, -1, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
510  { 0, -1, 0, 0, 0, 0, -1, 4, 0, STATE_START },
511  { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_FOLLOW },
512  { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_FOLLOW },
513  { 0, +5, 0, 0, 0, 0, -1, 2, 0, STATE_START },
514  { 0, -5, 0, 0, 0, 0, -1, 2, 0, STATE_START },
515  { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_FOLLOW },
516  { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_FOLLOW },
517  { 0, +6, 0, 0, 0, 0, -1, 2, 0, STATE_START },
518  { 0, -6, 0, 0, 0, 0, -1, 2, 0, STATE_START },
519  { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
520  { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
521  { 0, +2, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
522  { 0, +2, 0, 0, 0, 0, -1, 4, 0, STATE_START },
523  { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_FOLLOW },
524  { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_FOLLOW },
525  { 0, -2, 0, 0, 0, 0, -1, 3, 1, STATE_DATA },
526  { 0, -2, 0, 0, 0, 0, -1, 4, 0, STATE_START },
527  { 0, 0, 0, 0, 0, 0, -1, 2, 4, STATE_DATA },
528  { 0, 0, 0, 0, 0, 0, -1, 2, 4, STATE_SIGN },
529  { 0, 0, 0, 0, 0, 0, -1, 2, 5, STATE_DATA },
530  { 0, 0, 0, 0, 0, 0, -1, 2, 5, STATE_SIGN },
531  { 0, 0, +1, 0, 0, 0, -1, 3, 1, STATE_DATA },
532  { 0, 0, +1, 0, 0, 0, -1, 4, 0, STATE_START },
533  { 0, 0, -1, 0, 0, 0, -1, 3, 1, STATE_DATA },
534  { 0, 0, -1, 0, 0, 0, -1, 4, 0, STATE_START },
535  { 0, 0, 0, 0, 0, 0, -1, 2, 6, STATE_DATA },
536  { 0, 0, 0, 0, 0, 0, -1, 2, 6, STATE_SIGN },
537  { 0, 0, 0, 0, 0, 0, -1, 2, 7, STATE_DATA },
538  { 0, 0, 0, 0, 0, 0, -1, 2, 7, STATE_SIGN },
539  { 0, 0, +2, 0, 0, 0, -1, 3, 1, STATE_DATA },
540  { 0, 0, +2, 0, 0, 0, -1, 4, 0, STATE_START },
541  { 0, 0, -2, 0, 0, 0, -1, 3, 1, STATE_DATA },
542  { 0, 0, -2, 0, 0, 0, -1, 4, 0, STATE_START },
543  { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_FOLLOW },
544  { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_FOLLOW },
545  { 0, 0, 0, +1, 0, 0, -1, 4, 0, STATE_START },
546  { 0, 0, 0, -1, 0, 0, -1, 4, 0, STATE_START },
547  { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_FOLLOW },
548  { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_FOLLOW },
549  { 0, 0, 0, +2, 0, 0, -1, 4, 0, STATE_START },
550  { 0, 0, 0, -2, 0, 0, -1, 4, 0, STATE_START },
551  { 0, 0, 0, 0, 0, 0, -1, 4, 2, STATE_DATA },
552  { 0, 0, 0, 0, 0, 0, -1, 4, 2, STATE_SIGN },
553  { 0, 0, 0, 0, 0, 0, -1, 4, 3, STATE_DATA },
554  { 0, 0, 0, 0, 0, 0, -1, 4, 3, STATE_SIGN },
555  { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_FOLLOW },
556  { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_FOLLOW },
557  { 0, 0, 0, 0, 0, 0, -1, 6, 1, STATE_DATA },
558  { 0, 0, 0, 0, 0, 0, -1, 7, 0, STATE_START },
559  { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
560  { 0, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
561  { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
562  { +1, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
563  { 0, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
564  { 0, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
565  { 0, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
566  { 0, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
567  { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
568  { +2, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
569  { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
570  { +3, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
571  { +1, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
572  { +1, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
573  { +1, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
574  { +1, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
575  { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
576  { 0, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
577  { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
578  { 0, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
579  { 0, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
580  { 0, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
581  { 0, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
582  { 0, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
583  { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
584  { 0, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
585  { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
586  { 0, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
587  { 0, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
588  { 0, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
589  { 0, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
590  { 0, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
591  { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
592  { +4, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
593  { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
594  { +5, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
595  { +2, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
596  { +2, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
597  { +2, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
598  { +2, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
599  { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
600  { +6, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
601  { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
602  { +7, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
603  { +3, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
604  { +3, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
605  { +3, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
606  { +3, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
607  { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
608  { +1, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
609  { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
610  { +1, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
611  { +1, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
612  { +1, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
613  { +1, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
614  { +1, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
615  { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
616  { +1, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
617  { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
618  { +1, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
619  { +1, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
620  { +1, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
621  { +1, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
622  { +1, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
623  { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_DATA },
624  { 0, 0, 0, 0, 0, 1, +1, 1, 4, STATE_SIGN },
625  { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_DATA },
626  { 0, 0, 0, 0, 0, 1, +1, 1, 5, STATE_SIGN },
627  { 0, +1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
628  { 0, +1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
629  { 0, -1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
630  { 0, -1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
631  { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_DATA },
632  { 0, 0, 0, 0, 0, 1, +1, 1, 6, STATE_SIGN },
633  { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_DATA },
634  { 0, 0, 0, 0, 0, 1, +1, 1, 7, STATE_SIGN },
635  { 0, +2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
636  { 0, +2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
637  { 0, -2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
638  { 0, -2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
639  { 0, 0, 0, 0, 0, 1, +1, 2, 4, STATE_FOLLOW },
640  { 0, 0, 0, 0, 0, 1, +1, 2, 5, STATE_FOLLOW },
641  { 0, 0, +1, 0, 0, 1, +1, 3, 0, STATE_START },
642  { 0, 0, -1, 0, 0, 1, +1, 3, 0, STATE_START },
643  { 0, 0, 0, 0, 0, 1, +1, 2, 6, STATE_FOLLOW },
644  { 0, 0, 0, 0, 0, 1, +1, 2, 7, STATE_FOLLOW },
645  { 0, 0, +2, 0, 0, 1, +1, 3, 0, STATE_START },
646  { 0, 0, -2, 0, 0, 1, +1, 3, 0, STATE_START },
647  { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_DATA },
648  { 0, 0, 0, 0, 0, 1, +1, 3, 2, STATE_SIGN },
649  { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_DATA },
650  { 0, 0, 0, 0, 0, 1, +1, 3, 3, STATE_SIGN },
651  { 0, 0, 0, 0, 0, 1, +1, 4, 2, STATE_FOLLOW },
652  { 0, 0, 0, 0, 0, 1, +1, 4, 3, STATE_FOLLOW },
653  { 0, 0, 0, 0, 0, 1, +1, 5, 1, STATE_DATA },
654  { 0, 0, 0, 0, 0, 1, +1, 6, 0, STATE_START },
655  { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_DATA },
656  { 0, 0, 0, 0, 0, 1, -1, 1, 4, STATE_SIGN },
657  { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_DATA },
658  { 0, 0, 0, 0, 0, 1, -1, 1, 5, STATE_SIGN },
659  { 0, +1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
660  { 0, +1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
661  { 0, -1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
662  { 0, -1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
663  { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_DATA },
664  { 0, 0, 0, 0, 0, 1, -1, 1, 6, STATE_SIGN },
665  { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_DATA },
666  { 0, 0, 0, 0, 0, 1, -1, 1, 7, STATE_SIGN },
667  { 0, +2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
668  { 0, +2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
669  { 0, -2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
670  { 0, -2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
671  { 0, 0, 0, 0, 0, 1, -1, 2, 4, STATE_FOLLOW },
672  { 0, 0, 0, 0, 0, 1, -1, 2, 5, STATE_FOLLOW },
673  { 0, 0, +1, 0, 0, 1, -1, 3, 0, STATE_START },
674  { 0, 0, -1, 0, 0, 1, -1, 3, 0, STATE_START },
675  { 0, 0, 0, 0, 0, 1, -1, 2, 6, STATE_FOLLOW },
676  { 0, 0, 0, 0, 0, 1, -1, 2, 7, STATE_FOLLOW },
677  { 0, 0, +2, 0, 0, 1, -1, 3, 0, STATE_START },
678  { 0, 0, -2, 0, 0, 1, -1, 3, 0, STATE_START },
679  { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_DATA },
680  { 0, 0, 0, 0, 0, 1, -1, 3, 2, STATE_SIGN },
681  { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_DATA },
682  { 0, 0, 0, 0, 0, 1, -1, 3, 3, STATE_SIGN },
683  { 0, 0, 0, 0, 0, 1, -1, 4, 2, STATE_FOLLOW },
684  { 0, 0, 0, 0, 0, 1, -1, 4, 3, STATE_FOLLOW },
685  { 0, 0, 0, 0, 0, 1, -1, 5, 1, STATE_DATA },
686  { 0, 0, 0, 0, 0, 1, -1, 6, 0, STATE_START },
687  { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
688  { +8, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
689  { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
690  { +9, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
691  { +4, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
692  { +4, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
693  { +4, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
694  { +4, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
695  { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
696  { +10, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
697  { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
698  { +11, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
699  { +5, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
700  { +5, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
701  { +5, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
702  { +5, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
703  { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
704  { +2, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
705  { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
706  { +2, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
707  { +2, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
708  { +2, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
709  { +2, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
710  { +2, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
711  { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
712  { +2, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
713  { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
714  { +2, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
715  { +2, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
716  { +2, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
717  { +2, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
718  { +2, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
719  { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
720  { +12, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
721  { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
722  { +13, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
723  { +6, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
724  { +6, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
725  { +6, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
726  { +6, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
727  { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
728  { +14, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
729  { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_DATA },
730  { +15, 0, 0, 0, 0, 4, +1, 0, 0, STATE_SIGN },
731  { +7, 0, 0, 0, 0, 3, +1, 1, 1, STATE_DATA },
732  { +7, 0, 0, 0, 0, 3, +1, 2, 0, STATE_START },
733  { +7, 0, 0, 0, 0, 3, -1, 1, 1, STATE_DATA },
734  { +7, 0, 0, 0, 0, 3, -1, 2, 0, STATE_START },
735  { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_DATA },
736  { +3, 0, 0, 0, 0, 2, +1, 1, 2, STATE_SIGN },
737  { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_DATA },
738  { +3, 0, 0, 0, 0, 2, +1, 1, 3, STATE_SIGN },
739  { +3, 0, 0, 0, 0, 2, +1, 2, 2, STATE_FOLLOW },
740  { +3, 0, 0, 0, 0, 2, +1, 2, 3, STATE_FOLLOW },
741  { +3, 0, 0, 0, 0, 2, +1, 3, 1, STATE_DATA },
742  { +3, 0, 0, 0, 0, 2, +1, 4, 0, STATE_START },
743  { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_DATA },
744  { +3, 0, 0, 0, 0, 2, -1, 1, 2, STATE_SIGN },
745  { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_DATA },
746  { +3, 0, 0, 0, 0, 2, -1, 1, 3, STATE_SIGN },
747  { +3, 0, 0, 0, 0, 2, -1, 2, 2, STATE_FOLLOW },
748  { +3, 0, 0, 0, 0, 2, -1, 2, 3, STATE_FOLLOW },
749  { +3, 0, 0, 0, 0, 2, -1, 3, 1, STATE_DATA },
750  { +3, 0, 0, 0, 0, 2, -1, 4, 0, STATE_START },
751  { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_DATA },
752  { +1, 0, 0, 0, 0, 1, +1, 1, 4, STATE_SIGN },
753  { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_DATA },
754  { +1, 0, 0, 0, 0, 1, +1, 1, 5, STATE_SIGN },
755  { +1, +1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
756  { +1, +1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
757  { +1, -1, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
758  { +1, -1, 0, 0, 0, 1, +1, 3, 0, STATE_START },
759  { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_DATA },
760  { +1, 0, 0, 0, 0, 1, +1, 1, 6, STATE_SIGN },
761  { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_DATA },
762  { +1, 0, 0, 0, 0, 1, +1, 1, 7, STATE_SIGN },
763  { +1, +2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
764  { +1, +2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
765  { +1, -2, 0, 0, 0, 1, +1, 2, 1, STATE_DATA },
766  { +1, -2, 0, 0, 0, 1, +1, 3, 0, STATE_START },
767  { +1, 0, 0, 0, 0, 1, +1, 2, 4, STATE_FOLLOW },
768  { +1, 0, 0, 0, 0, 1, +1, 2, 5, STATE_FOLLOW },
769  { +1, 0, +1, 0, 0, 1, +1, 3, 0, STATE_START },
770  { +1, 0, -1, 0, 0, 1, +1, 3, 0, STATE_START },
771  { +1, 0, 0, 0, 0, 1, +1, 2, 6, STATE_FOLLOW },
772  { +1, 0, 0, 0, 0, 1, +1, 2, 7, STATE_FOLLOW },
773  { +1, 0, +2, 0, 0, 1, +1, 3, 0, STATE_START },
774  { +1, 0, -2, 0, 0, 1, +1, 3, 0, STATE_START },
775  { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_DATA },
776  { +1, 0, 0, 0, 0, 1, +1, 3, 2, STATE_SIGN },
777  { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_DATA },
778  { +1, 0, 0, 0, 0, 1, +1, 3, 3, STATE_SIGN },
779  { +1, 0, 0, 0, 0, 1, +1, 4, 2, STATE_FOLLOW },
780  { +1, 0, 0, 0, 0, 1, +1, 4, 3, STATE_FOLLOW },
781  { +1, 0, 0, 0, 0, 1, +1, 5, 1, STATE_DATA },
782  { +1, 0, 0, 0, 0, 1, +1, 6, 0, STATE_START },
783  { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_DATA },
784  { +1, 0, 0, 0, 0, 1, -1, 1, 4, STATE_SIGN },
785  { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_DATA },
786  { +1, 0, 0, 0, 0, 1, -1, 1, 5, STATE_SIGN },
787  { +1, +1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
788  { +1, +1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
789  { +1, -1, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
790  { +1, -1, 0, 0, 0, 1, -1, 3, 0, STATE_START },
791  { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_DATA },
792  { +1, 0, 0, 0, 0, 1, -1, 1, 6, STATE_SIGN },
793  { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_DATA },
794  { +1, 0, 0, 0, 0, 1, -1, 1, 7, STATE_SIGN },
795  { +1, +2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
796  { +1, +2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
797  { +1, -2, 0, 0, 0, 1, -1, 2, 1, STATE_DATA },
798  { +1, -2, 0, 0, 0, 1, -1, 3, 0, STATE_START },
799  { +1, 0, 0, 0, 0, 1, -1, 2, 4, STATE_FOLLOW },
800  { +1, 0, 0, 0, 0, 1, -1, 2, 5, STATE_FOLLOW },
801  { +1, 0, +1, 0, 0, 1, -1, 3, 0, STATE_START },
802  { +1, 0, -1, 0, 0, 1, -1, 3, 0, STATE_START },
803  { +1, 0, 0, 0, 0, 1, -1, 2, 6, STATE_FOLLOW },
804  { +1, 0, 0, 0, 0, 1, -1, 2, 7, STATE_FOLLOW },
805  { +1, 0, +2, 0, 0, 1, -1, 3, 0, STATE_START },
806  { +1, 0, -2, 0, 0, 1, -1, 3, 0, STATE_START },
807  { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_DATA },
808  { +1, 0, 0, 0, 0, 1, -1, 3, 2, STATE_SIGN },
809  { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_DATA },
810  { +1, 0, 0, 0, 0, 1, -1, 3, 3, STATE_SIGN },
811  { +1, 0, 0, 0, 0, 1, -1, 4, 2, STATE_FOLLOW },
812  { +1, 0, 0, 0, 0, 1, -1, 4, 3, STATE_FOLLOW },
813  { +1, 0, 0, 0, 0, 1, -1, 5, 1, STATE_DATA },
814  { +1, 0, 0, 0, 0, 1, -1, 6, 0, STATE_START },
815  { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_DATA },
816  { 0, 0, 0, 0, 0, 0, +1, 1, 8, STATE_SIGN },
817  { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_DATA },
818  { 0, 0, 0, 0, 0, 0, +1, 1, 9, STATE_SIGN },
819  { 0, +3, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
820  { 0, +3, 0, 0, 0, 0, +1, 3, 0, STATE_START },
821  { 0, -3, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
822  { 0, -3, 0, 0, 0, 0, +1, 3, 0, STATE_START },
823  { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_DATA },
824  { 0, 0, 0, 0, 0, 0, +1, 1, 10, STATE_SIGN },
825  { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_DATA },
826  { 0, 0, 0, 0, 0, 0, +1, 1, 11, STATE_SIGN },
827  { 0, +4, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
828  { 0, +4, 0, 0, 0, 0, +1, 3, 0, STATE_START },
829  { 0, -4, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
830  { 0, -4, 0, 0, 0, 0, +1, 3, 0, STATE_START },
831  { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
832  { 0, +1, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
833  { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
834  { 0, +1, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
835  { 0, +1, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
836  { 0, +1, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
837  { 0, +1, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
838  { 0, +1, 0, 0, 0, 0, +1, 5, 0, STATE_START },
839  { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
840  { 0, -1, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
841  { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
842  { 0, -1, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
843  { 0, -1, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
844  { 0, -1, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
845  { 0, -1, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
846  { 0, -1, 0, 0, 0, 0, +1, 5, 0, STATE_START },
847  { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_DATA },
848  { 0, 0, 0, 0, 0, 0, +1, 1, 12, STATE_SIGN },
849  { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_DATA },
850  { 0, 0, 0, 0, 0, 0, +1, 1, 13, STATE_SIGN },
851  { 0, +5, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
852  { 0, +5, 0, 0, 0, 0, +1, 3, 0, STATE_START },
853  { 0, -5, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
854  { 0, -5, 0, 0, 0, 0, +1, 3, 0, STATE_START },
855  { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_DATA },
856  { 0, 0, 0, 0, 0, 0, +1, 1, 14, STATE_SIGN },
857  { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_DATA },
858  { 0, 0, 0, 0, 0, 0, +1, 1, 15, STATE_SIGN },
859  { 0, +6, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
860  { 0, +6, 0, 0, 0, 0, +1, 3, 0, STATE_START },
861  { 0, -6, 0, 0, 0, 0, +1, 2, 1, STATE_DATA },
862  { 0, -6, 0, 0, 0, 0, +1, 3, 0, STATE_START },
863  { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
864  { 0, +2, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
865  { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
866  { 0, +2, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
867  { 0, +2, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
868  { 0, +2, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
869  { 0, +2, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
870  { 0, +2, 0, 0, 0, 0, +1, 5, 0, STATE_START },
871  { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_DATA },
872  { 0, -2, 0, 0, 0, 0, +1, 2, 2, STATE_SIGN },
873  { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_DATA },
874  { 0, -2, 0, 0, 0, 0, +1, 2, 3, STATE_SIGN },
875  { 0, -2, 0, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
876  { 0, -2, 0, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
877  { 0, -2, 0, 0, 0, 0, +1, 4, 1, STATE_DATA },
878  { 0, -2, 0, 0, 0, 0, +1, 5, 0, STATE_START },
879  { 0, 0, 0, 0, 0, 0, +1, 2, 8, STATE_FOLLOW },
880  { 0, 0, 0, 0, 0, 0, +1, 2, 9, STATE_FOLLOW },
881  { 0, 0, +3, 0, 0, 0, +1, 3, 0, STATE_START },
882  { 0, 0, -3, 0, 0, 0, +1, 3, 0, STATE_START },
883  { 0, 0, 0, 0, 0, 0, +1, 2, 10, STATE_FOLLOW },
884  { 0, 0, 0, 0, 0, 0, +1, 2, 11, STATE_FOLLOW },
885  { 0, 0, +4, 0, 0, 0, +1, 3, 0, STATE_START },
886  { 0, 0, -4, 0, 0, 0, +1, 3, 0, STATE_START },
887  { 0, 0, +1, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
888  { 0, 0, +1, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
889  { 0, 0, +1, 0, 0, 0, +1, 4, 1, STATE_DATA },
890  { 0, 0, +1, 0, 0, 0, +1, 5, 0, STATE_START },
891  { 0, 0, -1, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
892  { 0, 0, -1, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
893  { 0, 0, -1, 0, 0, 0, +1, 4, 1, STATE_DATA },
894  { 0, 0, -1, 0, 0, 0, +1, 5, 0, STATE_START },
895  { 0, 0, 0, 0, 0, 0, +1, 2, 12, STATE_FOLLOW },
896  { 0, 0, 0, 0, 0, 0, +1, 2, 13, STATE_FOLLOW },
897  { 0, 0, +5, 0, 0, 0, +1, 3, 0, STATE_START },
898  { 0, 0, -5, 0, 0, 0, +1, 3, 0, STATE_START },
899  { 0, 0, 0, 0, 0, 0, +1, 2, 14, STATE_FOLLOW },
900  { 0, 0, 0, 0, 0, 0, +1, 2, 15, STATE_FOLLOW },
901  { 0, 0, +6, 0, 0, 0, +1, 3, 0, STATE_START },
902  { 0, 0, -6, 0, 0, 0, +1, 3, 0, STATE_START },
903  { 0, 0, +2, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
904  { 0, 0, +2, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
905  { 0, 0, +2, 0, 0, 0, +1, 4, 1, STATE_DATA },
906  { 0, 0, +2, 0, 0, 0, +1, 5, 0, STATE_START },
907  { 0, 0, -2, 0, 0, 0, +1, 3, 2, STATE_FOLLOW },
908  { 0, 0, -2, 0, 0, 0, +1, 3, 3, STATE_FOLLOW },
909  { 0, 0, -2, 0, 0, 0, +1, 4, 1, STATE_DATA },
910  { 0, 0, -2, 0, 0, 0, +1, 5, 0, STATE_START },
911  { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_DATA },
912  { 0, 0, 0, 0, 0, 0, +1, 3, 4, STATE_SIGN },
913  { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_DATA },
914  { 0, 0, 0, 0, 0, 0, +1, 3, 5, STATE_SIGN },
915  { 0, 0, 0, +1, 0, 0, +1, 4, 1, STATE_DATA },
916  { 0, 0, 0, +1, 0, 0, +1, 5, 0, STATE_START },
917  { 0, 0, 0, -1, 0, 0, +1, 4, 1, STATE_DATA },
918  { 0, 0, 0, -1, 0, 0, +1, 5, 0, STATE_START },
919  { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_DATA },
920  { 0, 0, 0, 0, 0, 0, +1, 3, 6, STATE_SIGN },
921  { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_DATA },
922  { 0, 0, 0, 0, 0, 0, +1, 3, 7, STATE_SIGN },
923  { 0, 0, 0, +2, 0, 0, +1, 4, 1, STATE_DATA },
924  { 0, 0, 0, +2, 0, 0, +1, 5, 0, STATE_START },
925  { 0, 0, 0, -2, 0, 0, +1, 4, 1, STATE_DATA },
926  { 0, 0, 0, -2, 0, 0, +1, 5, 0, STATE_START },
927  { 0, 0, 0, 0, 0, 0, +1, 4, 4, STATE_FOLLOW },
928  { 0, 0, 0, 0, 0, 0, +1, 4, 5, STATE_FOLLOW },
929  { 0, 0, 0, 0, +1, 0, +1, 5, 0, STATE_START },
930  { 0, 0, 0, 0, -1, 0, +1, 5, 0, STATE_START },
931  { 0, 0, 0, 0, 0, 0, +1, 4, 6, STATE_FOLLOW },
932  { 0, 0, 0, 0, 0, 0, +1, 4, 7, STATE_FOLLOW },
933  { 0, 0, 0, 0, +2, 0, +1, 5, 0, STATE_START },
934  { 0, 0, 0, 0, -2, 0, +1, 5, 0, STATE_START },
935  { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_DATA },
936  { 0, 0, 0, 0, 0, 0, +1, 5, 2, STATE_SIGN },
937  { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_DATA },
938  { 0, 0, 0, 0, 0, 0, +1, 5, 3, STATE_SIGN },
939  { 0, 0, 0, 0, 0, 0, +1, 6, 2, STATE_FOLLOW },
940  { 0, 0, 0, 0, 0, 0, +1, 6, 3, STATE_FOLLOW },
941  { 0, 0, 0, 0, 0, 0, +1, 7, 1, STATE_DATA },
942  { 0, 0, 0, 0, 0, 0, +1, 8, 0, STATE_START },
943  { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_DATA },
944  { 0, 0, 0, 0, 0, 0, -1, 1, 8, STATE_SIGN },
945  { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_DATA },
946  { 0, 0, 0, 0, 0, 0, -1, 1, 9, STATE_SIGN },
947  { 0, +3, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
948  { 0, +3, 0, 0, 0, 0, -1, 3, 0, STATE_START },
949  { 0, -3, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
950  { 0, -3, 0, 0, 0, 0, -1, 3, 0, STATE_START },
951  { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_DATA },
952  { 0, 0, 0, 0, 0, 0, -1, 1, 10, STATE_SIGN },
953  { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_DATA },
954  { 0, 0, 0, 0, 0, 0, -1, 1, 11, STATE_SIGN },
955  { 0, +4, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
956  { 0, +4, 0, 0, 0, 0, -1, 3, 0, STATE_START },
957  { 0, -4, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
958  { 0, -4, 0, 0, 0, 0, -1, 3, 0, STATE_START },
959  { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
960  { 0, +1, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
961  { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
962  { 0, +1, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
963  { 0, +1, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
964  { 0, +1, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
965  { 0, +1, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
966  { 0, +1, 0, 0, 0, 0, -1, 5, 0, STATE_START },
967  { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
968  { 0, -1, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
969  { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
970  { 0, -1, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
971  { 0, -1, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
972  { 0, -1, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
973  { 0, -1, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
974  { 0, -1, 0, 0, 0, 0, -1, 5, 0, STATE_START },
975  { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_DATA },
976  { 0, 0, 0, 0, 0, 0, -1, 1, 12, STATE_SIGN },
977  { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_DATA },
978  { 0, 0, 0, 0, 0, 0, -1, 1, 13, STATE_SIGN },
979  { 0, +5, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
980  { 0, +5, 0, 0, 0, 0, -1, 3, 0, STATE_START },
981  { 0, -5, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
982  { 0, -5, 0, 0, 0, 0, -1, 3, 0, STATE_START },
983  { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_DATA },
984  { 0, 0, 0, 0, 0, 0, -1, 1, 14, STATE_SIGN },
985  { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_DATA },
986  { 0, 0, 0, 0, 0, 0, -1, 1, 15, STATE_SIGN },
987  { 0, +6, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
988  { 0, +6, 0, 0, 0, 0, -1, 3, 0, STATE_START },
989  { 0, -6, 0, 0, 0, 0, -1, 2, 1, STATE_DATA },
990  { 0, -6, 0, 0, 0, 0, -1, 3, 0, STATE_START },
991  { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
992  { 0, +2, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
993  { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
994  { 0, +2, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
995  { 0, +2, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
996  { 0, +2, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
997  { 0, +2, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
998  { 0, +2, 0, 0, 0, 0, -1, 5, 0, STATE_START },
999  { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_DATA },
1000  { 0, -2, 0, 0, 0, 0, -1, 2, 2, STATE_SIGN },
1001  { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_DATA },
1002  { 0, -2, 0, 0, 0, 0, -1, 2, 3, STATE_SIGN },
1003  { 0, -2, 0, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1004  { 0, -2, 0, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1005  { 0, -2, 0, 0, 0, 0, -1, 4, 1, STATE_DATA },
1006  { 0, -2, 0, 0, 0, 0, -1, 5, 0, STATE_START },
1007  { 0, 0, 0, 0, 0, 0, -1, 2, 8, STATE_FOLLOW },
1008  { 0, 0, 0, 0, 0, 0, -1, 2, 9, STATE_FOLLOW },
1009  { 0, 0, +3, 0, 0, 0, -1, 3, 0, STATE_START },
1010  { 0, 0, -3, 0, 0, 0, -1, 3, 0, STATE_START },
1011  { 0, 0, 0, 0, 0, 0, -1, 2, 10, STATE_FOLLOW },
1012  { 0, 0, 0, 0, 0, 0, -1, 2, 11, STATE_FOLLOW },
1013  { 0, 0, +4, 0, 0, 0, -1, 3, 0, STATE_START },
1014  { 0, 0, -4, 0, 0, 0, -1, 3, 0, STATE_START },
1015  { 0, 0, +1, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1016  { 0, 0, +1, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1017  { 0, 0, +1, 0, 0, 0, -1, 4, 1, STATE_DATA },
1018  { 0, 0, +1, 0, 0, 0, -1, 5, 0, STATE_START },
1019  { 0, 0, -1, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1020  { 0, 0, -1, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1021  { 0, 0, -1, 0, 0, 0, -1, 4, 1, STATE_DATA },
1022  { 0, 0, -1, 0, 0, 0, -1, 5, 0, STATE_START },
1023  { 0, 0, 0, 0, 0, 0, -1, 2, 12, STATE_FOLLOW },
1024  { 0, 0, 0, 0, 0, 0, -1, 2, 13, STATE_FOLLOW },
1025  { 0, 0, +5, 0, 0, 0, -1, 3, 0, STATE_START },
1026  { 0, 0, -5, 0, 0, 0, -1, 3, 0, STATE_START },
1027  { 0, 0, 0, 0, 0, 0, -1, 2, 14, STATE_FOLLOW },
1028  { 0, 0, 0, 0, 0, 0, -1, 2, 15, STATE_FOLLOW },
1029  { 0, 0, +6, 0, 0, 0, -1, 3, 0, STATE_START },
1030  { 0, 0, -6, 0, 0, 0, -1, 3, 0, STATE_START },
1031  { 0, 0, +2, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1032  { 0, 0, +2, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1033  { 0, 0, +2, 0, 0, 0, -1, 4, 1, STATE_DATA },
1034  { 0, 0, +2, 0, 0, 0, -1, 5, 0, STATE_START },
1035  { 0, 0, -2, 0, 0, 0, -1, 3, 2, STATE_FOLLOW },
1036  { 0, 0, -2, 0, 0, 0, -1, 3, 3, STATE_FOLLOW },
1037  { 0, 0, -2, 0, 0, 0, -1, 4, 1, STATE_DATA },
1038  { 0, 0, -2, 0, 0, 0, -1, 5, 0, STATE_START },
1039  { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_DATA },
1040  { 0, 0, 0, 0, 0, 0, -1, 3, 4, STATE_SIGN },
1041  { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_DATA },
1042  { 0, 0, 0, 0, 0, 0, -1, 3, 5, STATE_SIGN },
1043  { 0, 0, 0, +1, 0, 0, -1, 4, 1, STATE_DATA },
1044  { 0, 0, 0, +1, 0, 0, -1, 5, 0, STATE_START },
1045  { 0, 0, 0, -1, 0, 0, -1, 4, 1, STATE_DATA },
1046  { 0, 0, 0, -1, 0, 0, -1, 5, 0, STATE_START },
1047  { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_DATA },
1048  { 0, 0, 0, 0, 0, 0, -1, 3, 6, STATE_SIGN },
1049  { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_DATA },
1050  { 0, 0, 0, 0, 0, 0, -1, 3, 7, STATE_SIGN },
1051  { 0, 0, 0, +2, 0, 0, -1, 4, 1, STATE_DATA },
1052  { 0, 0, 0, +2, 0, 0, -1, 5, 0, STATE_START },
1053  { 0, 0, 0, -2, 0, 0, -1, 4, 1, STATE_DATA },
1054  { 0, 0, 0, -2, 0, 0, -1, 5, 0, STATE_START },
1055  { 0, 0, 0, 0, 0, 0, -1, 4, 4, STATE_FOLLOW },
1056  { 0, 0, 0, 0, 0, 0, -1, 4, 5, STATE_FOLLOW },
1057  { 0, 0, 0, 0, +1, 0, -1, 5, 0, STATE_START },
1058  { 0, 0, 0, 0, -1, 0, -1, 5, 0, STATE_START },
1059  { 0, 0, 0, 0, 0, 0, -1, 4, 6, STATE_FOLLOW },
1060  { 0, 0, 0, 0, 0, 0, -1, 4, 7, STATE_FOLLOW },
1061  { 0, 0, 0, 0, +2, 0, -1, 5, 0, STATE_START },
1062  { 0, 0, 0, 0, -2, 0, -1, 5, 0, STATE_START },
1063  { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_DATA },
1064  { 0, 0, 0, 0, 0, 0, -1, 5, 2, STATE_SIGN },
1065  { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_DATA },
1066  { 0, 0, 0, 0, 0, 0, -1, 5, 3, STATE_SIGN },
1067  { 0, 0, 0, 0, 0, 0, -1, 6, 2, STATE_FOLLOW },
1068  { 0, 0, 0, 0, 0, 0, -1, 6, 3, STATE_FOLLOW },
1069  { 0, 0, 0, 0, 0, 0, -1, 7, 1, STATE_DATA },
1070  { 0, 0, 0, 0, 0, 0, -1, 8, 0, STATE_START },
1071 };
1072 
1073 #define PROCESS_VALS \
1074  do { \
1075  val <<= lut.val0_bits; \
1076  val |= lut.val0; \
1077  dst[0] = (val - 1) * lut.sign; \
1078  dst[1] = lut.val1; \
1079  dst[2] = lut.val2; \
1080  dst[3] = lut.val3; \
1081  dst[4] = lut.val4; \
1082  dst[5] = 0; \
1083  dst[6] = 0; \
1084  dst[7] = 0; \
1085  if (lut.num) \
1086  val = lut.val; \
1087  dst += lut.num; \
1088  if (dst >= last) \
1089  return coeffs; \
1090  lut = ff_dirac_golomb_lut[lut.state + *buf++]; \
1091  } while (0)
1092 
1093 int ff_dirac_golomb_read_16bit(const uint8_t *buf, int bytes,
1094  uint8_t *_dst, int coeffs)
1095 {
1096  LUTState lut = ff_dirac_golomb_lut[*buf++];
1097  int16_t *dst = (int16_t *)_dst, *last = dst + coeffs;
1098  uint16_t val = 0;
1099 
1100  for (int i = 1; i < bytes; i++)
1101  PROCESS_VALS;
1102 
1103  /* Reader needs to be flushed */
1104  PROCESS_VALS;
1105 
1106  /* Still short of coeffs - try to guess and at least output what we have */
1107  if (lut.state != STATE_START)
1108  *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
1109 
1110  return coeffs - (int)(last - dst);
1111 }
1112 
1113 int ff_dirac_golomb_read_32bit(const uint8_t *buf, int bytes,
1114  uint8_t *_dst, int coeffs)
1115 {
1116  LUTState lut = ff_dirac_golomb_lut[*buf++];
1117  int32_t *dst = (int32_t *)_dst, *last = dst + coeffs;
1118  uint32_t val = 0;
1119 
1120  for (int i = 1; i < bytes; i++)
1121  PROCESS_VALS;
1122 
1123  /* Reader needs to be flushed */
1124  PROCESS_VALS;
1125 
1126  /* Still short of coeffs - try to guess and at least output what we have */
1127  if (lut.state != STATE_START)
1128  *dst++ = -((lut.state != STATE_SIGN ? (val << 1) | 1 : val) - 1);
1129 
1130  return coeffs - (int)(last - dst);
1131 }
uint8_t
const LUTState ff_dirac_golomb_lut[1024]
Definition: dirac_vlc.c:46
uint8_t val0_bits
Definition: dirac_vlc.c:39
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition: mem.h:112
int16_t val0
Definition: dirac_vlc.c:34
int16_t val1
Definition: dirac_vlc.c:35
int16_t val3
Definition: dirac_vlc.c:37
uint8_t val
Definition: dirac_vlc.c:42
int ff_dirac_golomb_read_16bit(const uint8_t *buf, int bytes, uint8_t *_dst, int coeffs)
Definition: dirac_vlc.c:1093
#define PROCESS_VALS
Definition: dirac_vlc.c:1073
int32_t
int8_t sign
Definition: dirac_vlc.c:40
int16_t val4
Definition: dirac_vlc.c:38
int16_t val2
Definition: dirac_vlc.c:36
int ff_dirac_golomb_read_32bit(const uint8_t *buf, int bytes, uint8_t *_dst, int coeffs)
Definition: dirac_vlc.c:1113
int
int8_t num
Definition: dirac_vlc.c:41
uint16_t state
Definition: dirac_vlc.c:43
int i
Definition: input.c:407