1pub struct Iri {
3 state: u32,
4}
5impl Iri {
6 pub const fn new() -> Self {
7 Self { state: 0u32 }
8 }
9 pub const fn push(&mut self, token: char) -> bool {
10 self.state = match self.state {
11 0u32 => match token {
12 'A'..='Z' | 'a'..='z' => 1u32,
13 _ => return false,
14 },
15 1u32 => match token {
16 '+' | '-'..='.' | '0'..='9' | 'A'..='Z' | 'a'..='z' => 1u32,
17 ':' => 2u32,
18 _ => return false,
19 },
20 2u32 => match token {
21 '!'
22 | '$'
23 | '&'..='.'
24 | '0'..=';'
25 | '='
26 | '@'..='Z'
27 | '_'
28 | 'a'..='z'
29 | '~'
30 | '\u{a0}'..='\u{d7ff}'
31 | '豈'..='﷏'
32 | 'ﷰ'..='\u{ffef}'
33 | '𐀀'..='\u{1fffd}'
34 | '𠀀'..='\u{2fffd}'
35 | '𰀀'..='\u{3fffd}'
36 | '\u{40000}'..='\u{4fffd}'
37 | '\u{50000}'..='\u{5fffd}'
38 | '\u{60000}'..='\u{6fffd}'
39 | '\u{70000}'..='\u{7fffd}'
40 | '\u{80000}'..='\u{8fffd}'
41 | '\u{90000}'..='\u{9fffd}'
42 | '\u{a0000}'..='\u{afffd}'
43 | '\u{b0000}'..='\u{bfffd}'
44 | '\u{c0000}'..='\u{cfffd}'
45 | '\u{d0000}'..='\u{dfffd}'
46 | '\u{e1000}'..='\u{efffd}' => 3u32,
47 '#' => 4u32,
48 '%' => 5u32,
49 '/' => 6u32,
50 '?' => 7u32,
51 _ => return false,
52 },
53 3u32 => match token {
54 '!'
55 | '$'
56 | '&'..=';'
57 | '='
58 | '@'..='Z'
59 | '_'
60 | 'a'..='z'
61 | '~'
62 | '\u{a0}'..='\u{d7ff}'
63 | '豈'..='﷏'
64 | 'ﷰ'..='\u{ffef}'
65 | '𐀀'..='\u{1fffd}'
66 | '𠀀'..='\u{2fffd}'
67 | '𰀀'..='\u{3fffd}'
68 | '\u{40000}'..='\u{4fffd}'
69 | '\u{50000}'..='\u{5fffd}'
70 | '\u{60000}'..='\u{6fffd}'
71 | '\u{70000}'..='\u{7fffd}'
72 | '\u{80000}'..='\u{8fffd}'
73 | '\u{90000}'..='\u{9fffd}'
74 | '\u{a0000}'..='\u{afffd}'
75 | '\u{b0000}'..='\u{bfffd}'
76 | '\u{c0000}'..='\u{cfffd}'
77 | '\u{d0000}'..='\u{dfffd}'
78 | '\u{e1000}'..='\u{efffd}' => 3u32,
79 '#' => 4u32,
80 '%' => 5u32,
81 '?' => 7u32,
82 _ => return false,
83 },
84 4u32 => match token {
85 '!'
86 | '$'
87 | '&'..=';'
88 | '='
89 | '?'..='Z'
90 | '_'
91 | 'a'..='z'
92 | '~'
93 | '\u{a0}'..='\u{d7ff}'
94 | '豈'..='﷏'
95 | 'ﷰ'..='\u{ffef}'
96 | '𐀀'..='\u{1fffd}'
97 | '𠀀'..='\u{2fffd}'
98 | '𰀀'..='\u{3fffd}'
99 | '\u{40000}'..='\u{4fffd}'
100 | '\u{50000}'..='\u{5fffd}'
101 | '\u{60000}'..='\u{6fffd}'
102 | '\u{70000}'..='\u{7fffd}'
103 | '\u{80000}'..='\u{8fffd}'
104 | '\u{90000}'..='\u{9fffd}'
105 | '\u{a0000}'..='\u{afffd}'
106 | '\u{b0000}'..='\u{bfffd}'
107 | '\u{c0000}'..='\u{cfffd}'
108 | '\u{d0000}'..='\u{dfffd}'
109 | '\u{e1000}'..='\u{efffd}' => 4u32,
110 '%' => 8u32,
111 _ => return false,
112 },
113 5u32 => match token {
114 '0'..='9' | 'A'..='F' | 'a'..='f' => 9u32,
115 _ => return false,
116 },
117 6u32 => match token {
118 '!'
119 | '$'
120 | '&'..='.'
121 | '0'..=';'
122 | '='
123 | '@'..='Z'
124 | '_'
125 | 'a'..='z'
126 | '~'
127 | '\u{a0}'..='\u{d7ff}'
128 | '豈'..='﷏'
129 | 'ﷰ'..='\u{ffef}'
130 | '𐀀'..='\u{1fffd}'
131 | '𠀀'..='\u{2fffd}'
132 | '𰀀'..='\u{3fffd}'
133 | '\u{40000}'..='\u{4fffd}'
134 | '\u{50000}'..='\u{5fffd}'
135 | '\u{60000}'..='\u{6fffd}'
136 | '\u{70000}'..='\u{7fffd}'
137 | '\u{80000}'..='\u{8fffd}'
138 | '\u{90000}'..='\u{9fffd}'
139 | '\u{a0000}'..='\u{afffd}'
140 | '\u{b0000}'..='\u{bfffd}'
141 | '\u{c0000}'..='\u{cfffd}'
142 | '\u{d0000}'..='\u{dfffd}'
143 | '\u{e1000}'..='\u{efffd}' => 3u32,
144 '#' => 4u32,
145 '%' => 5u32,
146 '/' => 10u32,
147 '?' => 7u32,
148 _ => return false,
149 },
150 7u32 => match token {
151 '!'
152 | '$'
153 | '&'..=';'
154 | '='
155 | '?'..='Z'
156 | '_'
157 | 'a'..='z'
158 | '~'
159 | '\u{a0}'..='﷏'
160 | 'ﷰ'..='\u{ffef}'
161 | '𐀀'..='\u{1fffd}'
162 | '𠀀'..='\u{2fffd}'
163 | '𰀀'..='\u{3fffd}'
164 | '\u{40000}'..='\u{4fffd}'
165 | '\u{50000}'..='\u{5fffd}'
166 | '\u{60000}'..='\u{6fffd}'
167 | '\u{70000}'..='\u{7fffd}'
168 | '\u{80000}'..='\u{8fffd}'
169 | '\u{90000}'..='\u{9fffd}'
170 | '\u{a0000}'..='\u{afffd}'
171 | '\u{b0000}'..='\u{bfffd}'
172 | '\u{c0000}'..='\u{cfffd}'
173 | '\u{d0000}'..='\u{dfffd}'
174 | '\u{e1000}'..='\u{efffd}'
175 | '\u{f0000}'..='\u{ffffd}'
176 | '\u{100000}'..='\u{10fffd}' => 7u32,
177 '#' => 4u32,
178 '%' => 11u32,
179 _ => return false,
180 },
181 8u32 => match token {
182 '0'..='9' | 'A'..='F' | 'a'..='f' => 13u32,
183 _ => return false,
184 },
185 9u32 => match token {
186 '0'..='9' | 'A'..='F' | 'a'..='f' => 3u32,
187 _ => return false,
188 },
189 10u32 => match token {
190 '!'
191 | '$'
192 | '&'..='.'
193 | ';'
194 | '='
195 | 'A'..='Z'
196 | '_'
197 | 'a'..='z'
198 | '~'
199 | '\u{a0}'..='\u{d7ff}'
200 | '豈'..='﷏'
201 | 'ﷰ'..='\u{ffef}'
202 | '𐀀'..='\u{1fffd}'
203 | '𠀀'..='\u{2fffd}'
204 | '𰀀'..='\u{3fffd}'
205 | '\u{40000}'..='\u{4fffd}'
206 | '\u{50000}'..='\u{5fffd}'
207 | '\u{60000}'..='\u{6fffd}'
208 | '\u{70000}'..='\u{7fffd}'
209 | '\u{80000}'..='\u{8fffd}'
210 | '\u{90000}'..='\u{9fffd}'
211 | '\u{a0000}'..='\u{afffd}'
212 | '\u{b0000}'..='\u{bfffd}'
213 | '\u{c0000}'..='\u{cfffd}'
214 | '\u{d0000}'..='\u{dfffd}'
215 | '\u{e1000}'..='\u{efffd}' => 14u32,
216 '#' => 4u32,
217 '%' => 15u32,
218 '/' => 3u32,
219 '0' => 16u32,
220 '1' => 17u32,
221 '2' => 18u32,
222 '3'..='9' => 19u32,
223 ':' => 20u32,
224 '?' => 7u32,
225 '@' => 21u32,
226 '[' => 22u32,
227 _ => return false,
228 },
229 11u32 => match token {
230 '0'..='9' | 'A'..='F' | 'a'..='f' => 12u32,
231 _ => return false,
232 },
233 12u32 => match token {
234 '0'..='9' | 'A'..='F' | 'a'..='f' => 7u32,
235 _ => return false,
236 },
237 13u32 => match token {
238 '0'..='9' | 'A'..='F' | 'a'..='f' => 4u32,
239 _ => return false,
240 },
241 14u32 => match token {
242 '!'
243 | '$'
244 | '&'..='.'
245 | '0'..='9'
246 | ';'
247 | '='
248 | 'A'..='Z'
249 | '_'
250 | 'a'..='z'
251 | '~'
252 | '\u{a0}'..='\u{d7ff}'
253 | '豈'..='﷏'
254 | 'ﷰ'..='\u{ffef}'
255 | '𐀀'..='\u{1fffd}'
256 | '𠀀'..='\u{2fffd}'
257 | '𰀀'..='\u{3fffd}'
258 | '\u{40000}'..='\u{4fffd}'
259 | '\u{50000}'..='\u{5fffd}'
260 | '\u{60000}'..='\u{6fffd}'
261 | '\u{70000}'..='\u{7fffd}'
262 | '\u{80000}'..='\u{8fffd}'
263 | '\u{90000}'..='\u{9fffd}'
264 | '\u{a0000}'..='\u{afffd}'
265 | '\u{b0000}'..='\u{bfffd}'
266 | '\u{c0000}'..='\u{cfffd}'
267 | '\u{d0000}'..='\u{dfffd}'
268 | '\u{e1000}'..='\u{efffd}' => 14u32,
269 '#' => 4u32,
270 '%' => 15u32,
271 '/' => 3u32,
272 ':' => 20u32,
273 '?' => 7u32,
274 '@' => 21u32,
275 _ => return false,
276 },
277 15u32 => match token {
278 '0'..='9' | 'A'..='F' | 'a'..='f' => 23u32,
279 _ => return false,
280 },
281 16u32 => match token {
282 '!'
283 | '$'
284 | '&'..='-'
285 | '0'..='9'
286 | ';'
287 | '='
288 | 'A'..='Z'
289 | '_'
290 | 'a'..='z'
291 | '~'
292 | '\u{a0}'..='\u{d7ff}'
293 | '豈'..='﷏'
294 | 'ﷰ'..='\u{ffef}'
295 | '𐀀'..='\u{1fffd}'
296 | '𠀀'..='\u{2fffd}'
297 | '𰀀'..='\u{3fffd}'
298 | '\u{40000}'..='\u{4fffd}'
299 | '\u{50000}'..='\u{5fffd}'
300 | '\u{60000}'..='\u{6fffd}'
301 | '\u{70000}'..='\u{7fffd}'
302 | '\u{80000}'..='\u{8fffd}'
303 | '\u{90000}'..='\u{9fffd}'
304 | '\u{a0000}'..='\u{afffd}'
305 | '\u{b0000}'..='\u{bfffd}'
306 | '\u{c0000}'..='\u{cfffd}'
307 | '\u{d0000}'..='\u{dfffd}'
308 | '\u{e1000}'..='\u{efffd}' => 14u32,
309 '#' => 4u32,
310 '%' => 15u32,
311 '.' => 24u32,
312 '/' => 3u32,
313 ':' => 20u32,
314 '?' => 7u32,
315 '@' => 21u32,
316 _ => return false,
317 },
318 17u32 => match token {
319 '!'
320 | '$'
321 | '&'..='-'
322 | ';'
323 | '='
324 | 'A'..='Z'
325 | '_'
326 | 'a'..='z'
327 | '~'
328 | '\u{a0}'..='\u{d7ff}'
329 | '豈'..='﷏'
330 | 'ﷰ'..='\u{ffef}'
331 | '𐀀'..='\u{1fffd}'
332 | '𠀀'..='\u{2fffd}'
333 | '𰀀'..='\u{3fffd}'
334 | '\u{40000}'..='\u{4fffd}'
335 | '\u{50000}'..='\u{5fffd}'
336 | '\u{60000}'..='\u{6fffd}'
337 | '\u{70000}'..='\u{7fffd}'
338 | '\u{80000}'..='\u{8fffd}'
339 | '\u{90000}'..='\u{9fffd}'
340 | '\u{a0000}'..='\u{afffd}'
341 | '\u{b0000}'..='\u{bfffd}'
342 | '\u{c0000}'..='\u{cfffd}'
343 | '\u{d0000}'..='\u{dfffd}'
344 | '\u{e1000}'..='\u{efffd}' => 14u32,
345 '#' => 4u32,
346 '%' => 15u32,
347 '.' => 24u32,
348 '/' => 3u32,
349 '0'..='9' => 19u32,
350 ':' => 20u32,
351 '?' => 7u32,
352 '@' => 21u32,
353 _ => return false,
354 },
355 18u32 => match token {
356 '!'
357 | '$'
358 | '&'..='-'
359 | ';'
360 | '='
361 | 'A'..='Z'
362 | '_'
363 | 'a'..='z'
364 | '~'
365 | '\u{a0}'..='\u{d7ff}'
366 | '豈'..='﷏'
367 | 'ﷰ'..='\u{ffef}'
368 | '𐀀'..='\u{1fffd}'
369 | '𠀀'..='\u{2fffd}'
370 | '𰀀'..='\u{3fffd}'
371 | '\u{40000}'..='\u{4fffd}'
372 | '\u{50000}'..='\u{5fffd}'
373 | '\u{60000}'..='\u{6fffd}'
374 | '\u{70000}'..='\u{7fffd}'
375 | '\u{80000}'..='\u{8fffd}'
376 | '\u{90000}'..='\u{9fffd}'
377 | '\u{a0000}'..='\u{afffd}'
378 | '\u{b0000}'..='\u{bfffd}'
379 | '\u{c0000}'..='\u{cfffd}'
380 | '\u{d0000}'..='\u{dfffd}'
381 | '\u{e1000}'..='\u{efffd}' => 14u32,
382 '#' => 4u32,
383 '%' => 15u32,
384 '.' => 24u32,
385 '/' => 3u32,
386 '0'..='4' => 19u32,
387 '5' => 25u32,
388 '6'..='9' => 16u32,
389 ':' => 20u32,
390 '?' => 7u32,
391 '@' => 21u32,
392 _ => return false,
393 },
394 19u32 => match token {
395 '!'
396 | '$'
397 | '&'..='-'
398 | ';'
399 | '='
400 | 'A'..='Z'
401 | '_'
402 | 'a'..='z'
403 | '~'
404 | '\u{a0}'..='\u{d7ff}'
405 | '豈'..='﷏'
406 | 'ﷰ'..='\u{ffef}'
407 | '𐀀'..='\u{1fffd}'
408 | '𠀀'..='\u{2fffd}'
409 | '𰀀'..='\u{3fffd}'
410 | '\u{40000}'..='\u{4fffd}'
411 | '\u{50000}'..='\u{5fffd}'
412 | '\u{60000}'..='\u{6fffd}'
413 | '\u{70000}'..='\u{7fffd}'
414 | '\u{80000}'..='\u{8fffd}'
415 | '\u{90000}'..='\u{9fffd}'
416 | '\u{a0000}'..='\u{afffd}'
417 | '\u{b0000}'..='\u{bfffd}'
418 | '\u{c0000}'..='\u{cfffd}'
419 | '\u{d0000}'..='\u{dfffd}'
420 | '\u{e1000}'..='\u{efffd}' => 14u32,
421 '#' => 4u32,
422 '%' => 15u32,
423 '.' => 24u32,
424 '/' => 3u32,
425 '0'..='9' => 16u32,
426 ':' => 20u32,
427 '?' => 7u32,
428 '@' => 21u32,
429 _ => return false,
430 },
431 20u32 => match token {
432 '!'
433 | '$'
434 | '&'..='.'
435 | ':'..=';'
436 | '='
437 | 'A'..='Z'
438 | '_'
439 | 'a'..='z'
440 | '~'
441 | '\u{a0}'..='\u{d7ff}'
442 | '豈'..='﷏'
443 | 'ﷰ'..='\u{ffef}'
444 | '𐀀'..='\u{1fffd}'
445 | '𠀀'..='\u{2fffd}'
446 | '𰀀'..='\u{3fffd}'
447 | '\u{40000}'..='\u{4fffd}'
448 | '\u{50000}'..='\u{5fffd}'
449 | '\u{60000}'..='\u{6fffd}'
450 | '\u{70000}'..='\u{7fffd}'
451 | '\u{80000}'..='\u{8fffd}'
452 | '\u{90000}'..='\u{9fffd}'
453 | '\u{a0000}'..='\u{afffd}'
454 | '\u{b0000}'..='\u{bfffd}'
455 | '\u{c0000}'..='\u{cfffd}'
456 | '\u{d0000}'..='\u{dfffd}'
457 | '\u{e1000}'..='\u{efffd}' => 26u32,
458 '#' => 4u32,
459 '%' => 27u32,
460 '/' => 3u32,
461 '0'..='9' => 20u32,
462 '?' => 7u32,
463 '@' => 21u32,
464 _ => return false,
465 },
466 21u32 => match token {
467 '!'
468 | '$'
469 | '&'..='.'
470 | ';'
471 | '='
472 | 'A'..='Z'
473 | '_'
474 | 'a'..='z'
475 | '~'
476 | '\u{a0}'..='\u{d7ff}'
477 | '豈'..='﷏'
478 | 'ﷰ'..='\u{ffef}'
479 | '𐀀'..='\u{1fffd}'
480 | '𠀀'..='\u{2fffd}'
481 | '𰀀'..='\u{3fffd}'
482 | '\u{40000}'..='\u{4fffd}'
483 | '\u{50000}'..='\u{5fffd}'
484 | '\u{60000}'..='\u{6fffd}'
485 | '\u{70000}'..='\u{7fffd}'
486 | '\u{80000}'..='\u{8fffd}'
487 | '\u{90000}'..='\u{9fffd}'
488 | '\u{a0000}'..='\u{afffd}'
489 | '\u{b0000}'..='\u{bfffd}'
490 | '\u{c0000}'..='\u{cfffd}'
491 | '\u{d0000}'..='\u{dfffd}'
492 | '\u{e1000}'..='\u{efffd}' => 28u32,
493 '#' => 4u32,
494 '%' => 29u32,
495 '/' => 3u32,
496 '0' => 30u32,
497 '1' => 31u32,
498 '2' => 32u32,
499 '3'..='9' => 33u32,
500 ':' => 34u32,
501 '?' => 7u32,
502 '[' => 22u32,
503 _ => return false,
504 },
505 22u32 => match token {
506 '0'..='9' | 'A'..='F' | 'a'..='f' => 35u32,
507 ':' => 36u32,
508 'V' | 'v' => 37u32,
509 _ => return false,
510 },
511 23u32 => match token {
512 '0'..='9' | 'A'..='F' | 'a'..='f' => 14u32,
513 _ => return false,
514 },
515 24u32 => match token {
516 '!'
517 | '$'
518 | '&'..='.'
519 | ';'
520 | '='
521 | 'A'..='Z'
522 | '_'
523 | 'a'..='z'
524 | '~'
525 | '\u{a0}'..='\u{d7ff}'
526 | '豈'..='﷏'
527 | 'ﷰ'..='\u{ffef}'
528 | '𐀀'..='\u{1fffd}'
529 | '𠀀'..='\u{2fffd}'
530 | '𰀀'..='\u{3fffd}'
531 | '\u{40000}'..='\u{4fffd}'
532 | '\u{50000}'..='\u{5fffd}'
533 | '\u{60000}'..='\u{6fffd}'
534 | '\u{70000}'..='\u{7fffd}'
535 | '\u{80000}'..='\u{8fffd}'
536 | '\u{90000}'..='\u{9fffd}'
537 | '\u{a0000}'..='\u{afffd}'
538 | '\u{b0000}'..='\u{bfffd}'
539 | '\u{c0000}'..='\u{cfffd}'
540 | '\u{d0000}'..='\u{dfffd}'
541 | '\u{e1000}'..='\u{efffd}' => 14u32,
542 '#' => 4u32,
543 '%' => 15u32,
544 '/' => 3u32,
545 '0' => 208u32,
546 '1' => 209u32,
547 '2' => 210u32,
548 '3'..='9' => 211u32,
549 ':' => 20u32,
550 '?' => 7u32,
551 '@' => 21u32,
552 _ => return false,
553 },
554 25u32 => match token {
555 '!'
556 | '$'
557 | '&'..='-'
558 | '6'..='9'
559 | ';'
560 | '='
561 | 'A'..='Z'
562 | '_'
563 | 'a'..='z'
564 | '~'
565 | '\u{a0}'..='\u{d7ff}'
566 | '豈'..='﷏'
567 | 'ﷰ'..='\u{ffef}'
568 | '𐀀'..='\u{1fffd}'
569 | '𠀀'..='\u{2fffd}'
570 | '𰀀'..='\u{3fffd}'
571 | '\u{40000}'..='\u{4fffd}'
572 | '\u{50000}'..='\u{5fffd}'
573 | '\u{60000}'..='\u{6fffd}'
574 | '\u{70000}'..='\u{7fffd}'
575 | '\u{80000}'..='\u{8fffd}'
576 | '\u{90000}'..='\u{9fffd}'
577 | '\u{a0000}'..='\u{afffd}'
578 | '\u{b0000}'..='\u{bfffd}'
579 | '\u{c0000}'..='\u{cfffd}'
580 | '\u{d0000}'..='\u{dfffd}'
581 | '\u{e1000}'..='\u{efffd}' => 14u32,
582 '#' => 4u32,
583 '%' => 15u32,
584 '.' => 24u32,
585 '/' => 3u32,
586 '0'..='5' => 16u32,
587 ':' => 20u32,
588 '?' => 7u32,
589 '@' => 21u32,
590 _ => return false,
591 },
592 26u32 => match token {
593 '!'
594 | '$'
595 | '&'..='.'
596 | '0'..=';'
597 | '='
598 | 'A'..='Z'
599 | '_'
600 | 'a'..='z'
601 | '~'
602 | '\u{a0}'..='\u{d7ff}'
603 | '豈'..='﷏'
604 | 'ﷰ'..='\u{ffef}'
605 | '𐀀'..='\u{1fffd}'
606 | '𠀀'..='\u{2fffd}'
607 | '𰀀'..='\u{3fffd}'
608 | '\u{40000}'..='\u{4fffd}'
609 | '\u{50000}'..='\u{5fffd}'
610 | '\u{60000}'..='\u{6fffd}'
611 | '\u{70000}'..='\u{7fffd}'
612 | '\u{80000}'..='\u{8fffd}'
613 | '\u{90000}'..='\u{9fffd}'
614 | '\u{a0000}'..='\u{afffd}'
615 | '\u{b0000}'..='\u{bfffd}'
616 | '\u{c0000}'..='\u{cfffd}'
617 | '\u{d0000}'..='\u{dfffd}'
618 | '\u{e1000}'..='\u{efffd}' => 26u32,
619 '%' => 27u32,
620 '@' => 21u32,
621 _ => return false,
622 },
623 27u32 => match token {
624 '0'..='9' | 'A'..='F' | 'a'..='f' => 207u32,
625 _ => return false,
626 },
627 28u32 => match token {
628 '!'
629 | '$'
630 | '&'..='.'
631 | '0'..='9'
632 | ';'
633 | '='
634 | 'A'..='Z'
635 | '_'
636 | 'a'..='z'
637 | '~'
638 | '\u{a0}'..='\u{d7ff}'
639 | '豈'..='﷏'
640 | 'ﷰ'..='\u{ffef}'
641 | '𐀀'..='\u{1fffd}'
642 | '𠀀'..='\u{2fffd}'
643 | '𰀀'..='\u{3fffd}'
644 | '\u{40000}'..='\u{4fffd}'
645 | '\u{50000}'..='\u{5fffd}'
646 | '\u{60000}'..='\u{6fffd}'
647 | '\u{70000}'..='\u{7fffd}'
648 | '\u{80000}'..='\u{8fffd}'
649 | '\u{90000}'..='\u{9fffd}'
650 | '\u{a0000}'..='\u{afffd}'
651 | '\u{b0000}'..='\u{bfffd}'
652 | '\u{c0000}'..='\u{cfffd}'
653 | '\u{d0000}'..='\u{dfffd}'
654 | '\u{e1000}'..='\u{efffd}' => 28u32,
655 '#' => 4u32,
656 '%' => 29u32,
657 '/' => 3u32,
658 ':' => 34u32,
659 '?' => 7u32,
660 _ => return false,
661 },
662 29u32 => match token {
663 '0'..='9' | 'A'..='F' | 'a'..='f' => 38u32,
664 _ => return false,
665 },
666 30u32 => match token {
667 '!'
668 | '$'
669 | '&'..='-'
670 | '0'..='9'
671 | ';'
672 | '='
673 | 'A'..='Z'
674 | '_'
675 | 'a'..='z'
676 | '~'
677 | '\u{a0}'..='\u{d7ff}'
678 | '豈'..='﷏'
679 | 'ﷰ'..='\u{ffef}'
680 | '𐀀'..='\u{1fffd}'
681 | '𠀀'..='\u{2fffd}'
682 | '𰀀'..='\u{3fffd}'
683 | '\u{40000}'..='\u{4fffd}'
684 | '\u{50000}'..='\u{5fffd}'
685 | '\u{60000}'..='\u{6fffd}'
686 | '\u{70000}'..='\u{7fffd}'
687 | '\u{80000}'..='\u{8fffd}'
688 | '\u{90000}'..='\u{9fffd}'
689 | '\u{a0000}'..='\u{afffd}'
690 | '\u{b0000}'..='\u{bfffd}'
691 | '\u{c0000}'..='\u{cfffd}'
692 | '\u{d0000}'..='\u{dfffd}'
693 | '\u{e1000}'..='\u{efffd}' => 28u32,
694 '#' => 4u32,
695 '%' => 29u32,
696 '.' => 39u32,
697 '/' => 3u32,
698 ':' => 34u32,
699 '?' => 7u32,
700 _ => return false,
701 },
702 31u32 => match token {
703 '!'
704 | '$'
705 | '&'..='-'
706 | ';'
707 | '='
708 | 'A'..='Z'
709 | '_'
710 | 'a'..='z'
711 | '~'
712 | '\u{a0}'..='\u{d7ff}'
713 | '豈'..='﷏'
714 | 'ﷰ'..='\u{ffef}'
715 | '𐀀'..='\u{1fffd}'
716 | '𠀀'..='\u{2fffd}'
717 | '𰀀'..='\u{3fffd}'
718 | '\u{40000}'..='\u{4fffd}'
719 | '\u{50000}'..='\u{5fffd}'
720 | '\u{60000}'..='\u{6fffd}'
721 | '\u{70000}'..='\u{7fffd}'
722 | '\u{80000}'..='\u{8fffd}'
723 | '\u{90000}'..='\u{9fffd}'
724 | '\u{a0000}'..='\u{afffd}'
725 | '\u{b0000}'..='\u{bfffd}'
726 | '\u{c0000}'..='\u{cfffd}'
727 | '\u{d0000}'..='\u{dfffd}'
728 | '\u{e1000}'..='\u{efffd}' => 28u32,
729 '#' => 4u32,
730 '%' => 29u32,
731 '.' => 39u32,
732 '/' => 3u32,
733 '0'..='9' => 33u32,
734 ':' => 34u32,
735 '?' => 7u32,
736 _ => return false,
737 },
738 32u32 => match token {
739 '!'
740 | '$'
741 | '&'..='-'
742 | ';'
743 | '='
744 | 'A'..='Z'
745 | '_'
746 | 'a'..='z'
747 | '~'
748 | '\u{a0}'..='\u{d7ff}'
749 | '豈'..='﷏'
750 | 'ﷰ'..='\u{ffef}'
751 | '𐀀'..='\u{1fffd}'
752 | '𠀀'..='\u{2fffd}'
753 | '𰀀'..='\u{3fffd}'
754 | '\u{40000}'..='\u{4fffd}'
755 | '\u{50000}'..='\u{5fffd}'
756 | '\u{60000}'..='\u{6fffd}'
757 | '\u{70000}'..='\u{7fffd}'
758 | '\u{80000}'..='\u{8fffd}'
759 | '\u{90000}'..='\u{9fffd}'
760 | '\u{a0000}'..='\u{afffd}'
761 | '\u{b0000}'..='\u{bfffd}'
762 | '\u{c0000}'..='\u{cfffd}'
763 | '\u{d0000}'..='\u{dfffd}'
764 | '\u{e1000}'..='\u{efffd}' => 28u32,
765 '#' => 4u32,
766 '%' => 29u32,
767 '.' => 39u32,
768 '/' => 3u32,
769 '0'..='4' => 33u32,
770 '5' => 40u32,
771 '6'..='9' => 30u32,
772 ':' => 34u32,
773 '?' => 7u32,
774 _ => return false,
775 },
776 33u32 => match token {
777 '!'
778 | '$'
779 | '&'..='-'
780 | ';'
781 | '='
782 | 'A'..='Z'
783 | '_'
784 | 'a'..='z'
785 | '~'
786 | '\u{a0}'..='\u{d7ff}'
787 | '豈'..='﷏'
788 | 'ﷰ'..='\u{ffef}'
789 | '𐀀'..='\u{1fffd}'
790 | '𠀀'..='\u{2fffd}'
791 | '𰀀'..='\u{3fffd}'
792 | '\u{40000}'..='\u{4fffd}'
793 | '\u{50000}'..='\u{5fffd}'
794 | '\u{60000}'..='\u{6fffd}'
795 | '\u{70000}'..='\u{7fffd}'
796 | '\u{80000}'..='\u{8fffd}'
797 | '\u{90000}'..='\u{9fffd}'
798 | '\u{a0000}'..='\u{afffd}'
799 | '\u{b0000}'..='\u{bfffd}'
800 | '\u{c0000}'..='\u{cfffd}'
801 | '\u{d0000}'..='\u{dfffd}'
802 | '\u{e1000}'..='\u{efffd}' => 28u32,
803 '#' => 4u32,
804 '%' => 29u32,
805 '.' => 39u32,
806 '/' => 3u32,
807 '0'..='9' => 30u32,
808 ':' => 34u32,
809 '?' => 7u32,
810 _ => return false,
811 },
812 34u32 => match token {
813 '#' => 4u32,
814 '/' => 3u32,
815 '0'..='9' => 34u32,
816 '?' => 7u32,
817 _ => return false,
818 },
819 35u32 => match token {
820 '0'..='9' | 'A'..='F' | 'a'..='f' => 41u32,
821 ':' => 42u32,
822 _ => return false,
823 },
824 36u32 => match token {
825 ':' => 43u32,
826 _ => return false,
827 },
828 37u32 => match token {
829 '0'..='9' | 'A'..='F' | 'a'..='f' => 44u32,
830 _ => return false,
831 },
832 38u32 => match token {
833 '0'..='9' | 'A'..='F' | 'a'..='f' => 28u32,
834 _ => return false,
835 },
836 39u32 => match token {
837 '!'
838 | '$'
839 | '&'..='.'
840 | ';'
841 | '='
842 | 'A'..='Z'
843 | '_'
844 | 'a'..='z'
845 | '~'
846 | '\u{a0}'..='\u{d7ff}'
847 | '豈'..='﷏'
848 | 'ﷰ'..='\u{ffef}'
849 | '𐀀'..='\u{1fffd}'
850 | '𠀀'..='\u{2fffd}'
851 | '𰀀'..='\u{3fffd}'
852 | '\u{40000}'..='\u{4fffd}'
853 | '\u{50000}'..='\u{5fffd}'
854 | '\u{60000}'..='\u{6fffd}'
855 | '\u{70000}'..='\u{7fffd}'
856 | '\u{80000}'..='\u{8fffd}'
857 | '\u{90000}'..='\u{9fffd}'
858 | '\u{a0000}'..='\u{afffd}'
859 | '\u{b0000}'..='\u{bfffd}'
860 | '\u{c0000}'..='\u{cfffd}'
861 | '\u{d0000}'..='\u{dfffd}'
862 | '\u{e1000}'..='\u{efffd}' => 28u32,
863 '#' => 4u32,
864 '%' => 29u32,
865 '/' => 3u32,
866 '0' => 193u32,
867 '1' => 194u32,
868 '2' => 195u32,
869 '3'..='9' => 196u32,
870 ':' => 34u32,
871 '?' => 7u32,
872 _ => return false,
873 },
874 40u32 => match token {
875 '!'
876 | '$'
877 | '&'..='-'
878 | '6'..='9'
879 | ';'
880 | '='
881 | 'A'..='Z'
882 | '_'
883 | 'a'..='z'
884 | '~'
885 | '\u{a0}'..='\u{d7ff}'
886 | '豈'..='﷏'
887 | 'ﷰ'..='\u{ffef}'
888 | '𐀀'..='\u{1fffd}'
889 | '𠀀'..='\u{2fffd}'
890 | '𰀀'..='\u{3fffd}'
891 | '\u{40000}'..='\u{4fffd}'
892 | '\u{50000}'..='\u{5fffd}'
893 | '\u{60000}'..='\u{6fffd}'
894 | '\u{70000}'..='\u{7fffd}'
895 | '\u{80000}'..='\u{8fffd}'
896 | '\u{90000}'..='\u{9fffd}'
897 | '\u{a0000}'..='\u{afffd}'
898 | '\u{b0000}'..='\u{bfffd}'
899 | '\u{c0000}'..='\u{cfffd}'
900 | '\u{d0000}'..='\u{dfffd}'
901 | '\u{e1000}'..='\u{efffd}' => 28u32,
902 '#' => 4u32,
903 '%' => 29u32,
904 '.' => 39u32,
905 '/' => 3u32,
906 '0'..='5' => 30u32,
907 ':' => 34u32,
908 '?' => 7u32,
909 _ => return false,
910 },
911 41u32 => match token {
912 '0'..='9' | 'A'..='F' | 'a'..='f' => 48u32,
913 ':' => 42u32,
914 _ => return false,
915 },
916 42u32 => match token {
917 '0'..='9' | 'A'..='F' | 'a'..='f' => 49u32,
918 ':' => 50u32,
919 _ => return false,
920 },
921 43u32 => match token {
922 '0' => 180u32,
923 '1' => 181u32,
924 '2' => 182u32,
925 '3'..='9' => 183u32,
926 'A'..='F' | 'a'..='f' => 184u32,
927 ']' => 47u32,
928 _ => return false,
929 },
930 44u32 => match token {
931 '.' => 45u32,
932 '0'..='9' | 'A'..='F' | 'a'..='f' => 44u32,
933 _ => return false,
934 },
935 45u32 => match token {
936 '!' | '$' | '&'..='.' | '0'..=';' | '=' | 'A'..='Z' | '_' | 'a'..='z' | '~' => {
937 46u32
938 }
939 _ => return false,
940 },
941 46u32 => match token {
942 '!' | '$' | '&'..='.' | '0'..=';' | '=' | 'A'..='Z' | '_' | 'a'..='z' | '~' => {
943 46u32
944 }
945 ']' => 47u32,
946 _ => return false,
947 },
948 47u32 => match token {
949 '#' => 4u32,
950 '/' => 3u32,
951 ':' => 34u32,
952 '?' => 7u32,
953 _ => return false,
954 },
955 48u32 => match token {
956 '0'..='9' | 'A'..='F' | 'a'..='f' => 51u32,
957 ':' => 42u32,
958 _ => return false,
959 },
960 49u32 => match token {
961 '0'..='9' | 'A'..='F' | 'a'..='f' => 52u32,
962 ':' => 53u32,
963 _ => return false,
964 },
965 50u32 => match token {
966 '0' => 54u32,
967 '1' => 55u32,
968 '2' => 56u32,
969 '3'..='9' => 57u32,
970 'A'..='F' | 'a'..='f' => 58u32,
971 ']' => 47u32,
972 _ => return false,
973 },
974 51u32 => match token {
975 ':' => 42u32,
976 _ => return false,
977 },
978 52u32 => match token {
979 '0'..='9' | 'A'..='F' | 'a'..='f' => 59u32,
980 ':' => 53u32,
981 _ => return false,
982 },
983 53u32 => match token {
984 '0'..='9' | 'A'..='F' | 'a'..='f' => 60u32,
985 ':' => 61u32,
986 _ => return false,
987 },
988 54u32 => match token {
989 '.' => 111u32,
990 '0'..='9' | 'A'..='F' | 'a'..='f' => 172u32,
991 ':' => 173u32,
992 ']' => 47u32,
993 _ => return false,
994 },
995 55u32 => match token {
996 '.' => 111u32,
997 '0'..='9' => 174u32,
998 ':' => 173u32,
999 'A'..='F' | 'a'..='f' => 172u32,
1000 ']' => 47u32,
1001 _ => return false,
1002 },
1003 56u32 => match token {
1004 '.' => 111u32,
1005 '0'..='4' => 174u32,
1006 '5' => 175u32,
1007 '6'..='9' => 176u32,
1008 ':' => 173u32,
1009 'A'..='F' | 'a'..='f' => 172u32,
1010 ']' => 47u32,
1011 _ => return false,
1012 },
1013 57u32 => match token {
1014 '.' => 111u32,
1015 '0'..='9' => 176u32,
1016 ':' => 173u32,
1017 'A'..='F' | 'a'..='f' => 172u32,
1018 ']' => 47u32,
1019 _ => return false,
1020 },
1021 58u32 => match token {
1022 '0'..='9' | 'A'..='F' | 'a'..='f' => 172u32,
1023 ':' => 173u32,
1024 ']' => 47u32,
1025 _ => return false,
1026 },
1027 59u32 => match token {
1028 '0'..='9' | 'A'..='F' | 'a'..='f' => 62u32,
1029 ':' => 53u32,
1030 _ => return false,
1031 },
1032 60u32 => match token {
1033 '0'..='9' | 'A'..='F' | 'a'..='f' => 63u32,
1034 ':' => 64u32,
1035 _ => return false,
1036 },
1037 61u32 => match token {
1038 '0' => 65u32,
1039 '1' => 66u32,
1040 '2' => 67u32,
1041 '3'..='9' => 68u32,
1042 'A'..='F' | 'a'..='f' => 69u32,
1043 ']' => 47u32,
1044 _ => return false,
1045 },
1046 62u32 => match token {
1047 ':' => 53u32,
1048 _ => return false,
1049 },
1050 63u32 => match token {
1051 '0'..='9' | 'A'..='F' | 'a'..='f' => 70u32,
1052 ':' => 64u32,
1053 _ => return false,
1054 },
1055 64u32 => match token {
1056 '0'..='9' | 'A'..='F' | 'a'..='f' => 71u32,
1057 ':' => 72u32,
1058 _ => return false,
1059 },
1060 65u32 => match token {
1061 '.' => 111u32,
1062 '0'..='9' | 'A'..='F' | 'a'..='f' => 164u32,
1063 ':' => 165u32,
1064 ']' => 47u32,
1065 _ => return false,
1066 },
1067 66u32 => match token {
1068 '.' => 111u32,
1069 '0'..='9' => 166u32,
1070 ':' => 165u32,
1071 'A'..='F' | 'a'..='f' => 164u32,
1072 ']' => 47u32,
1073 _ => return false,
1074 },
1075 67u32 => match token {
1076 '.' => 111u32,
1077 '0'..='4' => 166u32,
1078 '5' => 167u32,
1079 '6'..='9' => 168u32,
1080 ':' => 165u32,
1081 'A'..='F' | 'a'..='f' => 164u32,
1082 ']' => 47u32,
1083 _ => return false,
1084 },
1085 68u32 => match token {
1086 '.' => 111u32,
1087 '0'..='9' => 168u32,
1088 ':' => 165u32,
1089 'A'..='F' | 'a'..='f' => 164u32,
1090 ']' => 47u32,
1091 _ => return false,
1092 },
1093 69u32 => match token {
1094 '0'..='9' | 'A'..='F' | 'a'..='f' => 164u32,
1095 ':' => 165u32,
1096 ']' => 47u32,
1097 _ => return false,
1098 },
1099 70u32 => match token {
1100 '0'..='9' | 'A'..='F' | 'a'..='f' => 73u32,
1101 ':' => 64u32,
1102 _ => return false,
1103 },
1104 71u32 => match token {
1105 '0'..='9' | 'A'..='F' | 'a'..='f' => 74u32,
1106 ':' => 75u32,
1107 _ => return false,
1108 },
1109 72u32 => match token {
1110 '0' => 76u32,
1111 '1' => 77u32,
1112 '2' => 78u32,
1113 '3'..='9' => 79u32,
1114 'A'..='F' | 'a'..='f' => 80u32,
1115 ']' => 47u32,
1116 _ => return false,
1117 },
1118 73u32 => match token {
1119 ':' => 64u32,
1120 _ => return false,
1121 },
1122 74u32 => match token {
1123 '0'..='9' | 'A'..='F' | 'a'..='f' => 81u32,
1124 ':' => 75u32,
1125 _ => return false,
1126 },
1127 75u32 => match token {
1128 '0'..='9' | 'A'..='F' | 'a'..='f' => 82u32,
1129 ':' => 83u32,
1130 _ => return false,
1131 },
1132 76u32 => match token {
1133 '.' => 111u32,
1134 '0'..='9' | 'A'..='F' | 'a'..='f' => 156u32,
1135 ':' => 157u32,
1136 ']' => 47u32,
1137 _ => return false,
1138 },
1139 77u32 => match token {
1140 '.' => 111u32,
1141 '0'..='9' => 158u32,
1142 ':' => 157u32,
1143 'A'..='F' | 'a'..='f' => 156u32,
1144 ']' => 47u32,
1145 _ => return false,
1146 },
1147 78u32 => match token {
1148 '.' => 111u32,
1149 '0'..='4' => 158u32,
1150 '5' => 159u32,
1151 '6'..='9' => 160u32,
1152 ':' => 157u32,
1153 'A'..='F' | 'a'..='f' => 156u32,
1154 ']' => 47u32,
1155 _ => return false,
1156 },
1157 79u32 => match token {
1158 '.' => 111u32,
1159 '0'..='9' => 160u32,
1160 ':' => 157u32,
1161 'A'..='F' | 'a'..='f' => 156u32,
1162 ']' => 47u32,
1163 _ => return false,
1164 },
1165 80u32 => match token {
1166 '0'..='9' | 'A'..='F' | 'a'..='f' => 156u32,
1167 ':' => 157u32,
1168 ']' => 47u32,
1169 _ => return false,
1170 },
1171 81u32 => match token {
1172 '0'..='9' | 'A'..='F' | 'a'..='f' => 84u32,
1173 ':' => 75u32,
1174 _ => return false,
1175 },
1176 82u32 => match token {
1177 '0'..='9' | 'A'..='F' | 'a'..='f' => 85u32,
1178 ':' => 86u32,
1179 _ => return false,
1180 },
1181 83u32 => match token {
1182 '0' => 87u32,
1183 '1' => 88u32,
1184 '2' => 89u32,
1185 '3'..='9' => 90u32,
1186 'A'..='F' | 'a'..='f' => 91u32,
1187 ']' => 47u32,
1188 _ => return false,
1189 },
1190 84u32 => match token {
1191 ':' => 75u32,
1192 _ => return false,
1193 },
1194 85u32 => match token {
1195 '0'..='9' | 'A'..='F' | 'a'..='f' => 92u32,
1196 ':' => 86u32,
1197 _ => return false,
1198 },
1199 86u32 => match token {
1200 '0'..='9' | 'A'..='F' | 'a'..='f' => 93u32,
1201 ':' => 94u32,
1202 _ => return false,
1203 },
1204 87u32 => match token {
1205 '.' => 111u32,
1206 '0'..='9' | 'A'..='F' | 'a'..='f' => 148u32,
1207 ':' => 149u32,
1208 ']' => 47u32,
1209 _ => return false,
1210 },
1211 88u32 => match token {
1212 '.' => 111u32,
1213 '0'..='9' => 150u32,
1214 ':' => 149u32,
1215 'A'..='F' | 'a'..='f' => 148u32,
1216 ']' => 47u32,
1217 _ => return false,
1218 },
1219 89u32 => match token {
1220 '.' => 111u32,
1221 '0'..='4' => 150u32,
1222 '5' => 151u32,
1223 '6'..='9' => 152u32,
1224 ':' => 149u32,
1225 'A'..='F' | 'a'..='f' => 148u32,
1226 ']' => 47u32,
1227 _ => return false,
1228 },
1229 90u32 => match token {
1230 '.' => 111u32,
1231 '0'..='9' => 152u32,
1232 ':' => 149u32,
1233 'A'..='F' | 'a'..='f' => 148u32,
1234 ']' => 47u32,
1235 _ => return false,
1236 },
1237 91u32 => match token {
1238 '0'..='9' | 'A'..='F' | 'a'..='f' => 148u32,
1239 ':' => 149u32,
1240 ']' => 47u32,
1241 _ => return false,
1242 },
1243 92u32 => match token {
1244 '0'..='9' | 'A'..='F' | 'a'..='f' => 95u32,
1245 ':' => 86u32,
1246 _ => return false,
1247 },
1248 93u32 => match token {
1249 '0'..='9' | 'A'..='F' | 'a'..='f' => 96u32,
1250 ':' => 97u32,
1251 _ => return false,
1252 },
1253 94u32 => match token {
1254 '0' => 98u32,
1255 '1' => 99u32,
1256 '2' => 100u32,
1257 '3'..='9' => 101u32,
1258 'A'..='F' | 'a'..='f' => 102u32,
1259 ']' => 47u32,
1260 _ => return false,
1261 },
1262 95u32 => match token {
1263 ':' => 86u32,
1264 _ => return false,
1265 },
1266 96u32 => match token {
1267 '0'..='9' | 'A'..='F' | 'a'..='f' => 103u32,
1268 ':' => 97u32,
1269 _ => return false,
1270 },
1271 97u32 => match token {
1272 '0' => 104u32,
1273 '1' => 105u32,
1274 '2' => 106u32,
1275 '3'..='9' => 107u32,
1276 ':' => 108u32,
1277 'A'..='F' | 'a'..='f' => 109u32,
1278 _ => return false,
1279 },
1280 98u32 => match token {
1281 '.' => 111u32,
1282 '0'..='9' | 'A'..='F' | 'a'..='f' => 140u32,
1283 ':' => 141u32,
1284 ']' => 47u32,
1285 _ => return false,
1286 },
1287 99u32 => match token {
1288 '.' => 111u32,
1289 '0'..='9' => 142u32,
1290 ':' => 141u32,
1291 'A'..='F' | 'a'..='f' => 140u32,
1292 ']' => 47u32,
1293 _ => return false,
1294 },
1295 100u32 => match token {
1296 '.' => 111u32,
1297 '0'..='4' => 142u32,
1298 '5' => 143u32,
1299 '6'..='9' => 144u32,
1300 ':' => 141u32,
1301 'A'..='F' | 'a'..='f' => 140u32,
1302 ']' => 47u32,
1303 _ => return false,
1304 },
1305 101u32 => match token {
1306 '.' => 111u32,
1307 '0'..='9' => 144u32,
1308 ':' => 141u32,
1309 'A'..='F' | 'a'..='f' => 140u32,
1310 ']' => 47u32,
1311 _ => return false,
1312 },
1313 102u32 => match token {
1314 '0'..='9' | 'A'..='F' | 'a'..='f' => 140u32,
1315 ':' => 141u32,
1316 ']' => 47u32,
1317 _ => return false,
1318 },
1319 103u32 => match token {
1320 '0'..='9' | 'A'..='F' | 'a'..='f' => 110u32,
1321 ':' => 97u32,
1322 _ => return false,
1323 },
1324 104u32 => match token {
1325 '.' => 111u32,
1326 '0'..='9' | 'A'..='F' | 'a'..='f' => 112u32,
1327 ':' => 113u32,
1328 _ => return false,
1329 },
1330 105u32 => match token {
1331 '.' => 111u32,
1332 '0'..='9' => 114u32,
1333 ':' => 113u32,
1334 'A'..='F' | 'a'..='f' => 112u32,
1335 _ => return false,
1336 },
1337 106u32 => match token {
1338 '.' => 111u32,
1339 '0'..='4' => 114u32,
1340 '5' => 115u32,
1341 '6'..='9' => 116u32,
1342 ':' => 113u32,
1343 'A'..='F' | 'a'..='f' => 112u32,
1344 _ => return false,
1345 },
1346 107u32 => match token {
1347 '.' => 111u32,
1348 '0'..='9' => 116u32,
1349 ':' => 113u32,
1350 'A'..='F' | 'a'..='f' => 112u32,
1351 _ => return false,
1352 },
1353 108u32 => match token {
1354 '0'..='9' | 'A'..='F' | 'a'..='f' => 117u32,
1355 ']' => 47u32,
1356 _ => return false,
1357 },
1358 109u32 => match token {
1359 '0'..='9' | 'A'..='F' | 'a'..='f' => 112u32,
1360 ':' => 113u32,
1361 _ => return false,
1362 },
1363 110u32 => match token {
1364 ':' => 97u32,
1365 _ => return false,
1366 },
1367 111u32 => match token {
1368 '0' => 123u32,
1369 '1' => 124u32,
1370 '2' => 125u32,
1371 '3'..='9' => 126u32,
1372 _ => return false,
1373 },
1374 112u32 => match token {
1375 '0'..='9' | 'A'..='F' | 'a'..='f' => 118u32,
1376 ':' => 113u32,
1377 _ => return false,
1378 },
1379 113u32 => match token {
1380 '0'..='9' | 'A'..='F' | 'a'..='f' => 117u32,
1381 ':' => 119u32,
1382 _ => return false,
1383 },
1384 114u32 => match token {
1385 '.' => 111u32,
1386 '0'..='9' => 139u32,
1387 ':' => 113u32,
1388 'A'..='F' | 'a'..='f' => 118u32,
1389 _ => return false,
1390 },
1391 115u32 => match token {
1392 '.' => 111u32,
1393 '0'..='5' => 139u32,
1394 '6'..='9' | 'A'..='F' | 'a'..='f' => 118u32,
1395 ':' => 113u32,
1396 _ => return false,
1397 },
1398 116u32 => match token {
1399 '.' => 111u32,
1400 '0'..='9' | 'A'..='F' | 'a'..='f' => 118u32,
1401 ':' => 113u32,
1402 _ => return false,
1403 },
1404 117u32 => match token {
1405 '0'..='9' | 'A'..='F' | 'a'..='f' => 121u32,
1406 ']' => 47u32,
1407 _ => return false,
1408 },
1409 118u32 => match token {
1410 '0'..='9' | 'A'..='F' | 'a'..='f' => 120u32,
1411 ':' => 113u32,
1412 _ => return false,
1413 },
1414 119u32 => match token {
1415 ']' => 47u32,
1416 _ => return false,
1417 },
1418 120u32 => match token {
1419 ':' => 113u32,
1420 _ => return false,
1421 },
1422 121u32 => match token {
1423 '0'..='9' | 'A'..='F' | 'a'..='f' => 122u32,
1424 ']' => 47u32,
1425 _ => return false,
1426 },
1427 122u32 => match token {
1428 '0'..='9' | 'A'..='F' | 'a'..='f' => 119u32,
1429 ']' => 47u32,
1430 _ => return false,
1431 },
1432 123u32 => match token {
1433 '.' => 127u32,
1434 _ => return false,
1435 },
1436 124u32 => match token {
1437 '.' => 127u32,
1438 '0'..='9' => 126u32,
1439 _ => return false,
1440 },
1441 125u32 => match token {
1442 '.' => 127u32,
1443 '0'..='4' => 126u32,
1444 '5' => 128u32,
1445 '6'..='9' => 123u32,
1446 _ => return false,
1447 },
1448 126u32 => match token {
1449 '.' => 127u32,
1450 '0'..='9' => 123u32,
1451 _ => return false,
1452 },
1453 127u32 => match token {
1454 '0' => 129u32,
1455 '1' => 130u32,
1456 '2' => 131u32,
1457 '3'..='9' => 132u32,
1458 _ => return false,
1459 },
1460 128u32 => match token {
1461 '.' => 127u32,
1462 '0'..='5' => 123u32,
1463 _ => return false,
1464 },
1465 129u32 => match token {
1466 '.' => 133u32,
1467 _ => return false,
1468 },
1469 130u32 => match token {
1470 '.' => 133u32,
1471 '0'..='9' => 132u32,
1472 _ => return false,
1473 },
1474 131u32 => match token {
1475 '.' => 133u32,
1476 '0'..='4' => 132u32,
1477 '5' => 134u32,
1478 '6'..='9' => 129u32,
1479 _ => return false,
1480 },
1481 132u32 => match token {
1482 '.' => 133u32,
1483 '0'..='9' => 129u32,
1484 _ => return false,
1485 },
1486 133u32 => match token {
1487 '0' => 119u32,
1488 '1' => 135u32,
1489 '2' => 136u32,
1490 '3'..='9' => 137u32,
1491 _ => return false,
1492 },
1493 134u32 => match token {
1494 '.' => 133u32,
1495 '0'..='5' => 129u32,
1496 _ => return false,
1497 },
1498 135u32 => match token {
1499 '0'..='9' => 137u32,
1500 ']' => 47u32,
1501 _ => return false,
1502 },
1503 136u32 => match token {
1504 '0'..='4' => 137u32,
1505 '5' => 138u32,
1506 '6'..='9' => 119u32,
1507 ']' => 47u32,
1508 _ => return false,
1509 },
1510 137u32 => match token {
1511 '0'..='9' => 119u32,
1512 ']' => 47u32,
1513 _ => return false,
1514 },
1515 138u32 => match token {
1516 '0'..='5' => 119u32,
1517 ']' => 47u32,
1518 _ => return false,
1519 },
1520 139u32 => match token {
1521 '.' => 111u32,
1522 '0'..='9' | 'A'..='F' | 'a'..='f' => 120u32,
1523 ':' => 113u32,
1524 _ => return false,
1525 },
1526 140u32 => match token {
1527 '0'..='9' | 'A'..='F' | 'a'..='f' => 145u32,
1528 ':' => 141u32,
1529 ']' => 47u32,
1530 _ => return false,
1531 },
1532 141u32 => match token {
1533 '0'..='9' | 'A'..='F' | 'a'..='f' => 117u32,
1534 _ => return false,
1535 },
1536 142u32 => match token {
1537 '.' => 111u32,
1538 '0'..='9' => 147u32,
1539 ':' => 141u32,
1540 'A'..='F' | 'a'..='f' => 145u32,
1541 ']' => 47u32,
1542 _ => return false,
1543 },
1544 143u32 => match token {
1545 '.' => 111u32,
1546 '0'..='5' => 147u32,
1547 '6'..='9' | 'A'..='F' | 'a'..='f' => 145u32,
1548 ':' => 141u32,
1549 ']' => 47u32,
1550 _ => return false,
1551 },
1552 144u32 => match token {
1553 '.' => 111u32,
1554 '0'..='9' | 'A'..='F' | 'a'..='f' => 145u32,
1555 ':' => 141u32,
1556 ']' => 47u32,
1557 _ => return false,
1558 },
1559 145u32 => match token {
1560 '0'..='9' | 'A'..='F' | 'a'..='f' => 146u32,
1561 ':' => 141u32,
1562 ']' => 47u32,
1563 _ => return false,
1564 },
1565 146u32 => match token {
1566 ':' => 141u32,
1567 ']' => 47u32,
1568 _ => return false,
1569 },
1570 147u32 => match token {
1571 '.' => 111u32,
1572 '0'..='9' | 'A'..='F' | 'a'..='f' => 146u32,
1573 ':' => 141u32,
1574 ']' => 47u32,
1575 _ => return false,
1576 },
1577 148u32 => match token {
1578 '0'..='9' | 'A'..='F' | 'a'..='f' => 153u32,
1579 ':' => 149u32,
1580 ']' => 47u32,
1581 _ => return false,
1582 },
1583 149u32 => match token {
1584 '0' => 98u32,
1585 '1' => 99u32,
1586 '2' => 100u32,
1587 '3'..='9' => 101u32,
1588 'A'..='F' | 'a'..='f' => 102u32,
1589 _ => return false,
1590 },
1591 150u32 => match token {
1592 '.' => 111u32,
1593 '0'..='9' => 155u32,
1594 ':' => 149u32,
1595 'A'..='F' | 'a'..='f' => 153u32,
1596 ']' => 47u32,
1597 _ => return false,
1598 },
1599 151u32 => match token {
1600 '.' => 111u32,
1601 '0'..='5' => 155u32,
1602 '6'..='9' | 'A'..='F' | 'a'..='f' => 153u32,
1603 ':' => 149u32,
1604 ']' => 47u32,
1605 _ => return false,
1606 },
1607 152u32 => match token {
1608 '.' => 111u32,
1609 '0'..='9' | 'A'..='F' | 'a'..='f' => 153u32,
1610 ':' => 149u32,
1611 ']' => 47u32,
1612 _ => return false,
1613 },
1614 153u32 => match token {
1615 '0'..='9' | 'A'..='F' | 'a'..='f' => 154u32,
1616 ':' => 149u32,
1617 ']' => 47u32,
1618 _ => return false,
1619 },
1620 154u32 => match token {
1621 ':' => 149u32,
1622 ']' => 47u32,
1623 _ => return false,
1624 },
1625 155u32 => match token {
1626 '.' => 111u32,
1627 '0'..='9' | 'A'..='F' | 'a'..='f' => 154u32,
1628 ':' => 149u32,
1629 ']' => 47u32,
1630 _ => return false,
1631 },
1632 156u32 => match token {
1633 '0'..='9' | 'A'..='F' | 'a'..='f' => 161u32,
1634 ':' => 157u32,
1635 ']' => 47u32,
1636 _ => return false,
1637 },
1638 157u32 => match token {
1639 '0' => 87u32,
1640 '1' => 88u32,
1641 '2' => 89u32,
1642 '3'..='9' => 90u32,
1643 'A'..='F' | 'a'..='f' => 91u32,
1644 _ => return false,
1645 },
1646 158u32 => match token {
1647 '.' => 111u32,
1648 '0'..='9' => 163u32,
1649 ':' => 157u32,
1650 'A'..='F' | 'a'..='f' => 161u32,
1651 ']' => 47u32,
1652 _ => return false,
1653 },
1654 159u32 => match token {
1655 '.' => 111u32,
1656 '0'..='5' => 163u32,
1657 '6'..='9' | 'A'..='F' | 'a'..='f' => 161u32,
1658 ':' => 157u32,
1659 ']' => 47u32,
1660 _ => return false,
1661 },
1662 160u32 => match token {
1663 '.' => 111u32,
1664 '0'..='9' | 'A'..='F' | 'a'..='f' => 161u32,
1665 ':' => 157u32,
1666 ']' => 47u32,
1667 _ => return false,
1668 },
1669 161u32 => match token {
1670 '0'..='9' | 'A'..='F' | 'a'..='f' => 162u32,
1671 ':' => 157u32,
1672 ']' => 47u32,
1673 _ => return false,
1674 },
1675 162u32 => match token {
1676 ':' => 157u32,
1677 ']' => 47u32,
1678 _ => return false,
1679 },
1680 163u32 => match token {
1681 '.' => 111u32,
1682 '0'..='9' | 'A'..='F' | 'a'..='f' => 162u32,
1683 ':' => 157u32,
1684 ']' => 47u32,
1685 _ => return false,
1686 },
1687 164u32 => match token {
1688 '0'..='9' | 'A'..='F' | 'a'..='f' => 169u32,
1689 ':' => 165u32,
1690 ']' => 47u32,
1691 _ => return false,
1692 },
1693 165u32 => match token {
1694 '0' => 76u32,
1695 '1' => 77u32,
1696 '2' => 78u32,
1697 '3'..='9' => 79u32,
1698 'A'..='F' | 'a'..='f' => 80u32,
1699 _ => return false,
1700 },
1701 166u32 => match token {
1702 '.' => 111u32,
1703 '0'..='9' => 171u32,
1704 ':' => 165u32,
1705 'A'..='F' | 'a'..='f' => 169u32,
1706 ']' => 47u32,
1707 _ => return false,
1708 },
1709 167u32 => match token {
1710 '.' => 111u32,
1711 '0'..='5' => 171u32,
1712 '6'..='9' | 'A'..='F' | 'a'..='f' => 169u32,
1713 ':' => 165u32,
1714 ']' => 47u32,
1715 _ => return false,
1716 },
1717 168u32 => match token {
1718 '.' => 111u32,
1719 '0'..='9' | 'A'..='F' | 'a'..='f' => 169u32,
1720 ':' => 165u32,
1721 ']' => 47u32,
1722 _ => return false,
1723 },
1724 169u32 => match token {
1725 '0'..='9' | 'A'..='F' | 'a'..='f' => 170u32,
1726 ':' => 165u32,
1727 ']' => 47u32,
1728 _ => return false,
1729 },
1730 170u32 => match token {
1731 ':' => 165u32,
1732 ']' => 47u32,
1733 _ => return false,
1734 },
1735 171u32 => match token {
1736 '.' => 111u32,
1737 '0'..='9' | 'A'..='F' | 'a'..='f' => 170u32,
1738 ':' => 165u32,
1739 ']' => 47u32,
1740 _ => return false,
1741 },
1742 172u32 => match token {
1743 '0'..='9' | 'A'..='F' | 'a'..='f' => 177u32,
1744 ':' => 173u32,
1745 ']' => 47u32,
1746 _ => return false,
1747 },
1748 173u32 => match token {
1749 '0' => 65u32,
1750 '1' => 66u32,
1751 '2' => 67u32,
1752 '3'..='9' => 68u32,
1753 'A'..='F' | 'a'..='f' => 69u32,
1754 _ => return false,
1755 },
1756 174u32 => match token {
1757 '.' => 111u32,
1758 '0'..='9' => 179u32,
1759 ':' => 173u32,
1760 'A'..='F' | 'a'..='f' => 177u32,
1761 ']' => 47u32,
1762 _ => return false,
1763 },
1764 175u32 => match token {
1765 '.' => 111u32,
1766 '0'..='5' => 179u32,
1767 '6'..='9' | 'A'..='F' | 'a'..='f' => 177u32,
1768 ':' => 173u32,
1769 ']' => 47u32,
1770 _ => return false,
1771 },
1772 176u32 => match token {
1773 '.' => 111u32,
1774 '0'..='9' | 'A'..='F' | 'a'..='f' => 177u32,
1775 ':' => 173u32,
1776 ']' => 47u32,
1777 _ => return false,
1778 },
1779 177u32 => match token {
1780 '0'..='9' | 'A'..='F' | 'a'..='f' => 178u32,
1781 ':' => 173u32,
1782 ']' => 47u32,
1783 _ => return false,
1784 },
1785 178u32 => match token {
1786 ':' => 173u32,
1787 ']' => 47u32,
1788 _ => return false,
1789 },
1790 179u32 => match token {
1791 '.' => 111u32,
1792 '0'..='9' | 'A'..='F' | 'a'..='f' => 178u32,
1793 ':' => 173u32,
1794 ']' => 47u32,
1795 _ => return false,
1796 },
1797 180u32 => match token {
1798 '.' => 111u32,
1799 '0'..='9' | 'A'..='F' | 'a'..='f' => 185u32,
1800 ':' => 186u32,
1801 ']' => 47u32,
1802 _ => return false,
1803 },
1804 181u32 => match token {
1805 '.' => 111u32,
1806 '0'..='9' => 187u32,
1807 ':' => 186u32,
1808 'A'..='F' | 'a'..='f' => 185u32,
1809 ']' => 47u32,
1810 _ => return false,
1811 },
1812 182u32 => match token {
1813 '.' => 111u32,
1814 '0'..='4' => 187u32,
1815 '5' => 188u32,
1816 '6'..='9' => 189u32,
1817 ':' => 186u32,
1818 'A'..='F' | 'a'..='f' => 185u32,
1819 ']' => 47u32,
1820 _ => return false,
1821 },
1822 183u32 => match token {
1823 '.' => 111u32,
1824 '0'..='9' => 189u32,
1825 ':' => 186u32,
1826 'A'..='F' | 'a'..='f' => 185u32,
1827 ']' => 47u32,
1828 _ => return false,
1829 },
1830 184u32 => match token {
1831 '0'..='9' | 'A'..='F' | 'a'..='f' => 185u32,
1832 ':' => 186u32,
1833 ']' => 47u32,
1834 _ => return false,
1835 },
1836 185u32 => match token {
1837 '0'..='9' | 'A'..='F' | 'a'..='f' => 190u32,
1838 ':' => 186u32,
1839 ']' => 47u32,
1840 _ => return false,
1841 },
1842 186u32 => match token {
1843 '0' => 54u32,
1844 '1' => 55u32,
1845 '2' => 56u32,
1846 '3'..='9' => 57u32,
1847 'A'..='F' | 'a'..='f' => 58u32,
1848 _ => return false,
1849 },
1850 187u32 => match token {
1851 '.' => 111u32,
1852 '0'..='9' => 192u32,
1853 ':' => 186u32,
1854 'A'..='F' | 'a'..='f' => 190u32,
1855 ']' => 47u32,
1856 _ => return false,
1857 },
1858 188u32 => match token {
1859 '.' => 111u32,
1860 '0'..='5' => 192u32,
1861 '6'..='9' | 'A'..='F' | 'a'..='f' => 190u32,
1862 ':' => 186u32,
1863 ']' => 47u32,
1864 _ => return false,
1865 },
1866 189u32 => match token {
1867 '.' => 111u32,
1868 '0'..='9' | 'A'..='F' | 'a'..='f' => 190u32,
1869 ':' => 186u32,
1870 ']' => 47u32,
1871 _ => return false,
1872 },
1873 190u32 => match token {
1874 '0'..='9' | 'A'..='F' | 'a'..='f' => 191u32,
1875 ':' => 186u32,
1876 ']' => 47u32,
1877 _ => return false,
1878 },
1879 191u32 => match token {
1880 ':' => 186u32,
1881 ']' => 47u32,
1882 _ => return false,
1883 },
1884 192u32 => match token {
1885 '.' => 111u32,
1886 '0'..='9' | 'A'..='F' | 'a'..='f' => 191u32,
1887 ':' => 186u32,
1888 ']' => 47u32,
1889 _ => return false,
1890 },
1891 193u32 => match token {
1892 '!'
1893 | '$'
1894 | '&'..='-'
1895 | '0'..='9'
1896 | ';'
1897 | '='
1898 | 'A'..='Z'
1899 | '_'
1900 | 'a'..='z'
1901 | '~'
1902 | '\u{a0}'..='\u{d7ff}'
1903 | '豈'..='﷏'
1904 | 'ﷰ'..='\u{ffef}'
1905 | '𐀀'..='\u{1fffd}'
1906 | '𠀀'..='\u{2fffd}'
1907 | '𰀀'..='\u{3fffd}'
1908 | '\u{40000}'..='\u{4fffd}'
1909 | '\u{50000}'..='\u{5fffd}'
1910 | '\u{60000}'..='\u{6fffd}'
1911 | '\u{70000}'..='\u{7fffd}'
1912 | '\u{80000}'..='\u{8fffd}'
1913 | '\u{90000}'..='\u{9fffd}'
1914 | '\u{a0000}'..='\u{afffd}'
1915 | '\u{b0000}'..='\u{bfffd}'
1916 | '\u{c0000}'..='\u{cfffd}'
1917 | '\u{d0000}'..='\u{dfffd}'
1918 | '\u{e1000}'..='\u{efffd}' => 28u32,
1919 '#' => 4u32,
1920 '%' => 29u32,
1921 '.' => 197u32,
1922 '/' => 3u32,
1923 ':' => 34u32,
1924 '?' => 7u32,
1925 _ => return false,
1926 },
1927 194u32 => match token {
1928 '!'
1929 | '$'
1930 | '&'..='-'
1931 | ';'
1932 | '='
1933 | 'A'..='Z'
1934 | '_'
1935 | 'a'..='z'
1936 | '~'
1937 | '\u{a0}'..='\u{d7ff}'
1938 | '豈'..='﷏'
1939 | 'ﷰ'..='\u{ffef}'
1940 | '𐀀'..='\u{1fffd}'
1941 | '𠀀'..='\u{2fffd}'
1942 | '𰀀'..='\u{3fffd}'
1943 | '\u{40000}'..='\u{4fffd}'
1944 | '\u{50000}'..='\u{5fffd}'
1945 | '\u{60000}'..='\u{6fffd}'
1946 | '\u{70000}'..='\u{7fffd}'
1947 | '\u{80000}'..='\u{8fffd}'
1948 | '\u{90000}'..='\u{9fffd}'
1949 | '\u{a0000}'..='\u{afffd}'
1950 | '\u{b0000}'..='\u{bfffd}'
1951 | '\u{c0000}'..='\u{cfffd}'
1952 | '\u{d0000}'..='\u{dfffd}'
1953 | '\u{e1000}'..='\u{efffd}' => 28u32,
1954 '#' => 4u32,
1955 '%' => 29u32,
1956 '.' => 197u32,
1957 '/' => 3u32,
1958 '0'..='9' => 196u32,
1959 ':' => 34u32,
1960 '?' => 7u32,
1961 _ => return false,
1962 },
1963 195u32 => match token {
1964 '!'
1965 | '$'
1966 | '&'..='-'
1967 | ';'
1968 | '='
1969 | 'A'..='Z'
1970 | '_'
1971 | 'a'..='z'
1972 | '~'
1973 | '\u{a0}'..='\u{d7ff}'
1974 | '豈'..='﷏'
1975 | 'ﷰ'..='\u{ffef}'
1976 | '𐀀'..='\u{1fffd}'
1977 | '𠀀'..='\u{2fffd}'
1978 | '𰀀'..='\u{3fffd}'
1979 | '\u{40000}'..='\u{4fffd}'
1980 | '\u{50000}'..='\u{5fffd}'
1981 | '\u{60000}'..='\u{6fffd}'
1982 | '\u{70000}'..='\u{7fffd}'
1983 | '\u{80000}'..='\u{8fffd}'
1984 | '\u{90000}'..='\u{9fffd}'
1985 | '\u{a0000}'..='\u{afffd}'
1986 | '\u{b0000}'..='\u{bfffd}'
1987 | '\u{c0000}'..='\u{cfffd}'
1988 | '\u{d0000}'..='\u{dfffd}'
1989 | '\u{e1000}'..='\u{efffd}' => 28u32,
1990 '#' => 4u32,
1991 '%' => 29u32,
1992 '.' => 197u32,
1993 '/' => 3u32,
1994 '0'..='4' => 196u32,
1995 '5' => 198u32,
1996 '6'..='9' => 193u32,
1997 ':' => 34u32,
1998 '?' => 7u32,
1999 _ => return false,
2000 },
2001 196u32 => match token {
2002 '!'
2003 | '$'
2004 | '&'..='-'
2005 | ';'
2006 | '='
2007 | 'A'..='Z'
2008 | '_'
2009 | 'a'..='z'
2010 | '~'
2011 | '\u{a0}'..='\u{d7ff}'
2012 | '豈'..='﷏'
2013 | 'ﷰ'..='\u{ffef}'
2014 | '𐀀'..='\u{1fffd}'
2015 | '𠀀'..='\u{2fffd}'
2016 | '𰀀'..='\u{3fffd}'
2017 | '\u{40000}'..='\u{4fffd}'
2018 | '\u{50000}'..='\u{5fffd}'
2019 | '\u{60000}'..='\u{6fffd}'
2020 | '\u{70000}'..='\u{7fffd}'
2021 | '\u{80000}'..='\u{8fffd}'
2022 | '\u{90000}'..='\u{9fffd}'
2023 | '\u{a0000}'..='\u{afffd}'
2024 | '\u{b0000}'..='\u{bfffd}'
2025 | '\u{c0000}'..='\u{cfffd}'
2026 | '\u{d0000}'..='\u{dfffd}'
2027 | '\u{e1000}'..='\u{efffd}' => 28u32,
2028 '#' => 4u32,
2029 '%' => 29u32,
2030 '.' => 197u32,
2031 '/' => 3u32,
2032 '0'..='9' => 193u32,
2033 ':' => 34u32,
2034 '?' => 7u32,
2035 _ => return false,
2036 },
2037 197u32 => match token {
2038 '!'
2039 | '$'
2040 | '&'..='.'
2041 | ';'
2042 | '='
2043 | 'A'..='Z'
2044 | '_'
2045 | 'a'..='z'
2046 | '~'
2047 | '\u{a0}'..='\u{d7ff}'
2048 | '豈'..='﷏'
2049 | 'ﷰ'..='\u{ffef}'
2050 | '𐀀'..='\u{1fffd}'
2051 | '𠀀'..='\u{2fffd}'
2052 | '𰀀'..='\u{3fffd}'
2053 | '\u{40000}'..='\u{4fffd}'
2054 | '\u{50000}'..='\u{5fffd}'
2055 | '\u{60000}'..='\u{6fffd}'
2056 | '\u{70000}'..='\u{7fffd}'
2057 | '\u{80000}'..='\u{8fffd}'
2058 | '\u{90000}'..='\u{9fffd}'
2059 | '\u{a0000}'..='\u{afffd}'
2060 | '\u{b0000}'..='\u{bfffd}'
2061 | '\u{c0000}'..='\u{cfffd}'
2062 | '\u{d0000}'..='\u{dfffd}'
2063 | '\u{e1000}'..='\u{efffd}' => 28u32,
2064 '#' => 4u32,
2065 '%' => 29u32,
2066 '/' => 3u32,
2067 '0' => 199u32,
2068 '1' => 200u32,
2069 '2' => 201u32,
2070 '3'..='9' => 202u32,
2071 ':' => 34u32,
2072 '?' => 7u32,
2073 _ => return false,
2074 },
2075 198u32 => match token {
2076 '!'
2077 | '$'
2078 | '&'..='-'
2079 | '6'..='9'
2080 | ';'
2081 | '='
2082 | 'A'..='Z'
2083 | '_'
2084 | 'a'..='z'
2085 | '~'
2086 | '\u{a0}'..='\u{d7ff}'
2087 | '豈'..='﷏'
2088 | 'ﷰ'..='\u{ffef}'
2089 | '𐀀'..='\u{1fffd}'
2090 | '𠀀'..='\u{2fffd}'
2091 | '𰀀'..='\u{3fffd}'
2092 | '\u{40000}'..='\u{4fffd}'
2093 | '\u{50000}'..='\u{5fffd}'
2094 | '\u{60000}'..='\u{6fffd}'
2095 | '\u{70000}'..='\u{7fffd}'
2096 | '\u{80000}'..='\u{8fffd}'
2097 | '\u{90000}'..='\u{9fffd}'
2098 | '\u{a0000}'..='\u{afffd}'
2099 | '\u{b0000}'..='\u{bfffd}'
2100 | '\u{c0000}'..='\u{cfffd}'
2101 | '\u{d0000}'..='\u{dfffd}'
2102 | '\u{e1000}'..='\u{efffd}' => 28u32,
2103 '#' => 4u32,
2104 '%' => 29u32,
2105 '.' => 197u32,
2106 '/' => 3u32,
2107 '0'..='5' => 193u32,
2108 ':' => 34u32,
2109 '?' => 7u32,
2110 _ => return false,
2111 },
2112 199u32 => match token {
2113 '!'
2114 | '$'
2115 | '&'..='-'
2116 | '0'..='9'
2117 | ';'
2118 | '='
2119 | 'A'..='Z'
2120 | '_'
2121 | 'a'..='z'
2122 | '~'
2123 | '\u{a0}'..='\u{d7ff}'
2124 | '豈'..='﷏'
2125 | 'ﷰ'..='\u{ffef}'
2126 | '𐀀'..='\u{1fffd}'
2127 | '𠀀'..='\u{2fffd}'
2128 | '𰀀'..='\u{3fffd}'
2129 | '\u{40000}'..='\u{4fffd}'
2130 | '\u{50000}'..='\u{5fffd}'
2131 | '\u{60000}'..='\u{6fffd}'
2132 | '\u{70000}'..='\u{7fffd}'
2133 | '\u{80000}'..='\u{8fffd}'
2134 | '\u{90000}'..='\u{9fffd}'
2135 | '\u{a0000}'..='\u{afffd}'
2136 | '\u{b0000}'..='\u{bfffd}'
2137 | '\u{c0000}'..='\u{cfffd}'
2138 | '\u{d0000}'..='\u{dfffd}'
2139 | '\u{e1000}'..='\u{efffd}' => 28u32,
2140 '#' => 4u32,
2141 '%' => 29u32,
2142 '.' => 203u32,
2143 '/' => 3u32,
2144 ':' => 34u32,
2145 '?' => 7u32,
2146 _ => return false,
2147 },
2148 200u32 => match token {
2149 '!'
2150 | '$'
2151 | '&'..='-'
2152 | ';'
2153 | '='
2154 | 'A'..='Z'
2155 | '_'
2156 | 'a'..='z'
2157 | '~'
2158 | '\u{a0}'..='\u{d7ff}'
2159 | '豈'..='﷏'
2160 | 'ﷰ'..='\u{ffef}'
2161 | '𐀀'..='\u{1fffd}'
2162 | '𠀀'..='\u{2fffd}'
2163 | '𰀀'..='\u{3fffd}'
2164 | '\u{40000}'..='\u{4fffd}'
2165 | '\u{50000}'..='\u{5fffd}'
2166 | '\u{60000}'..='\u{6fffd}'
2167 | '\u{70000}'..='\u{7fffd}'
2168 | '\u{80000}'..='\u{8fffd}'
2169 | '\u{90000}'..='\u{9fffd}'
2170 | '\u{a0000}'..='\u{afffd}'
2171 | '\u{b0000}'..='\u{bfffd}'
2172 | '\u{c0000}'..='\u{cfffd}'
2173 | '\u{d0000}'..='\u{dfffd}'
2174 | '\u{e1000}'..='\u{efffd}' => 28u32,
2175 '#' => 4u32,
2176 '%' => 29u32,
2177 '.' => 203u32,
2178 '/' => 3u32,
2179 '0'..='9' => 202u32,
2180 ':' => 34u32,
2181 '?' => 7u32,
2182 _ => return false,
2183 },
2184 201u32 => match token {
2185 '!'
2186 | '$'
2187 | '&'..='-'
2188 | ';'
2189 | '='
2190 | 'A'..='Z'
2191 | '_'
2192 | 'a'..='z'
2193 | '~'
2194 | '\u{a0}'..='\u{d7ff}'
2195 | '豈'..='﷏'
2196 | 'ﷰ'..='\u{ffef}'
2197 | '𐀀'..='\u{1fffd}'
2198 | '𠀀'..='\u{2fffd}'
2199 | '𰀀'..='\u{3fffd}'
2200 | '\u{40000}'..='\u{4fffd}'
2201 | '\u{50000}'..='\u{5fffd}'
2202 | '\u{60000}'..='\u{6fffd}'
2203 | '\u{70000}'..='\u{7fffd}'
2204 | '\u{80000}'..='\u{8fffd}'
2205 | '\u{90000}'..='\u{9fffd}'
2206 | '\u{a0000}'..='\u{afffd}'
2207 | '\u{b0000}'..='\u{bfffd}'
2208 | '\u{c0000}'..='\u{cfffd}'
2209 | '\u{d0000}'..='\u{dfffd}'
2210 | '\u{e1000}'..='\u{efffd}' => 28u32,
2211 '#' => 4u32,
2212 '%' => 29u32,
2213 '.' => 203u32,
2214 '/' => 3u32,
2215 '0'..='4' => 202u32,
2216 '5' => 204u32,
2217 '6'..='9' => 199u32,
2218 ':' => 34u32,
2219 '?' => 7u32,
2220 _ => return false,
2221 },
2222 202u32 => match token {
2223 '!'
2224 | '$'
2225 | '&'..='-'
2226 | ';'
2227 | '='
2228 | 'A'..='Z'
2229 | '_'
2230 | 'a'..='z'
2231 | '~'
2232 | '\u{a0}'..='\u{d7ff}'
2233 | '豈'..='﷏'
2234 | 'ﷰ'..='\u{ffef}'
2235 | '𐀀'..='\u{1fffd}'
2236 | '𠀀'..='\u{2fffd}'
2237 | '𰀀'..='\u{3fffd}'
2238 | '\u{40000}'..='\u{4fffd}'
2239 | '\u{50000}'..='\u{5fffd}'
2240 | '\u{60000}'..='\u{6fffd}'
2241 | '\u{70000}'..='\u{7fffd}'
2242 | '\u{80000}'..='\u{8fffd}'
2243 | '\u{90000}'..='\u{9fffd}'
2244 | '\u{a0000}'..='\u{afffd}'
2245 | '\u{b0000}'..='\u{bfffd}'
2246 | '\u{c0000}'..='\u{cfffd}'
2247 | '\u{d0000}'..='\u{dfffd}'
2248 | '\u{e1000}'..='\u{efffd}' => 28u32,
2249 '#' => 4u32,
2250 '%' => 29u32,
2251 '.' => 203u32,
2252 '/' => 3u32,
2253 '0'..='9' => 199u32,
2254 ':' => 34u32,
2255 '?' => 7u32,
2256 _ => return false,
2257 },
2258 203u32 => match token {
2259 '!'
2260 | '$'
2261 | '&'..='.'
2262 | '0'..='1'
2263 | '3'..='9'
2264 | ';'
2265 | '='
2266 | 'A'..='Z'
2267 | '_'
2268 | 'a'..='z'
2269 | '~'
2270 | '\u{a0}'..='\u{d7ff}'
2271 | '豈'..='﷏'
2272 | 'ﷰ'..='\u{ffef}'
2273 | '𐀀'..='\u{1fffd}'
2274 | '𠀀'..='\u{2fffd}'
2275 | '𰀀'..='\u{3fffd}'
2276 | '\u{40000}'..='\u{4fffd}'
2277 | '\u{50000}'..='\u{5fffd}'
2278 | '\u{60000}'..='\u{6fffd}'
2279 | '\u{70000}'..='\u{7fffd}'
2280 | '\u{80000}'..='\u{8fffd}'
2281 | '\u{90000}'..='\u{9fffd}'
2282 | '\u{a0000}'..='\u{afffd}'
2283 | '\u{b0000}'..='\u{bfffd}'
2284 | '\u{c0000}'..='\u{cfffd}'
2285 | '\u{d0000}'..='\u{dfffd}'
2286 | '\u{e1000}'..='\u{efffd}' => 28u32,
2287 '#' => 4u32,
2288 '%' => 29u32,
2289 '/' => 3u32,
2290 '2' => 205u32,
2291 ':' => 34u32,
2292 '?' => 7u32,
2293 _ => return false,
2294 },
2295 204u32 => match token {
2296 '!'
2297 | '$'
2298 | '&'..='-'
2299 | '6'..='9'
2300 | ';'
2301 | '='
2302 | 'A'..='Z'
2303 | '_'
2304 | 'a'..='z'
2305 | '~'
2306 | '\u{a0}'..='\u{d7ff}'
2307 | '豈'..='﷏'
2308 | 'ﷰ'..='\u{ffef}'
2309 | '𐀀'..='\u{1fffd}'
2310 | '𠀀'..='\u{2fffd}'
2311 | '𰀀'..='\u{3fffd}'
2312 | '\u{40000}'..='\u{4fffd}'
2313 | '\u{50000}'..='\u{5fffd}'
2314 | '\u{60000}'..='\u{6fffd}'
2315 | '\u{70000}'..='\u{7fffd}'
2316 | '\u{80000}'..='\u{8fffd}'
2317 | '\u{90000}'..='\u{9fffd}'
2318 | '\u{a0000}'..='\u{afffd}'
2319 | '\u{b0000}'..='\u{bfffd}'
2320 | '\u{c0000}'..='\u{cfffd}'
2321 | '\u{d0000}'..='\u{dfffd}'
2322 | '\u{e1000}'..='\u{efffd}' => 28u32,
2323 '#' => 4u32,
2324 '%' => 29u32,
2325 '.' => 203u32,
2326 '/' => 3u32,
2327 '0'..='5' => 199u32,
2328 ':' => 34u32,
2329 '?' => 7u32,
2330 _ => return false,
2331 },
2332 205u32 => match token {
2333 '!'
2334 | '$'
2335 | '&'..='.'
2336 | '0'..='4'
2337 | '6'..='9'
2338 | ';'
2339 | '='
2340 | 'A'..='Z'
2341 | '_'
2342 | 'a'..='z'
2343 | '~'
2344 | '\u{a0}'..='\u{d7ff}'
2345 | '豈'..='﷏'
2346 | 'ﷰ'..='\u{ffef}'
2347 | '𐀀'..='\u{1fffd}'
2348 | '𠀀'..='\u{2fffd}'
2349 | '𰀀'..='\u{3fffd}'
2350 | '\u{40000}'..='\u{4fffd}'
2351 | '\u{50000}'..='\u{5fffd}'
2352 | '\u{60000}'..='\u{6fffd}'
2353 | '\u{70000}'..='\u{7fffd}'
2354 | '\u{80000}'..='\u{8fffd}'
2355 | '\u{90000}'..='\u{9fffd}'
2356 | '\u{a0000}'..='\u{afffd}'
2357 | '\u{b0000}'..='\u{bfffd}'
2358 | '\u{c0000}'..='\u{cfffd}'
2359 | '\u{d0000}'..='\u{dfffd}'
2360 | '\u{e1000}'..='\u{efffd}' => 28u32,
2361 '#' => 4u32,
2362 '%' => 29u32,
2363 '/' => 3u32,
2364 '5' => 206u32,
2365 ':' => 34u32,
2366 '?' => 7u32,
2367 _ => return false,
2368 },
2369 206u32 => match token {
2370 '!'
2371 | '$'
2372 | '&'..='.'
2373 | '0'..='9'
2374 | ';'
2375 | '='
2376 | 'A'..='Z'
2377 | '_'
2378 | 'a'..='z'
2379 | '~'
2380 | '\u{a0}'..='\u{d7ff}'
2381 | '豈'..='﷏'
2382 | 'ﷰ'..='\u{ffef}'
2383 | '𐀀'..='\u{1fffd}'
2384 | '𠀀'..='\u{2fffd}'
2385 | '𰀀'..='\u{3fffd}'
2386 | '\u{40000}'..='\u{4fffd}'
2387 | '\u{50000}'..='\u{5fffd}'
2388 | '\u{60000}'..='\u{6fffd}'
2389 | '\u{70000}'..='\u{7fffd}'
2390 | '\u{80000}'..='\u{8fffd}'
2391 | '\u{90000}'..='\u{9fffd}'
2392 | '\u{a0000}'..='\u{afffd}'
2393 | '\u{b0000}'..='\u{bfffd}'
2394 | '\u{c0000}'..='\u{cfffd}'
2395 | '\u{d0000}'..='\u{dfffd}'
2396 | '\u{e1000}'..='\u{efffd}' => 28u32,
2397 '#' => 4u32,
2398 '%' => 29u32,
2399 '/' => 3u32,
2400 ':' => 34u32,
2401 '?' => 7u32,
2402 _ => return false,
2403 },
2404 207u32 => match token {
2405 '0'..='9' | 'A'..='F' | 'a'..='f' => 26u32,
2406 _ => return false,
2407 },
2408 208u32 => match token {
2409 '!'
2410 | '$'
2411 | '&'..='-'
2412 | '0'..='9'
2413 | ';'
2414 | '='
2415 | 'A'..='Z'
2416 | '_'
2417 | 'a'..='z'
2418 | '~'
2419 | '\u{a0}'..='\u{d7ff}'
2420 | '豈'..='﷏'
2421 | 'ﷰ'..='\u{ffef}'
2422 | '𐀀'..='\u{1fffd}'
2423 | '𠀀'..='\u{2fffd}'
2424 | '𰀀'..='\u{3fffd}'
2425 | '\u{40000}'..='\u{4fffd}'
2426 | '\u{50000}'..='\u{5fffd}'
2427 | '\u{60000}'..='\u{6fffd}'
2428 | '\u{70000}'..='\u{7fffd}'
2429 | '\u{80000}'..='\u{8fffd}'
2430 | '\u{90000}'..='\u{9fffd}'
2431 | '\u{a0000}'..='\u{afffd}'
2432 | '\u{b0000}'..='\u{bfffd}'
2433 | '\u{c0000}'..='\u{cfffd}'
2434 | '\u{d0000}'..='\u{dfffd}'
2435 | '\u{e1000}'..='\u{efffd}' => 14u32,
2436 '#' => 4u32,
2437 '%' => 15u32,
2438 '.' => 212u32,
2439 '/' => 3u32,
2440 ':' => 20u32,
2441 '?' => 7u32,
2442 '@' => 21u32,
2443 _ => return false,
2444 },
2445 209u32 => match token {
2446 '!'
2447 | '$'
2448 | '&'..='-'
2449 | ';'
2450 | '='
2451 | 'A'..='Z'
2452 | '_'
2453 | 'a'..='z'
2454 | '~'
2455 | '\u{a0}'..='\u{d7ff}'
2456 | '豈'..='﷏'
2457 | 'ﷰ'..='\u{ffef}'
2458 | '𐀀'..='\u{1fffd}'
2459 | '𠀀'..='\u{2fffd}'
2460 | '𰀀'..='\u{3fffd}'
2461 | '\u{40000}'..='\u{4fffd}'
2462 | '\u{50000}'..='\u{5fffd}'
2463 | '\u{60000}'..='\u{6fffd}'
2464 | '\u{70000}'..='\u{7fffd}'
2465 | '\u{80000}'..='\u{8fffd}'
2466 | '\u{90000}'..='\u{9fffd}'
2467 | '\u{a0000}'..='\u{afffd}'
2468 | '\u{b0000}'..='\u{bfffd}'
2469 | '\u{c0000}'..='\u{cfffd}'
2470 | '\u{d0000}'..='\u{dfffd}'
2471 | '\u{e1000}'..='\u{efffd}' => 14u32,
2472 '#' => 4u32,
2473 '%' => 15u32,
2474 '.' => 212u32,
2475 '/' => 3u32,
2476 '0'..='9' => 211u32,
2477 ':' => 20u32,
2478 '?' => 7u32,
2479 '@' => 21u32,
2480 _ => return false,
2481 },
2482 210u32 => match token {
2483 '!'
2484 | '$'
2485 | '&'..='-'
2486 | ';'
2487 | '='
2488 | 'A'..='Z'
2489 | '_'
2490 | 'a'..='z'
2491 | '~'
2492 | '\u{a0}'..='\u{d7ff}'
2493 | '豈'..='﷏'
2494 | 'ﷰ'..='\u{ffef}'
2495 | '𐀀'..='\u{1fffd}'
2496 | '𠀀'..='\u{2fffd}'
2497 | '𰀀'..='\u{3fffd}'
2498 | '\u{40000}'..='\u{4fffd}'
2499 | '\u{50000}'..='\u{5fffd}'
2500 | '\u{60000}'..='\u{6fffd}'
2501 | '\u{70000}'..='\u{7fffd}'
2502 | '\u{80000}'..='\u{8fffd}'
2503 | '\u{90000}'..='\u{9fffd}'
2504 | '\u{a0000}'..='\u{afffd}'
2505 | '\u{b0000}'..='\u{bfffd}'
2506 | '\u{c0000}'..='\u{cfffd}'
2507 | '\u{d0000}'..='\u{dfffd}'
2508 | '\u{e1000}'..='\u{efffd}' => 14u32,
2509 '#' => 4u32,
2510 '%' => 15u32,
2511 '.' => 212u32,
2512 '/' => 3u32,
2513 '0'..='4' => 211u32,
2514 '5' => 213u32,
2515 '6'..='9' => 208u32,
2516 ':' => 20u32,
2517 '?' => 7u32,
2518 '@' => 21u32,
2519 _ => return false,
2520 },
2521 211u32 => match token {
2522 '!'
2523 | '$'
2524 | '&'..='-'
2525 | ';'
2526 | '='
2527 | 'A'..='Z'
2528 | '_'
2529 | 'a'..='z'
2530 | '~'
2531 | '\u{a0}'..='\u{d7ff}'
2532 | '豈'..='﷏'
2533 | 'ﷰ'..='\u{ffef}'
2534 | '𐀀'..='\u{1fffd}'
2535 | '𠀀'..='\u{2fffd}'
2536 | '𰀀'..='\u{3fffd}'
2537 | '\u{40000}'..='\u{4fffd}'
2538 | '\u{50000}'..='\u{5fffd}'
2539 | '\u{60000}'..='\u{6fffd}'
2540 | '\u{70000}'..='\u{7fffd}'
2541 | '\u{80000}'..='\u{8fffd}'
2542 | '\u{90000}'..='\u{9fffd}'
2543 | '\u{a0000}'..='\u{afffd}'
2544 | '\u{b0000}'..='\u{bfffd}'
2545 | '\u{c0000}'..='\u{cfffd}'
2546 | '\u{d0000}'..='\u{dfffd}'
2547 | '\u{e1000}'..='\u{efffd}' => 14u32,
2548 '#' => 4u32,
2549 '%' => 15u32,
2550 '.' => 212u32,
2551 '/' => 3u32,
2552 '0'..='9' => 208u32,
2553 ':' => 20u32,
2554 '?' => 7u32,
2555 '@' => 21u32,
2556 _ => return false,
2557 },
2558 212u32 => match token {
2559 '!'
2560 | '$'
2561 | '&'..='.'
2562 | ';'
2563 | '='
2564 | 'A'..='Z'
2565 | '_'
2566 | 'a'..='z'
2567 | '~'
2568 | '\u{a0}'..='\u{d7ff}'
2569 | '豈'..='﷏'
2570 | 'ﷰ'..='\u{ffef}'
2571 | '𐀀'..='\u{1fffd}'
2572 | '𠀀'..='\u{2fffd}'
2573 | '𰀀'..='\u{3fffd}'
2574 | '\u{40000}'..='\u{4fffd}'
2575 | '\u{50000}'..='\u{5fffd}'
2576 | '\u{60000}'..='\u{6fffd}'
2577 | '\u{70000}'..='\u{7fffd}'
2578 | '\u{80000}'..='\u{8fffd}'
2579 | '\u{90000}'..='\u{9fffd}'
2580 | '\u{a0000}'..='\u{afffd}'
2581 | '\u{b0000}'..='\u{bfffd}'
2582 | '\u{c0000}'..='\u{cfffd}'
2583 | '\u{d0000}'..='\u{dfffd}'
2584 | '\u{e1000}'..='\u{efffd}' => 14u32,
2585 '#' => 4u32,
2586 '%' => 15u32,
2587 '/' => 3u32,
2588 '0' => 214u32,
2589 '1' => 215u32,
2590 '2' => 216u32,
2591 '3'..='9' => 217u32,
2592 ':' => 20u32,
2593 '?' => 7u32,
2594 '@' => 21u32,
2595 _ => return false,
2596 },
2597 213u32 => match token {
2598 '!'
2599 | '$'
2600 | '&'..='-'
2601 | '6'..='9'
2602 | ';'
2603 | '='
2604 | 'A'..='Z'
2605 | '_'
2606 | 'a'..='z'
2607 | '~'
2608 | '\u{a0}'..='\u{d7ff}'
2609 | '豈'..='﷏'
2610 | 'ﷰ'..='\u{ffef}'
2611 | '𐀀'..='\u{1fffd}'
2612 | '𠀀'..='\u{2fffd}'
2613 | '𰀀'..='\u{3fffd}'
2614 | '\u{40000}'..='\u{4fffd}'
2615 | '\u{50000}'..='\u{5fffd}'
2616 | '\u{60000}'..='\u{6fffd}'
2617 | '\u{70000}'..='\u{7fffd}'
2618 | '\u{80000}'..='\u{8fffd}'
2619 | '\u{90000}'..='\u{9fffd}'
2620 | '\u{a0000}'..='\u{afffd}'
2621 | '\u{b0000}'..='\u{bfffd}'
2622 | '\u{c0000}'..='\u{cfffd}'
2623 | '\u{d0000}'..='\u{dfffd}'
2624 | '\u{e1000}'..='\u{efffd}' => 14u32,
2625 '#' => 4u32,
2626 '%' => 15u32,
2627 '.' => 212u32,
2628 '/' => 3u32,
2629 '0'..='5' => 208u32,
2630 ':' => 20u32,
2631 '?' => 7u32,
2632 '@' => 21u32,
2633 _ => return false,
2634 },
2635 214u32 => match token {
2636 '!'
2637 | '$'
2638 | '&'..='-'
2639 | '0'..='9'
2640 | ';'
2641 | '='
2642 | 'A'..='Z'
2643 | '_'
2644 | 'a'..='z'
2645 | '~'
2646 | '\u{a0}'..='\u{d7ff}'
2647 | '豈'..='﷏'
2648 | 'ﷰ'..='\u{ffef}'
2649 | '𐀀'..='\u{1fffd}'
2650 | '𠀀'..='\u{2fffd}'
2651 | '𰀀'..='\u{3fffd}'
2652 | '\u{40000}'..='\u{4fffd}'
2653 | '\u{50000}'..='\u{5fffd}'
2654 | '\u{60000}'..='\u{6fffd}'
2655 | '\u{70000}'..='\u{7fffd}'
2656 | '\u{80000}'..='\u{8fffd}'
2657 | '\u{90000}'..='\u{9fffd}'
2658 | '\u{a0000}'..='\u{afffd}'
2659 | '\u{b0000}'..='\u{bfffd}'
2660 | '\u{c0000}'..='\u{cfffd}'
2661 | '\u{d0000}'..='\u{dfffd}'
2662 | '\u{e1000}'..='\u{efffd}' => 14u32,
2663 '#' => 4u32,
2664 '%' => 15u32,
2665 '.' => 218u32,
2666 '/' => 3u32,
2667 ':' => 20u32,
2668 '?' => 7u32,
2669 '@' => 21u32,
2670 _ => return false,
2671 },
2672 215u32 => match token {
2673 '!'
2674 | '$'
2675 | '&'..='-'
2676 | ';'
2677 | '='
2678 | 'A'..='Z'
2679 | '_'
2680 | 'a'..='z'
2681 | '~'
2682 | '\u{a0}'..='\u{d7ff}'
2683 | '豈'..='﷏'
2684 | 'ﷰ'..='\u{ffef}'
2685 | '𐀀'..='\u{1fffd}'
2686 | '𠀀'..='\u{2fffd}'
2687 | '𰀀'..='\u{3fffd}'
2688 | '\u{40000}'..='\u{4fffd}'
2689 | '\u{50000}'..='\u{5fffd}'
2690 | '\u{60000}'..='\u{6fffd}'
2691 | '\u{70000}'..='\u{7fffd}'
2692 | '\u{80000}'..='\u{8fffd}'
2693 | '\u{90000}'..='\u{9fffd}'
2694 | '\u{a0000}'..='\u{afffd}'
2695 | '\u{b0000}'..='\u{bfffd}'
2696 | '\u{c0000}'..='\u{cfffd}'
2697 | '\u{d0000}'..='\u{dfffd}'
2698 | '\u{e1000}'..='\u{efffd}' => 14u32,
2699 '#' => 4u32,
2700 '%' => 15u32,
2701 '.' => 218u32,
2702 '/' => 3u32,
2703 '0'..='9' => 217u32,
2704 ':' => 20u32,
2705 '?' => 7u32,
2706 '@' => 21u32,
2707 _ => return false,
2708 },
2709 216u32 => match token {
2710 '!'
2711 | '$'
2712 | '&'..='-'
2713 | ';'
2714 | '='
2715 | 'A'..='Z'
2716 | '_'
2717 | 'a'..='z'
2718 | '~'
2719 | '\u{a0}'..='\u{d7ff}'
2720 | '豈'..='﷏'
2721 | 'ﷰ'..='\u{ffef}'
2722 | '𐀀'..='\u{1fffd}'
2723 | '𠀀'..='\u{2fffd}'
2724 | '𰀀'..='\u{3fffd}'
2725 | '\u{40000}'..='\u{4fffd}'
2726 | '\u{50000}'..='\u{5fffd}'
2727 | '\u{60000}'..='\u{6fffd}'
2728 | '\u{70000}'..='\u{7fffd}'
2729 | '\u{80000}'..='\u{8fffd}'
2730 | '\u{90000}'..='\u{9fffd}'
2731 | '\u{a0000}'..='\u{afffd}'
2732 | '\u{b0000}'..='\u{bfffd}'
2733 | '\u{c0000}'..='\u{cfffd}'
2734 | '\u{d0000}'..='\u{dfffd}'
2735 | '\u{e1000}'..='\u{efffd}' => 14u32,
2736 '#' => 4u32,
2737 '%' => 15u32,
2738 '.' => 218u32,
2739 '/' => 3u32,
2740 '0'..='4' => 217u32,
2741 '5' => 219u32,
2742 '6'..='9' => 214u32,
2743 ':' => 20u32,
2744 '?' => 7u32,
2745 '@' => 21u32,
2746 _ => return false,
2747 },
2748 217u32 => match token {
2749 '!'
2750 | '$'
2751 | '&'..='-'
2752 | ';'
2753 | '='
2754 | 'A'..='Z'
2755 | '_'
2756 | 'a'..='z'
2757 | '~'
2758 | '\u{a0}'..='\u{d7ff}'
2759 | '豈'..='﷏'
2760 | 'ﷰ'..='\u{ffef}'
2761 | '𐀀'..='\u{1fffd}'
2762 | '𠀀'..='\u{2fffd}'
2763 | '𰀀'..='\u{3fffd}'
2764 | '\u{40000}'..='\u{4fffd}'
2765 | '\u{50000}'..='\u{5fffd}'
2766 | '\u{60000}'..='\u{6fffd}'
2767 | '\u{70000}'..='\u{7fffd}'
2768 | '\u{80000}'..='\u{8fffd}'
2769 | '\u{90000}'..='\u{9fffd}'
2770 | '\u{a0000}'..='\u{afffd}'
2771 | '\u{b0000}'..='\u{bfffd}'
2772 | '\u{c0000}'..='\u{cfffd}'
2773 | '\u{d0000}'..='\u{dfffd}'
2774 | '\u{e1000}'..='\u{efffd}' => 14u32,
2775 '#' => 4u32,
2776 '%' => 15u32,
2777 '.' => 218u32,
2778 '/' => 3u32,
2779 '0'..='9' => 214u32,
2780 ':' => 20u32,
2781 '?' => 7u32,
2782 '@' => 21u32,
2783 _ => return false,
2784 },
2785 218u32 => match token {
2786 '!'
2787 | '$'
2788 | '&'..='.'
2789 | '0'..='1'
2790 | '3'..='9'
2791 | ';'
2792 | '='
2793 | 'A'..='Z'
2794 | '_'
2795 | 'a'..='z'
2796 | '~'
2797 | '\u{a0}'..='\u{d7ff}'
2798 | '豈'..='﷏'
2799 | 'ﷰ'..='\u{ffef}'
2800 | '𐀀'..='\u{1fffd}'
2801 | '𠀀'..='\u{2fffd}'
2802 | '𰀀'..='\u{3fffd}'
2803 | '\u{40000}'..='\u{4fffd}'
2804 | '\u{50000}'..='\u{5fffd}'
2805 | '\u{60000}'..='\u{6fffd}'
2806 | '\u{70000}'..='\u{7fffd}'
2807 | '\u{80000}'..='\u{8fffd}'
2808 | '\u{90000}'..='\u{9fffd}'
2809 | '\u{a0000}'..='\u{afffd}'
2810 | '\u{b0000}'..='\u{bfffd}'
2811 | '\u{c0000}'..='\u{cfffd}'
2812 | '\u{d0000}'..='\u{dfffd}'
2813 | '\u{e1000}'..='\u{efffd}' => 14u32,
2814 '#' => 4u32,
2815 '%' => 15u32,
2816 '/' => 3u32,
2817 '2' => 220u32,
2818 ':' => 20u32,
2819 '?' => 7u32,
2820 '@' => 21u32,
2821 _ => return false,
2822 },
2823 219u32 => match token {
2824 '!'
2825 | '$'
2826 | '&'..='-'
2827 | '6'..='9'
2828 | ';'
2829 | '='
2830 | 'A'..='Z'
2831 | '_'
2832 | 'a'..='z'
2833 | '~'
2834 | '\u{a0}'..='\u{d7ff}'
2835 | '豈'..='﷏'
2836 | 'ﷰ'..='\u{ffef}'
2837 | '𐀀'..='\u{1fffd}'
2838 | '𠀀'..='\u{2fffd}'
2839 | '𰀀'..='\u{3fffd}'
2840 | '\u{40000}'..='\u{4fffd}'
2841 | '\u{50000}'..='\u{5fffd}'
2842 | '\u{60000}'..='\u{6fffd}'
2843 | '\u{70000}'..='\u{7fffd}'
2844 | '\u{80000}'..='\u{8fffd}'
2845 | '\u{90000}'..='\u{9fffd}'
2846 | '\u{a0000}'..='\u{afffd}'
2847 | '\u{b0000}'..='\u{bfffd}'
2848 | '\u{c0000}'..='\u{cfffd}'
2849 | '\u{d0000}'..='\u{dfffd}'
2850 | '\u{e1000}'..='\u{efffd}' => 14u32,
2851 '#' => 4u32,
2852 '%' => 15u32,
2853 '.' => 218u32,
2854 '/' => 3u32,
2855 '0'..='5' => 214u32,
2856 ':' => 20u32,
2857 '?' => 7u32,
2858 '@' => 21u32,
2859 _ => return false,
2860 },
2861 220u32 => match token {
2862 '!'
2863 | '$'
2864 | '&'..='.'
2865 | '0'..='4'
2866 | '6'..='9'
2867 | ';'
2868 | '='
2869 | 'A'..='Z'
2870 | '_'
2871 | 'a'..='z'
2872 | '~'
2873 | '\u{a0}'..='\u{d7ff}'
2874 | '豈'..='﷏'
2875 | 'ﷰ'..='\u{ffef}'
2876 | '𐀀'..='\u{1fffd}'
2877 | '𠀀'..='\u{2fffd}'
2878 | '𰀀'..='\u{3fffd}'
2879 | '\u{40000}'..='\u{4fffd}'
2880 | '\u{50000}'..='\u{5fffd}'
2881 | '\u{60000}'..='\u{6fffd}'
2882 | '\u{70000}'..='\u{7fffd}'
2883 | '\u{80000}'..='\u{8fffd}'
2884 | '\u{90000}'..='\u{9fffd}'
2885 | '\u{a0000}'..='\u{afffd}'
2886 | '\u{b0000}'..='\u{bfffd}'
2887 | '\u{c0000}'..='\u{cfffd}'
2888 | '\u{d0000}'..='\u{dfffd}'
2889 | '\u{e1000}'..='\u{efffd}' => 14u32,
2890 '#' => 4u32,
2891 '%' => 15u32,
2892 '/' => 3u32,
2893 '5' => 221u32,
2894 ':' => 20u32,
2895 '?' => 7u32,
2896 '@' => 21u32,
2897 _ => return false,
2898 },
2899 221u32 => match token {
2900 '!'
2901 | '$'
2902 | '&'..='.'
2903 | '0'..='9'
2904 | ';'
2905 | '='
2906 | 'A'..='Z'
2907 | '_'
2908 | 'a'..='z'
2909 | '~'
2910 | '\u{a0}'..='\u{d7ff}'
2911 | '豈'..='﷏'
2912 | 'ﷰ'..='\u{ffef}'
2913 | '𐀀'..='\u{1fffd}'
2914 | '𠀀'..='\u{2fffd}'
2915 | '𰀀'..='\u{3fffd}'
2916 | '\u{40000}'..='\u{4fffd}'
2917 | '\u{50000}'..='\u{5fffd}'
2918 | '\u{60000}'..='\u{6fffd}'
2919 | '\u{70000}'..='\u{7fffd}'
2920 | '\u{80000}'..='\u{8fffd}'
2921 | '\u{90000}'..='\u{9fffd}'
2922 | '\u{a0000}'..='\u{afffd}'
2923 | '\u{b0000}'..='\u{bfffd}'
2924 | '\u{c0000}'..='\u{cfffd}'
2925 | '\u{d0000}'..='\u{dfffd}'
2926 | '\u{e1000}'..='\u{efffd}' => 14u32,
2927 '#' => 4u32,
2928 '%' => 15u32,
2929 '/' => 3u32,
2930 ':' => 20u32,
2931 '?' => 7u32,
2932 '@' => 21u32,
2933 _ => return false,
2934 },
2935 _ => unreachable!(),
2936 };
2937 true
2938 }
2939 pub const fn is_accepting(&self) -> bool {
2940 matches!(
2941 self.state,
2942 2u32 | 3u32
2943 | 4u32 | 6u32
2944 | 7u32 | 10u32
2945 | 14u32 | 16u32
2946 | 17u32 | 18u32
2947 | 19u32 | 20u32
2948 | 21u32 | 24u32
2949 | 25u32 | 28u32
2950 | 30u32 | 31u32
2951 | 32u32 | 33u32
2952 | 34u32 | 39u32
2953 | 40u32 | 47u32
2954 | 193u32 | 194u32
2955 | 195u32 | 196u32
2956 | 197u32 | 198u32
2957 | 199u32 | 200u32
2958 | 201u32 | 202u32
2959 | 203u32 | 204u32
2960 | 205u32 | 206u32
2961 | 208u32 | 209u32
2962 | 210u32 | 211u32
2963 | 212u32 | 213u32
2964 | 214u32 | 215u32
2965 | 216u32 | 217u32
2966 | 218u32 | 219u32
2967 | 220u32 | 221u32
2968 )
2969 }
2970 pub const fn validate_str(s: &str) -> bool {
2971 Self::validate_bytes(s.as_bytes())
2972 }
2973 pub const fn validate_bytes(bytes: &[u8]) -> bool {
2974 let mut i = 0;
2975 let mut automaton = Self::new();
2976 while i < bytes.len() {
2977 match ::static_automata::decode_utf8_char(bytes, i) {
2978 Ok((c, len)) => {
2979 if !automaton.push(c) {
2980 return false;
2981 }
2982 i += len;
2983 }
2984 Err(_) => return false,
2985 }
2986 }
2987 automaton.is_accepting()
2988 }
2989}