33 #include <google/protobuf/stubs/common.h>
35 #include <google/protobuf/stubs/stringpiece.h>
88 const int entry_shift;
89 const int bytes_per_entry;
92 const uint8* state_table;
93 const RemapEntry* remap_base;
94 const uint8* remap_string;
95 const uint8* fast_state;
96 } UTF8StateMachineObj;
100 #define X__ (kExitIllegalStructure)
101 #define RJ_ (kExitReject)
102 #define S1_ (kExitReplace1)
103 #define S2_ (kExitReplace2)
104 #define S3_ (kExitReplace3)
105 #define S21 (kExitReplace21)
106 #define S31 (kExitReplace31)
107 #define S32 (kExitReplace32)
108 #define T1_ (kExitReplaceOffset1)
109 #define T2_ (kExitReplaceOffset2)
110 #define S11 (kExitReplace1S0)
111 #define SP_ (kExitSpecial)
112 #define D__ (kExitDoAgain)
113 #define RJA (kExitRejectAlt)
127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
137 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
138 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
139 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
140 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
142 X__,
X__, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
143 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
144 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 3,
145 4, 5, 5, 5, 6,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
148 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
149 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
150 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
151 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
153 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
154 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
155 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
156 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
164 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
165 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
166 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
169 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
170 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
171 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
172 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
174 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
175 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
176 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
177 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
179 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
180 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
181 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
182 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
184 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
185 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
186 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
187 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
190 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
191 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
192 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
193 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
195 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
196 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
197 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
198 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
200 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
201 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
202 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
203 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
205 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
206 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
207 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
208 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
211 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
212 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
213 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
214 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
216 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
217 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
218 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
219 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
221 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
222 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
223 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
224 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
226 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
227 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
228 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
229 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
232 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
233 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
234 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
235 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
237 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
238 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
239 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
240 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
242 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
243 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
244 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
245 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
247 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
248 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
249 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
250 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
253 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
254 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
255 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
256 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
258 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
259 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
260 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
261 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
263 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
264 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
265 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
266 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
268 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
269 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
270 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
271 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
274 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
275 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
276 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
277 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
279 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
280 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
281 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
282 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
284 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
285 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
286 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
287 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
289 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
290 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
291 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
292 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
295 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
296 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
297 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
298 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
300 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
301 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
302 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
303 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
305 RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
306 RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
307 RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
308 RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
RJ_,
310 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
311 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
312 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
313 X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
X__,
325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
335 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
336 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
337 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
338 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
340 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
341 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
342 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
343 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
390 int* bytes_consumed) {
392 if (str_length == 0)
return kExitOK;
394 int eshift = st->entry_shift;
396 const uint8* src = isrc;
397 const uint8* srclimit = isrc + str_length;
398 const uint8* srclimit8 = str_length < 7 ? isrc : srclimit - 7;
399 const uint8* Tbl_0 = &st->state_table[st->state0];
405 const uint8* Tbl2 = &st->fast_state[0];
406 const uint32 losub = st->losub;
407 const uint32 hiadd = st->hiadd;
420 while (src < srclimit8) {
421 uint32 s0123 = (
reinterpret_cast<const uint32 *
>(src))[0];
422 uint32 s4567 = (
reinterpret_cast<const uint32 *
>(src))[1];
425 uint32 temp = (s0123 - losub) | (s0123 + hiadd) |
426 (s4567 - losub) | (s4567 + hiadd);
427 if ((
temp & 0x80808080) != 0) {
429 int e0123 = (Tbl2[src[-8]] | Tbl2[src[-7]]) |
430 (Tbl2[src[-6]] | Tbl2[src[-5]]);
435 e0123 = (Tbl2[src[-4]] | Tbl2[src[-3]]) |
436 (Tbl2[src[-2]] | Tbl2[src[-1]]);
449 const uint8* Tbl = Tbl_0;
450 while (src < srclimit) {
455 Tbl = &Tbl_0[
e << eshift];
474 }
while ((src > isrc) && ((src[0] & 0xc0) == 0x80));
481 }
while ((src > isrc) && ((src[0] & 0xc0) == 0x80));
492 *bytes_consumed = src - isrc;
499 int* bytes_consumed) {
501 if (str_length == 0)
return kExitOK;
504 const uint8* src = isrc;
505 const uint8* srclimit = isrc + str_length;
506 const uint8* srclimit8 = str_length < 7 ? isrc : srclimit - 7;
513 (src < srclimit) && (src[0] < 0x80)) {
517 while ((src < srclimit8) &&
518 (((
reinterpret_cast<const uint32*
>(src)[0] |
519 reinterpret_cast<const uint32*
>(src)[1]) & 0x80808080) == 0)) {
523 while ((src < srclimit) && (src[0] < 0x80)) {
529 src += rest_consumed;
532 *bytes_consumed = src - isrc;
544 bool module_initialized_ =
false;
546 struct InitDetector {
548 module_initialized_ =
true;
551 InitDetector init_detector;
556 if (!module_initialized_)
return true;
558 int bytes_consumed = 0;
560 buf,
len, &bytes_consumed);
561 return (bytes_consumed ==
len);
565 if (!module_initialized_)
return str.size();
567 int bytes_consumed = 0;
569 str.data(),
str.size(), &bytes_consumed);
570 return bytes_consumed;
586 const char replace_char) {
587 const char* isrc = src_str.
data();
591 return const_cast<char*
>(isrc);
593 const char* src = isrc;
594 const char* srclimit = isrc +
len;
596 memmove(
dst, src,
n);
599 while (src < srclimit) {
600 dst[0] = replace_char;
605 memmove(
dst, src,
n);