this repo has no description
at main 4452 lines 209 kB view raw
1//! generated by scripts/gen_tokenizer_data.py — do not edit. 2//! tokenizer pattern data compiled from spaCy en_core_web_sm. 3 4const std = @import("std"); 5 6// ── utf-8 helpers ── 7 8pub const Codepoint = struct { value: u21, len: u3 }; 9 10pub fn decodeUtf8(bytes: []const u8) ?Codepoint { 11 if (bytes.len == 0) return null; 12 const b0 = bytes[0]; 13 if (b0 < 0x80) return .{ .value = b0, .len = 1 }; 14 if (b0 & 0xE0 == 0xC0 and bytes.len >= 2) 15 return .{ .value = (@as(u21, b0 & 0x1F) << 6) | (bytes[1] & 0x3F), .len = 2 }; 16 if (b0 & 0xF0 == 0xE0 and bytes.len >= 3) 17 return .{ .value = (@as(u21, b0 & 0x0F) << 12) | (@as(u21, bytes[1] & 0x3F) << 6) | (bytes[2] & 0x3F), .len = 3 }; 18 if (b0 & 0xF8 == 0xF0 and bytes.len >= 4) 19 return .{ .value = (@as(u21, b0 & 0x07) << 18) | (@as(u21, bytes[1] & 0x3F) << 12) | (@as(u21, bytes[2] & 0x3F) << 6) | (bytes[3] & 0x3F), .len = 4 }; 20 return .{ .value = 0xFFFD, .len = 1 }; // replacement char 21} 22 23pub fn lastCodepoint(text: []const u8) ?Codepoint { 24 if (text.len == 0) return null; 25 var i = text.len - 1; 26 while (i > 0 and text[i] & 0xC0 == 0x80) : (i -= 1) {} 27 return decodeUtf8(text[i..]); 28} 29 30// ── range search ── 31 32fn rangeContains(ranges: []const [2]u21, c: u21) bool { 33 var lo: usize = 0; 34 var hi: usize = ranges.len; 35 while (lo < hi) { 36 const mid = lo + (hi - lo) / 2; 37 if (c > ranges[mid][1]) { lo = mid + 1; } 38 else if (c < ranges[mid][0]) { hi = mid; } 39 else return true; 40 } 41 return false; 42} 43 44// ── symbol class (So/Sc unicode categories) ── 45 46pub const isSymbol_ranges = [_][2]u21{ 47 .{ 0x00A6, 0x00A6 }, 48 .{ 0x00A9, 0x00A9 }, 49 .{ 0x00AE, 0x00AE }, 50 .{ 0x00B0, 0x00B0 }, 51 .{ 0x0482, 0x0482 }, 52 .{ 0x058D, 0x058E }, 53 .{ 0x060E, 0x060F }, 54 .{ 0x06DE, 0x06DE }, 55 .{ 0x06E9, 0x06E9 }, 56 .{ 0x06FD, 0x06FE }, 57 .{ 0x07F6, 0x07F6 }, 58 .{ 0x09FA, 0x09FA }, 59 .{ 0x0B70, 0x0B70 }, 60 .{ 0x0BF3, 0x0BF8 }, 61 .{ 0x0BFA, 0x0BFA }, 62 .{ 0x0C7F, 0x0C7F }, 63 .{ 0x0D4F, 0x0D4F }, 64 .{ 0x0D79, 0x0D79 }, 65 .{ 0x0F01, 0x0F03 }, 66 .{ 0x0F13, 0x0F13 }, 67 .{ 0x0F15, 0x0F17 }, 68 .{ 0x0F1A, 0x0F1F }, 69 .{ 0x0F34, 0x0F34 }, 70 .{ 0x0F36, 0x0F36 }, 71 .{ 0x0F38, 0x0F38 }, 72 .{ 0x0FBE, 0x0FC5 }, 73 .{ 0x0FC7, 0x0FCC }, 74 .{ 0x0FCE, 0x0FCF }, 75 .{ 0x0FD5, 0x0FD8 }, 76 .{ 0x109E, 0x109F }, 77 .{ 0x1390, 0x1399 }, 78 .{ 0x1940, 0x1940 }, 79 .{ 0x19DE, 0x19FF }, 80 .{ 0x1B61, 0x1B6A }, 81 .{ 0x1B74, 0x1B7C }, 82 .{ 0x2100, 0x2101 }, 83 .{ 0x2103, 0x2106 }, 84 .{ 0x2108, 0x2109 }, 85 .{ 0x2114, 0x2114 }, 86 .{ 0x2116, 0x2117 }, 87 .{ 0x211E, 0x2123 }, 88 .{ 0x2125, 0x2125 }, 89 .{ 0x2127, 0x2127 }, 90 .{ 0x2129, 0x2129 }, 91 .{ 0x212E, 0x212E }, 92 .{ 0x213A, 0x213B }, 93 .{ 0x214A, 0x214A }, 94 .{ 0x214C, 0x214D }, 95 .{ 0x214F, 0x214F }, 96 .{ 0x218A, 0x218B }, 97 .{ 0x2195, 0x2199 }, 98 .{ 0x219C, 0x219F }, 99 .{ 0x21A1, 0x21A2 }, 100 .{ 0x21A4, 0x21A5 }, 101 .{ 0x21A7, 0x21AD }, 102 .{ 0x21AF, 0x21CD }, 103 .{ 0x21D0, 0x21D1 }, 104 .{ 0x21D3, 0x21D3 }, 105 .{ 0x21D5, 0x21F3 }, 106 .{ 0x2300, 0x2307 }, 107 .{ 0x230C, 0x231F }, 108 .{ 0x2322, 0x2328 }, 109 .{ 0x232B, 0x237B }, 110 .{ 0x237D, 0x239A }, 111 .{ 0x23B4, 0x23DB }, 112 .{ 0x23E2, 0x2426 }, 113 .{ 0x2440, 0x244A }, 114 .{ 0x249C, 0x24E9 }, 115 .{ 0x2500, 0x25B6 }, 116 .{ 0x25B8, 0x25C0 }, 117 .{ 0x25C2, 0x25F7 }, 118 .{ 0x2600, 0x266E }, 119 .{ 0x2670, 0x2767 }, 120 .{ 0x2794, 0x27BF }, 121 .{ 0x2800, 0x28FF }, 122 .{ 0x2B00, 0x2B2F }, 123 .{ 0x2B45, 0x2B46 }, 124 .{ 0x2B4D, 0x2B73 }, 125 .{ 0x2B76, 0x2B95 }, 126 .{ 0x2B98, 0x2BC8 }, 127 .{ 0x2BCA, 0x2BFE }, 128 .{ 0x2CE5, 0x2CEA }, 129 .{ 0x2E80, 0x2E99 }, 130 .{ 0x2E9B, 0x2EF3 }, 131 .{ 0x2F00, 0x2FD5 }, 132 .{ 0x2FF0, 0x2FFB }, 133 .{ 0x3004, 0x3004 }, 134 .{ 0x3012, 0x3013 }, 135 .{ 0x3020, 0x3020 }, 136 .{ 0x3036, 0x3037 }, 137 .{ 0x303E, 0x303F }, 138 .{ 0x3190, 0x3191 }, 139 .{ 0x3196, 0x319F }, 140 .{ 0x31C0, 0x31E3 }, 141 .{ 0x3200, 0x321E }, 142 .{ 0x322A, 0x3247 }, 143 .{ 0x3250, 0x3250 }, 144 .{ 0x3260, 0x327F }, 145 .{ 0x328A, 0x32B0 }, 146 .{ 0x32C0, 0x32FE }, 147 .{ 0x3300, 0x33FF }, 148 .{ 0x4DC0, 0x4DFF }, 149 .{ 0xA490, 0xA4C6 }, 150 .{ 0xA828, 0xA82B }, 151 .{ 0xA836, 0xA837 }, 152 .{ 0xA839, 0xA839 }, 153 .{ 0xAA77, 0xAA79 }, 154 .{ 0xFDFD, 0xFDFD }, 155 .{ 0xFFE4, 0xFFE4 }, 156 .{ 0xFFE8, 0xFFE8 }, 157 .{ 0xFFED, 0xFFEE }, 158 .{ 0xFFFC, 0xFFFD }, 159 .{ 0x10137, 0x1013F }, 160 .{ 0x10179, 0x10189 }, 161 .{ 0x1018C, 0x1018E }, 162 .{ 0x10190, 0x1019B }, 163 .{ 0x101A0, 0x101A0 }, 164 .{ 0x101D0, 0x101FC }, 165 .{ 0x10877, 0x10878 }, 166 .{ 0x10AC8, 0x10AC8 }, 167 .{ 0x1173F, 0x1173F }, 168 .{ 0x16B3C, 0x16B3F }, 169 .{ 0x16B45, 0x16B45 }, 170 .{ 0x1BC9C, 0x1BC9C }, 171 .{ 0x1D000, 0x1D0F5 }, 172 .{ 0x1D100, 0x1D126 }, 173 .{ 0x1D129, 0x1D164 }, 174 .{ 0x1D16A, 0x1D16C }, 175 .{ 0x1D183, 0x1D184 }, 176 .{ 0x1D18C, 0x1D1A9 }, 177 .{ 0x1D1AE, 0x1D1E8 }, 178 .{ 0x1D200, 0x1D241 }, 179 .{ 0x1D245, 0x1D245 }, 180 .{ 0x1D300, 0x1D356 }, 181 .{ 0x1D800, 0x1D9FF }, 182 .{ 0x1DA37, 0x1DA3A }, 183 .{ 0x1DA6D, 0x1DA74 }, 184 .{ 0x1DA76, 0x1DA83 }, 185 .{ 0x1DA85, 0x1DA86 }, 186 .{ 0x1ECAC, 0x1ECAC }, 187 .{ 0x1F000, 0x1F02B }, 188 .{ 0x1F030, 0x1F093 }, 189 .{ 0x1F0A0, 0x1F0AE }, 190 .{ 0x1F0B1, 0x1F0BF }, 191 .{ 0x1F0C1, 0x1F0CF }, 192 .{ 0x1F0D1, 0x1F0F5 }, 193 .{ 0x1F110, 0x1F16B }, 194 .{ 0x1F170, 0x1F1AC }, 195 .{ 0x1F1E6, 0x1F202 }, 196 .{ 0x1F210, 0x1F23B }, 197 .{ 0x1F240, 0x1F248 }, 198 .{ 0x1F250, 0x1F251 }, 199 .{ 0x1F260, 0x1F265 }, 200 .{ 0x1F300, 0x1F3FA }, 201 .{ 0x1F400, 0x1F6D4 }, 202 .{ 0x1F6E0, 0x1F6EC }, 203 .{ 0x1F6F0, 0x1F6F9 }, 204 .{ 0x1F700, 0x1F773 }, 205 .{ 0x1F780, 0x1F7D8 }, 206 .{ 0x1F800, 0x1F80B }, 207 .{ 0x1F810, 0x1F847 }, 208 .{ 0x1F850, 0x1F859 }, 209 .{ 0x1F860, 0x1F887 }, 210 .{ 0x1F890, 0x1F8AD }, 211 .{ 0x1F900, 0x1F90B }, 212 .{ 0x1F910, 0x1F93E }, 213 .{ 0x1F940, 0x1F970 }, 214 .{ 0x1F973, 0x1F976 }, 215 .{ 0x1F97A, 0x1F97A }, 216 .{ 0x1F97C, 0x1F9A2 }, 217 .{ 0x1F9B0, 0x1F9B9 }, 218 .{ 0x1F9C0, 0x1F9C2 }, 219 .{ 0x1F9D0, 0x1F9FF }, 220 .{ 0x1FA60, 0x1FA6D }, 221}; 222 223pub fn isSymbol(c: u21) bool { 224 return rangeContains(&isSymbol_ranges, c); 225} 226 227// ── prefix data ── 228 229pub fn isPrefixChar(c: u21) bool { 230 return switch (c) { 231 '!'...'*' => true, 232 ',' => true, 233 ':'...'?' => true, 234 '[' => true, 235 ']' => true, 236 '_'...'`' => true, 237 '{' => true, 238 '}' => true, 239 0x00A1 => true, 240 0x00A3 => true, 241 0x00A5 => true, 242 0x00A7 => true, 243 0x00AB => true, 244 0x00B4 => true, 245 0x00B7 => true, 246 0x00BB => true, 247 0x00BF => true, 248 0x060C => true, 249 0x061B => true, 250 0x061F => true, 251 0x066A => true, 252 0x06D4 => true, 253 0x0964 => true, 254 0x0E3F => true, 255 0x2013...0x2014 => true, 256 0x2018...0x201A => true, 257 0x201C...0x201E => true, 258 0x2026 => true, 259 0x20A0...0x20BF => true, 260 0x2329...0x232A => true, 261 0x27E6...0x27E7 => true, 262 0x3001...0x3002 => true, 263 0x3008...0x3011 => true, 264 0x3014...0x3015 => true, 265 0xFDFC => true, 266 0xFF01 => true, 267 0xFF08...0xFF09 => true, 268 0xFF0C => true, 269 0xFF1A...0xFF1B => true, 270 0xFF1F => true, 271 0xFF5E => true, 272 else => false, 273 }; 274} 275 276pub const prefix_multi_literals = [_][]const u8{ 277 "US$", 278 "\xe2\x80\xa6\xe2\x80\xa6", 279 "C$", 280 "A$", 281}; 282 283pub fn isPrefixUnlessDigit(c: u21) bool { 284 return switch (c) { 285 '+' => true, 286 else => false, 287 }; 288} 289 290// ── suffix data ── 291 292pub fn isSuffixChar(c: u21) bool { 293 return switch (c) { 294 '!'...'#' => true, 295 '&'...'*' => true, 296 ',' => true, 297 ':'...'<' => true, 298 '>'...'?' => true, 299 '[' => true, 300 ']' => true, 301 '_'...'`' => true, 302 '{' => true, 303 '}' => true, 304 0x00A1 => true, 305 0x00AB => true, 306 0x00B4 => true, 307 0x00B7 => true, 308 0x00BB => true, 309 0x00BF => true, 310 0x060C => true, 311 0x061B => true, 312 0x061F => true, 313 0x066A => true, 314 0x06D4 => true, 315 0x0964 => true, 316 0x2013...0x2014 => true, 317 0x2018...0x201A => true, 318 0x201C...0x201E => true, 319 0x2026 => true, 320 0x2329...0x232A => true, 321 0x27E6...0x27E7 => true, 322 0x3001...0x3002 => true, 323 0x3008...0x3011 => true, 324 0x3014...0x3015 => true, 325 0xFF01 => true, 326 0xFF08...0xFF09 => true, 327 0xFF0C => true, 328 0xFF1A...0xFF1B => true, 329 0xFF1F => true, 330 0xFF5E => true, 331 else => false, 332 }; 333} 334 335pub const suffix_multi_literals = [_][]const u8{ 336 "\xe2\x80\xa6\xe2\x80\xa6", 337 "'s", 338 "'S", 339 "\xe2\x80\x99s", 340 "\xe2\x80\x99S", 341}; 342 343// ── suffix lookbehind helpers ── 344 345const lookbehind_class_0_ranges = [_][2]u21{ 346 .{ 0x0030, 0x0039 }, 347}; 348 349pub fn matchLookbehind0(c: u21) bool { 350 return rangeContains(&lookbehind_class_0_ranges, c); 351} 352 353const lookbehind_class_1_ranges = [_][2]u21{ 354 .{ 0x0043, 0x0043 }, 355 .{ 0x0046, 0x0046 }, 356 .{ 0x004B, 0x004B }, 357 .{ 0x0063, 0x0063 }, 358 .{ 0x0066, 0x0066 }, 359 .{ 0x006B, 0x006B }, 360}; 361 362pub fn matchLookbehind1(c: u21) bool { 363 return rangeContains(&lookbehind_class_1_ranges, c); 364} 365 366const lookbehind_class_2_ranges = [_][2]u21{ 367 .{ 0x0021, 0x0023 }, 368 .{ 0x0025, 0x002D }, 369 .{ 0x0030, 0x003C }, 370 .{ 0x003E, 0x003F }, 371 .{ 0x005B, 0x005B }, 372 .{ 0x005D, 0x005D }, 373 .{ 0x005F, 0x007D }, 374 .{ 0x00A1, 0x00A1 }, 375 .{ 0x00AB, 0x00AB }, 376 .{ 0x00B2, 0x00B2 }, 377 .{ 0x00B4, 0x00B4 }, 378 .{ 0x00B7, 0x00B7 }, 379 .{ 0x00BB, 0x00BB }, 380 .{ 0x00BF, 0x00BF }, 381 .{ 0x00DF, 0x00F6 }, 382 .{ 0x00F8, 0x00FF }, 383 .{ 0x0101, 0x0101 }, 384 .{ 0x0103, 0x0103 }, 385 .{ 0x0105, 0x0105 }, 386 .{ 0x0107, 0x0107 }, 387 .{ 0x0109, 0x0109 }, 388 .{ 0x010B, 0x010B }, 389 .{ 0x010D, 0x010D }, 390 .{ 0x010F, 0x010F }, 391 .{ 0x0111, 0x0111 }, 392 .{ 0x0113, 0x0113 }, 393 .{ 0x0115, 0x0115 }, 394 .{ 0x0117, 0x0117 }, 395 .{ 0x0119, 0x0119 }, 396 .{ 0x011B, 0x011B }, 397 .{ 0x011D, 0x011D }, 398 .{ 0x011F, 0x011F }, 399 .{ 0x0121, 0x0121 }, 400 .{ 0x0123, 0x0123 }, 401 .{ 0x0125, 0x0125 }, 402 .{ 0x0127, 0x0127 }, 403 .{ 0x0129, 0x0129 }, 404 .{ 0x012B, 0x012B }, 405 .{ 0x012D, 0x012D }, 406 .{ 0x012F, 0x012F }, 407 .{ 0x0131, 0x0131 }, 408 .{ 0x0133, 0x0133 }, 409 .{ 0x0135, 0x0135 }, 410 .{ 0x0137, 0x0138 }, 411 .{ 0x013A, 0x013A }, 412 .{ 0x013C, 0x013C }, 413 .{ 0x013E, 0x013E }, 414 .{ 0x0140, 0x0140 }, 415 .{ 0x0142, 0x0142 }, 416 .{ 0x0144, 0x0144 }, 417 .{ 0x0146, 0x0146 }, 418 .{ 0x0148, 0x0149 }, 419 .{ 0x014B, 0x014B }, 420 .{ 0x014D, 0x014D }, 421 .{ 0x014F, 0x014F }, 422 .{ 0x0151, 0x0151 }, 423 .{ 0x0153, 0x0153 }, 424 .{ 0x0155, 0x0155 }, 425 .{ 0x0157, 0x0157 }, 426 .{ 0x0159, 0x0159 }, 427 .{ 0x015B, 0x015B }, 428 .{ 0x015D, 0x015D }, 429 .{ 0x015F, 0x015F }, 430 .{ 0x0161, 0x0161 }, 431 .{ 0x0163, 0x0163 }, 432 .{ 0x0165, 0x0165 }, 433 .{ 0x0167, 0x0167 }, 434 .{ 0x0169, 0x0169 }, 435 .{ 0x016B, 0x016B }, 436 .{ 0x016D, 0x016D }, 437 .{ 0x016F, 0x016F }, 438 .{ 0x0171, 0x0171 }, 439 .{ 0x0173, 0x0173 }, 440 .{ 0x0175, 0x0175 }, 441 .{ 0x0177, 0x0177 }, 442 .{ 0x017A, 0x017A }, 443 .{ 0x017C, 0x017C }, 444 .{ 0x017E, 0x0180 }, 445 .{ 0x0183, 0x0183 }, 446 .{ 0x0185, 0x0185 }, 447 .{ 0x0188, 0x0188 }, 448 .{ 0x018C, 0x018D }, 449 .{ 0x0192, 0x0192 }, 450 .{ 0x0195, 0x0195 }, 451 .{ 0x0199, 0x019B }, 452 .{ 0x019E, 0x019E }, 453 .{ 0x01A1, 0x01A1 }, 454 .{ 0x01A3, 0x01A3 }, 455 .{ 0x01A5, 0x01A5 }, 456 .{ 0x01A8, 0x01A8 }, 457 .{ 0x01AA, 0x01AB }, 458 .{ 0x01AD, 0x01AD }, 459 .{ 0x01B0, 0x01B0 }, 460 .{ 0x01B4, 0x01B4 }, 461 .{ 0x01B6, 0x01B6 }, 462 .{ 0x01B9, 0x01BA }, 463 .{ 0x01BD, 0x01BF }, 464 .{ 0x01C6, 0x01C6 }, 465 .{ 0x01C9, 0x01C9 }, 466 .{ 0x01CC, 0x01CC }, 467 .{ 0x01CE, 0x01CE }, 468 .{ 0x01D0, 0x01D0 }, 469 .{ 0x01D2, 0x01D2 }, 470 .{ 0x01D4, 0x01D4 }, 471 .{ 0x01D6, 0x01D6 }, 472 .{ 0x01D8, 0x01D8 }, 473 .{ 0x01DA, 0x01DA }, 474 .{ 0x01DC, 0x01DD }, 475 .{ 0x01DF, 0x01DF }, 476 .{ 0x01E1, 0x01E1 }, 477 .{ 0x01E3, 0x01E3 }, 478 .{ 0x01E5, 0x01E5 }, 479 .{ 0x01E7, 0x01E7 }, 480 .{ 0x01E9, 0x01E9 }, 481 .{ 0x01EB, 0x01EB }, 482 .{ 0x01ED, 0x01ED }, 483 .{ 0x01EF, 0x01F0 }, 484 .{ 0x01F3, 0x01F3 }, 485 .{ 0x01F5, 0x01F5 }, 486 .{ 0x01F9, 0x01F9 }, 487 .{ 0x01FB, 0x01FB }, 488 .{ 0x01FD, 0x01FD }, 489 .{ 0x01FF, 0x01FF }, 490 .{ 0x0201, 0x0201 }, 491 .{ 0x0203, 0x0203 }, 492 .{ 0x0205, 0x0205 }, 493 .{ 0x0207, 0x0207 }, 494 .{ 0x0209, 0x0209 }, 495 .{ 0x020B, 0x020B }, 496 .{ 0x020D, 0x020D }, 497 .{ 0x020F, 0x020F }, 498 .{ 0x0211, 0x0211 }, 499 .{ 0x0213, 0x0213 }, 500 .{ 0x0215, 0x0215 }, 501 .{ 0x0217, 0x0217 }, 502 .{ 0x0219, 0x0219 }, 503 .{ 0x021B, 0x021B }, 504 .{ 0x021D, 0x021D }, 505 .{ 0x021F, 0x021F }, 506 .{ 0x0221, 0x0221 }, 507 .{ 0x0223, 0x0223 }, 508 .{ 0x0225, 0x0225 }, 509 .{ 0x0227, 0x0227 }, 510 .{ 0x0229, 0x0229 }, 511 .{ 0x022B, 0x022B }, 512 .{ 0x022D, 0x022D }, 513 .{ 0x022F, 0x022F }, 514 .{ 0x0231, 0x0231 }, 515 .{ 0x0233, 0x0239 }, 516 .{ 0x023C, 0x023C }, 517 .{ 0x023F, 0x0240 }, 518 .{ 0x0242, 0x0242 }, 519 .{ 0x0247, 0x0247 }, 520 .{ 0x0249, 0x0249 }, 521 .{ 0x024B, 0x024B }, 522 .{ 0x024D, 0x024D }, 523 .{ 0x024F, 0x02AF }, 524 .{ 0x03AC, 0x03AF }, 525 .{ 0x03B1, 0x03C9 }, 526 .{ 0x03CC, 0x03CE }, 527 .{ 0x0430, 0x0451 }, 528 .{ 0x0453, 0x045A }, 529 .{ 0x045C, 0x045D }, 530 .{ 0x0491, 0x0491 }, 531 .{ 0x0497, 0x0497 }, 532 .{ 0x04A3, 0x04A3 }, 533 .{ 0x04AF, 0x04AF }, 534 .{ 0x04BB, 0x04BB }, 535 .{ 0x04D9, 0x04D9 }, 536 .{ 0x04E9, 0x04E9 }, 537 .{ 0x0591, 0x05F4 }, 538 .{ 0x060C, 0x060C }, 539 .{ 0x061B, 0x061B }, 540 .{ 0x061F, 0x064A }, 541 .{ 0x066A, 0x066A }, 542 .{ 0x066E, 0x06D5 }, 543 .{ 0x06E5, 0x06FF }, 544 .{ 0x0750, 0x077F }, 545 .{ 0x08A0, 0x08BD }, 546 .{ 0x0900, 0x09FF }, 547 .{ 0x0B80, 0x0CFF }, 548 .{ 0x0D80, 0x0DFF }, 549 .{ 0x1100, 0x137F }, 550 .{ 0x1D00, 0x1D25 }, 551 .{ 0x1D6B, 0x1D77 }, 552 .{ 0x1D79, 0x1D9A }, 553 .{ 0x1E01, 0x1E01 }, 554 .{ 0x1E03, 0x1E03 }, 555 .{ 0x1E05, 0x1E05 }, 556 .{ 0x1E07, 0x1E07 }, 557 .{ 0x1E09, 0x1E09 }, 558 .{ 0x1E0B, 0x1E0B }, 559 .{ 0x1E0D, 0x1E0D }, 560 .{ 0x1E0F, 0x1E0F }, 561 .{ 0x1E11, 0x1E11 }, 562 .{ 0x1E13, 0x1E13 }, 563 .{ 0x1E15, 0x1E15 }, 564 .{ 0x1E17, 0x1E17 }, 565 .{ 0x1E19, 0x1E19 }, 566 .{ 0x1E1B, 0x1E1B }, 567 .{ 0x1E1D, 0x1E1D }, 568 .{ 0x1E1F, 0x1E1F }, 569 .{ 0x1E21, 0x1E21 }, 570 .{ 0x1E23, 0x1E23 }, 571 .{ 0x1E25, 0x1E25 }, 572 .{ 0x1E27, 0x1E27 }, 573 .{ 0x1E29, 0x1E29 }, 574 .{ 0x1E2B, 0x1E2B }, 575 .{ 0x1E2D, 0x1E2D }, 576 .{ 0x1E2F, 0x1E2F }, 577 .{ 0x1E31, 0x1E31 }, 578 .{ 0x1E33, 0x1E33 }, 579 .{ 0x1E35, 0x1E35 }, 580 .{ 0x1E37, 0x1E37 }, 581 .{ 0x1E39, 0x1E39 }, 582 .{ 0x1E3B, 0x1E3B }, 583 .{ 0x1E3D, 0x1E3D }, 584 .{ 0x1E3F, 0x1E3F }, 585 .{ 0x1E41, 0x1E41 }, 586 .{ 0x1E43, 0x1E43 }, 587 .{ 0x1E45, 0x1E45 }, 588 .{ 0x1E47, 0x1E47 }, 589 .{ 0x1E49, 0x1E49 }, 590 .{ 0x1E4B, 0x1E4B }, 591 .{ 0x1E4D, 0x1E4D }, 592 .{ 0x1E4F, 0x1E4F }, 593 .{ 0x1E51, 0x1E51 }, 594 .{ 0x1E53, 0x1E53 }, 595 .{ 0x1E55, 0x1E55 }, 596 .{ 0x1E57, 0x1E57 }, 597 .{ 0x1E59, 0x1E59 }, 598 .{ 0x1E5B, 0x1E5B }, 599 .{ 0x1E5D, 0x1E5D }, 600 .{ 0x1E5F, 0x1E5F }, 601 .{ 0x1E61, 0x1E61 }, 602 .{ 0x1E63, 0x1E63 }, 603 .{ 0x1E65, 0x1E65 }, 604 .{ 0x1E67, 0x1E67 }, 605 .{ 0x1E69, 0x1E69 }, 606 .{ 0x1E6B, 0x1E6B }, 607 .{ 0x1E6D, 0x1E6D }, 608 .{ 0x1E6F, 0x1E6F }, 609 .{ 0x1E71, 0x1E71 }, 610 .{ 0x1E73, 0x1E73 }, 611 .{ 0x1E75, 0x1E75 }, 612 .{ 0x1E77, 0x1E77 }, 613 .{ 0x1E79, 0x1E79 }, 614 .{ 0x1E7B, 0x1E7B }, 615 .{ 0x1E7D, 0x1E7D }, 616 .{ 0x1E7F, 0x1E7F }, 617 .{ 0x1E81, 0x1E81 }, 618 .{ 0x1E83, 0x1E83 }, 619 .{ 0x1E85, 0x1E85 }, 620 .{ 0x1E87, 0x1E87 }, 621 .{ 0x1E89, 0x1E89 }, 622 .{ 0x1E8B, 0x1E8B }, 623 .{ 0x1E8D, 0x1E8D }, 624 .{ 0x1E8F, 0x1E8F }, 625 .{ 0x1E91, 0x1E91 }, 626 .{ 0x1E93, 0x1E93 }, 627 .{ 0x1E95, 0x1E9D }, 628 .{ 0x1E9F, 0x1E9F }, 629 .{ 0x1EA1, 0x1EA1 }, 630 .{ 0x1EA3, 0x1EA3 }, 631 .{ 0x1EA5, 0x1EA5 }, 632 .{ 0x1EA7, 0x1EA7 }, 633 .{ 0x1EA9, 0x1EA9 }, 634 .{ 0x1EAB, 0x1EAB }, 635 .{ 0x1EAD, 0x1EAD }, 636 .{ 0x1EAF, 0x1EAF }, 637 .{ 0x1EB1, 0x1EB1 }, 638 .{ 0x1EB3, 0x1EB3 }, 639 .{ 0x1EB5, 0x1EB5 }, 640 .{ 0x1EB7, 0x1EB7 }, 641 .{ 0x1EB9, 0x1EB9 }, 642 .{ 0x1EBB, 0x1EBB }, 643 .{ 0x1EBD, 0x1EBD }, 644 .{ 0x1EBF, 0x1EBF }, 645 .{ 0x1EC1, 0x1EC1 }, 646 .{ 0x1EC3, 0x1EC3 }, 647 .{ 0x1EC5, 0x1EC5 }, 648 .{ 0x1EC7, 0x1EC7 }, 649 .{ 0x1EC9, 0x1EC9 }, 650 .{ 0x1ECB, 0x1ECB }, 651 .{ 0x1ECD, 0x1ECD }, 652 .{ 0x1ECF, 0x1ECF }, 653 .{ 0x1ED1, 0x1ED1 }, 654 .{ 0x1ED3, 0x1ED3 }, 655 .{ 0x1ED5, 0x1ED5 }, 656 .{ 0x1ED7, 0x1ED7 }, 657 .{ 0x1ED9, 0x1ED9 }, 658 .{ 0x1EDB, 0x1EDB }, 659 .{ 0x1EDD, 0x1EDD }, 660 .{ 0x1EDF, 0x1EDF }, 661 .{ 0x1EE1, 0x1EE1 }, 662 .{ 0x1EE3, 0x1EE3 }, 663 .{ 0x1EE5, 0x1EE5 }, 664 .{ 0x1EE7, 0x1EE7 }, 665 .{ 0x1EE9, 0x1EE9 }, 666 .{ 0x1EEB, 0x1EEB }, 667 .{ 0x1EED, 0x1EED }, 668 .{ 0x1EEF, 0x1EEF }, 669 .{ 0x1EF1, 0x1EF1 }, 670 .{ 0x1EF3, 0x1EF3 }, 671 .{ 0x1EF5, 0x1EF5 }, 672 .{ 0x1EF7, 0x1EF7 }, 673 .{ 0x1EF9, 0x1EF9 }, 674 .{ 0x1EFB, 0x1EFB }, 675 .{ 0x1EFD, 0x1EFD }, 676 .{ 0x1EFF, 0x1EFF }, 677 .{ 0x2018, 0x201A }, 678 .{ 0x201C, 0x201E }, 679 .{ 0x2026, 0x2026 }, 680 .{ 0x2329, 0x232A }, 681 .{ 0x27E6, 0x27E7 }, 682 .{ 0x2C61, 0x2C61 }, 683 .{ 0x2C65, 0x2C66 }, 684 .{ 0x2C68, 0x2C68 }, 685 .{ 0x2C6A, 0x2C6A }, 686 .{ 0x2C6C, 0x2C6C }, 687 .{ 0x2C71, 0x2C71 }, 688 .{ 0x2C73, 0x2C74 }, 689 .{ 0x2C76, 0x2C7B }, 690 .{ 0x2E80, 0x2FDF }, 691 .{ 0x2FF0, 0x30FF }, 692 .{ 0x31C0, 0x31EF }, 693 .{ 0x3200, 0x4DBF }, 694 .{ 0x4E00, 0x9FFF }, 695 .{ 0xA723, 0xA723 }, 696 .{ 0xA725, 0xA725 }, 697 .{ 0xA727, 0xA727 }, 698 .{ 0xA729, 0xA729 }, 699 .{ 0xA72B, 0xA72B }, 700 .{ 0xA72D, 0xA72D }, 701 .{ 0xA72F, 0xA731 }, 702 .{ 0xA733, 0xA733 }, 703 .{ 0xA735, 0xA735 }, 704 .{ 0xA737, 0xA737 }, 705 .{ 0xA739, 0xA739 }, 706 .{ 0xA73B, 0xA73B }, 707 .{ 0xA73D, 0xA73D }, 708 .{ 0xA73F, 0xA73F }, 709 .{ 0xA741, 0xA741 }, 710 .{ 0xA743, 0xA743 }, 711 .{ 0xA745, 0xA745 }, 712 .{ 0xA747, 0xA747 }, 713 .{ 0xA749, 0xA749 }, 714 .{ 0xA74B, 0xA74B }, 715 .{ 0xA74D, 0xA74D }, 716 .{ 0xA74F, 0xA74F }, 717 .{ 0xA751, 0xA751 }, 718 .{ 0xA753, 0xA753 }, 719 .{ 0xA755, 0xA755 }, 720 .{ 0xA757, 0xA757 }, 721 .{ 0xA759, 0xA759 }, 722 .{ 0xA75B, 0xA75B }, 723 .{ 0xA75D, 0xA75D }, 724 .{ 0xA75F, 0xA75F }, 725 .{ 0xA761, 0xA761 }, 726 .{ 0xA763, 0xA763 }, 727 .{ 0xA765, 0xA765 }, 728 .{ 0xA767, 0xA767 }, 729 .{ 0xA769, 0xA769 }, 730 .{ 0xA76B, 0xA76B }, 731 .{ 0xA76D, 0xA76D }, 732 .{ 0xA76F, 0xA76F }, 733 .{ 0xA771, 0xA778 }, 734 .{ 0xA77A, 0xA77A }, 735 .{ 0xA77C, 0xA77C }, 736 .{ 0xA77F, 0xA77F }, 737 .{ 0xA781, 0xA781 }, 738 .{ 0xA783, 0xA783 }, 739 .{ 0xA785, 0xA785 }, 740 .{ 0xA787, 0xA787 }, 741 .{ 0xA78C, 0xA78C }, 742 .{ 0xA78E, 0xA78E }, 743 .{ 0xA791, 0xA791 }, 744 .{ 0xA793, 0xA795 }, 745 .{ 0xA797, 0xA797 }, 746 .{ 0xA799, 0xA799 }, 747 .{ 0xA79B, 0xA79B }, 748 .{ 0xA79D, 0xA79D }, 749 .{ 0xA79F, 0xA79F }, 750 .{ 0xA7A1, 0xA7A1 }, 751 .{ 0xA7A3, 0xA7A3 }, 752 .{ 0xA7A5, 0xA7A5 }, 753 .{ 0xA7A7, 0xA7A7 }, 754 .{ 0xA7A9, 0xA7A9 }, 755 .{ 0xA7AF, 0xA7AF }, 756 .{ 0xA7B5, 0xA7B5 }, 757 .{ 0xA7B7, 0xA7B7 }, 758 .{ 0xA7B9, 0xA7B9 }, 759 .{ 0xA7FA, 0xA7FA }, 760 .{ 0xAB30, 0xAB5A }, 761 .{ 0xAB60, 0xAB64 }, 762 .{ 0xAC00, 0xD7AF }, 763 .{ 0xF900, 0xFAFF }, 764 .{ 0xFB1D, 0xFBB1 }, 765 .{ 0xFBD3, 0xFD3D }, 766 .{ 0xFD50, 0xFDC7 }, 767 .{ 0xFDF0, 0xFDFB }, 768 .{ 0xFE30, 0xFE4F }, 769 .{ 0xFE70, 0xFEFC }, 770 .{ 0xFF01, 0xFF01 }, 771 .{ 0xFF08, 0xFF09 }, 772 .{ 0xFF0C, 0xFF0C }, 773 .{ 0xFF1A, 0xFF1B }, 774 .{ 0xFF1F, 0xFF1F }, 775 .{ 0xFF41, 0xFF5A }, 776 .{ 0xFF5E, 0xFF5E }, 777 .{ 0x1EE00, 0x1EEBB }, 778 .{ 0x1F200, 0x1F2FF }, 779 .{ 0x20000, 0x2A6DF }, 780 .{ 0x2A700, 0x2EBEF }, 781 .{ 0x2F800, 0x2FA1F }, 782}; 783 784pub fn matchLookbehind2(c: u21) bool { 785 return rangeContains(&lookbehind_class_2_ranges, c); 786} 787 788const lookbehind_class_3_ranges = [_][2]u21{ 789 .{ 0x0041, 0x005A }, 790 .{ 0x00C0, 0x00D6 }, 791 .{ 0x00D8, 0x00DE }, 792 .{ 0x0100, 0x0100 }, 793 .{ 0x0102, 0x0102 }, 794 .{ 0x0104, 0x0104 }, 795 .{ 0x0106, 0x0106 }, 796 .{ 0x0108, 0x0108 }, 797 .{ 0x010A, 0x010A }, 798 .{ 0x010C, 0x010C }, 799 .{ 0x010E, 0x010E }, 800 .{ 0x0110, 0x0110 }, 801 .{ 0x0112, 0x0112 }, 802 .{ 0x0114, 0x0114 }, 803 .{ 0x0116, 0x0116 }, 804 .{ 0x0118, 0x0118 }, 805 .{ 0x011A, 0x011A }, 806 .{ 0x011C, 0x011C }, 807 .{ 0x011E, 0x011E }, 808 .{ 0x0120, 0x0120 }, 809 .{ 0x0122, 0x0122 }, 810 .{ 0x0124, 0x0124 }, 811 .{ 0x0126, 0x0126 }, 812 .{ 0x0128, 0x0128 }, 813 .{ 0x012A, 0x012A }, 814 .{ 0x012C, 0x012C }, 815 .{ 0x012E, 0x012E }, 816 .{ 0x0130, 0x0130 }, 817 .{ 0x0132, 0x0132 }, 818 .{ 0x0134, 0x0134 }, 819 .{ 0x0136, 0x0136 }, 820 .{ 0x0139, 0x0139 }, 821 .{ 0x013B, 0x013B }, 822 .{ 0x013D, 0x013D }, 823 .{ 0x013F, 0x013F }, 824 .{ 0x0141, 0x0141 }, 825 .{ 0x0143, 0x0143 }, 826 .{ 0x0145, 0x0145 }, 827 .{ 0x0147, 0x0147 }, 828 .{ 0x014A, 0x014A }, 829 .{ 0x014C, 0x014C }, 830 .{ 0x014E, 0x014E }, 831 .{ 0x0150, 0x0150 }, 832 .{ 0x0152, 0x0152 }, 833 .{ 0x0154, 0x0154 }, 834 .{ 0x0156, 0x0156 }, 835 .{ 0x0158, 0x0158 }, 836 .{ 0x015A, 0x015A }, 837 .{ 0x015C, 0x015C }, 838 .{ 0x015E, 0x015E }, 839 .{ 0x0160, 0x0160 }, 840 .{ 0x0162, 0x0162 }, 841 .{ 0x0164, 0x0164 }, 842 .{ 0x0166, 0x0166 }, 843 .{ 0x0168, 0x0168 }, 844 .{ 0x016A, 0x016A }, 845 .{ 0x016C, 0x016C }, 846 .{ 0x016E, 0x016E }, 847 .{ 0x0170, 0x0170 }, 848 .{ 0x0172, 0x0172 }, 849 .{ 0x0174, 0x0174 }, 850 .{ 0x0176, 0x0176 }, 851 .{ 0x0178, 0x0179 }, 852 .{ 0x017B, 0x017B }, 853 .{ 0x017D, 0x017D }, 854 .{ 0x0181, 0x0182 }, 855 .{ 0x0184, 0x0184 }, 856 .{ 0x0186, 0x0187 }, 857 .{ 0x0189, 0x018B }, 858 .{ 0x018E, 0x0191 }, 859 .{ 0x0193, 0x0194 }, 860 .{ 0x0196, 0x0198 }, 861 .{ 0x019C, 0x019D }, 862 .{ 0x019F, 0x01A0 }, 863 .{ 0x01A2, 0x01A2 }, 864 .{ 0x01A4, 0x01A4 }, 865 .{ 0x01A6, 0x01A7 }, 866 .{ 0x01A9, 0x01A9 }, 867 .{ 0x01AC, 0x01AC }, 868 .{ 0x01AE, 0x01AF }, 869 .{ 0x01B1, 0x01B3 }, 870 .{ 0x01B5, 0x01B5 }, 871 .{ 0x01B7, 0x01B8 }, 872 .{ 0x01BC, 0x01BC }, 873 .{ 0x01C4, 0x01C4 }, 874 .{ 0x01C7, 0x01C7 }, 875 .{ 0x01CA, 0x01CA }, 876 .{ 0x01CD, 0x01CD }, 877 .{ 0x01CF, 0x01CF }, 878 .{ 0x01D1, 0x01D1 }, 879 .{ 0x01D3, 0x01D3 }, 880 .{ 0x01D5, 0x01D5 }, 881 .{ 0x01D7, 0x01D7 }, 882 .{ 0x01D9, 0x01D9 }, 883 .{ 0x01DB, 0x01DB }, 884 .{ 0x01DE, 0x01DE }, 885 .{ 0x01E0, 0x01E0 }, 886 .{ 0x01E2, 0x01E2 }, 887 .{ 0x01E4, 0x01E4 }, 888 .{ 0x01E6, 0x01E6 }, 889 .{ 0x01E8, 0x01E8 }, 890 .{ 0x01EA, 0x01EA }, 891 .{ 0x01EC, 0x01EC }, 892 .{ 0x01EE, 0x01EE }, 893 .{ 0x01F1, 0x01F1 }, 894 .{ 0x01F4, 0x01F4 }, 895 .{ 0x01F6, 0x01F8 }, 896 .{ 0x01FA, 0x01FA }, 897 .{ 0x01FC, 0x01FC }, 898 .{ 0x01FE, 0x01FE }, 899 .{ 0x0200, 0x0200 }, 900 .{ 0x0202, 0x0202 }, 901 .{ 0x0204, 0x0204 }, 902 .{ 0x0206, 0x0206 }, 903 .{ 0x0208, 0x0208 }, 904 .{ 0x020A, 0x020A }, 905 .{ 0x020C, 0x020C }, 906 .{ 0x020E, 0x020E }, 907 .{ 0x0210, 0x0210 }, 908 .{ 0x0212, 0x0212 }, 909 .{ 0x0214, 0x0214 }, 910 .{ 0x0216, 0x0216 }, 911 .{ 0x0218, 0x0218 }, 912 .{ 0x021A, 0x021A }, 913 .{ 0x021C, 0x021C }, 914 .{ 0x021E, 0x021E }, 915 .{ 0x0220, 0x0220 }, 916 .{ 0x0222, 0x0222 }, 917 .{ 0x0224, 0x0224 }, 918 .{ 0x0226, 0x0226 }, 919 .{ 0x0228, 0x0228 }, 920 .{ 0x022A, 0x022A }, 921 .{ 0x022C, 0x022C }, 922 .{ 0x022E, 0x022E }, 923 .{ 0x0230, 0x0230 }, 924 .{ 0x0232, 0x0232 }, 925 .{ 0x023A, 0x023B }, 926 .{ 0x023D, 0x023E }, 927 .{ 0x0241, 0x0241 }, 928 .{ 0x0243, 0x0246 }, 929 .{ 0x0248, 0x0248 }, 930 .{ 0x024A, 0x024A }, 931 .{ 0x024C, 0x024C }, 932 .{ 0x024E, 0x024E }, 933 .{ 0x0386, 0x0386 }, 934 .{ 0x0388, 0x038A }, 935 .{ 0x038C, 0x038C }, 936 .{ 0x038E, 0x038F }, 937 .{ 0x0391, 0x03A9 }, 938 .{ 0x0400, 0x0401 }, 939 .{ 0x0403, 0x040A }, 940 .{ 0x040C, 0x040D }, 941 .{ 0x0410, 0x042F }, 942 .{ 0x0490, 0x0490 }, 943 .{ 0x0496, 0x0496 }, 944 .{ 0x04A2, 0x04A2 }, 945 .{ 0x04AE, 0x04AE }, 946 .{ 0x04BA, 0x04BA }, 947 .{ 0x04D8, 0x04D8 }, 948 .{ 0x04E8, 0x04E8 }, 949 .{ 0x0591, 0x05F4 }, 950 .{ 0x0620, 0x064A }, 951 .{ 0x066E, 0x06D5 }, 952 .{ 0x06E5, 0x06FF }, 953 .{ 0x0750, 0x077F }, 954 .{ 0x08A0, 0x08BD }, 955 .{ 0x0900, 0x09FF }, 956 .{ 0x0B80, 0x0CFF }, 957 .{ 0x0D80, 0x0DFF }, 958 .{ 0x1100, 0x137F }, 959 .{ 0x1E00, 0x1E00 }, 960 .{ 0x1E02, 0x1E02 }, 961 .{ 0x1E04, 0x1E04 }, 962 .{ 0x1E06, 0x1E06 }, 963 .{ 0x1E08, 0x1E08 }, 964 .{ 0x1E0A, 0x1E0A }, 965 .{ 0x1E0C, 0x1E0C }, 966 .{ 0x1E0E, 0x1E0E }, 967 .{ 0x1E10, 0x1E10 }, 968 .{ 0x1E12, 0x1E12 }, 969 .{ 0x1E14, 0x1E14 }, 970 .{ 0x1E16, 0x1E16 }, 971 .{ 0x1E18, 0x1E18 }, 972 .{ 0x1E1A, 0x1E1A }, 973 .{ 0x1E1C, 0x1E1C }, 974 .{ 0x1E1E, 0x1E1E }, 975 .{ 0x1E20, 0x1E20 }, 976 .{ 0x1E22, 0x1E22 }, 977 .{ 0x1E24, 0x1E24 }, 978 .{ 0x1E26, 0x1E26 }, 979 .{ 0x1E28, 0x1E28 }, 980 .{ 0x1E2A, 0x1E2A }, 981 .{ 0x1E2C, 0x1E2C }, 982 .{ 0x1E2E, 0x1E2E }, 983 .{ 0x1E30, 0x1E30 }, 984 .{ 0x1E32, 0x1E32 }, 985 .{ 0x1E34, 0x1E34 }, 986 .{ 0x1E36, 0x1E36 }, 987 .{ 0x1E38, 0x1E38 }, 988 .{ 0x1E3A, 0x1E3A }, 989 .{ 0x1E3C, 0x1E3C }, 990 .{ 0x1E3E, 0x1E3E }, 991 .{ 0x1E40, 0x1E40 }, 992 .{ 0x1E42, 0x1E42 }, 993 .{ 0x1E44, 0x1E44 }, 994 .{ 0x1E46, 0x1E46 }, 995 .{ 0x1E48, 0x1E48 }, 996 .{ 0x1E4A, 0x1E4A }, 997 .{ 0x1E4C, 0x1E4C }, 998 .{ 0x1E4E, 0x1E4E }, 999 .{ 0x1E50, 0x1E50 }, 1000 .{ 0x1E52, 0x1E52 }, 1001 .{ 0x1E54, 0x1E54 }, 1002 .{ 0x1E56, 0x1E56 }, 1003 .{ 0x1E58, 0x1E58 }, 1004 .{ 0x1E5A, 0x1E5A }, 1005 .{ 0x1E5C, 0x1E5C }, 1006 .{ 0x1E5E, 0x1E5E }, 1007 .{ 0x1E60, 0x1E60 }, 1008 .{ 0x1E62, 0x1E62 }, 1009 .{ 0x1E64, 0x1E64 }, 1010 .{ 0x1E66, 0x1E66 }, 1011 .{ 0x1E68, 0x1E68 }, 1012 .{ 0x1E6A, 0x1E6A }, 1013 .{ 0x1E6C, 0x1E6C }, 1014 .{ 0x1E6E, 0x1E6E }, 1015 .{ 0x1E70, 0x1E70 }, 1016 .{ 0x1E72, 0x1E72 }, 1017 .{ 0x1E74, 0x1E74 }, 1018 .{ 0x1E76, 0x1E76 }, 1019 .{ 0x1E78, 0x1E78 }, 1020 .{ 0x1E7A, 0x1E7A }, 1021 .{ 0x1E7C, 0x1E7C }, 1022 .{ 0x1E7E, 0x1E7E }, 1023 .{ 0x1E80, 0x1E80 }, 1024 .{ 0x1E82, 0x1E82 }, 1025 .{ 0x1E84, 0x1E84 }, 1026 .{ 0x1E86, 0x1E86 }, 1027 .{ 0x1E88, 0x1E88 }, 1028 .{ 0x1E8A, 0x1E8A }, 1029 .{ 0x1E8C, 0x1E8C }, 1030 .{ 0x1E8E, 0x1E8E }, 1031 .{ 0x1E90, 0x1E90 }, 1032 .{ 0x1E92, 0x1E92 }, 1033 .{ 0x1E94, 0x1E94 }, 1034 .{ 0x1E9E, 0x1E9E }, 1035 .{ 0x1EA0, 0x1EA0 }, 1036 .{ 0x1EA2, 0x1EA2 }, 1037 .{ 0x1EA4, 0x1EA4 }, 1038 .{ 0x1EA6, 0x1EA6 }, 1039 .{ 0x1EA8, 0x1EA8 }, 1040 .{ 0x1EAA, 0x1EAA }, 1041 .{ 0x1EAC, 0x1EAC }, 1042 .{ 0x1EAE, 0x1EAE }, 1043 .{ 0x1EB0, 0x1EB0 }, 1044 .{ 0x1EB2, 0x1EB2 }, 1045 .{ 0x1EB4, 0x1EB4 }, 1046 .{ 0x1EB6, 0x1EB6 }, 1047 .{ 0x1EB8, 0x1EB8 }, 1048 .{ 0x1EBA, 0x1EBA }, 1049 .{ 0x1EBC, 0x1EBC }, 1050 .{ 0x1EBE, 0x1EBE }, 1051 .{ 0x1EC0, 0x1EC0 }, 1052 .{ 0x1EC2, 0x1EC2 }, 1053 .{ 0x1EC4, 0x1EC4 }, 1054 .{ 0x1EC6, 0x1EC6 }, 1055 .{ 0x1EC8, 0x1EC8 }, 1056 .{ 0x1ECA, 0x1ECA }, 1057 .{ 0x1ECC, 0x1ECC }, 1058 .{ 0x1ECE, 0x1ECE }, 1059 .{ 0x1ED0, 0x1ED0 }, 1060 .{ 0x1ED2, 0x1ED2 }, 1061 .{ 0x1ED4, 0x1ED4 }, 1062 .{ 0x1ED6, 0x1ED6 }, 1063 .{ 0x1ED8, 0x1ED8 }, 1064 .{ 0x1EDA, 0x1EDA }, 1065 .{ 0x1EDC, 0x1EDC }, 1066 .{ 0x1EDE, 0x1EDE }, 1067 .{ 0x1EE0, 0x1EE0 }, 1068 .{ 0x1EE2, 0x1EE2 }, 1069 .{ 0x1EE4, 0x1EE4 }, 1070 .{ 0x1EE6, 0x1EE6 }, 1071 .{ 0x1EE8, 0x1EE8 }, 1072 .{ 0x1EEA, 0x1EEA }, 1073 .{ 0x1EEC, 0x1EEC }, 1074 .{ 0x1EEE, 0x1EEE }, 1075 .{ 0x1EF0, 0x1EF0 }, 1076 .{ 0x1EF2, 0x1EF2 }, 1077 .{ 0x1EF4, 0x1EF4 }, 1078 .{ 0x1EF6, 0x1EF6 }, 1079 .{ 0x1EF8, 0x1EF8 }, 1080 .{ 0x1EFA, 0x1EFA }, 1081 .{ 0x1EFC, 0x1EFC }, 1082 .{ 0x1EFE, 0x1EFE }, 1083 .{ 0x2C60, 0x2C60 }, 1084 .{ 0x2C62, 0x2C64 }, 1085 .{ 0x2C67, 0x2C67 }, 1086 .{ 0x2C69, 0x2C69 }, 1087 .{ 0x2C6B, 0x2C6B }, 1088 .{ 0x2C6D, 0x2C70 }, 1089 .{ 0x2C72, 0x2C72 }, 1090 .{ 0x2C75, 0x2C75 }, 1091 .{ 0x2C7E, 0x2C7F }, 1092 .{ 0x2E80, 0x2FDF }, 1093 .{ 0x2FF0, 0x30FF }, 1094 .{ 0x31C0, 0x31EF }, 1095 .{ 0x3200, 0x4DBF }, 1096 .{ 0x4E00, 0x9FFF }, 1097 .{ 0xA722, 0xA722 }, 1098 .{ 0xA724, 0xA724 }, 1099 .{ 0xA726, 0xA726 }, 1100 .{ 0xA728, 0xA728 }, 1101 .{ 0xA72A, 0xA72A }, 1102 .{ 0xA72C, 0xA72C }, 1103 .{ 0xA72E, 0xA72E }, 1104 .{ 0xA732, 0xA732 }, 1105 .{ 0xA734, 0xA734 }, 1106 .{ 0xA736, 0xA736 }, 1107 .{ 0xA738, 0xA738 }, 1108 .{ 0xA73A, 0xA73A }, 1109 .{ 0xA73C, 0xA73C }, 1110 .{ 0xA73E, 0xA73E }, 1111 .{ 0xA740, 0xA740 }, 1112 .{ 0xA742, 0xA742 }, 1113 .{ 0xA744, 0xA744 }, 1114 .{ 0xA746, 0xA746 }, 1115 .{ 0xA748, 0xA748 }, 1116 .{ 0xA74A, 0xA74A }, 1117 .{ 0xA74C, 0xA74C }, 1118 .{ 0xA74E, 0xA74E }, 1119 .{ 0xA750, 0xA750 }, 1120 .{ 0xA752, 0xA752 }, 1121 .{ 0xA754, 0xA754 }, 1122 .{ 0xA756, 0xA756 }, 1123 .{ 0xA758, 0xA758 }, 1124 .{ 0xA75A, 0xA75A }, 1125 .{ 0xA75C, 0xA75C }, 1126 .{ 0xA75E, 0xA75E }, 1127 .{ 0xA760, 0xA760 }, 1128 .{ 0xA762, 0xA762 }, 1129 .{ 0xA764, 0xA764 }, 1130 .{ 0xA766, 0xA766 }, 1131 .{ 0xA768, 0xA768 }, 1132 .{ 0xA76A, 0xA76A }, 1133 .{ 0xA76C, 0xA76C }, 1134 .{ 0xA76E, 0xA76E }, 1135 .{ 0xA779, 0xA779 }, 1136 .{ 0xA77B, 0xA77B }, 1137 .{ 0xA77D, 0xA77E }, 1138 .{ 0xA780, 0xA780 }, 1139 .{ 0xA782, 0xA782 }, 1140 .{ 0xA784, 0xA784 }, 1141 .{ 0xA786, 0xA786 }, 1142 .{ 0xA78B, 0xA78B }, 1143 .{ 0xA78D, 0xA78D }, 1144 .{ 0xA790, 0xA790 }, 1145 .{ 0xA792, 0xA792 }, 1146 .{ 0xA796, 0xA796 }, 1147 .{ 0xA798, 0xA798 }, 1148 .{ 0xA79A, 0xA79A }, 1149 .{ 0xA79C, 0xA79C }, 1150 .{ 0xA79E, 0xA79E }, 1151 .{ 0xA7A0, 0xA7A0 }, 1152 .{ 0xA7A2, 0xA7A2 }, 1153 .{ 0xA7A4, 0xA7A4 }, 1154 .{ 0xA7A6, 0xA7A6 }, 1155 .{ 0xA7A8, 0xA7A8 }, 1156 .{ 0xA7AA, 0xA7AE }, 1157 .{ 0xA7B0, 0xA7B4 }, 1158 .{ 0xA7B6, 0xA7B6 }, 1159 .{ 0xA7B8, 0xA7B8 }, 1160 .{ 0xAC00, 0xD7AF }, 1161 .{ 0xF900, 0xFAFF }, 1162 .{ 0xFB1D, 0xFBB1 }, 1163 .{ 0xFBD3, 0xFD3D }, 1164 .{ 0xFD50, 0xFDC7 }, 1165 .{ 0xFDF0, 0xFDFB }, 1166 .{ 0xFE30, 0xFE4F }, 1167 .{ 0xFE70, 0xFEFC }, 1168 .{ 0xFF21, 0xFF3A }, 1169 .{ 0x1EE00, 0x1EEBB }, 1170 .{ 0x1F200, 0x1F2FF }, 1171 .{ 0x20000, 0x2A6DF }, 1172 .{ 0x2A700, 0x2EBEF }, 1173 .{ 0x2F800, 0x2FA1F }, 1174}; 1175 1176pub fn matchLookbehind3(c: u21) bool { 1177 return rangeContains(&lookbehind_class_3_ranges, c); 1178} 1179 1180// ── suffix lookbehind rules ── 1181// these are checked by tokenizer.zig matchSuffix() 1182// format: for each rule, check behind condition then try suffix literal(s) 1183 1184pub fn matchSuffixLookbehind(text: []const u8) usize { 1185 if (text.len < 2) return 0; 1186 1187 if (std.mem.endsWith(u8, text, "+") and text.len > 1) { 1188 const before = lastCodepoint(text[0 .. text.len - 1]); 1189 if (before != null and matchLookbehind0(before.?.value)) return 1; 1190 } 1191 if (std.mem.endsWith(u8, text, ".") and text.len > 1) { 1192 const b1 = lastCodepoint(text[0 .. text.len - 1]); 1193 if (b1) |bp1| { 1194 const b2 = lastCodepoint(text[0 .. text.len - 1 - bp1.len]); 1195 if (matchLookbehind1(bp1.value)) { 1196 if (b2) |b2p| { 1197 if (b2p.value == 0x00B0) return 1; 1198 } 1199 } 1200 } 1201 } 1202 if (std.mem.endsWith(u8, text, "\xe2\x82\xac") and text.len > 3) { 1203 const before = lastCodepoint(text[0 .. text.len - 3]); 1204 if (before != null and matchLookbehind0(before.?.value)) return 3; 1205 } 1206 if (std.mem.endsWith(u8, text, "\xe0\xb8\xbf") and text.len > 3) { 1207 const before = lastCodepoint(text[0 .. text.len - 3]); 1208 if (before != null and matchLookbehind0(before.?.value)) return 3; 1209 } 1210 if (std.mem.endsWith(u8, text, "US$") and text.len > 3) { 1211 const before = lastCodepoint(text[0 .. text.len - 3]); 1212 if (before != null and matchLookbehind0(before.?.value)) return 3; 1213 } 1214 if (std.mem.endsWith(u8, text, "\xe2\x82\xbd") and text.len > 3) { 1215 const before = lastCodepoint(text[0 .. text.len - 3]); 1216 if (before != null and matchLookbehind0(before.?.value)) return 3; 1217 } 1218 if (std.mem.endsWith(u8, text, "\xef\xb7\xbc") and text.len > 3) { 1219 const before = lastCodepoint(text[0 .. text.len - 3]); 1220 if (before != null and matchLookbehind0(before.?.value)) return 3; 1221 } 1222 if (std.mem.endsWith(u8, text, "\xe2\x82\xb4") and text.len > 3) { 1223 const before = lastCodepoint(text[0 .. text.len - 3]); 1224 if (before != null and matchLookbehind0(before.?.value)) return 3; 1225 } 1226 if (std.mem.endsWith(u8, text, "\xe2\x82\xa0") and text.len > 3) { 1227 const before = lastCodepoint(text[0 .. text.len - 3]); 1228 if (before != null and matchLookbehind0(before.?.value)) return 3; 1229 } 1230 if (std.mem.endsWith(u8, text, "\xe2\x82\xa1") and text.len > 3) { 1231 const before = lastCodepoint(text[0 .. text.len - 3]); 1232 if (before != null and matchLookbehind0(before.?.value)) return 3; 1233 } 1234 if (std.mem.endsWith(u8, text, "\xe2\x82\xa2") and text.len > 3) { 1235 const before = lastCodepoint(text[0 .. text.len - 3]); 1236 if (before != null and matchLookbehind0(before.?.value)) return 3; 1237 } 1238 if (std.mem.endsWith(u8, text, "\xe2\x82\xa3") and text.len > 3) { 1239 const before = lastCodepoint(text[0 .. text.len - 3]); 1240 if (before != null and matchLookbehind0(before.?.value)) return 3; 1241 } 1242 if (std.mem.endsWith(u8, text, "\xe2\x82\xa4") and text.len > 3) { 1243 const before = lastCodepoint(text[0 .. text.len - 3]); 1244 if (before != null and matchLookbehind0(before.?.value)) return 3; 1245 } 1246 if (std.mem.endsWith(u8, text, "\xe2\x82\xa5") and text.len > 3) { 1247 const before = lastCodepoint(text[0 .. text.len - 3]); 1248 if (before != null and matchLookbehind0(before.?.value)) return 3; 1249 } 1250 if (std.mem.endsWith(u8, text, "\xe2\x82\xa6") and text.len > 3) { 1251 const before = lastCodepoint(text[0 .. text.len - 3]); 1252 if (before != null and matchLookbehind0(before.?.value)) return 3; 1253 } 1254 if (std.mem.endsWith(u8, text, "\xe2\x82\xa7") and text.len > 3) { 1255 const before = lastCodepoint(text[0 .. text.len - 3]); 1256 if (before != null and matchLookbehind0(before.?.value)) return 3; 1257 } 1258 if (std.mem.endsWith(u8, text, "\xe2\x82\xa8") and text.len > 3) { 1259 const before = lastCodepoint(text[0 .. text.len - 3]); 1260 if (before != null and matchLookbehind0(before.?.value)) return 3; 1261 } 1262 if (std.mem.endsWith(u8, text, "\xe2\x82\xa9") and text.len > 3) { 1263 const before = lastCodepoint(text[0 .. text.len - 3]); 1264 if (before != null and matchLookbehind0(before.?.value)) return 3; 1265 } 1266 if (std.mem.endsWith(u8, text, "\xe2\x82\xaa") and text.len > 3) { 1267 const before = lastCodepoint(text[0 .. text.len - 3]); 1268 if (before != null and matchLookbehind0(before.?.value)) return 3; 1269 } 1270 if (std.mem.endsWith(u8, text, "\xe2\x82\xab") and text.len > 3) { 1271 const before = lastCodepoint(text[0 .. text.len - 3]); 1272 if (before != null and matchLookbehind0(before.?.value)) return 3; 1273 } 1274 if (std.mem.endsWith(u8, text, "\xe2\x82\xac") and text.len > 3) { 1275 const before = lastCodepoint(text[0 .. text.len - 3]); 1276 if (before != null and matchLookbehind0(before.?.value)) return 3; 1277 } 1278 if (std.mem.endsWith(u8, text, "\xe2\x82\xad") and text.len > 3) { 1279 const before = lastCodepoint(text[0 .. text.len - 3]); 1280 if (before != null and matchLookbehind0(before.?.value)) return 3; 1281 } 1282 if (std.mem.endsWith(u8, text, "\xe2\x82\xae") and text.len > 3) { 1283 const before = lastCodepoint(text[0 .. text.len - 3]); 1284 if (before != null and matchLookbehind0(before.?.value)) return 3; 1285 } 1286 if (std.mem.endsWith(u8, text, "\xe2\x82\xaf") and text.len > 3) { 1287 const before = lastCodepoint(text[0 .. text.len - 3]); 1288 if (before != null and matchLookbehind0(before.?.value)) return 3; 1289 } 1290 if (std.mem.endsWith(u8, text, "\xe2\x82\xb0") and text.len > 3) { 1291 const before = lastCodepoint(text[0 .. text.len - 3]); 1292 if (before != null and matchLookbehind0(before.?.value)) return 3; 1293 } 1294 if (std.mem.endsWith(u8, text, "\xe2\x82\xb1") and text.len > 3) { 1295 const before = lastCodepoint(text[0 .. text.len - 3]); 1296 if (before != null and matchLookbehind0(before.?.value)) return 3; 1297 } 1298 if (std.mem.endsWith(u8, text, "\xe2\x82\xb2") and text.len > 3) { 1299 const before = lastCodepoint(text[0 .. text.len - 3]); 1300 if (before != null and matchLookbehind0(before.?.value)) return 3; 1301 } 1302 if (std.mem.endsWith(u8, text, "\xe2\x82\xb3") and text.len > 3) { 1303 const before = lastCodepoint(text[0 .. text.len - 3]); 1304 if (before != null and matchLookbehind0(before.?.value)) return 3; 1305 } 1306 if (std.mem.endsWith(u8, text, "\xe2\x82\xb4") and text.len > 3) { 1307 const before = lastCodepoint(text[0 .. text.len - 3]); 1308 if (before != null and matchLookbehind0(before.?.value)) return 3; 1309 } 1310 if (std.mem.endsWith(u8, text, "\xe2\x82\xb5") and text.len > 3) { 1311 const before = lastCodepoint(text[0 .. text.len - 3]); 1312 if (before != null and matchLookbehind0(before.?.value)) return 3; 1313 } 1314 if (std.mem.endsWith(u8, text, "\xe2\x82\xb6") and text.len > 3) { 1315 const before = lastCodepoint(text[0 .. text.len - 3]); 1316 if (before != null and matchLookbehind0(before.?.value)) return 3; 1317 } 1318 if (std.mem.endsWith(u8, text, "\xe2\x82\xb7") and text.len > 3) { 1319 const before = lastCodepoint(text[0 .. text.len - 3]); 1320 if (before != null and matchLookbehind0(before.?.value)) return 3; 1321 } 1322 if (std.mem.endsWith(u8, text, "\xe2\x82\xb8") and text.len > 3) { 1323 const before = lastCodepoint(text[0 .. text.len - 3]); 1324 if (before != null and matchLookbehind0(before.?.value)) return 3; 1325 } 1326 if (std.mem.endsWith(u8, text, "\xe2\x82\xb9") and text.len > 3) { 1327 const before = lastCodepoint(text[0 .. text.len - 3]); 1328 if (before != null and matchLookbehind0(before.?.value)) return 3; 1329 } 1330 if (std.mem.endsWith(u8, text, "\xe2\x82\xba") and text.len > 3) { 1331 const before = lastCodepoint(text[0 .. text.len - 3]); 1332 if (before != null and matchLookbehind0(before.?.value)) return 3; 1333 } 1334 if (std.mem.endsWith(u8, text, "\xe2\x82\xbb") and text.len > 3) { 1335 const before = lastCodepoint(text[0 .. text.len - 3]); 1336 if (before != null and matchLookbehind0(before.?.value)) return 3; 1337 } 1338 if (std.mem.endsWith(u8, text, "\xe2\x82\xbc") and text.len > 3) { 1339 const before = lastCodepoint(text[0 .. text.len - 3]); 1340 if (before != null and matchLookbehind0(before.?.value)) return 3; 1341 } 1342 if (std.mem.endsWith(u8, text, "\xe2\x82\xbd") and text.len > 3) { 1343 const before = lastCodepoint(text[0 .. text.len - 3]); 1344 if (before != null and matchLookbehind0(before.?.value)) return 3; 1345 } 1346 if (std.mem.endsWith(u8, text, "\xe2\x82\xbe") and text.len > 3) { 1347 const before = lastCodepoint(text[0 .. text.len - 3]); 1348 if (before != null and matchLookbehind0(before.?.value)) return 3; 1349 } 1350 if (std.mem.endsWith(u8, text, "\xe2\x82\xbf") and text.len > 3) { 1351 const before = lastCodepoint(text[0 .. text.len - 3]); 1352 if (before != null and matchLookbehind0(before.?.value)) return 3; 1353 } 1354 if (std.mem.endsWith(u8, text, "\xc2\xa3") and text.len > 2) { 1355 const before = lastCodepoint(text[0 .. text.len - 2]); 1356 if (before != null and matchLookbehind0(before.?.value)) return 2; 1357 } 1358 if (std.mem.endsWith(u8, text, "\xc2\xa5") and text.len > 2) { 1359 const before = lastCodepoint(text[0 .. text.len - 2]); 1360 if (before != null and matchLookbehind0(before.?.value)) return 2; 1361 } 1362 if (std.mem.endsWith(u8, text, "C$") and text.len > 2) { 1363 const before = lastCodepoint(text[0 .. text.len - 2]); 1364 if (before != null and matchLookbehind0(before.?.value)) return 2; 1365 } 1366 if (std.mem.endsWith(u8, text, "A$") and text.len > 2) { 1367 const before = lastCodepoint(text[0 .. text.len - 2]); 1368 if (before != null and matchLookbehind0(before.?.value)) return 2; 1369 } 1370 if (std.mem.endsWith(u8, text, "$") and text.len > 1) { 1371 const before = lastCodepoint(text[0 .. text.len - 1]); 1372 if (before != null and matchLookbehind0(before.?.value)) return 1; 1373 } 1374 if (std.mem.endsWith(u8, text, "\xd8\xa7\xd9\x83\xd9\x88\xd8\xa7\xd8\xa8") and text.len > 10) { 1375 const before = lastCodepoint(text[0 .. text.len - 10]); 1376 if (before != null and matchLookbehind0(before.?.value)) return 10; 1377 } 1378 if (std.mem.endsWith(u8, text, "\xd0\xbc\xd0\xb1\xd0\xb0\xd1\x80") and text.len > 8) { 1379 const before = lastCodepoint(text[0 .. text.len - 8]); 1380 if (before != null and matchLookbehind0(before.?.value)) return 8; 1381 } 1382 if (std.mem.endsWith(u8, text, "\xd1\x82\xd0\xb1\xd9\x83\xd9\x85") and text.len > 8) { 1383 const before = lastCodepoint(text[0 .. text.len - 8]); 1384 if (before != null and matchLookbehind0(before.?.value)) return 8; 1385 } 1386 if (std.mem.endsWith(u8, text, "\xd8\xba\xd8\xb1\xd8\xa7\xd9\x85") and text.len > 8) { 1387 const before = lastCodepoint(text[0 .. text.len - 8]); 1388 if (before != null and matchLookbehind0(before.?.value)) return 8; 1389 } 1390 if (std.mem.endsWith(u8, text, "\xd8\xac\xd8\xb1\xd8\xa7\xd9\x85") and text.len > 8) { 1391 const before = lastCodepoint(text[0 .. text.len - 8]); 1392 if (before != null and matchLookbehind0(before.?.value)) return 8; 1393 } 1394 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\xbc/\xd1\x87") and text.len > 7) { 1395 const before = lastCodepoint(text[0 .. text.len - 7]); 1396 if (before != null and matchLookbehind0(before.?.value)) return 7; 1397 } 1398 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\xbc\xc2\xb2") and text.len > 6) { 1399 const before = lastCodepoint(text[0 .. text.len - 6]); 1400 if (before != null and matchLookbehind0(before.?.value)) return 6; 1401 } 1402 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\xbc\xc2\xb3") and text.len > 6) { 1403 const before = lastCodepoint(text[0 .. text.len - 6]); 1404 if (before != null and matchLookbehind0(before.?.value)) return 6; 1405 } 1406 if (std.mem.endsWith(u8, text, "\xd0\xb4\xd0\xbc\xc2\xb2") and text.len > 6) { 1407 const before = lastCodepoint(text[0 .. text.len - 6]); 1408 if (before != null and matchLookbehind0(before.?.value)) return 6; 1409 } 1410 if (std.mem.endsWith(u8, text, "\xd0\xb4\xd0\xbc\xc2\xb3") and text.len > 6) { 1411 const before = lastCodepoint(text[0 .. text.len - 6]); 1412 if (before != null and matchLookbehind0(before.?.value)) return 6; 1413 } 1414 if (std.mem.endsWith(u8, text, "\xd1\x81\xd0\xbc\xc2\xb2") and text.len > 6) { 1415 const before = lastCodepoint(text[0 .. text.len - 6]); 1416 if (before != null and matchLookbehind0(before.?.value)) return 6; 1417 } 1418 if (std.mem.endsWith(u8, text, "\xd1\x81\xd0\xbc\xc2\xb3") and text.len > 6) { 1419 const before = lastCodepoint(text[0 .. text.len - 6]); 1420 if (before != null and matchLookbehind0(before.?.value)) return 6; 1421 } 1422 if (std.mem.endsWith(u8, text, "\xd0\xbc\xd0\xbc\xc2\xb2") and text.len > 6) { 1423 const before = lastCodepoint(text[0 .. text.len - 6]); 1424 if (before != null and matchLookbehind0(before.?.value)) return 6; 1425 } 1426 if (std.mem.endsWith(u8, text, "\xd0\xbc\xd0\xbc\xc2\xb3") and text.len > 6) { 1427 const before = lastCodepoint(text[0 .. text.len - 6]); 1428 if (before != null and matchLookbehind0(before.?.value)) return 6; 1429 } 1430 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\x9f\xd0\xb0") and text.len > 6) { 1431 const before = lastCodepoint(text[0 .. text.len - 6]); 1432 if (before != null and matchLookbehind0(before.?.value)) return 6; 1433 } 1434 if (std.mem.endsWith(u8, text, "\xd9\x83\xd9\x85\xc2\xb2") and text.len > 6) { 1435 const before = lastCodepoint(text[0 .. text.len - 6]); 1436 if (before != null and matchLookbehind0(before.?.value)) return 6; 1437 } 1438 if (std.mem.endsWith(u8, text, "\xd9\x83\xd9\x85\xc2\xb3") and text.len > 6) { 1439 const before = lastCodepoint(text[0 .. text.len - 6]); 1440 if (before != null and matchLookbehind0(before.?.value)) return 6; 1441 } 1442 if (std.mem.endsWith(u8, text, "\xd8\xb3\xd9\x85\xc2\xb2") and text.len > 6) { 1443 const before = lastCodepoint(text[0 .. text.len - 6]); 1444 if (before != null and matchLookbehind0(before.?.value)) return 6; 1445 } 1446 if (std.mem.endsWith(u8, text, "\xd8\xb3\xd9\x85\xc2\xb3") and text.len > 6) { 1447 const before = lastCodepoint(text[0 .. text.len - 6]); 1448 if (before != null and matchLookbehind0(before.?.value)) return 6; 1449 } 1450 if (std.mem.endsWith(u8, text, "\xd9\x85\xd9\x85\xc2\xb2") and text.len > 6) { 1451 const before = lastCodepoint(text[0 .. text.len - 6]); 1452 if (before != null and matchLookbehind0(before.?.value)) return 6; 1453 } 1454 if (std.mem.endsWith(u8, text, "\xd9\x85\xd9\x85\xc2\xb3") and text.len > 6) { 1455 const before = lastCodepoint(text[0 .. text.len - 6]); 1456 if (before != null and matchLookbehind0(before.?.value)) return 6; 1457 } 1458 if (std.mem.endsWith(u8, text, "\xd9\x85\xd9\x84\xd8\xba") and text.len > 6) { 1459 const before = lastCodepoint(text[0 .. text.len - 6]); 1460 if (before != null and matchLookbehind0(before.?.value)) return 6; 1461 } 1462 if (std.mem.endsWith(u8, text, "\xd9\x83\xd9\x88\xd8\xa8") and text.len > 6) { 1463 const before = lastCodepoint(text[0 .. text.len - 6]); 1464 if (before != null and matchLookbehind0(before.?.value)) return 6; 1465 } 1466 if (std.mem.endsWith(u8, text, "\xd0\xbc/\xd1\x81") and text.len > 5) { 1467 const before = lastCodepoint(text[0 .. text.len - 5]); 1468 if (before != null and matchLookbehind0(before.?.value)) return 5; 1469 } 1470 if (std.mem.endsWith(u8, text, "km\xc2\xb2") and text.len > 4) { 1471 const before = lastCodepoint(text[0 .. text.len - 4]); 1472 if (before != null and matchLookbehind0(before.?.value)) return 4; 1473 } 1474 if (std.mem.endsWith(u8, text, "km\xc2\xb3") and text.len > 4) { 1475 const before = lastCodepoint(text[0 .. text.len - 4]); 1476 if (before != null and matchLookbehind0(before.?.value)) return 4; 1477 } 1478 if (std.mem.endsWith(u8, text, "dm\xc2\xb2") and text.len > 4) { 1479 const before = lastCodepoint(text[0 .. text.len - 4]); 1480 if (before != null and matchLookbehind0(before.?.value)) return 4; 1481 } 1482 if (std.mem.endsWith(u8, text, "dm\xc2\xb3") and text.len > 4) { 1483 const before = lastCodepoint(text[0 .. text.len - 4]); 1484 if (before != null and matchLookbehind0(before.?.value)) return 4; 1485 } 1486 if (std.mem.endsWith(u8, text, "cm\xc2\xb2") and text.len > 4) { 1487 const before = lastCodepoint(text[0 .. text.len - 4]); 1488 if (before != null and matchLookbehind0(before.?.value)) return 4; 1489 } 1490 if (std.mem.endsWith(u8, text, "cm\xc2\xb3") and text.len > 4) { 1491 const before = lastCodepoint(text[0 .. text.len - 4]); 1492 if (before != null and matchLookbehind0(before.?.value)) return 4; 1493 } 1494 if (std.mem.endsWith(u8, text, "mm\xc2\xb2") and text.len > 4) { 1495 const before = lastCodepoint(text[0 .. text.len - 4]); 1496 if (before != null and matchLookbehind0(before.?.value)) return 4; 1497 } 1498 if (std.mem.endsWith(u8, text, "mm\xc2\xb3") and text.len > 4) { 1499 const before = lastCodepoint(text[0 .. text.len - 4]); 1500 if (before != null and matchLookbehind0(before.?.value)) return 4; 1501 } 1502 if (std.mem.endsWith(u8, text, "km/h") and text.len > 4) { 1503 const before = lastCodepoint(text[0 .. text.len - 4]); 1504 if (before != null and matchLookbehind0(before.?.value)) return 4; 1505 } 1506 if (std.mem.endsWith(u8, text, "mbar") and text.len > 4) { 1507 const before = lastCodepoint(text[0 .. text.len - 4]); 1508 if (before != null and matchLookbehind0(before.?.value)) return 4; 1509 } 1510 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\xbc") and text.len > 4) { 1511 const before = lastCodepoint(text[0 .. text.len - 4]); 1512 if (before != null and matchLookbehind0(before.?.value)) return 4; 1513 } 1514 if (std.mem.endsWith(u8, text, "\xd0\xbc\xc2\xb2") and text.len > 4) { 1515 const before = lastCodepoint(text[0 .. text.len - 4]); 1516 if (before != null and matchLookbehind0(before.?.value)) return 4; 1517 } 1518 if (std.mem.endsWith(u8, text, "\xd0\xbc\xc2\xb3") and text.len > 4) { 1519 const before = lastCodepoint(text[0 .. text.len - 4]); 1520 if (before != null and matchLookbehind0(before.?.value)) return 4; 1521 } 1522 if (std.mem.endsWith(u8, text, "\xd0\xb4\xd0\xbc") and text.len > 4) { 1523 const before = lastCodepoint(text[0 .. text.len - 4]); 1524 if (before != null and matchLookbehind0(before.?.value)) return 4; 1525 } 1526 if (std.mem.endsWith(u8, text, "\xd1\x81\xd0\xbc") and text.len > 4) { 1527 const before = lastCodepoint(text[0 .. text.len - 4]); 1528 if (before != null and matchLookbehind0(before.?.value)) return 4; 1529 } 1530 if (std.mem.endsWith(u8, text, "\xd0\xbc\xd0\xbc") and text.len > 4) { 1531 const before = lastCodepoint(text[0 .. text.len - 4]); 1532 if (before != null and matchLookbehind0(before.?.value)) return 4; 1533 } 1534 if (std.mem.endsWith(u8, text, "\xd0\xbd\xd0\xbc") and text.len > 4) { 1535 const before = lastCodepoint(text[0 .. text.len - 4]); 1536 if (before != null and matchLookbehind0(before.?.value)) return 4; 1537 } 1538 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\xb3") and text.len > 4) { 1539 const before = lastCodepoint(text[0 .. text.len - 4]); 1540 if (before != null and matchLookbehind0(before.?.value)) return 4; 1541 } 1542 if (std.mem.endsWith(u8, text, "\xd0\xbc\xd0\xb3") and text.len > 4) { 1543 const before = lastCodepoint(text[0 .. text.len - 4]); 1544 if (before != null and matchLookbehind0(before.?.value)) return 4; 1545 } 1546 if (std.mem.endsWith(u8, text, "\xd0\x9f\xd0\xb0") and text.len > 4) { 1547 const before = lastCodepoint(text[0 .. text.len - 4]); 1548 if (before != null and matchLookbehind0(before.?.value)) return 4; 1549 } 1550 if (std.mem.endsWith(u8, text, "\xd0\x9a\xd0\xb1") and text.len > 4) { 1551 const before = lastCodepoint(text[0 .. text.len - 4]); 1552 if (before != null and matchLookbehind0(before.?.value)) return 4; 1553 } 1554 if (std.mem.endsWith(u8, text, "\xd0\x9a\xd0\x91") and text.len > 4) { 1555 const before = lastCodepoint(text[0 .. text.len - 4]); 1556 if (before != null and matchLookbehind0(before.?.value)) return 4; 1557 } 1558 if (std.mem.endsWith(u8, text, "\xd0\xba\xd0\xb1") and text.len > 4) { 1559 const before = lastCodepoint(text[0 .. text.len - 4]); 1560 if (before != null and matchLookbehind0(before.?.value)) return 4; 1561 } 1562 if (std.mem.endsWith(u8, text, "\xd0\x9c\xd0\xb1") and text.len > 4) { 1563 const before = lastCodepoint(text[0 .. text.len - 4]); 1564 if (before != null and matchLookbehind0(before.?.value)) return 4; 1565 } 1566 if (std.mem.endsWith(u8, text, "\xd0\x9c\xd0\x91") and text.len > 4) { 1567 const before = lastCodepoint(text[0 .. text.len - 4]); 1568 if (before != null and matchLookbehind0(before.?.value)) return 4; 1569 } 1570 if (std.mem.endsWith(u8, text, "\xd0\xbc\xd0\xb1") and text.len > 4) { 1571 const before = lastCodepoint(text[0 .. text.len - 4]); 1572 if (before != null and matchLookbehind0(before.?.value)) return 4; 1573 } 1574 if (std.mem.endsWith(u8, text, "\xd0\x93\xd0\xb1") and text.len > 4) { 1575 const before = lastCodepoint(text[0 .. text.len - 4]); 1576 if (before != null and matchLookbehind0(before.?.value)) return 4; 1577 } 1578 if (std.mem.endsWith(u8, text, "\xd0\x93\xd0\x91") and text.len > 4) { 1579 const before = lastCodepoint(text[0 .. text.len - 4]); 1580 if (before != null and matchLookbehind0(before.?.value)) return 4; 1581 } 1582 if (std.mem.endsWith(u8, text, "\xd0\xb3\xd0\xb1") and text.len > 4) { 1583 const before = lastCodepoint(text[0 .. text.len - 4]); 1584 if (before != null and matchLookbehind0(before.?.value)) return 4; 1585 } 1586 if (std.mem.endsWith(u8, text, "\xd0\xa2\xd0\xb1") and text.len > 4) { 1587 const before = lastCodepoint(text[0 .. text.len - 4]); 1588 if (before != null and matchLookbehind0(before.?.value)) return 4; 1589 } 1590 if (std.mem.endsWith(u8, text, "\xd0\xa2\xd0\x91") and text.len > 4) { 1591 const before = lastCodepoint(text[0 .. text.len - 4]); 1592 if (before != null and matchLookbehind0(before.?.value)) return 4; 1593 } 1594 if (std.mem.endsWith(u8, text, "\xd9\x85\xc2\xb2") and text.len > 4) { 1595 const before = lastCodepoint(text[0 .. text.len - 4]); 1596 if (before != null and matchLookbehind0(before.?.value)) return 4; 1597 } 1598 if (std.mem.endsWith(u8, text, "\xd9\x85\xc2\xb3") and text.len > 4) { 1599 const before = lastCodepoint(text[0 .. text.len - 4]); 1600 if (before != null and matchLookbehind0(before.?.value)) return 4; 1601 } 1602 if (std.mem.endsWith(u8, text, "\xd8\xb3\xd9\x85") and text.len > 4) { 1603 const before = lastCodepoint(text[0 .. text.len - 4]); 1604 if (before != null and matchLookbehind0(before.?.value)) return 4; 1605 } 1606 if (std.mem.endsWith(u8, text, "\xd9\x85\xd9\x85") and text.len > 4) { 1607 const before = lastCodepoint(text[0 .. text.len - 4]); 1608 if (before != null and matchLookbehind0(before.?.value)) return 4; 1609 } 1610 if (std.mem.endsWith(u8, text, "\xd9\x83\xd9\x85") and text.len > 4) { 1611 const before = lastCodepoint(text[0 .. text.len - 4]); 1612 if (before != null and matchLookbehind0(before.?.value)) return 4; 1613 } 1614 if (std.mem.endsWith(u8, text, "\xd8\xac\xd9\x85") and text.len > 4) { 1615 const before = lastCodepoint(text[0 .. text.len - 4]); 1616 if (before != null and matchLookbehind0(before.?.value)) return 4; 1617 } 1618 if (std.mem.endsWith(u8, text, "\xd9\x83\xd8\xba") and text.len > 4) { 1619 const before = lastCodepoint(text[0 .. text.len - 4]); 1620 if (before != null and matchLookbehind0(before.?.value)) return 4; 1621 } 1622 if (std.mem.endsWith(u8, text, "m\xc2\xb2") and text.len > 3) { 1623 const before = lastCodepoint(text[0 .. text.len - 3]); 1624 if (before != null and matchLookbehind0(before.?.value)) return 3; 1625 } 1626 if (std.mem.endsWith(u8, text, "m\xc2\xb3") and text.len > 3) { 1627 const before = lastCodepoint(text[0 .. text.len - 3]); 1628 if (before != null and matchLookbehind0(before.?.value)) return 3; 1629 } 1630 if (std.mem.endsWith(u8, text, "\xc2\xb5m") and text.len > 3) { 1631 const before = lastCodepoint(text[0 .. text.len - 3]); 1632 if (before != null and matchLookbehind0(before.?.value)) return 3; 1633 } 1634 if (std.mem.endsWith(u8, text, "\xc2\xb5g") and text.len > 3) { 1635 const before = lastCodepoint(text[0 .. text.len - 3]); 1636 if (before != null and matchLookbehind0(before.?.value)) return 3; 1637 } 1638 if (std.mem.endsWith(u8, text, "m/s") and text.len > 3) { 1639 const before = lastCodepoint(text[0 .. text.len - 3]); 1640 if (before != null and matchLookbehind0(before.?.value)) return 3; 1641 } 1642 if (std.mem.endsWith(u8, text, "kmh") and text.len > 3) { 1643 const before = lastCodepoint(text[0 .. text.len - 3]); 1644 if (before != null and matchLookbehind0(before.?.value)) return 3; 1645 } 1646 if (std.mem.endsWith(u8, text, "mph") and text.len > 3) { 1647 const before = lastCodepoint(text[0 .. text.len - 3]); 1648 if (before != null and matchLookbehind0(before.?.value)) return 3; 1649 } 1650 if (std.mem.endsWith(u8, text, "hPa") and text.len > 3) { 1651 const before = lastCodepoint(text[0 .. text.len - 3]); 1652 if (before != null and matchLookbehind0(before.?.value)) return 3; 1653 } 1654 if (std.mem.endsWith(u8, text, "km") and text.len > 2) { 1655 const before = lastCodepoint(text[0 .. text.len - 2]); 1656 if (before != null and matchLookbehind0(before.?.value)) return 2; 1657 } 1658 if (std.mem.endsWith(u8, text, "dm") and text.len > 2) { 1659 const before = lastCodepoint(text[0 .. text.len - 2]); 1660 if (before != null and matchLookbehind0(before.?.value)) return 2; 1661 } 1662 if (std.mem.endsWith(u8, text, "cm") and text.len > 2) { 1663 const before = lastCodepoint(text[0 .. text.len - 2]); 1664 if (before != null and matchLookbehind0(before.?.value)) return 2; 1665 } 1666 if (std.mem.endsWith(u8, text, "mm") and text.len > 2) { 1667 const before = lastCodepoint(text[0 .. text.len - 2]); 1668 if (before != null and matchLookbehind0(before.?.value)) return 2; 1669 } 1670 if (std.mem.endsWith(u8, text, "ha") and text.len > 2) { 1671 const before = lastCodepoint(text[0 .. text.len - 2]); 1672 if (before != null and matchLookbehind0(before.?.value)) return 2; 1673 } 1674 if (std.mem.endsWith(u8, text, "nm") and text.len > 2) { 1675 const before = lastCodepoint(text[0 .. text.len - 2]); 1676 if (before != null and matchLookbehind0(before.?.value)) return 2; 1677 } 1678 if (std.mem.endsWith(u8, text, "yd") and text.len > 2) { 1679 const before = lastCodepoint(text[0 .. text.len - 2]); 1680 if (before != null and matchLookbehind0(before.?.value)) return 2; 1681 } 1682 if (std.mem.endsWith(u8, text, "in") and text.len > 2) { 1683 const before = lastCodepoint(text[0 .. text.len - 2]); 1684 if (before != null and matchLookbehind0(before.?.value)) return 2; 1685 } 1686 if (std.mem.endsWith(u8, text, "ft") and text.len > 2) { 1687 const before = lastCodepoint(text[0 .. text.len - 2]); 1688 if (before != null and matchLookbehind0(before.?.value)) return 2; 1689 } 1690 if (std.mem.endsWith(u8, text, "kg") and text.len > 2) { 1691 const before = lastCodepoint(text[0 .. text.len - 2]); 1692 if (before != null and matchLookbehind0(before.?.value)) return 2; 1693 } 1694 if (std.mem.endsWith(u8, text, "mg") and text.len > 2) { 1695 const before = lastCodepoint(text[0 .. text.len - 2]); 1696 if (before != null and matchLookbehind0(before.?.value)) return 2; 1697 } 1698 if (std.mem.endsWith(u8, text, "lb") and text.len > 2) { 1699 const before = lastCodepoint(text[0 .. text.len - 2]); 1700 if (before != null and matchLookbehind0(before.?.value)) return 2; 1701 } 1702 if (std.mem.endsWith(u8, text, "oz") and text.len > 2) { 1703 const before = lastCodepoint(text[0 .. text.len - 2]); 1704 if (before != null and matchLookbehind0(before.?.value)) return 2; 1705 } 1706 if (std.mem.endsWith(u8, text, "Pa") and text.len > 2) { 1707 const before = lastCodepoint(text[0 .. text.len - 2]); 1708 if (before != null and matchLookbehind0(before.?.value)) return 2; 1709 } 1710 if (std.mem.endsWith(u8, text, "mb") and text.len > 2) { 1711 const before = lastCodepoint(text[0 .. text.len - 2]); 1712 if (before != null and matchLookbehind0(before.?.value)) return 2; 1713 } 1714 if (std.mem.endsWith(u8, text, "MB") and text.len > 2) { 1715 const before = lastCodepoint(text[0 .. text.len - 2]); 1716 if (before != null and matchLookbehind0(before.?.value)) return 2; 1717 } 1718 if (std.mem.endsWith(u8, text, "kb") and text.len > 2) { 1719 const before = lastCodepoint(text[0 .. text.len - 2]); 1720 if (before != null and matchLookbehind0(before.?.value)) return 2; 1721 } 1722 if (std.mem.endsWith(u8, text, "KB") and text.len > 2) { 1723 const before = lastCodepoint(text[0 .. text.len - 2]); 1724 if (before != null and matchLookbehind0(before.?.value)) return 2; 1725 } 1726 if (std.mem.endsWith(u8, text, "gb") and text.len > 2) { 1727 const before = lastCodepoint(text[0 .. text.len - 2]); 1728 if (before != null and matchLookbehind0(before.?.value)) return 2; 1729 } 1730 if (std.mem.endsWith(u8, text, "GB") and text.len > 2) { 1731 const before = lastCodepoint(text[0 .. text.len - 2]); 1732 if (before != null and matchLookbehind0(before.?.value)) return 2; 1733 } 1734 if (std.mem.endsWith(u8, text, "tb") and text.len > 2) { 1735 const before = lastCodepoint(text[0 .. text.len - 2]); 1736 if (before != null and matchLookbehind0(before.?.value)) return 2; 1737 } 1738 if (std.mem.endsWith(u8, text, "TB") and text.len > 2) { 1739 const before = lastCodepoint(text[0 .. text.len - 2]); 1740 if (before != null and matchLookbehind0(before.?.value)) return 2; 1741 } 1742 if (std.mem.endsWith(u8, text, "\xd0\xbc") and text.len > 2) { 1743 const before = lastCodepoint(text[0 .. text.len - 2]); 1744 if (before != null and matchLookbehind0(before.?.value)) return 2; 1745 } 1746 if (std.mem.endsWith(u8, text, "\xd0\xb3") and text.len > 2) { 1747 const before = lastCodepoint(text[0 .. text.len - 2]); 1748 if (before != null and matchLookbehind0(before.?.value)) return 2; 1749 } 1750 if (std.mem.endsWith(u8, text, "\xd9\x85") and text.len > 2) { 1751 const before = lastCodepoint(text[0 .. text.len - 2]); 1752 if (before != null and matchLookbehind0(before.?.value)) return 2; 1753 } 1754 if (std.mem.endsWith(u8, text, "m") and text.len > 1) { 1755 const before = lastCodepoint(text[0 .. text.len - 1]); 1756 if (before != null and matchLookbehind0(before.?.value)) return 1; 1757 } 1758 if (std.mem.endsWith(u8, text, "g") and text.len > 1) { 1759 const before = lastCodepoint(text[0 .. text.len - 1]); 1760 if (before != null and matchLookbehind0(before.?.value)) return 1; 1761 } 1762 if (std.mem.endsWith(u8, text, "t") and text.len > 1) { 1763 const before = lastCodepoint(text[0 .. text.len - 1]); 1764 if (before != null and matchLookbehind0(before.?.value)) return 1; 1765 } 1766 if (std.mem.endsWith(u8, text, "T") and text.len > 1) { 1767 const before = lastCodepoint(text[0 .. text.len - 1]); 1768 if (before != null and matchLookbehind0(before.?.value)) return 1; 1769 } 1770 if (std.mem.endsWith(u8, text, "G") and text.len > 1) { 1771 const before = lastCodepoint(text[0 .. text.len - 1]); 1772 if (before != null and matchLookbehind0(before.?.value)) return 1; 1773 } 1774 if (std.mem.endsWith(u8, text, "M") and text.len > 1) { 1775 const before = lastCodepoint(text[0 .. text.len - 1]); 1776 if (before != null and matchLookbehind0(before.?.value)) return 1; 1777 } 1778 if (std.mem.endsWith(u8, text, "K") and text.len > 1) { 1779 const before = lastCodepoint(text[0 .. text.len - 1]); 1780 if (before != null and matchLookbehind0(before.?.value)) return 1; 1781 } 1782 if (std.mem.endsWith(u8, text, "%") and text.len > 1) { 1783 const before = lastCodepoint(text[0 .. text.len - 1]); 1784 if (before != null and matchLookbehind0(before.?.value)) return 1; 1785 } 1786 if (std.mem.endsWith(u8, text, ".") and text.len > 1) { 1787 const before = lastCodepoint(text[0 .. text.len - 1]); 1788 if (before != null and matchLookbehind2(before.?.value)) return 1; 1789 } 1790 if (std.mem.endsWith(u8, text, ".") and text.len > 1) { 1791 const b1 = lastCodepoint(text[0 .. text.len - 1]); 1792 if (b1) |bp1| { 1793 const b2 = lastCodepoint(text[0 .. text.len - 1 - bp1.len]); 1794 if (matchLookbehind3(bp1.value)) { 1795 if (b2) |b2p| { 1796 if (matchLookbehind3(b2p.value)) return 1; 1797 } 1798 } 1799 } 1800 } 1801 return 0; 1802} 1803 1804// ── infix character classes ── 1805 1806pub const is_infix_3_ahead_ranges = [_][2]u21{ 1807 .{ 0x002D, 0x002D }, 1808 .{ 0x0030, 0x0039 }, 1809}; 1810 1811pub fn is_infix_3_ahead(c: u21) bool { 1812 return rangeContains(&is_infix_3_ahead_ranges, c); 1813} 1814 1815pub const is_infix_3_behind_ranges = [_][2]u21{ 1816 .{ 0x0030, 0x0039 }, 1817}; 1818 1819pub fn is_infix_3_behind(c: u21) bool { 1820 return rangeContains(&is_infix_3_behind_ranges, c); 1821} 1822 1823pub const is_infix_4_ahead_ranges = [_][2]u21{ 1824 .{ 0x0022, 0x0022 }, 1825 .{ 0x0027, 0x0027 }, 1826 .{ 0x002C, 0x002C }, 1827 .{ 0x0041, 0x005A }, 1828 .{ 0x0060, 0x0060 }, 1829 .{ 0x00AB, 0x00AB }, 1830 .{ 0x00B4, 0x00B4 }, 1831 .{ 0x00BB, 0x00BB }, 1832 .{ 0x00C0, 0x00D6 }, 1833 .{ 0x00D8, 0x00DE }, 1834 .{ 0x0100, 0x0100 }, 1835 .{ 0x0102, 0x0102 }, 1836 .{ 0x0104, 0x0104 }, 1837 .{ 0x0106, 0x0106 }, 1838 .{ 0x0108, 0x0108 }, 1839 .{ 0x010A, 0x010A }, 1840 .{ 0x010C, 0x010C }, 1841 .{ 0x010E, 0x010E }, 1842 .{ 0x0110, 0x0110 }, 1843 .{ 0x0112, 0x0112 }, 1844 .{ 0x0114, 0x0114 }, 1845 .{ 0x0116, 0x0116 }, 1846 .{ 0x0118, 0x0118 }, 1847 .{ 0x011A, 0x011A }, 1848 .{ 0x011C, 0x011C }, 1849 .{ 0x011E, 0x011E }, 1850 .{ 0x0120, 0x0120 }, 1851 .{ 0x0122, 0x0122 }, 1852 .{ 0x0124, 0x0124 }, 1853 .{ 0x0126, 0x0126 }, 1854 .{ 0x0128, 0x0128 }, 1855 .{ 0x012A, 0x012A }, 1856 .{ 0x012C, 0x012C }, 1857 .{ 0x012E, 0x012E }, 1858 .{ 0x0130, 0x0130 }, 1859 .{ 0x0132, 0x0132 }, 1860 .{ 0x0134, 0x0134 }, 1861 .{ 0x0136, 0x0136 }, 1862 .{ 0x0139, 0x0139 }, 1863 .{ 0x013B, 0x013B }, 1864 .{ 0x013D, 0x013D }, 1865 .{ 0x013F, 0x013F }, 1866 .{ 0x0141, 0x0141 }, 1867 .{ 0x0143, 0x0143 }, 1868 .{ 0x0145, 0x0145 }, 1869 .{ 0x0147, 0x0147 }, 1870 .{ 0x014A, 0x014A }, 1871 .{ 0x014C, 0x014C }, 1872 .{ 0x014E, 0x014E }, 1873 .{ 0x0150, 0x0150 }, 1874 .{ 0x0152, 0x0152 }, 1875 .{ 0x0154, 0x0154 }, 1876 .{ 0x0156, 0x0156 }, 1877 .{ 0x0158, 0x0158 }, 1878 .{ 0x015A, 0x015A }, 1879 .{ 0x015C, 0x015C }, 1880 .{ 0x015E, 0x015E }, 1881 .{ 0x0160, 0x0160 }, 1882 .{ 0x0162, 0x0162 }, 1883 .{ 0x0164, 0x0164 }, 1884 .{ 0x0166, 0x0166 }, 1885 .{ 0x0168, 0x0168 }, 1886 .{ 0x016A, 0x016A }, 1887 .{ 0x016C, 0x016C }, 1888 .{ 0x016E, 0x016E }, 1889 .{ 0x0170, 0x0170 }, 1890 .{ 0x0172, 0x0172 }, 1891 .{ 0x0174, 0x0174 }, 1892 .{ 0x0176, 0x0176 }, 1893 .{ 0x0178, 0x0179 }, 1894 .{ 0x017B, 0x017B }, 1895 .{ 0x017D, 0x017D }, 1896 .{ 0x0181, 0x0182 }, 1897 .{ 0x0184, 0x0184 }, 1898 .{ 0x0186, 0x0187 }, 1899 .{ 0x0189, 0x018B }, 1900 .{ 0x018E, 0x0191 }, 1901 .{ 0x0193, 0x0194 }, 1902 .{ 0x0196, 0x0198 }, 1903 .{ 0x019C, 0x019D }, 1904 .{ 0x019F, 0x01A0 }, 1905 .{ 0x01A2, 0x01A2 }, 1906 .{ 0x01A4, 0x01A4 }, 1907 .{ 0x01A6, 0x01A7 }, 1908 .{ 0x01A9, 0x01A9 }, 1909 .{ 0x01AC, 0x01AC }, 1910 .{ 0x01AE, 0x01AF }, 1911 .{ 0x01B1, 0x01B3 }, 1912 .{ 0x01B5, 0x01B5 }, 1913 .{ 0x01B7, 0x01B8 }, 1914 .{ 0x01BC, 0x01BC }, 1915 .{ 0x01C4, 0x01C4 }, 1916 .{ 0x01C7, 0x01C7 }, 1917 .{ 0x01CA, 0x01CA }, 1918 .{ 0x01CD, 0x01CD }, 1919 .{ 0x01CF, 0x01CF }, 1920 .{ 0x01D1, 0x01D1 }, 1921 .{ 0x01D3, 0x01D3 }, 1922 .{ 0x01D5, 0x01D5 }, 1923 .{ 0x01D7, 0x01D7 }, 1924 .{ 0x01D9, 0x01D9 }, 1925 .{ 0x01DB, 0x01DB }, 1926 .{ 0x01DE, 0x01DE }, 1927 .{ 0x01E0, 0x01E0 }, 1928 .{ 0x01E2, 0x01E2 }, 1929 .{ 0x01E4, 0x01E4 }, 1930 .{ 0x01E6, 0x01E6 }, 1931 .{ 0x01E8, 0x01E8 }, 1932 .{ 0x01EA, 0x01EA }, 1933 .{ 0x01EC, 0x01EC }, 1934 .{ 0x01EE, 0x01EE }, 1935 .{ 0x01F1, 0x01F1 }, 1936 .{ 0x01F4, 0x01F4 }, 1937 .{ 0x01F6, 0x01F8 }, 1938 .{ 0x01FA, 0x01FA }, 1939 .{ 0x01FC, 0x01FC }, 1940 .{ 0x01FE, 0x01FE }, 1941 .{ 0x0200, 0x0200 }, 1942 .{ 0x0202, 0x0202 }, 1943 .{ 0x0204, 0x0204 }, 1944 .{ 0x0206, 0x0206 }, 1945 .{ 0x0208, 0x0208 }, 1946 .{ 0x020A, 0x020A }, 1947 .{ 0x020C, 0x020C }, 1948 .{ 0x020E, 0x020E }, 1949 .{ 0x0210, 0x0210 }, 1950 .{ 0x0212, 0x0212 }, 1951 .{ 0x0214, 0x0214 }, 1952 .{ 0x0216, 0x0216 }, 1953 .{ 0x0218, 0x0218 }, 1954 .{ 0x021A, 0x021A }, 1955 .{ 0x021C, 0x021C }, 1956 .{ 0x021E, 0x021E }, 1957 .{ 0x0220, 0x0220 }, 1958 .{ 0x0222, 0x0222 }, 1959 .{ 0x0224, 0x0224 }, 1960 .{ 0x0226, 0x0226 }, 1961 .{ 0x0228, 0x0228 }, 1962 .{ 0x022A, 0x022A }, 1963 .{ 0x022C, 0x022C }, 1964 .{ 0x022E, 0x022E }, 1965 .{ 0x0230, 0x0230 }, 1966 .{ 0x0232, 0x0232 }, 1967 .{ 0x023A, 0x023B }, 1968 .{ 0x023D, 0x023E }, 1969 .{ 0x0241, 0x0241 }, 1970 .{ 0x0243, 0x0246 }, 1971 .{ 0x0248, 0x0248 }, 1972 .{ 0x024A, 0x024A }, 1973 .{ 0x024C, 0x024C }, 1974 .{ 0x024E, 0x024E }, 1975 .{ 0x0386, 0x0386 }, 1976 .{ 0x0388, 0x038A }, 1977 .{ 0x038C, 0x038C }, 1978 .{ 0x038E, 0x038F }, 1979 .{ 0x0391, 0x03A9 }, 1980 .{ 0x0400, 0x0401 }, 1981 .{ 0x0403, 0x040A }, 1982 .{ 0x040C, 0x040D }, 1983 .{ 0x0410, 0x042F }, 1984 .{ 0x0490, 0x0490 }, 1985 .{ 0x0496, 0x0496 }, 1986 .{ 0x04A2, 0x04A2 }, 1987 .{ 0x04AE, 0x04AE }, 1988 .{ 0x04BA, 0x04BA }, 1989 .{ 0x04D8, 0x04D8 }, 1990 .{ 0x04E8, 0x04E8 }, 1991 .{ 0x0591, 0x05F4 }, 1992 .{ 0x0620, 0x064A }, 1993 .{ 0x066E, 0x06D5 }, 1994 .{ 0x06E5, 0x06FF }, 1995 .{ 0x0750, 0x077F }, 1996 .{ 0x08A0, 0x08BD }, 1997 .{ 0x0900, 0x09FF }, 1998 .{ 0x0B80, 0x0CFF }, 1999 .{ 0x0D80, 0x0DFF }, 2000 .{ 0x1100, 0x137F }, 2001 .{ 0x1E00, 0x1E00 }, 2002 .{ 0x1E02, 0x1E02 }, 2003 .{ 0x1E04, 0x1E04 }, 2004 .{ 0x1E06, 0x1E06 }, 2005 .{ 0x1E08, 0x1E08 }, 2006 .{ 0x1E0A, 0x1E0A }, 2007 .{ 0x1E0C, 0x1E0C }, 2008 .{ 0x1E0E, 0x1E0E }, 2009 .{ 0x1E10, 0x1E10 }, 2010 .{ 0x1E12, 0x1E12 }, 2011 .{ 0x1E14, 0x1E14 }, 2012 .{ 0x1E16, 0x1E16 }, 2013 .{ 0x1E18, 0x1E18 }, 2014 .{ 0x1E1A, 0x1E1A }, 2015 .{ 0x1E1C, 0x1E1C }, 2016 .{ 0x1E1E, 0x1E1E }, 2017 .{ 0x1E20, 0x1E20 }, 2018 .{ 0x1E22, 0x1E22 }, 2019 .{ 0x1E24, 0x1E24 }, 2020 .{ 0x1E26, 0x1E26 }, 2021 .{ 0x1E28, 0x1E28 }, 2022 .{ 0x1E2A, 0x1E2A }, 2023 .{ 0x1E2C, 0x1E2C }, 2024 .{ 0x1E2E, 0x1E2E }, 2025 .{ 0x1E30, 0x1E30 }, 2026 .{ 0x1E32, 0x1E32 }, 2027 .{ 0x1E34, 0x1E34 }, 2028 .{ 0x1E36, 0x1E36 }, 2029 .{ 0x1E38, 0x1E38 }, 2030 .{ 0x1E3A, 0x1E3A }, 2031 .{ 0x1E3C, 0x1E3C }, 2032 .{ 0x1E3E, 0x1E3E }, 2033 .{ 0x1E40, 0x1E40 }, 2034 .{ 0x1E42, 0x1E42 }, 2035 .{ 0x1E44, 0x1E44 }, 2036 .{ 0x1E46, 0x1E46 }, 2037 .{ 0x1E48, 0x1E48 }, 2038 .{ 0x1E4A, 0x1E4A }, 2039 .{ 0x1E4C, 0x1E4C }, 2040 .{ 0x1E4E, 0x1E4E }, 2041 .{ 0x1E50, 0x1E50 }, 2042 .{ 0x1E52, 0x1E52 }, 2043 .{ 0x1E54, 0x1E54 }, 2044 .{ 0x1E56, 0x1E56 }, 2045 .{ 0x1E58, 0x1E58 }, 2046 .{ 0x1E5A, 0x1E5A }, 2047 .{ 0x1E5C, 0x1E5C }, 2048 .{ 0x1E5E, 0x1E5E }, 2049 .{ 0x1E60, 0x1E60 }, 2050 .{ 0x1E62, 0x1E62 }, 2051 .{ 0x1E64, 0x1E64 }, 2052 .{ 0x1E66, 0x1E66 }, 2053 .{ 0x1E68, 0x1E68 }, 2054 .{ 0x1E6A, 0x1E6A }, 2055 .{ 0x1E6C, 0x1E6C }, 2056 .{ 0x1E6E, 0x1E6E }, 2057 .{ 0x1E70, 0x1E70 }, 2058 .{ 0x1E72, 0x1E72 }, 2059 .{ 0x1E74, 0x1E74 }, 2060 .{ 0x1E76, 0x1E76 }, 2061 .{ 0x1E78, 0x1E78 }, 2062 .{ 0x1E7A, 0x1E7A }, 2063 .{ 0x1E7C, 0x1E7C }, 2064 .{ 0x1E7E, 0x1E7E }, 2065 .{ 0x1E80, 0x1E80 }, 2066 .{ 0x1E82, 0x1E82 }, 2067 .{ 0x1E84, 0x1E84 }, 2068 .{ 0x1E86, 0x1E86 }, 2069 .{ 0x1E88, 0x1E88 }, 2070 .{ 0x1E8A, 0x1E8A }, 2071 .{ 0x1E8C, 0x1E8C }, 2072 .{ 0x1E8E, 0x1E8E }, 2073 .{ 0x1E90, 0x1E90 }, 2074 .{ 0x1E92, 0x1E92 }, 2075 .{ 0x1E94, 0x1E94 }, 2076 .{ 0x1E9E, 0x1E9E }, 2077 .{ 0x1EA0, 0x1EA0 }, 2078 .{ 0x1EA2, 0x1EA2 }, 2079 .{ 0x1EA4, 0x1EA4 }, 2080 .{ 0x1EA6, 0x1EA6 }, 2081 .{ 0x1EA8, 0x1EA8 }, 2082 .{ 0x1EAA, 0x1EAA }, 2083 .{ 0x1EAC, 0x1EAC }, 2084 .{ 0x1EAE, 0x1EAE }, 2085 .{ 0x1EB0, 0x1EB0 }, 2086 .{ 0x1EB2, 0x1EB2 }, 2087 .{ 0x1EB4, 0x1EB4 }, 2088 .{ 0x1EB6, 0x1EB6 }, 2089 .{ 0x1EB8, 0x1EB8 }, 2090 .{ 0x1EBA, 0x1EBA }, 2091 .{ 0x1EBC, 0x1EBC }, 2092 .{ 0x1EBE, 0x1EBE }, 2093 .{ 0x1EC0, 0x1EC0 }, 2094 .{ 0x1EC2, 0x1EC2 }, 2095 .{ 0x1EC4, 0x1EC4 }, 2096 .{ 0x1EC6, 0x1EC6 }, 2097 .{ 0x1EC8, 0x1EC8 }, 2098 .{ 0x1ECA, 0x1ECA }, 2099 .{ 0x1ECC, 0x1ECC }, 2100 .{ 0x1ECE, 0x1ECE }, 2101 .{ 0x1ED0, 0x1ED0 }, 2102 .{ 0x1ED2, 0x1ED2 }, 2103 .{ 0x1ED4, 0x1ED4 }, 2104 .{ 0x1ED6, 0x1ED6 }, 2105 .{ 0x1ED8, 0x1ED8 }, 2106 .{ 0x1EDA, 0x1EDA }, 2107 .{ 0x1EDC, 0x1EDC }, 2108 .{ 0x1EDE, 0x1EDE }, 2109 .{ 0x1EE0, 0x1EE0 }, 2110 .{ 0x1EE2, 0x1EE2 }, 2111 .{ 0x1EE4, 0x1EE4 }, 2112 .{ 0x1EE6, 0x1EE6 }, 2113 .{ 0x1EE8, 0x1EE8 }, 2114 .{ 0x1EEA, 0x1EEA }, 2115 .{ 0x1EEC, 0x1EEC }, 2116 .{ 0x1EEE, 0x1EEE }, 2117 .{ 0x1EF0, 0x1EF0 }, 2118 .{ 0x1EF2, 0x1EF2 }, 2119 .{ 0x1EF4, 0x1EF4 }, 2120 .{ 0x1EF6, 0x1EF6 }, 2121 .{ 0x1EF8, 0x1EF8 }, 2122 .{ 0x1EFA, 0x1EFA }, 2123 .{ 0x1EFC, 0x1EFC }, 2124 .{ 0x1EFE, 0x1EFE }, 2125 .{ 0x2018, 0x201A }, 2126 .{ 0x201C, 0x201E }, 2127 .{ 0x2329, 0x232A }, 2128 .{ 0x27E6, 0x27E7 }, 2129 .{ 0x2C60, 0x2C60 }, 2130 .{ 0x2C62, 0x2C64 }, 2131 .{ 0x2C67, 0x2C67 }, 2132 .{ 0x2C69, 0x2C69 }, 2133 .{ 0x2C6B, 0x2C6B }, 2134 .{ 0x2C6D, 0x2C70 }, 2135 .{ 0x2C72, 0x2C72 }, 2136 .{ 0x2C75, 0x2C75 }, 2137 .{ 0x2C7E, 0x2C7F }, 2138 .{ 0x2E80, 0x2FDF }, 2139 .{ 0x2FF0, 0x30FF }, 2140 .{ 0x31C0, 0x31EF }, 2141 .{ 0x3200, 0x4DBF }, 2142 .{ 0x4E00, 0x9FFF }, 2143 .{ 0xA722, 0xA722 }, 2144 .{ 0xA724, 0xA724 }, 2145 .{ 0xA726, 0xA726 }, 2146 .{ 0xA728, 0xA728 }, 2147 .{ 0xA72A, 0xA72A }, 2148 .{ 0xA72C, 0xA72C }, 2149 .{ 0xA72E, 0xA72E }, 2150 .{ 0xA732, 0xA732 }, 2151 .{ 0xA734, 0xA734 }, 2152 .{ 0xA736, 0xA736 }, 2153 .{ 0xA738, 0xA738 }, 2154 .{ 0xA73A, 0xA73A }, 2155 .{ 0xA73C, 0xA73C }, 2156 .{ 0xA73E, 0xA73E }, 2157 .{ 0xA740, 0xA740 }, 2158 .{ 0xA742, 0xA742 }, 2159 .{ 0xA744, 0xA744 }, 2160 .{ 0xA746, 0xA746 }, 2161 .{ 0xA748, 0xA748 }, 2162 .{ 0xA74A, 0xA74A }, 2163 .{ 0xA74C, 0xA74C }, 2164 .{ 0xA74E, 0xA74E }, 2165 .{ 0xA750, 0xA750 }, 2166 .{ 0xA752, 0xA752 }, 2167 .{ 0xA754, 0xA754 }, 2168 .{ 0xA756, 0xA756 }, 2169 .{ 0xA758, 0xA758 }, 2170 .{ 0xA75A, 0xA75A }, 2171 .{ 0xA75C, 0xA75C }, 2172 .{ 0xA75E, 0xA75E }, 2173 .{ 0xA760, 0xA760 }, 2174 .{ 0xA762, 0xA762 }, 2175 .{ 0xA764, 0xA764 }, 2176 .{ 0xA766, 0xA766 }, 2177 .{ 0xA768, 0xA768 }, 2178 .{ 0xA76A, 0xA76A }, 2179 .{ 0xA76C, 0xA76C }, 2180 .{ 0xA76E, 0xA76E }, 2181 .{ 0xA779, 0xA779 }, 2182 .{ 0xA77B, 0xA77B }, 2183 .{ 0xA77D, 0xA77E }, 2184 .{ 0xA780, 0xA780 }, 2185 .{ 0xA782, 0xA782 }, 2186 .{ 0xA784, 0xA784 }, 2187 .{ 0xA786, 0xA786 }, 2188 .{ 0xA78B, 0xA78B }, 2189 .{ 0xA78D, 0xA78D }, 2190 .{ 0xA790, 0xA790 }, 2191 .{ 0xA792, 0xA792 }, 2192 .{ 0xA796, 0xA796 }, 2193 .{ 0xA798, 0xA798 }, 2194 .{ 0xA79A, 0xA79A }, 2195 .{ 0xA79C, 0xA79C }, 2196 .{ 0xA79E, 0xA79E }, 2197 .{ 0xA7A0, 0xA7A0 }, 2198 .{ 0xA7A2, 0xA7A2 }, 2199 .{ 0xA7A4, 0xA7A4 }, 2200 .{ 0xA7A6, 0xA7A6 }, 2201 .{ 0xA7A8, 0xA7A8 }, 2202 .{ 0xA7AA, 0xA7AE }, 2203 .{ 0xA7B0, 0xA7B4 }, 2204 .{ 0xA7B6, 0xA7B6 }, 2205 .{ 0xA7B8, 0xA7B8 }, 2206 .{ 0xAC00, 0xD7AF }, 2207 .{ 0xF900, 0xFAFF }, 2208 .{ 0xFB1D, 0xFBB1 }, 2209 .{ 0xFBD3, 0xFD3D }, 2210 .{ 0xFD50, 0xFDC7 }, 2211 .{ 0xFDF0, 0xFDFB }, 2212 .{ 0xFE30, 0xFE4F }, 2213 .{ 0xFE70, 0xFEFC }, 2214 .{ 0xFF08, 0xFF09 }, 2215 .{ 0xFF21, 0xFF3A }, 2216 .{ 0x1EE00, 0x1EEBB }, 2217 .{ 0x1F200, 0x1F2FF }, 2218 .{ 0x20000, 0x2A6DF }, 2219 .{ 0x2A700, 0x2EBEF }, 2220 .{ 0x2F800, 0x2FA1F }, 2221}; 2222 2223pub fn is_infix_4_ahead(c: u21) bool { 2224 return rangeContains(&is_infix_4_ahead_ranges, c); 2225} 2226 2227pub const is_infix_4_behind_ranges = [_][2]u21{ 2228 .{ 0x0022, 0x0022 }, 2229 .{ 0x0027, 0x0027 }, 2230 .{ 0x002C, 0x002C }, 2231 .{ 0x0060, 0x007A }, 2232 .{ 0x00AB, 0x00AB }, 2233 .{ 0x00B4, 0x00B4 }, 2234 .{ 0x00BB, 0x00BB }, 2235 .{ 0x00DF, 0x00F6 }, 2236 .{ 0x00F8, 0x00FF }, 2237 .{ 0x0101, 0x0101 }, 2238 .{ 0x0103, 0x0103 }, 2239 .{ 0x0105, 0x0105 }, 2240 .{ 0x0107, 0x0107 }, 2241 .{ 0x0109, 0x0109 }, 2242 .{ 0x010B, 0x010B }, 2243 .{ 0x010D, 0x010D }, 2244 .{ 0x010F, 0x010F }, 2245 .{ 0x0111, 0x0111 }, 2246 .{ 0x0113, 0x0113 }, 2247 .{ 0x0115, 0x0115 }, 2248 .{ 0x0117, 0x0117 }, 2249 .{ 0x0119, 0x0119 }, 2250 .{ 0x011B, 0x011B }, 2251 .{ 0x011D, 0x011D }, 2252 .{ 0x011F, 0x011F }, 2253 .{ 0x0121, 0x0121 }, 2254 .{ 0x0123, 0x0123 }, 2255 .{ 0x0125, 0x0125 }, 2256 .{ 0x0127, 0x0127 }, 2257 .{ 0x0129, 0x0129 }, 2258 .{ 0x012B, 0x012B }, 2259 .{ 0x012D, 0x012D }, 2260 .{ 0x012F, 0x012F }, 2261 .{ 0x0131, 0x0131 }, 2262 .{ 0x0133, 0x0133 }, 2263 .{ 0x0135, 0x0135 }, 2264 .{ 0x0137, 0x0138 }, 2265 .{ 0x013A, 0x013A }, 2266 .{ 0x013C, 0x013C }, 2267 .{ 0x013E, 0x013E }, 2268 .{ 0x0140, 0x0140 }, 2269 .{ 0x0142, 0x0142 }, 2270 .{ 0x0144, 0x0144 }, 2271 .{ 0x0146, 0x0146 }, 2272 .{ 0x0148, 0x0149 }, 2273 .{ 0x014B, 0x014B }, 2274 .{ 0x014D, 0x014D }, 2275 .{ 0x014F, 0x014F }, 2276 .{ 0x0151, 0x0151 }, 2277 .{ 0x0153, 0x0153 }, 2278 .{ 0x0155, 0x0155 }, 2279 .{ 0x0157, 0x0157 }, 2280 .{ 0x0159, 0x0159 }, 2281 .{ 0x015B, 0x015B }, 2282 .{ 0x015D, 0x015D }, 2283 .{ 0x015F, 0x015F }, 2284 .{ 0x0161, 0x0161 }, 2285 .{ 0x0163, 0x0163 }, 2286 .{ 0x0165, 0x0165 }, 2287 .{ 0x0167, 0x0167 }, 2288 .{ 0x0169, 0x0169 }, 2289 .{ 0x016B, 0x016B }, 2290 .{ 0x016D, 0x016D }, 2291 .{ 0x016F, 0x016F }, 2292 .{ 0x0171, 0x0171 }, 2293 .{ 0x0173, 0x0173 }, 2294 .{ 0x0175, 0x0175 }, 2295 .{ 0x0177, 0x0177 }, 2296 .{ 0x017A, 0x017A }, 2297 .{ 0x017C, 0x017C }, 2298 .{ 0x017E, 0x0180 }, 2299 .{ 0x0183, 0x0183 }, 2300 .{ 0x0185, 0x0185 }, 2301 .{ 0x0188, 0x0188 }, 2302 .{ 0x018C, 0x018D }, 2303 .{ 0x0192, 0x0192 }, 2304 .{ 0x0195, 0x0195 }, 2305 .{ 0x0199, 0x019B }, 2306 .{ 0x019E, 0x019E }, 2307 .{ 0x01A1, 0x01A1 }, 2308 .{ 0x01A3, 0x01A3 }, 2309 .{ 0x01A5, 0x01A5 }, 2310 .{ 0x01A8, 0x01A8 }, 2311 .{ 0x01AA, 0x01AB }, 2312 .{ 0x01AD, 0x01AD }, 2313 .{ 0x01B0, 0x01B0 }, 2314 .{ 0x01B4, 0x01B4 }, 2315 .{ 0x01B6, 0x01B6 }, 2316 .{ 0x01B9, 0x01BA }, 2317 .{ 0x01BD, 0x01BF }, 2318 .{ 0x01C6, 0x01C6 }, 2319 .{ 0x01C9, 0x01C9 }, 2320 .{ 0x01CC, 0x01CC }, 2321 .{ 0x01CE, 0x01CE }, 2322 .{ 0x01D0, 0x01D0 }, 2323 .{ 0x01D2, 0x01D2 }, 2324 .{ 0x01D4, 0x01D4 }, 2325 .{ 0x01D6, 0x01D6 }, 2326 .{ 0x01D8, 0x01D8 }, 2327 .{ 0x01DA, 0x01DA }, 2328 .{ 0x01DC, 0x01DD }, 2329 .{ 0x01DF, 0x01DF }, 2330 .{ 0x01E1, 0x01E1 }, 2331 .{ 0x01E3, 0x01E3 }, 2332 .{ 0x01E5, 0x01E5 }, 2333 .{ 0x01E7, 0x01E7 }, 2334 .{ 0x01E9, 0x01E9 }, 2335 .{ 0x01EB, 0x01EB }, 2336 .{ 0x01ED, 0x01ED }, 2337 .{ 0x01EF, 0x01F0 }, 2338 .{ 0x01F3, 0x01F3 }, 2339 .{ 0x01F5, 0x01F5 }, 2340 .{ 0x01F9, 0x01F9 }, 2341 .{ 0x01FB, 0x01FB }, 2342 .{ 0x01FD, 0x01FD }, 2343 .{ 0x01FF, 0x01FF }, 2344 .{ 0x0201, 0x0201 }, 2345 .{ 0x0203, 0x0203 }, 2346 .{ 0x0205, 0x0205 }, 2347 .{ 0x0207, 0x0207 }, 2348 .{ 0x0209, 0x0209 }, 2349 .{ 0x020B, 0x020B }, 2350 .{ 0x020D, 0x020D }, 2351 .{ 0x020F, 0x020F }, 2352 .{ 0x0211, 0x0211 }, 2353 .{ 0x0213, 0x0213 }, 2354 .{ 0x0215, 0x0215 }, 2355 .{ 0x0217, 0x0217 }, 2356 .{ 0x0219, 0x0219 }, 2357 .{ 0x021B, 0x021B }, 2358 .{ 0x021D, 0x021D }, 2359 .{ 0x021F, 0x021F }, 2360 .{ 0x0221, 0x0221 }, 2361 .{ 0x0223, 0x0223 }, 2362 .{ 0x0225, 0x0225 }, 2363 .{ 0x0227, 0x0227 }, 2364 .{ 0x0229, 0x0229 }, 2365 .{ 0x022B, 0x022B }, 2366 .{ 0x022D, 0x022D }, 2367 .{ 0x022F, 0x022F }, 2368 .{ 0x0231, 0x0231 }, 2369 .{ 0x0233, 0x0239 }, 2370 .{ 0x023C, 0x023C }, 2371 .{ 0x023F, 0x0240 }, 2372 .{ 0x0242, 0x0242 }, 2373 .{ 0x0247, 0x0247 }, 2374 .{ 0x0249, 0x0249 }, 2375 .{ 0x024B, 0x024B }, 2376 .{ 0x024D, 0x024D }, 2377 .{ 0x024F, 0x02AF }, 2378 .{ 0x03AC, 0x03AF }, 2379 .{ 0x03B1, 0x03C9 }, 2380 .{ 0x03CC, 0x03CE }, 2381 .{ 0x0430, 0x0451 }, 2382 .{ 0x0453, 0x045A }, 2383 .{ 0x045C, 0x045D }, 2384 .{ 0x0491, 0x0491 }, 2385 .{ 0x0497, 0x0497 }, 2386 .{ 0x04A3, 0x04A3 }, 2387 .{ 0x04AF, 0x04AF }, 2388 .{ 0x04BB, 0x04BB }, 2389 .{ 0x04D9, 0x04D9 }, 2390 .{ 0x04E9, 0x04E9 }, 2391 .{ 0x0591, 0x05F4 }, 2392 .{ 0x0620, 0x064A }, 2393 .{ 0x066E, 0x06D5 }, 2394 .{ 0x06E5, 0x06FF }, 2395 .{ 0x0750, 0x077F }, 2396 .{ 0x08A0, 0x08BD }, 2397 .{ 0x0900, 0x09FF }, 2398 .{ 0x0B80, 0x0CFF }, 2399 .{ 0x0D80, 0x0DFF }, 2400 .{ 0x1100, 0x137F }, 2401 .{ 0x1D00, 0x1D25 }, 2402 .{ 0x1D6B, 0x1D77 }, 2403 .{ 0x1D79, 0x1D9A }, 2404 .{ 0x1E01, 0x1E01 }, 2405 .{ 0x1E03, 0x1E03 }, 2406 .{ 0x1E05, 0x1E05 }, 2407 .{ 0x1E07, 0x1E07 }, 2408 .{ 0x1E09, 0x1E09 }, 2409 .{ 0x1E0B, 0x1E0B }, 2410 .{ 0x1E0D, 0x1E0D }, 2411 .{ 0x1E0F, 0x1E0F }, 2412 .{ 0x1E11, 0x1E11 }, 2413 .{ 0x1E13, 0x1E13 }, 2414 .{ 0x1E15, 0x1E15 }, 2415 .{ 0x1E17, 0x1E17 }, 2416 .{ 0x1E19, 0x1E19 }, 2417 .{ 0x1E1B, 0x1E1B }, 2418 .{ 0x1E1D, 0x1E1D }, 2419 .{ 0x1E1F, 0x1E1F }, 2420 .{ 0x1E21, 0x1E21 }, 2421 .{ 0x1E23, 0x1E23 }, 2422 .{ 0x1E25, 0x1E25 }, 2423 .{ 0x1E27, 0x1E27 }, 2424 .{ 0x1E29, 0x1E29 }, 2425 .{ 0x1E2B, 0x1E2B }, 2426 .{ 0x1E2D, 0x1E2D }, 2427 .{ 0x1E2F, 0x1E2F }, 2428 .{ 0x1E31, 0x1E31 }, 2429 .{ 0x1E33, 0x1E33 }, 2430 .{ 0x1E35, 0x1E35 }, 2431 .{ 0x1E37, 0x1E37 }, 2432 .{ 0x1E39, 0x1E39 }, 2433 .{ 0x1E3B, 0x1E3B }, 2434 .{ 0x1E3D, 0x1E3D }, 2435 .{ 0x1E3F, 0x1E3F }, 2436 .{ 0x1E41, 0x1E41 }, 2437 .{ 0x1E43, 0x1E43 }, 2438 .{ 0x1E45, 0x1E45 }, 2439 .{ 0x1E47, 0x1E47 }, 2440 .{ 0x1E49, 0x1E49 }, 2441 .{ 0x1E4B, 0x1E4B }, 2442 .{ 0x1E4D, 0x1E4D }, 2443 .{ 0x1E4F, 0x1E4F }, 2444 .{ 0x1E51, 0x1E51 }, 2445 .{ 0x1E53, 0x1E53 }, 2446 .{ 0x1E55, 0x1E55 }, 2447 .{ 0x1E57, 0x1E57 }, 2448 .{ 0x1E59, 0x1E59 }, 2449 .{ 0x1E5B, 0x1E5B }, 2450 .{ 0x1E5D, 0x1E5D }, 2451 .{ 0x1E5F, 0x1E5F }, 2452 .{ 0x1E61, 0x1E61 }, 2453 .{ 0x1E63, 0x1E63 }, 2454 .{ 0x1E65, 0x1E65 }, 2455 .{ 0x1E67, 0x1E67 }, 2456 .{ 0x1E69, 0x1E69 }, 2457 .{ 0x1E6B, 0x1E6B }, 2458 .{ 0x1E6D, 0x1E6D }, 2459 .{ 0x1E6F, 0x1E6F }, 2460 .{ 0x1E71, 0x1E71 }, 2461 .{ 0x1E73, 0x1E73 }, 2462 .{ 0x1E75, 0x1E75 }, 2463 .{ 0x1E77, 0x1E77 }, 2464 .{ 0x1E79, 0x1E79 }, 2465 .{ 0x1E7B, 0x1E7B }, 2466 .{ 0x1E7D, 0x1E7D }, 2467 .{ 0x1E7F, 0x1E7F }, 2468 .{ 0x1E81, 0x1E81 }, 2469 .{ 0x1E83, 0x1E83 }, 2470 .{ 0x1E85, 0x1E85 }, 2471 .{ 0x1E87, 0x1E87 }, 2472 .{ 0x1E89, 0x1E89 }, 2473 .{ 0x1E8B, 0x1E8B }, 2474 .{ 0x1E8D, 0x1E8D }, 2475 .{ 0x1E8F, 0x1E8F }, 2476 .{ 0x1E91, 0x1E91 }, 2477 .{ 0x1E93, 0x1E93 }, 2478 .{ 0x1E95, 0x1E9D }, 2479 .{ 0x1E9F, 0x1E9F }, 2480 .{ 0x1EA1, 0x1EA1 }, 2481 .{ 0x1EA3, 0x1EA3 }, 2482 .{ 0x1EA5, 0x1EA5 }, 2483 .{ 0x1EA7, 0x1EA7 }, 2484 .{ 0x1EA9, 0x1EA9 }, 2485 .{ 0x1EAB, 0x1EAB }, 2486 .{ 0x1EAD, 0x1EAD }, 2487 .{ 0x1EAF, 0x1EAF }, 2488 .{ 0x1EB1, 0x1EB1 }, 2489 .{ 0x1EB3, 0x1EB3 }, 2490 .{ 0x1EB5, 0x1EB5 }, 2491 .{ 0x1EB7, 0x1EB7 }, 2492 .{ 0x1EB9, 0x1EB9 }, 2493 .{ 0x1EBB, 0x1EBB }, 2494 .{ 0x1EBD, 0x1EBD }, 2495 .{ 0x1EBF, 0x1EBF }, 2496 .{ 0x1EC1, 0x1EC1 }, 2497 .{ 0x1EC3, 0x1EC3 }, 2498 .{ 0x1EC5, 0x1EC5 }, 2499 .{ 0x1EC7, 0x1EC7 }, 2500 .{ 0x1EC9, 0x1EC9 }, 2501 .{ 0x1ECB, 0x1ECB }, 2502 .{ 0x1ECD, 0x1ECD }, 2503 .{ 0x1ECF, 0x1ECF }, 2504 .{ 0x1ED1, 0x1ED1 }, 2505 .{ 0x1ED3, 0x1ED3 }, 2506 .{ 0x1ED5, 0x1ED5 }, 2507 .{ 0x1ED7, 0x1ED7 }, 2508 .{ 0x1ED9, 0x1ED9 }, 2509 .{ 0x1EDB, 0x1EDB }, 2510 .{ 0x1EDD, 0x1EDD }, 2511 .{ 0x1EDF, 0x1EDF }, 2512 .{ 0x1EE1, 0x1EE1 }, 2513 .{ 0x1EE3, 0x1EE3 }, 2514 .{ 0x1EE5, 0x1EE5 }, 2515 .{ 0x1EE7, 0x1EE7 }, 2516 .{ 0x1EE9, 0x1EE9 }, 2517 .{ 0x1EEB, 0x1EEB }, 2518 .{ 0x1EED, 0x1EED }, 2519 .{ 0x1EEF, 0x1EEF }, 2520 .{ 0x1EF1, 0x1EF1 }, 2521 .{ 0x1EF3, 0x1EF3 }, 2522 .{ 0x1EF5, 0x1EF5 }, 2523 .{ 0x1EF7, 0x1EF7 }, 2524 .{ 0x1EF9, 0x1EF9 }, 2525 .{ 0x1EFB, 0x1EFB }, 2526 .{ 0x1EFD, 0x1EFD }, 2527 .{ 0x1EFF, 0x1EFF }, 2528 .{ 0x2018, 0x201A }, 2529 .{ 0x201C, 0x201E }, 2530 .{ 0x2329, 0x232A }, 2531 .{ 0x27E6, 0x27E7 }, 2532 .{ 0x2C61, 0x2C61 }, 2533 .{ 0x2C65, 0x2C66 }, 2534 .{ 0x2C68, 0x2C68 }, 2535 .{ 0x2C6A, 0x2C6A }, 2536 .{ 0x2C6C, 0x2C6C }, 2537 .{ 0x2C71, 0x2C71 }, 2538 .{ 0x2C73, 0x2C74 }, 2539 .{ 0x2C76, 0x2C7B }, 2540 .{ 0x2E80, 0x2FDF }, 2541 .{ 0x2FF0, 0x30FF }, 2542 .{ 0x31C0, 0x31EF }, 2543 .{ 0x3200, 0x4DBF }, 2544 .{ 0x4E00, 0x9FFF }, 2545 .{ 0xA723, 0xA723 }, 2546 .{ 0xA725, 0xA725 }, 2547 .{ 0xA727, 0xA727 }, 2548 .{ 0xA729, 0xA729 }, 2549 .{ 0xA72B, 0xA72B }, 2550 .{ 0xA72D, 0xA72D }, 2551 .{ 0xA72F, 0xA731 }, 2552 .{ 0xA733, 0xA733 }, 2553 .{ 0xA735, 0xA735 }, 2554 .{ 0xA737, 0xA737 }, 2555 .{ 0xA739, 0xA739 }, 2556 .{ 0xA73B, 0xA73B }, 2557 .{ 0xA73D, 0xA73D }, 2558 .{ 0xA73F, 0xA73F }, 2559 .{ 0xA741, 0xA741 }, 2560 .{ 0xA743, 0xA743 }, 2561 .{ 0xA745, 0xA745 }, 2562 .{ 0xA747, 0xA747 }, 2563 .{ 0xA749, 0xA749 }, 2564 .{ 0xA74B, 0xA74B }, 2565 .{ 0xA74D, 0xA74D }, 2566 .{ 0xA74F, 0xA74F }, 2567 .{ 0xA751, 0xA751 }, 2568 .{ 0xA753, 0xA753 }, 2569 .{ 0xA755, 0xA755 }, 2570 .{ 0xA757, 0xA757 }, 2571 .{ 0xA759, 0xA759 }, 2572 .{ 0xA75B, 0xA75B }, 2573 .{ 0xA75D, 0xA75D }, 2574 .{ 0xA75F, 0xA75F }, 2575 .{ 0xA761, 0xA761 }, 2576 .{ 0xA763, 0xA763 }, 2577 .{ 0xA765, 0xA765 }, 2578 .{ 0xA767, 0xA767 }, 2579 .{ 0xA769, 0xA769 }, 2580 .{ 0xA76B, 0xA76B }, 2581 .{ 0xA76D, 0xA76D }, 2582 .{ 0xA76F, 0xA76F }, 2583 .{ 0xA771, 0xA778 }, 2584 .{ 0xA77A, 0xA77A }, 2585 .{ 0xA77C, 0xA77C }, 2586 .{ 0xA77F, 0xA77F }, 2587 .{ 0xA781, 0xA781 }, 2588 .{ 0xA783, 0xA783 }, 2589 .{ 0xA785, 0xA785 }, 2590 .{ 0xA787, 0xA787 }, 2591 .{ 0xA78C, 0xA78C }, 2592 .{ 0xA78E, 0xA78E }, 2593 .{ 0xA791, 0xA791 }, 2594 .{ 0xA793, 0xA795 }, 2595 .{ 0xA797, 0xA797 }, 2596 .{ 0xA799, 0xA799 }, 2597 .{ 0xA79B, 0xA79B }, 2598 .{ 0xA79D, 0xA79D }, 2599 .{ 0xA79F, 0xA79F }, 2600 .{ 0xA7A1, 0xA7A1 }, 2601 .{ 0xA7A3, 0xA7A3 }, 2602 .{ 0xA7A5, 0xA7A5 }, 2603 .{ 0xA7A7, 0xA7A7 }, 2604 .{ 0xA7A9, 0xA7A9 }, 2605 .{ 0xA7AF, 0xA7AF }, 2606 .{ 0xA7B5, 0xA7B5 }, 2607 .{ 0xA7B7, 0xA7B7 }, 2608 .{ 0xA7B9, 0xA7B9 }, 2609 .{ 0xA7FA, 0xA7FA }, 2610 .{ 0xAB30, 0xAB5A }, 2611 .{ 0xAB60, 0xAB64 }, 2612 .{ 0xAC00, 0xD7AF }, 2613 .{ 0xF900, 0xFAFF }, 2614 .{ 0xFB1D, 0xFBB1 }, 2615 .{ 0xFBD3, 0xFD3D }, 2616 .{ 0xFD50, 0xFDC7 }, 2617 .{ 0xFDF0, 0xFDFB }, 2618 .{ 0xFE30, 0xFE4F }, 2619 .{ 0xFE70, 0xFEFC }, 2620 .{ 0xFF08, 0xFF09 }, 2621 .{ 0xFF41, 0xFF5A }, 2622 .{ 0x1EE00, 0x1EEBB }, 2623 .{ 0x1F200, 0x1F2FF }, 2624 .{ 0x20000, 0x2A6DF }, 2625 .{ 0x2A700, 0x2EBEF }, 2626 .{ 0x2F800, 0x2FA1F }, 2627}; 2628 2629pub fn is_infix_4_behind(c: u21) bool { 2630 return rangeContains(&is_infix_4_behind_ranges, c); 2631} 2632 2633pub const is_infix_5_ahead_ranges = [_][2]u21{ 2634 .{ 0x0041, 0x005A }, 2635 .{ 0x0061, 0x007A }, 2636 .{ 0x00C0, 0x00D6 }, 2637 .{ 0x00D8, 0x00F6 }, 2638 .{ 0x00F8, 0x01BF }, 2639 .{ 0x01C4, 0x02AF }, 2640 .{ 0x0386, 0x0386 }, 2641 .{ 0x0388, 0x038A }, 2642 .{ 0x038C, 0x038C }, 2643 .{ 0x038E, 0x038F }, 2644 .{ 0x0391, 0x03A9 }, 2645 .{ 0x03AC, 0x03AF }, 2646 .{ 0x03B1, 0x03C9 }, 2647 .{ 0x03CC, 0x03CE }, 2648 .{ 0x0400, 0x0401 }, 2649 .{ 0x0403, 0x040A }, 2650 .{ 0x040C, 0x040D }, 2651 .{ 0x0410, 0x0451 }, 2652 .{ 0x0453, 0x045A }, 2653 .{ 0x045C, 0x045D }, 2654 .{ 0x0490, 0x0491 }, 2655 .{ 0x0496, 0x0497 }, 2656 .{ 0x04A2, 0x04A3 }, 2657 .{ 0x04AE, 0x04AF }, 2658 .{ 0x04BA, 0x04BB }, 2659 .{ 0x04D8, 0x04D9 }, 2660 .{ 0x04E8, 0x04E9 }, 2661 .{ 0x0591, 0x05F4 }, 2662 .{ 0x0620, 0x064A }, 2663 .{ 0x066E, 0x06D5 }, 2664 .{ 0x06E5, 0x06FF }, 2665 .{ 0x0750, 0x077F }, 2666 .{ 0x08A0, 0x08BD }, 2667 .{ 0x0900, 0x09FF }, 2668 .{ 0x0B80, 0x0CFF }, 2669 .{ 0x0D80, 0x0DFF }, 2670 .{ 0x1100, 0x137F }, 2671 .{ 0x1D00, 0x1D25 }, 2672 .{ 0x1D6B, 0x1D77 }, 2673 .{ 0x1D79, 0x1D9A }, 2674 .{ 0x1E00, 0x1EFF }, 2675 .{ 0x2C60, 0x2C7B }, 2676 .{ 0x2C7E, 0x2C7F }, 2677 .{ 0x2E80, 0x2FDF }, 2678 .{ 0x2FF0, 0x30FF }, 2679 .{ 0x31C0, 0x31EF }, 2680 .{ 0x3200, 0x4DBF }, 2681 .{ 0x4E00, 0x9FFF }, 2682 .{ 0xA722, 0xA76F }, 2683 .{ 0xA771, 0xA787 }, 2684 .{ 0xA78B, 0xA78E }, 2685 .{ 0xA790, 0xA7B9 }, 2686 .{ 0xA7FA, 0xA7FA }, 2687 .{ 0xAB30, 0xAB5A }, 2688 .{ 0xAB60, 0xAB64 }, 2689 .{ 0xAC00, 0xD7AF }, 2690 .{ 0xF900, 0xFAFF }, 2691 .{ 0xFB1D, 0xFBB1 }, 2692 .{ 0xFBD3, 0xFD3D }, 2693 .{ 0xFD50, 0xFDC7 }, 2694 .{ 0xFDF0, 0xFDFB }, 2695 .{ 0xFE30, 0xFE4F }, 2696 .{ 0xFE70, 0xFEFC }, 2697 .{ 0xFF21, 0xFF3A }, 2698 .{ 0xFF41, 0xFF5A }, 2699 .{ 0x1EE00, 0x1EEBB }, 2700 .{ 0x1F200, 0x1F2FF }, 2701 .{ 0x20000, 0x2A6DF }, 2702 .{ 0x2A700, 0x2EBEF }, 2703 .{ 0x2F800, 0x2FA1F }, 2704}; 2705 2706pub fn is_infix_5_ahead(c: u21) bool { 2707 return rangeContains(&is_infix_5_ahead_ranges, c); 2708} 2709 2710pub const is_infix_5_behind_ranges = [_][2]u21{ 2711 .{ 0x0041, 0x005A }, 2712 .{ 0x0061, 0x007A }, 2713 .{ 0x00C0, 0x00D6 }, 2714 .{ 0x00D8, 0x00F6 }, 2715 .{ 0x00F8, 0x01BF }, 2716 .{ 0x01C4, 0x02AF }, 2717 .{ 0x0386, 0x0386 }, 2718 .{ 0x0388, 0x038A }, 2719 .{ 0x038C, 0x038C }, 2720 .{ 0x038E, 0x038F }, 2721 .{ 0x0391, 0x03A9 }, 2722 .{ 0x03AC, 0x03AF }, 2723 .{ 0x03B1, 0x03C9 }, 2724 .{ 0x03CC, 0x03CE }, 2725 .{ 0x0400, 0x0401 }, 2726 .{ 0x0403, 0x040A }, 2727 .{ 0x040C, 0x040D }, 2728 .{ 0x0410, 0x0451 }, 2729 .{ 0x0453, 0x045A }, 2730 .{ 0x045C, 0x045D }, 2731 .{ 0x0490, 0x0491 }, 2732 .{ 0x0496, 0x0497 }, 2733 .{ 0x04A2, 0x04A3 }, 2734 .{ 0x04AE, 0x04AF }, 2735 .{ 0x04BA, 0x04BB }, 2736 .{ 0x04D8, 0x04D9 }, 2737 .{ 0x04E8, 0x04E9 }, 2738 .{ 0x0591, 0x05F4 }, 2739 .{ 0x0620, 0x064A }, 2740 .{ 0x066E, 0x06D5 }, 2741 .{ 0x06E5, 0x06FF }, 2742 .{ 0x0750, 0x077F }, 2743 .{ 0x08A0, 0x08BD }, 2744 .{ 0x0900, 0x09FF }, 2745 .{ 0x0B80, 0x0CFF }, 2746 .{ 0x0D80, 0x0DFF }, 2747 .{ 0x1100, 0x137F }, 2748 .{ 0x1D00, 0x1D25 }, 2749 .{ 0x1D6B, 0x1D77 }, 2750 .{ 0x1D79, 0x1D9A }, 2751 .{ 0x1E00, 0x1EFF }, 2752 .{ 0x2C60, 0x2C7B }, 2753 .{ 0x2C7E, 0x2C7F }, 2754 .{ 0x2E80, 0x2FDF }, 2755 .{ 0x2FF0, 0x30FF }, 2756 .{ 0x31C0, 0x31EF }, 2757 .{ 0x3200, 0x4DBF }, 2758 .{ 0x4E00, 0x9FFF }, 2759 .{ 0xA722, 0xA76F }, 2760 .{ 0xA771, 0xA787 }, 2761 .{ 0xA78B, 0xA78E }, 2762 .{ 0xA790, 0xA7B9 }, 2763 .{ 0xA7FA, 0xA7FA }, 2764 .{ 0xAB30, 0xAB5A }, 2765 .{ 0xAB60, 0xAB64 }, 2766 .{ 0xAC00, 0xD7AF }, 2767 .{ 0xF900, 0xFAFF }, 2768 .{ 0xFB1D, 0xFBB1 }, 2769 .{ 0xFBD3, 0xFD3D }, 2770 .{ 0xFD50, 0xFDC7 }, 2771 .{ 0xFDF0, 0xFDFB }, 2772 .{ 0xFE30, 0xFE4F }, 2773 .{ 0xFE70, 0xFEFC }, 2774 .{ 0xFF21, 0xFF3A }, 2775 .{ 0xFF41, 0xFF5A }, 2776 .{ 0x1EE00, 0x1EEBB }, 2777 .{ 0x1F200, 0x1F2FF }, 2778 .{ 0x20000, 0x2A6DF }, 2779 .{ 0x2A700, 0x2EBEF }, 2780 .{ 0x2F800, 0x2FA1F }, 2781}; 2782 2783pub fn is_infix_5_behind(c: u21) bool { 2784 return rangeContains(&is_infix_5_behind_ranges, c); 2785} 2786 2787pub const is_infix_6_ahead_ranges = [_][2]u21{ 2788 .{ 0x0041, 0x005A }, 2789 .{ 0x0061, 0x007A }, 2790 .{ 0x00C0, 0x00D6 }, 2791 .{ 0x00D8, 0x00F6 }, 2792 .{ 0x00F8, 0x01BF }, 2793 .{ 0x01C4, 0x02AF }, 2794 .{ 0x0386, 0x0386 }, 2795 .{ 0x0388, 0x038A }, 2796 .{ 0x038C, 0x038C }, 2797 .{ 0x038E, 0x038F }, 2798 .{ 0x0391, 0x03A9 }, 2799 .{ 0x03AC, 0x03AF }, 2800 .{ 0x03B1, 0x03C9 }, 2801 .{ 0x03CC, 0x03CE }, 2802 .{ 0x0400, 0x0401 }, 2803 .{ 0x0403, 0x040A }, 2804 .{ 0x040C, 0x040D }, 2805 .{ 0x0410, 0x0451 }, 2806 .{ 0x0453, 0x045A }, 2807 .{ 0x045C, 0x045D }, 2808 .{ 0x0490, 0x0491 }, 2809 .{ 0x0496, 0x0497 }, 2810 .{ 0x04A2, 0x04A3 }, 2811 .{ 0x04AE, 0x04AF }, 2812 .{ 0x04BA, 0x04BB }, 2813 .{ 0x04D8, 0x04D9 }, 2814 .{ 0x04E8, 0x04E9 }, 2815 .{ 0x0591, 0x05F4 }, 2816 .{ 0x0620, 0x064A }, 2817 .{ 0x066E, 0x06D5 }, 2818 .{ 0x06E5, 0x06FF }, 2819 .{ 0x0750, 0x077F }, 2820 .{ 0x08A0, 0x08BD }, 2821 .{ 0x0900, 0x09FF }, 2822 .{ 0x0B80, 0x0CFF }, 2823 .{ 0x0D80, 0x0DFF }, 2824 .{ 0x1100, 0x137F }, 2825 .{ 0x1D00, 0x1D25 }, 2826 .{ 0x1D6B, 0x1D77 }, 2827 .{ 0x1D79, 0x1D9A }, 2828 .{ 0x1E00, 0x1EFF }, 2829 .{ 0x2C60, 0x2C7B }, 2830 .{ 0x2C7E, 0x2C7F }, 2831 .{ 0x2E80, 0x2FDF }, 2832 .{ 0x2FF0, 0x30FF }, 2833 .{ 0x31C0, 0x31EF }, 2834 .{ 0x3200, 0x4DBF }, 2835 .{ 0x4E00, 0x9FFF }, 2836 .{ 0xA722, 0xA76F }, 2837 .{ 0xA771, 0xA787 }, 2838 .{ 0xA78B, 0xA78E }, 2839 .{ 0xA790, 0xA7B9 }, 2840 .{ 0xA7FA, 0xA7FA }, 2841 .{ 0xAB30, 0xAB5A }, 2842 .{ 0xAB60, 0xAB64 }, 2843 .{ 0xAC00, 0xD7AF }, 2844 .{ 0xF900, 0xFAFF }, 2845 .{ 0xFB1D, 0xFBB1 }, 2846 .{ 0xFBD3, 0xFD3D }, 2847 .{ 0xFD50, 0xFDC7 }, 2848 .{ 0xFDF0, 0xFDFB }, 2849 .{ 0xFE30, 0xFE4F }, 2850 .{ 0xFE70, 0xFEFC }, 2851 .{ 0xFF21, 0xFF3A }, 2852 .{ 0xFF41, 0xFF5A }, 2853 .{ 0x1EE00, 0x1EEBB }, 2854 .{ 0x1F200, 0x1F2FF }, 2855 .{ 0x20000, 0x2A6DF }, 2856 .{ 0x2A700, 0x2EBEF }, 2857 .{ 0x2F800, 0x2FA1F }, 2858}; 2859 2860pub fn is_infix_6_ahead(c: u21) bool { 2861 return rangeContains(&is_infix_6_ahead_ranges, c); 2862} 2863 2864pub const is_infix_6_behind_ranges = [_][2]u21{ 2865 .{ 0x0030, 0x0039 }, 2866 .{ 0x0041, 0x005A }, 2867 .{ 0x0061, 0x007A }, 2868 .{ 0x00C0, 0x00D6 }, 2869 .{ 0x00D8, 0x00F6 }, 2870 .{ 0x00F8, 0x01BF }, 2871 .{ 0x01C4, 0x02AF }, 2872 .{ 0x0386, 0x0386 }, 2873 .{ 0x0388, 0x038A }, 2874 .{ 0x038C, 0x038C }, 2875 .{ 0x038E, 0x038F }, 2876 .{ 0x0391, 0x03A9 }, 2877 .{ 0x03AC, 0x03AF }, 2878 .{ 0x03B1, 0x03C9 }, 2879 .{ 0x03CC, 0x03CE }, 2880 .{ 0x0400, 0x0401 }, 2881 .{ 0x0403, 0x040A }, 2882 .{ 0x040C, 0x040D }, 2883 .{ 0x0410, 0x0451 }, 2884 .{ 0x0453, 0x045A }, 2885 .{ 0x045C, 0x045D }, 2886 .{ 0x0490, 0x0491 }, 2887 .{ 0x0496, 0x0497 }, 2888 .{ 0x04A2, 0x04A3 }, 2889 .{ 0x04AE, 0x04AF }, 2890 .{ 0x04BA, 0x04BB }, 2891 .{ 0x04D8, 0x04D9 }, 2892 .{ 0x04E8, 0x04E9 }, 2893 .{ 0x0591, 0x05F4 }, 2894 .{ 0x0620, 0x064A }, 2895 .{ 0x066E, 0x06D5 }, 2896 .{ 0x06E5, 0x06FF }, 2897 .{ 0x0750, 0x077F }, 2898 .{ 0x08A0, 0x08BD }, 2899 .{ 0x0900, 0x09FF }, 2900 .{ 0x0B80, 0x0CFF }, 2901 .{ 0x0D80, 0x0DFF }, 2902 .{ 0x1100, 0x137F }, 2903 .{ 0x1D00, 0x1D25 }, 2904 .{ 0x1D6B, 0x1D77 }, 2905 .{ 0x1D79, 0x1D9A }, 2906 .{ 0x1E00, 0x1EFF }, 2907 .{ 0x2C60, 0x2C7B }, 2908 .{ 0x2C7E, 0x2C7F }, 2909 .{ 0x2E80, 0x2FDF }, 2910 .{ 0x2FF0, 0x30FF }, 2911 .{ 0x31C0, 0x31EF }, 2912 .{ 0x3200, 0x4DBF }, 2913 .{ 0x4E00, 0x9FFF }, 2914 .{ 0xA722, 0xA76F }, 2915 .{ 0xA771, 0xA787 }, 2916 .{ 0xA78B, 0xA78E }, 2917 .{ 0xA790, 0xA7B9 }, 2918 .{ 0xA7FA, 0xA7FA }, 2919 .{ 0xAB30, 0xAB5A }, 2920 .{ 0xAB60, 0xAB64 }, 2921 .{ 0xAC00, 0xD7AF }, 2922 .{ 0xF900, 0xFAFF }, 2923 .{ 0xFB1D, 0xFBB1 }, 2924 .{ 0xFBD3, 0xFD3D }, 2925 .{ 0xFD50, 0xFDC7 }, 2926 .{ 0xFDF0, 0xFDFB }, 2927 .{ 0xFE30, 0xFE4F }, 2928 .{ 0xFE70, 0xFEFC }, 2929 .{ 0xFF21, 0xFF3A }, 2930 .{ 0xFF41, 0xFF5A }, 2931 .{ 0x1EE00, 0x1EEBB }, 2932 .{ 0x1F200, 0x1F2FF }, 2933 .{ 0x20000, 0x2A6DF }, 2934 .{ 0x2A700, 0x2EBEF }, 2935 .{ 0x2F800, 0x2FA1F }, 2936}; 2937 2938pub fn is_infix_6_behind(c: u21) bool { 2939 return rangeContains(&is_infix_6_behind_ranges, c); 2940} 2941 2942pub const is_infix_7_ahead_ranges = [_][2]u21{ 2943 .{ 0x0041, 0x005A }, 2944 .{ 0x0061, 0x007A }, 2945 .{ 0x00C0, 0x00D6 }, 2946 .{ 0x00D8, 0x00F6 }, 2947 .{ 0x00F8, 0x01BF }, 2948 .{ 0x01C4, 0x02AF }, 2949 .{ 0x0386, 0x0386 }, 2950 .{ 0x0388, 0x038A }, 2951 .{ 0x038C, 0x038C }, 2952 .{ 0x038E, 0x038F }, 2953 .{ 0x0391, 0x03A9 }, 2954 .{ 0x03AC, 0x03AF }, 2955 .{ 0x03B1, 0x03C9 }, 2956 .{ 0x03CC, 0x03CE }, 2957 .{ 0x0400, 0x0401 }, 2958 .{ 0x0403, 0x040A }, 2959 .{ 0x040C, 0x040D }, 2960 .{ 0x0410, 0x0451 }, 2961 .{ 0x0453, 0x045A }, 2962 .{ 0x045C, 0x045D }, 2963 .{ 0x0490, 0x0491 }, 2964 .{ 0x0496, 0x0497 }, 2965 .{ 0x04A2, 0x04A3 }, 2966 .{ 0x04AE, 0x04AF }, 2967 .{ 0x04BA, 0x04BB }, 2968 .{ 0x04D8, 0x04D9 }, 2969 .{ 0x04E8, 0x04E9 }, 2970 .{ 0x0591, 0x05F4 }, 2971 .{ 0x0620, 0x064A }, 2972 .{ 0x066E, 0x06D5 }, 2973 .{ 0x06E5, 0x06FF }, 2974 .{ 0x0750, 0x077F }, 2975 .{ 0x08A0, 0x08BD }, 2976 .{ 0x0900, 0x09FF }, 2977 .{ 0x0B80, 0x0CFF }, 2978 .{ 0x0D80, 0x0DFF }, 2979 .{ 0x1100, 0x137F }, 2980 .{ 0x1D00, 0x1D25 }, 2981 .{ 0x1D6B, 0x1D77 }, 2982 .{ 0x1D79, 0x1D9A }, 2983 .{ 0x1E00, 0x1EFF }, 2984 .{ 0x2C60, 0x2C7B }, 2985 .{ 0x2C7E, 0x2C7F }, 2986 .{ 0x2E80, 0x2FDF }, 2987 .{ 0x2FF0, 0x30FF }, 2988 .{ 0x31C0, 0x31EF }, 2989 .{ 0x3200, 0x4DBF }, 2990 .{ 0x4E00, 0x9FFF }, 2991 .{ 0xA722, 0xA76F }, 2992 .{ 0xA771, 0xA787 }, 2993 .{ 0xA78B, 0xA78E }, 2994 .{ 0xA790, 0xA7B9 }, 2995 .{ 0xA7FA, 0xA7FA }, 2996 .{ 0xAB30, 0xAB5A }, 2997 .{ 0xAB60, 0xAB64 }, 2998 .{ 0xAC00, 0xD7AF }, 2999 .{ 0xF900, 0xFAFF }, 3000 .{ 0xFB1D, 0xFBB1 }, 3001 .{ 0xFBD3, 0xFD3D }, 3002 .{ 0xFD50, 0xFDC7 }, 3003 .{ 0xFDF0, 0xFDFB }, 3004 .{ 0xFE30, 0xFE4F }, 3005 .{ 0xFE70, 0xFEFC }, 3006 .{ 0xFF21, 0xFF3A }, 3007 .{ 0xFF41, 0xFF5A }, 3008 .{ 0x1EE00, 0x1EEBB }, 3009 .{ 0x1F200, 0x1F2FF }, 3010 .{ 0x20000, 0x2A6DF }, 3011 .{ 0x2A700, 0x2EBEF }, 3012 .{ 0x2F800, 0x2FA1F }, 3013}; 3014 3015pub fn is_infix_7_ahead(c: u21) bool { 3016 return rangeContains(&is_infix_7_ahead_ranges, c); 3017} 3018 3019pub const is_infix_7_behind_ranges = [_][2]u21{ 3020 .{ 0x0030, 0x0039 }, 3021 .{ 0x0041, 0x005A }, 3022 .{ 0x0061, 0x007A }, 3023 .{ 0x00C0, 0x00D6 }, 3024 .{ 0x00D8, 0x00F6 }, 3025 .{ 0x00F8, 0x01BF }, 3026 .{ 0x01C4, 0x02AF }, 3027 .{ 0x0386, 0x0386 }, 3028 .{ 0x0388, 0x038A }, 3029 .{ 0x038C, 0x038C }, 3030 .{ 0x038E, 0x038F }, 3031 .{ 0x0391, 0x03A9 }, 3032 .{ 0x03AC, 0x03AF }, 3033 .{ 0x03B1, 0x03C9 }, 3034 .{ 0x03CC, 0x03CE }, 3035 .{ 0x0400, 0x0401 }, 3036 .{ 0x0403, 0x040A }, 3037 .{ 0x040C, 0x040D }, 3038 .{ 0x0410, 0x0451 }, 3039 .{ 0x0453, 0x045A }, 3040 .{ 0x045C, 0x045D }, 3041 .{ 0x0490, 0x0491 }, 3042 .{ 0x0496, 0x0497 }, 3043 .{ 0x04A2, 0x04A3 }, 3044 .{ 0x04AE, 0x04AF }, 3045 .{ 0x04BA, 0x04BB }, 3046 .{ 0x04D8, 0x04D9 }, 3047 .{ 0x04E8, 0x04E9 }, 3048 .{ 0x0591, 0x05F4 }, 3049 .{ 0x0620, 0x064A }, 3050 .{ 0x066E, 0x06D5 }, 3051 .{ 0x06E5, 0x06FF }, 3052 .{ 0x0750, 0x077F }, 3053 .{ 0x08A0, 0x08BD }, 3054 .{ 0x0900, 0x09FF }, 3055 .{ 0x0B80, 0x0CFF }, 3056 .{ 0x0D80, 0x0DFF }, 3057 .{ 0x1100, 0x137F }, 3058 .{ 0x1D00, 0x1D25 }, 3059 .{ 0x1D6B, 0x1D77 }, 3060 .{ 0x1D79, 0x1D9A }, 3061 .{ 0x1E00, 0x1EFF }, 3062 .{ 0x2C60, 0x2C7B }, 3063 .{ 0x2C7E, 0x2C7F }, 3064 .{ 0x2E80, 0x2FDF }, 3065 .{ 0x2FF0, 0x30FF }, 3066 .{ 0x31C0, 0x31EF }, 3067 .{ 0x3200, 0x4DBF }, 3068 .{ 0x4E00, 0x9FFF }, 3069 .{ 0xA722, 0xA76F }, 3070 .{ 0xA771, 0xA787 }, 3071 .{ 0xA78B, 0xA78E }, 3072 .{ 0xA790, 0xA7B9 }, 3073 .{ 0xA7FA, 0xA7FA }, 3074 .{ 0xAB30, 0xAB5A }, 3075 .{ 0xAB60, 0xAB64 }, 3076 .{ 0xAC00, 0xD7AF }, 3077 .{ 0xF900, 0xFAFF }, 3078 .{ 0xFB1D, 0xFBB1 }, 3079 .{ 0xFBD3, 0xFD3D }, 3080 .{ 0xFD50, 0xFDC7 }, 3081 .{ 0xFDF0, 0xFDFB }, 3082 .{ 0xFE30, 0xFE4F }, 3083 .{ 0xFE70, 0xFEFC }, 3084 .{ 0xFF21, 0xFF3A }, 3085 .{ 0xFF41, 0xFF5A }, 3086 .{ 0x1EE00, 0x1EEBB }, 3087 .{ 0x1F200, 0x1F2FF }, 3088 .{ 0x20000, 0x2A6DF }, 3089 .{ 0x2A700, 0x2EBEF }, 3090 .{ 0x2F800, 0x2FA1F }, 3091}; 3092 3093pub fn is_infix_7_behind(c: u21) bool { 3094 return rangeContains(&is_infix_7_behind_ranges, c); 3095} 3096 3097// ── special cases ── 3098 3099pub const SpecialCase = struct { 3100 tokens: [3][]const u8, 3101 len: u8, 3102}; 3103 3104pub const specials = std.StaticStringMap(SpecialCase).initComptime(.{ 3105 .{ "\t", SpecialCase{ .tokens = .{ "\t", "", "" }, .len = 1 } }, 3106 .{ "\n", SpecialCase{ .tokens = .{ "\n", "", "" }, .len = 1 } }, 3107 .{ " ", SpecialCase{ .tokens = .{ " ", "", "" }, .len = 1 } }, 3108 .{ "'", SpecialCase{ .tokens = .{ "'", "", "" }, .len = 1 } }, 3109 .{ "''", SpecialCase{ .tokens = .{ "''", "", "" }, .len = 1 } }, 3110 .{ "'Cause", SpecialCase{ .tokens = .{ "'Cause", "", "" }, .len = 1 } }, 3111 .{ "'Cos", SpecialCase{ .tokens = .{ "'Cos", "", "" }, .len = 1 } }, 3112 .{ "'Coz", SpecialCase{ .tokens = .{ "'Coz", "", "" }, .len = 1 } }, 3113 .{ "'Cuz", SpecialCase{ .tokens = .{ "'Cuz", "", "" }, .len = 1 } }, 3114 .{ "'S", SpecialCase{ .tokens = .{ "'S", "", "" }, .len = 1 } }, 3115 .{ "'bout", SpecialCase{ .tokens = .{ "'bout", "", "" }, .len = 1 } }, 3116 .{ "'cause", SpecialCase{ .tokens = .{ "'cause", "", "" }, .len = 1 } }, 3117 .{ "'cos", SpecialCase{ .tokens = .{ "'cos", "", "" }, .len = 1 } }, 3118 .{ "'coz", SpecialCase{ .tokens = .{ "'coz", "", "" }, .len = 1 } }, 3119 .{ "'cuz", SpecialCase{ .tokens = .{ "'cuz", "", "" }, .len = 1 } }, 3120 .{ "'d", SpecialCase{ .tokens = .{ "'d", "", "" }, .len = 1 } }, 3121 .{ "'em", SpecialCase{ .tokens = .{ "'em", "", "" }, .len = 1 } }, 3122 .{ "'ll", SpecialCase{ .tokens = .{ "'ll", "", "" }, .len = 1 } }, 3123 .{ "'nuff", SpecialCase{ .tokens = .{ "'nuff", "", "" }, .len = 1 } }, 3124 .{ "'re", SpecialCase{ .tokens = .{ "'re", "", "" }, .len = 1 } }, 3125 .{ "'s", SpecialCase{ .tokens = .{ "'s", "", "" }, .len = 1 } }, 3126 .{ "(*_*)", SpecialCase{ .tokens = .{ "(*_*)", "", "" }, .len = 1 } }, 3127 .{ "(-8", SpecialCase{ .tokens = .{ "(-8", "", "" }, .len = 1 } }, 3128 .{ "(-:", SpecialCase{ .tokens = .{ "(-:", "", "" }, .len = 1 } }, 3129 .{ "(-;", SpecialCase{ .tokens = .{ "(-;", "", "" }, .len = 1 } }, 3130 .{ "(-_-)", SpecialCase{ .tokens = .{ "(-_-)", "", "" }, .len = 1 } }, 3131 .{ "(._.)", SpecialCase{ .tokens = .{ "(._.)", "", "" }, .len = 1 } }, 3132 .{ "(:", SpecialCase{ .tokens = .{ "(:", "", "" }, .len = 1 } }, 3133 .{ "(;", SpecialCase{ .tokens = .{ "(;", "", "" }, .len = 1 } }, 3134 .{ "(=", SpecialCase{ .tokens = .{ "(=", "", "" }, .len = 1 } }, 3135 .{ "(>_<)", SpecialCase{ .tokens = .{ "(>_<)", "", "" }, .len = 1 } }, 3136 .{ "(^_^)", SpecialCase{ .tokens = .{ "(^_^)", "", "" }, .len = 1 } }, 3137 .{ "(o:", SpecialCase{ .tokens = .{ "(o:", "", "" }, .len = 1 } }, 3138 .{ "(\xc2\xac_\xc2\xac)", SpecialCase{ .tokens = .{ "(\xc2\xac_\xc2\xac)", "", "" }, .len = 1 } }, 3139 .{ "(\xe0\xb2\xa0_\xe0\xb2\xa0)", SpecialCase{ .tokens = .{ "(\xe0\xb2\xa0_\xe0\xb2\xa0)", "", "" }, .len = 1 } }, 3140 .{ "(\xe2\x95\xaf\xc2\xb0\xe2\x96\xa1\xc2\xb0\xef\xbc\x89\xe2\x95\xaf\xef\xb8\xb5\xe2\x94\xbb\xe2\x94\x81\xe2\x94\xbb", SpecialCase{ .tokens = .{ "(\xe2\x95\xaf\xc2\xb0\xe2\x96\xa1\xc2\xb0\xef\xbc\x89\xe2\x95\xaf\xef\xb8\xb5\xe2\x94\xbb\xe2\x94\x81\xe2\x94\xbb", "", "" }, .len = 1 } }, 3141 .{ ")-:", SpecialCase{ .tokens = .{ ")-:", "", "" }, .len = 1 } }, 3142 .{ "):", SpecialCase{ .tokens = .{ "):", "", "" }, .len = 1 } }, 3143 .{ "-_-", SpecialCase{ .tokens = .{ "-_-", "", "" }, .len = 1 } }, 3144 .{ "-__-", SpecialCase{ .tokens = .{ "-__-", "", "" }, .len = 1 } }, 3145 .{ "._.", SpecialCase{ .tokens = .{ "._.", "", "" }, .len = 1 } }, 3146 .{ "0.0", SpecialCase{ .tokens = .{ "0.0", "", "" }, .len = 1 } }, 3147 .{ "0.o", SpecialCase{ .tokens = .{ "0.o", "", "" }, .len = 1 } }, 3148 .{ "0_0", SpecialCase{ .tokens = .{ "0_0", "", "" }, .len = 1 } }, 3149 .{ "0_o", SpecialCase{ .tokens = .{ "0_o", "", "" }, .len = 1 } }, 3150 .{ "10a.m.", SpecialCase{ .tokens = .{ "10", "a.m.", "" }, .len = 2 } }, 3151 .{ "10am", SpecialCase{ .tokens = .{ "10", "am", "" }, .len = 2 } }, 3152 .{ "10p.m.", SpecialCase{ .tokens = .{ "10", "p.m.", "" }, .len = 2 } }, 3153 .{ "10pm", SpecialCase{ .tokens = .{ "10", "pm", "" }, .len = 2 } }, 3154 .{ "11a.m.", SpecialCase{ .tokens = .{ "11", "a.m.", "" }, .len = 2 } }, 3155 .{ "11am", SpecialCase{ .tokens = .{ "11", "am", "" }, .len = 2 } }, 3156 .{ "11p.m.", SpecialCase{ .tokens = .{ "11", "p.m.", "" }, .len = 2 } }, 3157 .{ "11pm", SpecialCase{ .tokens = .{ "11", "pm", "" }, .len = 2 } }, 3158 .{ "12a.m.", SpecialCase{ .tokens = .{ "12", "a.m.", "" }, .len = 2 } }, 3159 .{ "12am", SpecialCase{ .tokens = .{ "12", "am", "" }, .len = 2 } }, 3160 .{ "12p.m.", SpecialCase{ .tokens = .{ "12", "p.m.", "" }, .len = 2 } }, 3161 .{ "12pm", SpecialCase{ .tokens = .{ "12", "pm", "" }, .len = 2 } }, 3162 .{ "1a.m.", SpecialCase{ .tokens = .{ "1", "a.m.", "" }, .len = 2 } }, 3163 .{ "1am", SpecialCase{ .tokens = .{ "1", "am", "" }, .len = 2 } }, 3164 .{ "1p.m.", SpecialCase{ .tokens = .{ "1", "p.m.", "" }, .len = 2 } }, 3165 .{ "1pm", SpecialCase{ .tokens = .{ "1", "pm", "" }, .len = 2 } }, 3166 .{ "2a.m.", SpecialCase{ .tokens = .{ "2", "a.m.", "" }, .len = 2 } }, 3167 .{ "2am", SpecialCase{ .tokens = .{ "2", "am", "" }, .len = 2 } }, 3168 .{ "2p.m.", SpecialCase{ .tokens = .{ "2", "p.m.", "" }, .len = 2 } }, 3169 .{ "2pm", SpecialCase{ .tokens = .{ "2", "pm", "" }, .len = 2 } }, 3170 .{ "3a.m.", SpecialCase{ .tokens = .{ "3", "a.m.", "" }, .len = 2 } }, 3171 .{ "3am", SpecialCase{ .tokens = .{ "3", "am", "" }, .len = 2 } }, 3172 .{ "3p.m.", SpecialCase{ .tokens = .{ "3", "p.m.", "" }, .len = 2 } }, 3173 .{ "3pm", SpecialCase{ .tokens = .{ "3", "pm", "" }, .len = 2 } }, 3174 .{ "4a.m.", SpecialCase{ .tokens = .{ "4", "a.m.", "" }, .len = 2 } }, 3175 .{ "4am", SpecialCase{ .tokens = .{ "4", "am", "" }, .len = 2 } }, 3176 .{ "4p.m.", SpecialCase{ .tokens = .{ "4", "p.m.", "" }, .len = 2 } }, 3177 .{ "4pm", SpecialCase{ .tokens = .{ "4", "pm", "" }, .len = 2 } }, 3178 .{ "5a.m.", SpecialCase{ .tokens = .{ "5", "a.m.", "" }, .len = 2 } }, 3179 .{ "5am", SpecialCase{ .tokens = .{ "5", "am", "" }, .len = 2 } }, 3180 .{ "5p.m.", SpecialCase{ .tokens = .{ "5", "p.m.", "" }, .len = 2 } }, 3181 .{ "5pm", SpecialCase{ .tokens = .{ "5", "pm", "" }, .len = 2 } }, 3182 .{ "6a.m.", SpecialCase{ .tokens = .{ "6", "a.m.", "" }, .len = 2 } }, 3183 .{ "6am", SpecialCase{ .tokens = .{ "6", "am", "" }, .len = 2 } }, 3184 .{ "6p.m.", SpecialCase{ .tokens = .{ "6", "p.m.", "" }, .len = 2 } }, 3185 .{ "6pm", SpecialCase{ .tokens = .{ "6", "pm", "" }, .len = 2 } }, 3186 .{ "7a.m.", SpecialCase{ .tokens = .{ "7", "a.m.", "" }, .len = 2 } }, 3187 .{ "7am", SpecialCase{ .tokens = .{ "7", "am", "" }, .len = 2 } }, 3188 .{ "7p.m.", SpecialCase{ .tokens = .{ "7", "p.m.", "" }, .len = 2 } }, 3189 .{ "7pm", SpecialCase{ .tokens = .{ "7", "pm", "" }, .len = 2 } }, 3190 .{ "8)", SpecialCase{ .tokens = .{ "8)", "", "" }, .len = 1 } }, 3191 .{ "8-)", SpecialCase{ .tokens = .{ "8-)", "", "" }, .len = 1 } }, 3192 .{ "8-D", SpecialCase{ .tokens = .{ "8-D", "", "" }, .len = 1 } }, 3193 .{ "8D", SpecialCase{ .tokens = .{ "8D", "", "" }, .len = 1 } }, 3194 .{ "8a.m.", SpecialCase{ .tokens = .{ "8", "a.m.", "" }, .len = 2 } }, 3195 .{ "8am", SpecialCase{ .tokens = .{ "8", "am", "" }, .len = 2 } }, 3196 .{ "8p.m.", SpecialCase{ .tokens = .{ "8", "p.m.", "" }, .len = 2 } }, 3197 .{ "8pm", SpecialCase{ .tokens = .{ "8", "pm", "" }, .len = 2 } }, 3198 .{ "9a.m.", SpecialCase{ .tokens = .{ "9", "a.m.", "" }, .len = 2 } }, 3199 .{ "9am", SpecialCase{ .tokens = .{ "9", "am", "" }, .len = 2 } }, 3200 .{ "9p.m.", SpecialCase{ .tokens = .{ "9", "p.m.", "" }, .len = 2 } }, 3201 .{ "9pm", SpecialCase{ .tokens = .{ "9", "pm", "" }, .len = 2 } }, 3202 .{ ":'(", SpecialCase{ .tokens = .{ ":'(", "", "" }, .len = 1 } }, 3203 .{ ":')", SpecialCase{ .tokens = .{ ":')", "", "" }, .len = 1 } }, 3204 .{ ":'-(", SpecialCase{ .tokens = .{ ":'-(", "", "" }, .len = 1 } }, 3205 .{ ":'-)", SpecialCase{ .tokens = .{ ":'-)", "", "" }, .len = 1 } }, 3206 .{ ":(", SpecialCase{ .tokens = .{ ":(", "", "" }, .len = 1 } }, 3207 .{ ":((", SpecialCase{ .tokens = .{ ":((", "", "" }, .len = 1 } }, 3208 .{ ":(((", SpecialCase{ .tokens = .{ ":(((", "", "" }, .len = 1 } }, 3209 .{ ":()", SpecialCase{ .tokens = .{ ":()", "", "" }, .len = 1 } }, 3210 .{ ":)", SpecialCase{ .tokens = .{ ":)", "", "" }, .len = 1 } }, 3211 .{ ":))", SpecialCase{ .tokens = .{ ":))", "", "" }, .len = 1 } }, 3212 .{ ":)))", SpecialCase{ .tokens = .{ ":)))", "", "" }, .len = 1 } }, 3213 .{ ":*", SpecialCase{ .tokens = .{ ":*", "", "" }, .len = 1 } }, 3214 .{ ":-(", SpecialCase{ .tokens = .{ ":-(", "", "" }, .len = 1 } }, 3215 .{ ":-((", SpecialCase{ .tokens = .{ ":-((", "", "" }, .len = 1 } }, 3216 .{ ":-(((", SpecialCase{ .tokens = .{ ":-(((", "", "" }, .len = 1 } }, 3217 .{ ":-)", SpecialCase{ .tokens = .{ ":-)", "", "" }, .len = 1 } }, 3218 .{ ":-))", SpecialCase{ .tokens = .{ ":-))", "", "" }, .len = 1 } }, 3219 .{ ":-)))", SpecialCase{ .tokens = .{ ":-)))", "", "" }, .len = 1 } }, 3220 .{ ":-*", SpecialCase{ .tokens = .{ ":-*", "", "" }, .len = 1 } }, 3221 .{ ":-/", SpecialCase{ .tokens = .{ ":-/", "", "" }, .len = 1 } }, 3222 .{ ":-0", SpecialCase{ .tokens = .{ ":-0", "", "" }, .len = 1 } }, 3223 .{ ":-3", SpecialCase{ .tokens = .{ ":-3", "", "" }, .len = 1 } }, 3224 .{ ":->", SpecialCase{ .tokens = .{ ":->", "", "" }, .len = 1 } }, 3225 .{ ":-D", SpecialCase{ .tokens = .{ ":-D", "", "" }, .len = 1 } }, 3226 .{ ":-O", SpecialCase{ .tokens = .{ ":-O", "", "" }, .len = 1 } }, 3227 .{ ":-P", SpecialCase{ .tokens = .{ ":-P", "", "" }, .len = 1 } }, 3228 .{ ":-X", SpecialCase{ .tokens = .{ ":-X", "", "" }, .len = 1 } }, 3229 .{ ":-]", SpecialCase{ .tokens = .{ ":-]", "", "" }, .len = 1 } }, 3230 .{ ":-o", SpecialCase{ .tokens = .{ ":-o", "", "" }, .len = 1 } }, 3231 .{ ":-p", SpecialCase{ .tokens = .{ ":-p", "", "" }, .len = 1 } }, 3232 .{ ":-x", SpecialCase{ .tokens = .{ ":-x", "", "" }, .len = 1 } }, 3233 .{ ":-|", SpecialCase{ .tokens = .{ ":-|", "", "" }, .len = 1 } }, 3234 .{ ":-}", SpecialCase{ .tokens = .{ ":-}", "", "" }, .len = 1 } }, 3235 .{ ":/", SpecialCase{ .tokens = .{ ":/", "", "" }, .len = 1 } }, 3236 .{ ":0", SpecialCase{ .tokens = .{ ":0", "", "" }, .len = 1 } }, 3237 .{ ":1", SpecialCase{ .tokens = .{ ":1", "", "" }, .len = 1 } }, 3238 .{ ":3", SpecialCase{ .tokens = .{ ":3", "", "" }, .len = 1 } }, 3239 .{ ":>", SpecialCase{ .tokens = .{ ":>", "", "" }, .len = 1 } }, 3240 .{ ":D", SpecialCase{ .tokens = .{ ":D", "", "" }, .len = 1 } }, 3241 .{ ":O", SpecialCase{ .tokens = .{ ":O", "", "" }, .len = 1 } }, 3242 .{ ":P", SpecialCase{ .tokens = .{ ":P", "", "" }, .len = 1 } }, 3243 .{ ":X", SpecialCase{ .tokens = .{ ":X", "", "" }, .len = 1 } }, 3244 .{ ":]", SpecialCase{ .tokens = .{ ":]", "", "" }, .len = 1 } }, 3245 .{ ":o", SpecialCase{ .tokens = .{ ":o", "", "" }, .len = 1 } }, 3246 .{ ":o)", SpecialCase{ .tokens = .{ ":o)", "", "" }, .len = 1 } }, 3247 .{ ":p", SpecialCase{ .tokens = .{ ":p", "", "" }, .len = 1 } }, 3248 .{ ":x", SpecialCase{ .tokens = .{ ":x", "", "" }, .len = 1 } }, 3249 .{ ":|", SpecialCase{ .tokens = .{ ":|", "", "" }, .len = 1 } }, 3250 .{ ":}", SpecialCase{ .tokens = .{ ":}", "", "" }, .len = 1 } }, 3251 .{ ":\xe2\x80\x99(", SpecialCase{ .tokens = .{ ":\xe2\x80\x99(", "", "" }, .len = 1 } }, 3252 .{ ":\xe2\x80\x99)", SpecialCase{ .tokens = .{ ":\xe2\x80\x99)", "", "" }, .len = 1 } }, 3253 .{ ":\xe2\x80\x99-(", SpecialCase{ .tokens = .{ ":\xe2\x80\x99-(", "", "" }, .len = 1 } }, 3254 .{ ":\xe2\x80\x99-)", SpecialCase{ .tokens = .{ ":\xe2\x80\x99-)", "", "" }, .len = 1 } }, 3255 .{ ";)", SpecialCase{ .tokens = .{ ";)", "", "" }, .len = 1 } }, 3256 .{ ";-)", SpecialCase{ .tokens = .{ ";-)", "", "" }, .len = 1 } }, 3257 .{ ";-D", SpecialCase{ .tokens = .{ ";-D", "", "" }, .len = 1 } }, 3258 .{ ";D", SpecialCase{ .tokens = .{ ";D", "", "" }, .len = 1 } }, 3259 .{ ";_;", SpecialCase{ .tokens = .{ ";_;", "", "" }, .len = 1 } }, 3260 .{ "<.<", SpecialCase{ .tokens = .{ "<.<", "", "" }, .len = 1 } }, 3261 .{ "</3", SpecialCase{ .tokens = .{ "</3", "", "" }, .len = 1 } }, 3262 .{ "<3", SpecialCase{ .tokens = .{ "<3", "", "" }, .len = 1 } }, 3263 .{ "<33", SpecialCase{ .tokens = .{ "<33", "", "" }, .len = 1 } }, 3264 .{ "<333", SpecialCase{ .tokens = .{ "<333", "", "" }, .len = 1 } }, 3265 .{ "<space>", SpecialCase{ .tokens = .{ "<space>", "", "" }, .len = 1 } }, 3266 .{ "=(", SpecialCase{ .tokens = .{ "=(", "", "" }, .len = 1 } }, 3267 .{ "=)", SpecialCase{ .tokens = .{ "=)", "", "" }, .len = 1 } }, 3268 .{ "=/", SpecialCase{ .tokens = .{ "=/", "", "" }, .len = 1 } }, 3269 .{ "=3", SpecialCase{ .tokens = .{ "=3", "", "" }, .len = 1 } }, 3270 .{ "=D", SpecialCase{ .tokens = .{ "=D", "", "" }, .len = 1 } }, 3271 .{ "=[", SpecialCase{ .tokens = .{ "=[", "", "" }, .len = 1 } }, 3272 .{ "=]", SpecialCase{ .tokens = .{ "=]", "", "" }, .len = 1 } }, 3273 .{ "=|", SpecialCase{ .tokens = .{ "=|", "", "" }, .len = 1 } }, 3274 .{ ">.<", SpecialCase{ .tokens = .{ ">.<", "", "" }, .len = 1 } }, 3275 .{ ">.>", SpecialCase{ .tokens = .{ ">.>", "", "" }, .len = 1 } }, 3276 .{ ">:(", SpecialCase{ .tokens = .{ ">:(", "", "" }, .len = 1 } }, 3277 .{ ">:o", SpecialCase{ .tokens = .{ ">:o", "", "" }, .len = 1 } }, 3278 .{ "><(((*>", SpecialCase{ .tokens = .{ "><(((*>", "", "" }, .len = 1 } }, 3279 .{ "@_@", SpecialCase{ .tokens = .{ "@_@", "", "" }, .len = 1 } }, 3280 .{ "Adm.", SpecialCase{ .tokens = .{ "Adm.", "", "" }, .len = 1 } }, 3281 .{ "Ain't", SpecialCase{ .tokens = .{ "Ai", "n't", "" }, .len = 2 } }, 3282 .{ "Aint", SpecialCase{ .tokens = .{ "Ai", "nt", "" }, .len = 2 } }, 3283 .{ "Ain\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Ai", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3284 .{ "Ak.", SpecialCase{ .tokens = .{ "Ak.", "", "" }, .len = 1 } }, 3285 .{ "Ala.", SpecialCase{ .tokens = .{ "Ala.", "", "" }, .len = 1 } }, 3286 .{ "Apr.", SpecialCase{ .tokens = .{ "Apr.", "", "" }, .len = 1 } }, 3287 .{ "Aren't", SpecialCase{ .tokens = .{ "Are", "n't", "" }, .len = 2 } }, 3288 .{ "Arent", SpecialCase{ .tokens = .{ "Are", "nt", "" }, .len = 2 } }, 3289 .{ "Aren\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Are", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3290 .{ "Ariz.", SpecialCase{ .tokens = .{ "Ariz.", "", "" }, .len = 1 } }, 3291 .{ "Ark.", SpecialCase{ .tokens = .{ "Ark.", "", "" }, .len = 1 } }, 3292 .{ "Aug.", SpecialCase{ .tokens = .{ "Aug.", "", "" }, .len = 1 } }, 3293 .{ "Bros.", SpecialCase{ .tokens = .{ "Bros.", "", "" }, .len = 1 } }, 3294 .{ "C'mon", SpecialCase{ .tokens = .{ "C'm", "on", "" }, .len = 2 } }, 3295 .{ "C++", SpecialCase{ .tokens = .{ "C++", "", "" }, .len = 1 } }, 3296 .{ "Calif.", SpecialCase{ .tokens = .{ "Calif.", "", "" }, .len = 1 } }, 3297 .{ "Can't", SpecialCase{ .tokens = .{ "Ca", "n't", "" }, .len = 2 } }, 3298 .{ "Can't've", SpecialCase{ .tokens = .{ "Ca", "n't", "'ve" }, .len = 3 } }, 3299 .{ "Cannot", SpecialCase{ .tokens = .{ "Can", "not", "" }, .len = 2 } }, 3300 .{ "Cant", SpecialCase{ .tokens = .{ "Ca", "nt", "" }, .len = 2 } }, 3301 .{ "Cantve", SpecialCase{ .tokens = .{ "Ca", "nt", "ve" }, .len = 3 } }, 3302 .{ "Can\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Ca", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3303 .{ "Can\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Ca", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3304 .{ "Co.", SpecialCase{ .tokens = .{ "Co.", "", "" }, .len = 1 } }, 3305 .{ "Colo.", SpecialCase{ .tokens = .{ "Colo.", "", "" }, .len = 1 } }, 3306 .{ "Conn.", SpecialCase{ .tokens = .{ "Conn.", "", "" }, .len = 1 } }, 3307 .{ "Corp.", SpecialCase{ .tokens = .{ "Corp.", "", "" }, .len = 1 } }, 3308 .{ "Could've", SpecialCase{ .tokens = .{ "Could", "'ve", "" }, .len = 2 } }, 3309 .{ "Couldn't", SpecialCase{ .tokens = .{ "Could", "n't", "" }, .len = 2 } }, 3310 .{ "Couldn't've", SpecialCase{ .tokens = .{ "Could", "n't", "'ve" }, .len = 3 } }, 3311 .{ "Couldnt", SpecialCase{ .tokens = .{ "Could", "nt", "" }, .len = 2 } }, 3312 .{ "Couldntve", SpecialCase{ .tokens = .{ "Could", "nt", "ve" }, .len = 3 } }, 3313 .{ "Couldn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Could", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3314 .{ "Couldn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Could", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3315 .{ "Couldve", SpecialCase{ .tokens = .{ "Could", "ve", "" }, .len = 2 } }, 3316 .{ "Could\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Could", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3317 .{ "C\xe2\x80\x99mon", SpecialCase{ .tokens = .{ "C\xe2\x80\x99m", "on", "" }, .len = 2 } }, 3318 .{ "D.C.", SpecialCase{ .tokens = .{ "D.C.", "", "" }, .len = 1 } }, 3319 .{ "Daren't", SpecialCase{ .tokens = .{ "Dare", "n't", "" }, .len = 2 } }, 3320 .{ "Darent", SpecialCase{ .tokens = .{ "Dare", "nt", "" }, .len = 2 } }, 3321 .{ "Daren\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Dare", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3322 .{ "Dec.", SpecialCase{ .tokens = .{ "Dec.", "", "" }, .len = 1 } }, 3323 .{ "Del.", SpecialCase{ .tokens = .{ "Del.", "", "" }, .len = 1 } }, 3324 .{ "Didn't", SpecialCase{ .tokens = .{ "Did", "n't", "" }, .len = 2 } }, 3325 .{ "Didn't've", SpecialCase{ .tokens = .{ "Did", "n't", "'ve" }, .len = 3 } }, 3326 .{ "Didnt", SpecialCase{ .tokens = .{ "Did", "nt", "" }, .len = 2 } }, 3327 .{ "Didntve", SpecialCase{ .tokens = .{ "Did", "nt", "ve" }, .len = 3 } }, 3328 .{ "Didn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Did", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3329 .{ "Didn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Did", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3330 .{ "Doesn't", SpecialCase{ .tokens = .{ "Does", "n't", "" }, .len = 2 } }, 3331 .{ "Doesn't've", SpecialCase{ .tokens = .{ "Does", "n't", "'ve" }, .len = 3 } }, 3332 .{ "Doesnt", SpecialCase{ .tokens = .{ "Does", "nt", "" }, .len = 2 } }, 3333 .{ "Doesntve", SpecialCase{ .tokens = .{ "Does", "nt", "ve" }, .len = 3 } }, 3334 .{ "Doesn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Does", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3335 .{ "Doesn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Does", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3336 .{ "Doin", SpecialCase{ .tokens = .{ "Doin", "", "" }, .len = 1 } }, 3337 .{ "Doin'", SpecialCase{ .tokens = .{ "Doin'", "", "" }, .len = 1 } }, 3338 .{ "Doin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Doin\xe2\x80\x99", "", "" }, .len = 1 } }, 3339 .{ "Don't", SpecialCase{ .tokens = .{ "Do", "n't", "" }, .len = 2 } }, 3340 .{ "Don't've", SpecialCase{ .tokens = .{ "Do", "n't", "'ve" }, .len = 3 } }, 3341 .{ "Dont", SpecialCase{ .tokens = .{ "Do", "nt", "" }, .len = 2 } }, 3342 .{ "Dontve", SpecialCase{ .tokens = .{ "Do", "nt", "ve" }, .len = 3 } }, 3343 .{ "Don\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Do", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3344 .{ "Don\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Do", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3345 .{ "Dr.", SpecialCase{ .tokens = .{ "Dr.", "", "" }, .len = 1 } }, 3346 .{ "E.G.", SpecialCase{ .tokens = .{ "E.G.", "", "" }, .len = 1 } }, 3347 .{ "E.g.", SpecialCase{ .tokens = .{ "E.g.", "", "" }, .len = 1 } }, 3348 .{ "Feb.", SpecialCase{ .tokens = .{ "Feb.", "", "" }, .len = 1 } }, 3349 .{ "Fla.", SpecialCase{ .tokens = .{ "Fla.", "", "" }, .len = 1 } }, 3350 .{ "Ga.", SpecialCase{ .tokens = .{ "Ga.", "", "" }, .len = 1 } }, 3351 .{ "Gen.", SpecialCase{ .tokens = .{ "Gen.", "", "" }, .len = 1 } }, 3352 .{ "Goin", SpecialCase{ .tokens = .{ "Goin", "", "" }, .len = 1 } }, 3353 .{ "Goin'", SpecialCase{ .tokens = .{ "Goin'", "", "" }, .len = 1 } }, 3354 .{ "Goin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Goin\xe2\x80\x99", "", "" }, .len = 1 } }, 3355 .{ "Gonna", SpecialCase{ .tokens = .{ "Gon", "na", "" }, .len = 2 } }, 3356 .{ "Gotta", SpecialCase{ .tokens = .{ "Got", "ta", "" }, .len = 2 } }, 3357 .{ "Gov.", SpecialCase{ .tokens = .{ "Gov.", "", "" }, .len = 1 } }, 3358 .{ "Hadn't", SpecialCase{ .tokens = .{ "Had", "n't", "" }, .len = 2 } }, 3359 .{ "Hadn't've", SpecialCase{ .tokens = .{ "Had", "n't", "'ve" }, .len = 3 } }, 3360 .{ "Hadnt", SpecialCase{ .tokens = .{ "Had", "nt", "" }, .len = 2 } }, 3361 .{ "Hadntve", SpecialCase{ .tokens = .{ "Had", "nt", "ve" }, .len = 3 } }, 3362 .{ "Hadn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Had", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3363 .{ "Hadn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Had", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3364 .{ "Hasn't", SpecialCase{ .tokens = .{ "Has", "n't", "" }, .len = 2 } }, 3365 .{ "Hasnt", SpecialCase{ .tokens = .{ "Has", "nt", "" }, .len = 2 } }, 3366 .{ "Hasn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Has", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3367 .{ "Haven't", SpecialCase{ .tokens = .{ "Have", "n't", "" }, .len = 2 } }, 3368 .{ "Havent", SpecialCase{ .tokens = .{ "Have", "nt", "" }, .len = 2 } }, 3369 .{ "Haven\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Have", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3370 .{ "Havin", SpecialCase{ .tokens = .{ "Havin", "", "" }, .len = 1 } }, 3371 .{ "Havin'", SpecialCase{ .tokens = .{ "Havin'", "", "" }, .len = 1 } }, 3372 .{ "Havin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Havin\xe2\x80\x99", "", "" }, .len = 1 } }, 3373 .{ "He'd", SpecialCase{ .tokens = .{ "He", "'d", "" }, .len = 2 } }, 3374 .{ "He'd've", SpecialCase{ .tokens = .{ "He", "'d", "'ve" }, .len = 3 } }, 3375 .{ "He'll", SpecialCase{ .tokens = .{ "He", "'ll", "" }, .len = 2 } }, 3376 .{ "He'll've", SpecialCase{ .tokens = .{ "He", "'ll", "'ve" }, .len = 3 } }, 3377 .{ "He's", SpecialCase{ .tokens = .{ "He", "'s", "" }, .len = 2 } }, 3378 .{ "Hed", SpecialCase{ .tokens = .{ "He", "d", "" }, .len = 2 } }, 3379 .{ "Hedve", SpecialCase{ .tokens = .{ "He", "d", "ve" }, .len = 3 } }, 3380 .{ "Hellve", SpecialCase{ .tokens = .{ "He", "ll", "ve" }, .len = 3 } }, 3381 .{ "Hes", SpecialCase{ .tokens = .{ "He", "s", "" }, .len = 2 } }, 3382 .{ "He\xe2\x80\x99d", SpecialCase{ .tokens = .{ "He", "\xe2\x80\x99d", "" }, .len = 2 } }, 3383 .{ "He\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "He", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3384 .{ "He\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "He", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3385 .{ "He\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "He", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3386 .{ "He\xe2\x80\x99s", SpecialCase{ .tokens = .{ "He", "\xe2\x80\x99s", "" }, .len = 2 } }, 3387 .{ "How'd", SpecialCase{ .tokens = .{ "How", "'d", "" }, .len = 2 } }, 3388 .{ "How'd've", SpecialCase{ .tokens = .{ "How", "'d", "'ve" }, .len = 3 } }, 3389 .{ "How'd'y", SpecialCase{ .tokens = .{ "How", "'d", "'y" }, .len = 3 } }, 3390 .{ "How'll", SpecialCase{ .tokens = .{ "How", "'ll", "" }, .len = 2 } }, 3391 .{ "How'll've", SpecialCase{ .tokens = .{ "How", "'ll", "'ve" }, .len = 3 } }, 3392 .{ "How're", SpecialCase{ .tokens = .{ "How", "'re", "" }, .len = 2 } }, 3393 .{ "How's", SpecialCase{ .tokens = .{ "How", "'s", "" }, .len = 2 } }, 3394 .{ "How've", SpecialCase{ .tokens = .{ "How", "'ve", "" }, .len = 2 } }, 3395 .{ "Howd", SpecialCase{ .tokens = .{ "How", "d", "" }, .len = 2 } }, 3396 .{ "Howdve", SpecialCase{ .tokens = .{ "How", "d", "ve" }, .len = 3 } }, 3397 .{ "Howll", SpecialCase{ .tokens = .{ "How", "ll", "" }, .len = 2 } }, 3398 .{ "Howllve", SpecialCase{ .tokens = .{ "How", "ll", "ve" }, .len = 3 } }, 3399 .{ "Howre", SpecialCase{ .tokens = .{ "How", "re", "" }, .len = 2 } }, 3400 .{ "Hows", SpecialCase{ .tokens = .{ "How", "s", "" }, .len = 2 } }, 3401 .{ "Howve", SpecialCase{ .tokens = .{ "How", "ve", "" }, .len = 2 } }, 3402 .{ "How\xe2\x80\x99d", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99d", "" }, .len = 2 } }, 3403 .{ "How\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3404 .{ "How\xe2\x80\x99d\xe2\x80\x99y", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99d", "\xe2\x80\x99y" }, .len = 3 } }, 3405 .{ "How\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3406 .{ "How\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3407 .{ "How\xe2\x80\x99re", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99re", "" }, .len = 2 } }, 3408 .{ "How\xe2\x80\x99s", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99s", "" }, .len = 2 } }, 3409 .{ "How\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "How", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3410 .{ "I'd", SpecialCase{ .tokens = .{ "I", "'d", "" }, .len = 2 } }, 3411 .{ "I'd've", SpecialCase{ .tokens = .{ "I", "'d", "'ve" }, .len = 3 } }, 3412 .{ "I'll", SpecialCase{ .tokens = .{ "I", "'ll", "" }, .len = 2 } }, 3413 .{ "I'll've", SpecialCase{ .tokens = .{ "I", "'ll", "'ve" }, .len = 3 } }, 3414 .{ "I'm", SpecialCase{ .tokens = .{ "I", "'m", "" }, .len = 2 } }, 3415 .{ "I'ma", SpecialCase{ .tokens = .{ "I", "'m", "a" }, .len = 3 } }, 3416 .{ "I've", SpecialCase{ .tokens = .{ "I", "'ve", "" }, .len = 2 } }, 3417 .{ "I.E.", SpecialCase{ .tokens = .{ "I.E.", "", "" }, .len = 1 } }, 3418 .{ "I.e.", SpecialCase{ .tokens = .{ "I.e.", "", "" }, .len = 1 } }, 3419 .{ "Ia.", SpecialCase{ .tokens = .{ "Ia.", "", "" }, .len = 1 } }, 3420 .{ "Id", SpecialCase{ .tokens = .{ "I", "d", "" }, .len = 2 } }, 3421 .{ "Id.", SpecialCase{ .tokens = .{ "Id.", "", "" }, .len = 1 } }, 3422 .{ "Idve", SpecialCase{ .tokens = .{ "I", "d", "ve" }, .len = 3 } }, 3423 .{ "Ill.", SpecialCase{ .tokens = .{ "Ill.", "", "" }, .len = 1 } }, 3424 .{ "Illve", SpecialCase{ .tokens = .{ "I", "ll", "ve" }, .len = 3 } }, 3425 .{ "Im", SpecialCase{ .tokens = .{ "I", "m", "" }, .len = 2 } }, 3426 .{ "Ima", SpecialCase{ .tokens = .{ "I", "m", "a" }, .len = 3 } }, 3427 .{ "Inc.", SpecialCase{ .tokens = .{ "Inc.", "", "" }, .len = 1 } }, 3428 .{ "Ind.", SpecialCase{ .tokens = .{ "Ind.", "", "" }, .len = 1 } }, 3429 .{ "Isn't", SpecialCase{ .tokens = .{ "Is", "n't", "" }, .len = 2 } }, 3430 .{ "Isnt", SpecialCase{ .tokens = .{ "Is", "nt", "" }, .len = 2 } }, 3431 .{ "Isn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Is", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3432 .{ "It'd", SpecialCase{ .tokens = .{ "It", "'d", "" }, .len = 2 } }, 3433 .{ "It'd've", SpecialCase{ .tokens = .{ "It", "'d", "'ve" }, .len = 3 } }, 3434 .{ "It'll", SpecialCase{ .tokens = .{ "It", "'ll", "" }, .len = 2 } }, 3435 .{ "It'll've", SpecialCase{ .tokens = .{ "It", "'ll", "'ve" }, .len = 3 } }, 3436 .{ "It's", SpecialCase{ .tokens = .{ "It", "'s", "" }, .len = 2 } }, 3437 .{ "Itd", SpecialCase{ .tokens = .{ "It", "d", "" }, .len = 2 } }, 3438 .{ "Itdve", SpecialCase{ .tokens = .{ "It", "d", "ve" }, .len = 3 } }, 3439 .{ "Itll", SpecialCase{ .tokens = .{ "It", "ll", "" }, .len = 2 } }, 3440 .{ "Itllve", SpecialCase{ .tokens = .{ "It", "ll", "ve" }, .len = 3 } }, 3441 .{ "It\xe2\x80\x99d", SpecialCase{ .tokens = .{ "It", "\xe2\x80\x99d", "" }, .len = 2 } }, 3442 .{ "It\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "It", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3443 .{ "It\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "It", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3444 .{ "It\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "It", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3445 .{ "It\xe2\x80\x99s", SpecialCase{ .tokens = .{ "It", "\xe2\x80\x99s", "" }, .len = 2 } }, 3446 .{ "Ive", SpecialCase{ .tokens = .{ "I", "ve", "" }, .len = 2 } }, 3447 .{ "I\xe2\x80\x99d", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99d", "" }, .len = 2 } }, 3448 .{ "I\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3449 .{ "I\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3450 .{ "I\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3451 .{ "I\xe2\x80\x99m", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99m", "" }, .len = 2 } }, 3452 .{ "I\xe2\x80\x99ma", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99m", "a" }, .len = 3 } }, 3453 .{ "I\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "I", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3454 .{ "Jan.", SpecialCase{ .tokens = .{ "Jan.", "", "" }, .len = 1 } }, 3455 .{ "Jr.", SpecialCase{ .tokens = .{ "Jr.", "", "" }, .len = 1 } }, 3456 .{ "Jul.", SpecialCase{ .tokens = .{ "Jul.", "", "" }, .len = 1 } }, 3457 .{ "Jun.", SpecialCase{ .tokens = .{ "Jun.", "", "" }, .len = 1 } }, 3458 .{ "Kan.", SpecialCase{ .tokens = .{ "Kan.", "", "" }, .len = 1 } }, 3459 .{ "Kans.", SpecialCase{ .tokens = .{ "Kans.", "", "" }, .len = 1 } }, 3460 .{ "Ky.", SpecialCase{ .tokens = .{ "Ky.", "", "" }, .len = 1 } }, 3461 .{ "La.", SpecialCase{ .tokens = .{ "La.", "", "" }, .len = 1 } }, 3462 .{ "Let's", SpecialCase{ .tokens = .{ "Let", "'s", "" }, .len = 2 } }, 3463 .{ "Let\xe2\x80\x99s", SpecialCase{ .tokens = .{ "Let", "\xe2\x80\x99s", "" }, .len = 2 } }, 3464 .{ "Lovin", SpecialCase{ .tokens = .{ "Lovin", "", "" }, .len = 1 } }, 3465 .{ "Lovin'", SpecialCase{ .tokens = .{ "Lovin'", "", "" }, .len = 1 } }, 3466 .{ "Lovin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Lovin\xe2\x80\x99", "", "" }, .len = 1 } }, 3467 .{ "Ltd.", SpecialCase{ .tokens = .{ "Ltd.", "", "" }, .len = 1 } }, 3468 .{ "Ma'am", SpecialCase{ .tokens = .{ "Ma'am", "", "" }, .len = 1 } }, 3469 .{ "Mar.", SpecialCase{ .tokens = .{ "Mar.", "", "" }, .len = 1 } }, 3470 .{ "Mass.", SpecialCase{ .tokens = .{ "Mass.", "", "" }, .len = 1 } }, 3471 .{ "Mayn't", SpecialCase{ .tokens = .{ "May", "n't", "" }, .len = 2 } }, 3472 .{ "Mayn't've", SpecialCase{ .tokens = .{ "May", "n't", "'ve" }, .len = 3 } }, 3473 .{ "Maynt", SpecialCase{ .tokens = .{ "May", "nt", "" }, .len = 2 } }, 3474 .{ "Mayntve", SpecialCase{ .tokens = .{ "May", "nt", "ve" }, .len = 3 } }, 3475 .{ "Mayn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "May", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3476 .{ "Mayn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "May", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3477 .{ "Ma\xe2\x80\x99am", SpecialCase{ .tokens = .{ "Ma\xe2\x80\x99am", "", "" }, .len = 1 } }, 3478 .{ "Md.", SpecialCase{ .tokens = .{ "Md.", "", "" }, .len = 1 } }, 3479 .{ "Messrs.", SpecialCase{ .tokens = .{ "Messrs.", "", "" }, .len = 1 } }, 3480 .{ "Mich.", SpecialCase{ .tokens = .{ "Mich.", "", "" }, .len = 1 } }, 3481 .{ "Might've", SpecialCase{ .tokens = .{ "Might", "'ve", "" }, .len = 2 } }, 3482 .{ "Mightn't", SpecialCase{ .tokens = .{ "Might", "n't", "" }, .len = 2 } }, 3483 .{ "Mightn't've", SpecialCase{ .tokens = .{ "Might", "n't", "'ve" }, .len = 3 } }, 3484 .{ "Mightnt", SpecialCase{ .tokens = .{ "Might", "nt", "" }, .len = 2 } }, 3485 .{ "Mightntve", SpecialCase{ .tokens = .{ "Might", "nt", "ve" }, .len = 3 } }, 3486 .{ "Mightn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Might", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3487 .{ "Mightn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Might", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3488 .{ "Mightve", SpecialCase{ .tokens = .{ "Might", "ve", "" }, .len = 2 } }, 3489 .{ "Might\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Might", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3490 .{ "Minn.", SpecialCase{ .tokens = .{ "Minn.", "", "" }, .len = 1 } }, 3491 .{ "Miss.", SpecialCase{ .tokens = .{ "Miss.", "", "" }, .len = 1 } }, 3492 .{ "Mo.", SpecialCase{ .tokens = .{ "Mo.", "", "" }, .len = 1 } }, 3493 .{ "Mont.", SpecialCase{ .tokens = .{ "Mont.", "", "" }, .len = 1 } }, 3494 .{ "Mr.", SpecialCase{ .tokens = .{ "Mr.", "", "" }, .len = 1 } }, 3495 .{ "Mrs.", SpecialCase{ .tokens = .{ "Mrs.", "", "" }, .len = 1 } }, 3496 .{ "Ms.", SpecialCase{ .tokens = .{ "Ms.", "", "" }, .len = 1 } }, 3497 .{ "Mt.", SpecialCase{ .tokens = .{ "Mt.", "", "" }, .len = 1 } }, 3498 .{ "Must've", SpecialCase{ .tokens = .{ "Must", "'ve", "" }, .len = 2 } }, 3499 .{ "Mustn't", SpecialCase{ .tokens = .{ "Must", "n't", "" }, .len = 2 } }, 3500 .{ "Mustn't've", SpecialCase{ .tokens = .{ "Must", "n't", "'ve" }, .len = 3 } }, 3501 .{ "Mustnt", SpecialCase{ .tokens = .{ "Must", "nt", "" }, .len = 2 } }, 3502 .{ "Mustntve", SpecialCase{ .tokens = .{ "Must", "nt", "ve" }, .len = 3 } }, 3503 .{ "Mustn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Must", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3504 .{ "Mustn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Must", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3505 .{ "Mustve", SpecialCase{ .tokens = .{ "Must", "ve", "" }, .len = 2 } }, 3506 .{ "Must\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Must", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3507 .{ "N.C.", SpecialCase{ .tokens = .{ "N.C.", "", "" }, .len = 1 } }, 3508 .{ "N.D.", SpecialCase{ .tokens = .{ "N.D.", "", "" }, .len = 1 } }, 3509 .{ "N.H.", SpecialCase{ .tokens = .{ "N.H.", "", "" }, .len = 1 } }, 3510 .{ "N.J.", SpecialCase{ .tokens = .{ "N.J.", "", "" }, .len = 1 } }, 3511 .{ "N.M.", SpecialCase{ .tokens = .{ "N.M.", "", "" }, .len = 1 } }, 3512 .{ "N.Y.", SpecialCase{ .tokens = .{ "N.Y.", "", "" }, .len = 1 } }, 3513 .{ "Neb.", SpecialCase{ .tokens = .{ "Neb.", "", "" }, .len = 1 } }, 3514 .{ "Nebr.", SpecialCase{ .tokens = .{ "Nebr.", "", "" }, .len = 1 } }, 3515 .{ "Needn't", SpecialCase{ .tokens = .{ "Need", "n't", "" }, .len = 2 } }, 3516 .{ "Needn't've", SpecialCase{ .tokens = .{ "Need", "n't", "'ve" }, .len = 3 } }, 3517 .{ "Neednt", SpecialCase{ .tokens = .{ "Need", "nt", "" }, .len = 2 } }, 3518 .{ "Needntve", SpecialCase{ .tokens = .{ "Need", "nt", "ve" }, .len = 3 } }, 3519 .{ "Needn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Need", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3520 .{ "Needn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Need", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3521 .{ "Nev.", SpecialCase{ .tokens = .{ "Nev.", "", "" }, .len = 1 } }, 3522 .{ "Not've", SpecialCase{ .tokens = .{ "Not", "'ve", "" }, .len = 2 } }, 3523 .{ "Nothin", SpecialCase{ .tokens = .{ "Nothin", "", "" }, .len = 1 } }, 3524 .{ "Nothin'", SpecialCase{ .tokens = .{ "Nothin'", "", "" }, .len = 1 } }, 3525 .{ "Nothin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Nothin\xe2\x80\x99", "", "" }, .len = 1 } }, 3526 .{ "Notve", SpecialCase{ .tokens = .{ "Not", "ve", "" }, .len = 2 } }, 3527 .{ "Not\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Not", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3528 .{ "Nov.", SpecialCase{ .tokens = .{ "Nov.", "", "" }, .len = 1 } }, 3529 .{ "Nuthin", SpecialCase{ .tokens = .{ "Nuthin", "", "" }, .len = 1 } }, 3530 .{ "Nuthin'", SpecialCase{ .tokens = .{ "Nuthin'", "", "" }, .len = 1 } }, 3531 .{ "Nuthin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Nuthin\xe2\x80\x99", "", "" }, .len = 1 } }, 3532 .{ "O'clock", SpecialCase{ .tokens = .{ "O'clock", "", "" }, .len = 1 } }, 3533 .{ "O.O", SpecialCase{ .tokens = .{ "O.O", "", "" }, .len = 1 } }, 3534 .{ "O.o", SpecialCase{ .tokens = .{ "O.o", "", "" }, .len = 1 } }, 3535 .{ "O_O", SpecialCase{ .tokens = .{ "O_O", "", "" }, .len = 1 } }, 3536 .{ "O_o", SpecialCase{ .tokens = .{ "O_o", "", "" }, .len = 1 } }, 3537 .{ "Oct.", SpecialCase{ .tokens = .{ "Oct.", "", "" }, .len = 1 } }, 3538 .{ "Okla.", SpecialCase{ .tokens = .{ "Okla.", "", "" }, .len = 1 } }, 3539 .{ "Ol", SpecialCase{ .tokens = .{ "Ol", "", "" }, .len = 1 } }, 3540 .{ "Ol'", SpecialCase{ .tokens = .{ "Ol'", "", "" }, .len = 1 } }, 3541 .{ "Ol\xe2\x80\x99", SpecialCase{ .tokens = .{ "Ol\xe2\x80\x99", "", "" }, .len = 1 } }, 3542 .{ "Ore.", SpecialCase{ .tokens = .{ "Ore.", "", "" }, .len = 1 } }, 3543 .{ "Oughtn't", SpecialCase{ .tokens = .{ "Ought", "n't", "" }, .len = 2 } }, 3544 .{ "Oughtn't've", SpecialCase{ .tokens = .{ "Ought", "n't", "'ve" }, .len = 3 } }, 3545 .{ "Oughtnt", SpecialCase{ .tokens = .{ "Ought", "nt", "" }, .len = 2 } }, 3546 .{ "Oughtntve", SpecialCase{ .tokens = .{ "Ought", "nt", "ve" }, .len = 3 } }, 3547 .{ "Oughtn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Ought", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3548 .{ "Oughtn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Ought", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3549 .{ "O\xe2\x80\x99clock", SpecialCase{ .tokens = .{ "O\xe2\x80\x99clock", "", "" }, .len = 1 } }, 3550 .{ "Pa.", SpecialCase{ .tokens = .{ "Pa.", "", "" }, .len = 1 } }, 3551 .{ "Ph.D.", SpecialCase{ .tokens = .{ "Ph.D.", "", "" }, .len = 1 } }, 3552 .{ "Prof.", SpecialCase{ .tokens = .{ "Prof.", "", "" }, .len = 1 } }, 3553 .{ "Rep.", SpecialCase{ .tokens = .{ "Rep.", "", "" }, .len = 1 } }, 3554 .{ "Rev.", SpecialCase{ .tokens = .{ "Rev.", "", "" }, .len = 1 } }, 3555 .{ "S.C.", SpecialCase{ .tokens = .{ "S.C.", "", "" }, .len = 1 } }, 3556 .{ "Sen.", SpecialCase{ .tokens = .{ "Sen.", "", "" }, .len = 1 } }, 3557 .{ "Sep.", SpecialCase{ .tokens = .{ "Sep.", "", "" }, .len = 1 } }, 3558 .{ "Sept.", SpecialCase{ .tokens = .{ "Sept.", "", "" }, .len = 1 } }, 3559 .{ "Shan't", SpecialCase{ .tokens = .{ "Sha", "n't", "" }, .len = 2 } }, 3560 .{ "Shan't've", SpecialCase{ .tokens = .{ "Sha", "n't", "'ve" }, .len = 3 } }, 3561 .{ "Shant", SpecialCase{ .tokens = .{ "Sha", "nt", "" }, .len = 2 } }, 3562 .{ "Shantve", SpecialCase{ .tokens = .{ "Sha", "nt", "ve" }, .len = 3 } }, 3563 .{ "Shan\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Sha", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3564 .{ "Shan\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Sha", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3565 .{ "She'd", SpecialCase{ .tokens = .{ "She", "'d", "" }, .len = 2 } }, 3566 .{ "She'd've", SpecialCase{ .tokens = .{ "She", "'d", "'ve" }, .len = 3 } }, 3567 .{ "She'll", SpecialCase{ .tokens = .{ "She", "'ll", "" }, .len = 2 } }, 3568 .{ "She'll've", SpecialCase{ .tokens = .{ "She", "'ll", "'ve" }, .len = 3 } }, 3569 .{ "She's", SpecialCase{ .tokens = .{ "She", "'s", "" }, .len = 2 } }, 3570 .{ "Shedve", SpecialCase{ .tokens = .{ "She", "d", "ve" }, .len = 3 } }, 3571 .{ "Shellve", SpecialCase{ .tokens = .{ "She", "ll", "ve" }, .len = 3 } }, 3572 .{ "Shes", SpecialCase{ .tokens = .{ "She", "s", "" }, .len = 2 } }, 3573 .{ "She\xe2\x80\x99d", SpecialCase{ .tokens = .{ "She", "\xe2\x80\x99d", "" }, .len = 2 } }, 3574 .{ "She\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "She", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3575 .{ "She\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "She", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3576 .{ "She\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "She", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3577 .{ "She\xe2\x80\x99s", SpecialCase{ .tokens = .{ "She", "\xe2\x80\x99s", "" }, .len = 2 } }, 3578 .{ "Should've", SpecialCase{ .tokens = .{ "Should", "'ve", "" }, .len = 2 } }, 3579 .{ "Shouldn't", SpecialCase{ .tokens = .{ "Should", "n't", "" }, .len = 2 } }, 3580 .{ "Shouldn't've", SpecialCase{ .tokens = .{ "Should", "n't", "'ve" }, .len = 3 } }, 3581 .{ "Shouldnt", SpecialCase{ .tokens = .{ "Should", "nt", "" }, .len = 2 } }, 3582 .{ "Shouldntve", SpecialCase{ .tokens = .{ "Should", "nt", "ve" }, .len = 3 } }, 3583 .{ "Shouldn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Should", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3584 .{ "Shouldn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Should", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3585 .{ "Shouldve", SpecialCase{ .tokens = .{ "Should", "ve", "" }, .len = 2 } }, 3586 .{ "Should\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Should", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3587 .{ "Somethin", SpecialCase{ .tokens = .{ "Somethin", "", "" }, .len = 1 } }, 3588 .{ "Somethin'", SpecialCase{ .tokens = .{ "Somethin'", "", "" }, .len = 1 } }, 3589 .{ "Somethin\xe2\x80\x99", SpecialCase{ .tokens = .{ "Somethin\xe2\x80\x99", "", "" }, .len = 1 } }, 3590 .{ "St.", SpecialCase{ .tokens = .{ "St.", "", "" }, .len = 1 } }, 3591 .{ "Tenn.", SpecialCase{ .tokens = .{ "Tenn.", "", "" }, .len = 1 } }, 3592 .{ "That'd", SpecialCase{ .tokens = .{ "That", "'d", "" }, .len = 2 } }, 3593 .{ "That'd've", SpecialCase{ .tokens = .{ "That", "'d", "'ve" }, .len = 3 } }, 3594 .{ "That'll", SpecialCase{ .tokens = .{ "That", "'ll", "" }, .len = 2 } }, 3595 .{ "That'll've", SpecialCase{ .tokens = .{ "That", "'ll", "'ve" }, .len = 3 } }, 3596 .{ "That's", SpecialCase{ .tokens = .{ "That", "'s", "" }, .len = 2 } }, 3597 .{ "Thatd", SpecialCase{ .tokens = .{ "That", "d", "" }, .len = 2 } }, 3598 .{ "Thatdve", SpecialCase{ .tokens = .{ "That", "d", "ve" }, .len = 3 } }, 3599 .{ "Thatll", SpecialCase{ .tokens = .{ "That", "ll", "" }, .len = 2 } }, 3600 .{ "Thatllve", SpecialCase{ .tokens = .{ "That", "ll", "ve" }, .len = 3 } }, 3601 .{ "Thats", SpecialCase{ .tokens = .{ "That", "s", "" }, .len = 2 } }, 3602 .{ "That\xe2\x80\x99d", SpecialCase{ .tokens = .{ "That", "\xe2\x80\x99d", "" }, .len = 2 } }, 3603 .{ "That\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "That", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3604 .{ "That\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "That", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3605 .{ "That\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "That", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3606 .{ "That\xe2\x80\x99s", SpecialCase{ .tokens = .{ "That", "\xe2\x80\x99s", "" }, .len = 2 } }, 3607 .{ "There'd", SpecialCase{ .tokens = .{ "There", "'d", "" }, .len = 2 } }, 3608 .{ "There'd've", SpecialCase{ .tokens = .{ "There", "'d", "'ve" }, .len = 3 } }, 3609 .{ "There'll", SpecialCase{ .tokens = .{ "There", "'ll", "" }, .len = 2 } }, 3610 .{ "There'll've", SpecialCase{ .tokens = .{ "There", "'ll", "'ve" }, .len = 3 } }, 3611 .{ "There're", SpecialCase{ .tokens = .{ "There", "'re", "" }, .len = 2 } }, 3612 .{ "There's", SpecialCase{ .tokens = .{ "There", "'s", "" }, .len = 2 } }, 3613 .{ "There've", SpecialCase{ .tokens = .{ "There", "'ve", "" }, .len = 2 } }, 3614 .{ "Thered", SpecialCase{ .tokens = .{ "There", "d", "" }, .len = 2 } }, 3615 .{ "Theredve", SpecialCase{ .tokens = .{ "There", "d", "ve" }, .len = 3 } }, 3616 .{ "Therell", SpecialCase{ .tokens = .{ "There", "ll", "" }, .len = 2 } }, 3617 .{ "Therellve", SpecialCase{ .tokens = .{ "There", "ll", "ve" }, .len = 3 } }, 3618 .{ "Therere", SpecialCase{ .tokens = .{ "There", "re", "" }, .len = 2 } }, 3619 .{ "Theres", SpecialCase{ .tokens = .{ "There", "s", "" }, .len = 2 } }, 3620 .{ "Thereve", SpecialCase{ .tokens = .{ "There", "ve", "" }, .len = 2 } }, 3621 .{ "There\xe2\x80\x99d", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99d", "" }, .len = 2 } }, 3622 .{ "There\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3623 .{ "There\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3624 .{ "There\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3625 .{ "There\xe2\x80\x99re", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99re", "" }, .len = 2 } }, 3626 .{ "There\xe2\x80\x99s", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99s", "" }, .len = 2 } }, 3627 .{ "There\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "There", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3628 .{ "These'd", SpecialCase{ .tokens = .{ "These", "'d", "" }, .len = 2 } }, 3629 .{ "These'd've", SpecialCase{ .tokens = .{ "These", "'d", "'ve" }, .len = 3 } }, 3630 .{ "These'll", SpecialCase{ .tokens = .{ "These", "'ll", "" }, .len = 2 } }, 3631 .{ "These'll've", SpecialCase{ .tokens = .{ "These", "'ll", "'ve" }, .len = 3 } }, 3632 .{ "These're", SpecialCase{ .tokens = .{ "These", "'re", "" }, .len = 2 } }, 3633 .{ "These've", SpecialCase{ .tokens = .{ "These", "'ve", "" }, .len = 2 } }, 3634 .{ "Thesed", SpecialCase{ .tokens = .{ "These", "d", "" }, .len = 2 } }, 3635 .{ "Thesedve", SpecialCase{ .tokens = .{ "These", "d", "ve" }, .len = 3 } }, 3636 .{ "Thesell", SpecialCase{ .tokens = .{ "These", "ll", "" }, .len = 2 } }, 3637 .{ "Thesellve", SpecialCase{ .tokens = .{ "These", "ll", "ve" }, .len = 3 } }, 3638 .{ "Thesere", SpecialCase{ .tokens = .{ "These", "re", "" }, .len = 2 } }, 3639 .{ "Theseve", SpecialCase{ .tokens = .{ "These", "ve", "" }, .len = 2 } }, 3640 .{ "These\xe2\x80\x99d", SpecialCase{ .tokens = .{ "These", "\xe2\x80\x99d", "" }, .len = 2 } }, 3641 .{ "These\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "These", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3642 .{ "These\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "These", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3643 .{ "These\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "These", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3644 .{ "These\xe2\x80\x99re", SpecialCase{ .tokens = .{ "These", "\xe2\x80\x99re", "" }, .len = 2 } }, 3645 .{ "These\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "These", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3646 .{ "They'd", SpecialCase{ .tokens = .{ "They", "'d", "" }, .len = 2 } }, 3647 .{ "They'd've", SpecialCase{ .tokens = .{ "They", "'d", "'ve" }, .len = 3 } }, 3648 .{ "They'll", SpecialCase{ .tokens = .{ "They", "'ll", "" }, .len = 2 } }, 3649 .{ "They'll've", SpecialCase{ .tokens = .{ "They", "'ll", "'ve" }, .len = 3 } }, 3650 .{ "They're", SpecialCase{ .tokens = .{ "They", "'re", "" }, .len = 2 } }, 3651 .{ "They've", SpecialCase{ .tokens = .{ "They", "'ve", "" }, .len = 2 } }, 3652 .{ "Theyd", SpecialCase{ .tokens = .{ "They", "d", "" }, .len = 2 } }, 3653 .{ "Theydve", SpecialCase{ .tokens = .{ "They", "d", "ve" }, .len = 3 } }, 3654 .{ "Theyll", SpecialCase{ .tokens = .{ "They", "ll", "" }, .len = 2 } }, 3655 .{ "Theyllve", SpecialCase{ .tokens = .{ "They", "ll", "ve" }, .len = 3 } }, 3656 .{ "Theyre", SpecialCase{ .tokens = .{ "They", "re", "" }, .len = 2 } }, 3657 .{ "Theyve", SpecialCase{ .tokens = .{ "They", "ve", "" }, .len = 2 } }, 3658 .{ "They\xe2\x80\x99d", SpecialCase{ .tokens = .{ "They", "\xe2\x80\x99d", "" }, .len = 2 } }, 3659 .{ "They\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "They", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3660 .{ "They\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "They", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3661 .{ "They\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "They", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3662 .{ "They\xe2\x80\x99re", SpecialCase{ .tokens = .{ "They", "\xe2\x80\x99re", "" }, .len = 2 } }, 3663 .{ "They\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "They", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3664 .{ "This'd", SpecialCase{ .tokens = .{ "This", "'d", "" }, .len = 2 } }, 3665 .{ "This'd've", SpecialCase{ .tokens = .{ "This", "'d", "'ve" }, .len = 3 } }, 3666 .{ "This'll", SpecialCase{ .tokens = .{ "This", "'ll", "" }, .len = 2 } }, 3667 .{ "This'll've", SpecialCase{ .tokens = .{ "This", "'ll", "'ve" }, .len = 3 } }, 3668 .{ "This's", SpecialCase{ .tokens = .{ "This", "'s", "" }, .len = 2 } }, 3669 .{ "Thisd", SpecialCase{ .tokens = .{ "This", "d", "" }, .len = 2 } }, 3670 .{ "Thisdve", SpecialCase{ .tokens = .{ "This", "d", "ve" }, .len = 3 } }, 3671 .{ "Thisll", SpecialCase{ .tokens = .{ "This", "ll", "" }, .len = 2 } }, 3672 .{ "Thisllve", SpecialCase{ .tokens = .{ "This", "ll", "ve" }, .len = 3 } }, 3673 .{ "Thiss", SpecialCase{ .tokens = .{ "This", "s", "" }, .len = 2 } }, 3674 .{ "This\xe2\x80\x99d", SpecialCase{ .tokens = .{ "This", "\xe2\x80\x99d", "" }, .len = 2 } }, 3675 .{ "This\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "This", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3676 .{ "This\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "This", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3677 .{ "This\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "This", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3678 .{ "This\xe2\x80\x99s", SpecialCase{ .tokens = .{ "This", "\xe2\x80\x99s", "" }, .len = 2 } }, 3679 .{ "Those'd", SpecialCase{ .tokens = .{ "Those", "'d", "" }, .len = 2 } }, 3680 .{ "Those'd've", SpecialCase{ .tokens = .{ "Those", "'d", "'ve" }, .len = 3 } }, 3681 .{ "Those'll", SpecialCase{ .tokens = .{ "Those", "'ll", "" }, .len = 2 } }, 3682 .{ "Those'll've", SpecialCase{ .tokens = .{ "Those", "'ll", "'ve" }, .len = 3 } }, 3683 .{ "Those're", SpecialCase{ .tokens = .{ "Those", "'re", "" }, .len = 2 } }, 3684 .{ "Those've", SpecialCase{ .tokens = .{ "Those", "'ve", "" }, .len = 2 } }, 3685 .{ "Thosed", SpecialCase{ .tokens = .{ "Those", "d", "" }, .len = 2 } }, 3686 .{ "Thosedve", SpecialCase{ .tokens = .{ "Those", "d", "ve" }, .len = 3 } }, 3687 .{ "Thosell", SpecialCase{ .tokens = .{ "Those", "ll", "" }, .len = 2 } }, 3688 .{ "Thosellve", SpecialCase{ .tokens = .{ "Those", "ll", "ve" }, .len = 3 } }, 3689 .{ "Thosere", SpecialCase{ .tokens = .{ "Those", "re", "" }, .len = 2 } }, 3690 .{ "Thoseve", SpecialCase{ .tokens = .{ "Those", "ve", "" }, .len = 2 } }, 3691 .{ "Those\xe2\x80\x99d", SpecialCase{ .tokens = .{ "Those", "\xe2\x80\x99d", "" }, .len = 2 } }, 3692 .{ "Those\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Those", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3693 .{ "Those\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "Those", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3694 .{ "Those\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Those", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3695 .{ "Those\xe2\x80\x99re", SpecialCase{ .tokens = .{ "Those", "\xe2\x80\x99re", "" }, .len = 2 } }, 3696 .{ "Those\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Those", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3697 .{ "V.V", SpecialCase{ .tokens = .{ "V.V", "", "" }, .len = 1 } }, 3698 .{ "V_V", SpecialCase{ .tokens = .{ "V_V", "", "" }, .len = 1 } }, 3699 .{ "Va.", SpecialCase{ .tokens = .{ "Va.", "", "" }, .len = 1 } }, 3700 .{ "Wash.", SpecialCase{ .tokens = .{ "Wash.", "", "" }, .len = 1 } }, 3701 .{ "Wasn't", SpecialCase{ .tokens = .{ "Was", "n't", "" }, .len = 2 } }, 3702 .{ "Wasnt", SpecialCase{ .tokens = .{ "Was", "nt", "" }, .len = 2 } }, 3703 .{ "Wasn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Was", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3704 .{ "We'd", SpecialCase{ .tokens = .{ "We", "'d", "" }, .len = 2 } }, 3705 .{ "We'd've", SpecialCase{ .tokens = .{ "We", "'d", "'ve" }, .len = 3 } }, 3706 .{ "We'll", SpecialCase{ .tokens = .{ "We", "'ll", "" }, .len = 2 } }, 3707 .{ "We'll've", SpecialCase{ .tokens = .{ "We", "'ll", "'ve" }, .len = 3 } }, 3708 .{ "We're", SpecialCase{ .tokens = .{ "We", "'re", "" }, .len = 2 } }, 3709 .{ "We've", SpecialCase{ .tokens = .{ "We", "'ve", "" }, .len = 2 } }, 3710 .{ "Wed", SpecialCase{ .tokens = .{ "We", "d", "" }, .len = 2 } }, 3711 .{ "Wedve", SpecialCase{ .tokens = .{ "We", "d", "ve" }, .len = 3 } }, 3712 .{ "Wellve", SpecialCase{ .tokens = .{ "We", "ll", "ve" }, .len = 3 } }, 3713 .{ "Weren't", SpecialCase{ .tokens = .{ "Were", "n't", "" }, .len = 2 } }, 3714 .{ "Werent", SpecialCase{ .tokens = .{ "Were", "nt", "" }, .len = 2 } }, 3715 .{ "Weren\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Were", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3716 .{ "Weve", SpecialCase{ .tokens = .{ "We", "ve", "" }, .len = 2 } }, 3717 .{ "We\xe2\x80\x99d", SpecialCase{ .tokens = .{ "We", "\xe2\x80\x99d", "" }, .len = 2 } }, 3718 .{ "We\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "We", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3719 .{ "We\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "We", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3720 .{ "We\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "We", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3721 .{ "We\xe2\x80\x99re", SpecialCase{ .tokens = .{ "We", "\xe2\x80\x99re", "" }, .len = 2 } }, 3722 .{ "We\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "We", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3723 .{ "What'd", SpecialCase{ .tokens = .{ "What", "'d", "" }, .len = 2 } }, 3724 .{ "What'd've", SpecialCase{ .tokens = .{ "What", "'d", "'ve" }, .len = 3 } }, 3725 .{ "What'll", SpecialCase{ .tokens = .{ "What", "'ll", "" }, .len = 2 } }, 3726 .{ "What'll've", SpecialCase{ .tokens = .{ "What", "'ll", "'ve" }, .len = 3 } }, 3727 .{ "What're", SpecialCase{ .tokens = .{ "What", "'re", "" }, .len = 2 } }, 3728 .{ "What's", SpecialCase{ .tokens = .{ "What", "'s", "" }, .len = 2 } }, 3729 .{ "What've", SpecialCase{ .tokens = .{ "What", "'ve", "" }, .len = 2 } }, 3730 .{ "Whatd", SpecialCase{ .tokens = .{ "What", "d", "" }, .len = 2 } }, 3731 .{ "Whatdve", SpecialCase{ .tokens = .{ "What", "d", "ve" }, .len = 3 } }, 3732 .{ "Whatll", SpecialCase{ .tokens = .{ "What", "ll", "" }, .len = 2 } }, 3733 .{ "Whatllve", SpecialCase{ .tokens = .{ "What", "ll", "ve" }, .len = 3 } }, 3734 .{ "Whatre", SpecialCase{ .tokens = .{ "What", "re", "" }, .len = 2 } }, 3735 .{ "Whats", SpecialCase{ .tokens = .{ "What", "s", "" }, .len = 2 } }, 3736 .{ "Whatve", SpecialCase{ .tokens = .{ "What", "ve", "" }, .len = 2 } }, 3737 .{ "What\xe2\x80\x99d", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99d", "" }, .len = 2 } }, 3738 .{ "What\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3739 .{ "What\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3740 .{ "What\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3741 .{ "What\xe2\x80\x99re", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99re", "" }, .len = 2 } }, 3742 .{ "What\xe2\x80\x99s", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99s", "" }, .len = 2 } }, 3743 .{ "What\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "What", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3744 .{ "When'd", SpecialCase{ .tokens = .{ "When", "'d", "" }, .len = 2 } }, 3745 .{ "When'd've", SpecialCase{ .tokens = .{ "When", "'d", "'ve" }, .len = 3 } }, 3746 .{ "When'll", SpecialCase{ .tokens = .{ "When", "'ll", "" }, .len = 2 } }, 3747 .{ "When'll've", SpecialCase{ .tokens = .{ "When", "'ll", "'ve" }, .len = 3 } }, 3748 .{ "When're", SpecialCase{ .tokens = .{ "When", "'re", "" }, .len = 2 } }, 3749 .{ "When's", SpecialCase{ .tokens = .{ "When", "'s", "" }, .len = 2 } }, 3750 .{ "When've", SpecialCase{ .tokens = .{ "When", "'ve", "" }, .len = 2 } }, 3751 .{ "Whend", SpecialCase{ .tokens = .{ "When", "d", "" }, .len = 2 } }, 3752 .{ "Whendve", SpecialCase{ .tokens = .{ "When", "d", "ve" }, .len = 3 } }, 3753 .{ "Whenll", SpecialCase{ .tokens = .{ "When", "ll", "" }, .len = 2 } }, 3754 .{ "Whenllve", SpecialCase{ .tokens = .{ "When", "ll", "ve" }, .len = 3 } }, 3755 .{ "Whenre", SpecialCase{ .tokens = .{ "When", "re", "" }, .len = 2 } }, 3756 .{ "Whens", SpecialCase{ .tokens = .{ "When", "s", "" }, .len = 2 } }, 3757 .{ "Whenve", SpecialCase{ .tokens = .{ "When", "ve", "" }, .len = 2 } }, 3758 .{ "When\xe2\x80\x99d", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99d", "" }, .len = 2 } }, 3759 .{ "When\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3760 .{ "When\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3761 .{ "When\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3762 .{ "When\xe2\x80\x99re", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99re", "" }, .len = 2 } }, 3763 .{ "When\xe2\x80\x99s", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99s", "" }, .len = 2 } }, 3764 .{ "When\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "When", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3765 .{ "Where'd", SpecialCase{ .tokens = .{ "Where", "'d", "" }, .len = 2 } }, 3766 .{ "Where'd've", SpecialCase{ .tokens = .{ "Where", "'d", "'ve" }, .len = 3 } }, 3767 .{ "Where'll", SpecialCase{ .tokens = .{ "Where", "'ll", "" }, .len = 2 } }, 3768 .{ "Where'll've", SpecialCase{ .tokens = .{ "Where", "'ll", "'ve" }, .len = 3 } }, 3769 .{ "Where're", SpecialCase{ .tokens = .{ "Where", "'re", "" }, .len = 2 } }, 3770 .{ "Where's", SpecialCase{ .tokens = .{ "Where", "'s", "" }, .len = 2 } }, 3771 .{ "Where've", SpecialCase{ .tokens = .{ "Where", "'ve", "" }, .len = 2 } }, 3772 .{ "Whered", SpecialCase{ .tokens = .{ "Where", "d", "" }, .len = 2 } }, 3773 .{ "Wheredve", SpecialCase{ .tokens = .{ "Where", "d", "ve" }, .len = 3 } }, 3774 .{ "Wherell", SpecialCase{ .tokens = .{ "Where", "ll", "" }, .len = 2 } }, 3775 .{ "Wherellve", SpecialCase{ .tokens = .{ "Where", "ll", "ve" }, .len = 3 } }, 3776 .{ "Wherere", SpecialCase{ .tokens = .{ "Where", "re", "" }, .len = 2 } }, 3777 .{ "Wheres", SpecialCase{ .tokens = .{ "Where", "s", "" }, .len = 2 } }, 3778 .{ "Whereve", SpecialCase{ .tokens = .{ "Where", "ve", "" }, .len = 2 } }, 3779 .{ "Where\xe2\x80\x99d", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99d", "" }, .len = 2 } }, 3780 .{ "Where\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3781 .{ "Where\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3782 .{ "Where\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3783 .{ "Where\xe2\x80\x99re", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99re", "" }, .len = 2 } }, 3784 .{ "Where\xe2\x80\x99s", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99s", "" }, .len = 2 } }, 3785 .{ "Where\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Where", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3786 .{ "Who'd", SpecialCase{ .tokens = .{ "Who", "'d", "" }, .len = 2 } }, 3787 .{ "Who'd've", SpecialCase{ .tokens = .{ "Who", "'d", "'ve" }, .len = 3 } }, 3788 .{ "Who'll", SpecialCase{ .tokens = .{ "Who", "'ll", "" }, .len = 2 } }, 3789 .{ "Who'll've", SpecialCase{ .tokens = .{ "Who", "'ll", "'ve" }, .len = 3 } }, 3790 .{ "Who're", SpecialCase{ .tokens = .{ "Who", "'re", "" }, .len = 2 } }, 3791 .{ "Who's", SpecialCase{ .tokens = .{ "Who", "'s", "" }, .len = 2 } }, 3792 .{ "Who've", SpecialCase{ .tokens = .{ "Who", "'ve", "" }, .len = 2 } }, 3793 .{ "Whod", SpecialCase{ .tokens = .{ "Who", "d", "" }, .len = 2 } }, 3794 .{ "Whodve", SpecialCase{ .tokens = .{ "Who", "d", "ve" }, .len = 3 } }, 3795 .{ "Wholl", SpecialCase{ .tokens = .{ "Who", "ll", "" }, .len = 2 } }, 3796 .{ "Whollve", SpecialCase{ .tokens = .{ "Who", "ll", "ve" }, .len = 3 } }, 3797 .{ "Whos", SpecialCase{ .tokens = .{ "Who", "s", "" }, .len = 2 } }, 3798 .{ "Whove", SpecialCase{ .tokens = .{ "Who", "ve", "" }, .len = 2 } }, 3799 .{ "Who\xe2\x80\x99d", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99d", "" }, .len = 2 } }, 3800 .{ "Who\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3801 .{ "Who\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3802 .{ "Who\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3803 .{ "Who\xe2\x80\x99re", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99re", "" }, .len = 2 } }, 3804 .{ "Who\xe2\x80\x99s", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99s", "" }, .len = 2 } }, 3805 .{ "Who\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Who", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3806 .{ "Why'd", SpecialCase{ .tokens = .{ "Why", "'d", "" }, .len = 2 } }, 3807 .{ "Why'd've", SpecialCase{ .tokens = .{ "Why", "'d", "'ve" }, .len = 3 } }, 3808 .{ "Why'll", SpecialCase{ .tokens = .{ "Why", "'ll", "" }, .len = 2 } }, 3809 .{ "Why'll've", SpecialCase{ .tokens = .{ "Why", "'ll", "'ve" }, .len = 3 } }, 3810 .{ "Why're", SpecialCase{ .tokens = .{ "Why", "'re", "" }, .len = 2 } }, 3811 .{ "Why's", SpecialCase{ .tokens = .{ "Why", "'s", "" }, .len = 2 } }, 3812 .{ "Why've", SpecialCase{ .tokens = .{ "Why", "'ve", "" }, .len = 2 } }, 3813 .{ "Whyd", SpecialCase{ .tokens = .{ "Why", "d", "" }, .len = 2 } }, 3814 .{ "Whydve", SpecialCase{ .tokens = .{ "Why", "d", "ve" }, .len = 3 } }, 3815 .{ "Whyll", SpecialCase{ .tokens = .{ "Why", "ll", "" }, .len = 2 } }, 3816 .{ "Whyllve", SpecialCase{ .tokens = .{ "Why", "ll", "ve" }, .len = 3 } }, 3817 .{ "Whyre", SpecialCase{ .tokens = .{ "Why", "re", "" }, .len = 2 } }, 3818 .{ "Whys", SpecialCase{ .tokens = .{ "Why", "s", "" }, .len = 2 } }, 3819 .{ "Whyve", SpecialCase{ .tokens = .{ "Why", "ve", "" }, .len = 2 } }, 3820 .{ "Why\xe2\x80\x99d", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99d", "" }, .len = 2 } }, 3821 .{ "Why\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3822 .{ "Why\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3823 .{ "Why\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3824 .{ "Why\xe2\x80\x99re", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99re", "" }, .len = 2 } }, 3825 .{ "Why\xe2\x80\x99s", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99s", "" }, .len = 2 } }, 3826 .{ "Why\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Why", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3827 .{ "Wis.", SpecialCase{ .tokens = .{ "Wis.", "", "" }, .len = 1 } }, 3828 .{ "Won't", SpecialCase{ .tokens = .{ "Wo", "n't", "" }, .len = 2 } }, 3829 .{ "Won't've", SpecialCase{ .tokens = .{ "Wo", "n't", "'ve" }, .len = 3 } }, 3830 .{ "Wont", SpecialCase{ .tokens = .{ "Wo", "nt", "" }, .len = 2 } }, 3831 .{ "Wontve", SpecialCase{ .tokens = .{ "Wo", "nt", "ve" }, .len = 3 } }, 3832 .{ "Won\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Wo", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3833 .{ "Won\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Wo", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3834 .{ "Would've", SpecialCase{ .tokens = .{ "Would", "'ve", "" }, .len = 2 } }, 3835 .{ "Wouldn't", SpecialCase{ .tokens = .{ "Would", "n't", "" }, .len = 2 } }, 3836 .{ "Wouldn't've", SpecialCase{ .tokens = .{ "Would", "n't", "'ve" }, .len = 3 } }, 3837 .{ "Wouldnt", SpecialCase{ .tokens = .{ "Would", "nt", "" }, .len = 2 } }, 3838 .{ "Wouldntve", SpecialCase{ .tokens = .{ "Would", "nt", "ve" }, .len = 3 } }, 3839 .{ "Wouldn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "Would", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3840 .{ "Wouldn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Would", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3841 .{ "Wouldve", SpecialCase{ .tokens = .{ "Would", "ve", "" }, .len = 2 } }, 3842 .{ "Would\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "Would", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3843 .{ "XD", SpecialCase{ .tokens = .{ "XD", "", "" }, .len = 1 } }, 3844 .{ "XDD", SpecialCase{ .tokens = .{ "XDD", "", "" }, .len = 1 } }, 3845 .{ "You'd", SpecialCase{ .tokens = .{ "You", "'d", "" }, .len = 2 } }, 3846 .{ "You'd've", SpecialCase{ .tokens = .{ "You", "'d", "'ve" }, .len = 3 } }, 3847 .{ "You'll", SpecialCase{ .tokens = .{ "You", "'ll", "" }, .len = 2 } }, 3848 .{ "You'll've", SpecialCase{ .tokens = .{ "You", "'ll", "'ve" }, .len = 3 } }, 3849 .{ "You're", SpecialCase{ .tokens = .{ "You", "'re", "" }, .len = 2 } }, 3850 .{ "You've", SpecialCase{ .tokens = .{ "You", "'ve", "" }, .len = 2 } }, 3851 .{ "Youd", SpecialCase{ .tokens = .{ "You", "d", "" }, .len = 2 } }, 3852 .{ "Youdve", SpecialCase{ .tokens = .{ "You", "d", "ve" }, .len = 3 } }, 3853 .{ "Youll", SpecialCase{ .tokens = .{ "You", "ll", "" }, .len = 2 } }, 3854 .{ "Youllve", SpecialCase{ .tokens = .{ "You", "ll", "ve" }, .len = 3 } }, 3855 .{ "Youre", SpecialCase{ .tokens = .{ "You", "re", "" }, .len = 2 } }, 3856 .{ "Youve", SpecialCase{ .tokens = .{ "You", "ve", "" }, .len = 2 } }, 3857 .{ "You\xe2\x80\x99d", SpecialCase{ .tokens = .{ "You", "\xe2\x80\x99d", "" }, .len = 2 } }, 3858 .{ "You\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "You", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3859 .{ "You\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "You", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3860 .{ "You\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "You", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3861 .{ "You\xe2\x80\x99re", SpecialCase{ .tokens = .{ "You", "\xe2\x80\x99re", "" }, .len = 2 } }, 3862 .{ "You\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "You", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3863 .{ "[-:", SpecialCase{ .tokens = .{ "[-:", "", "" }, .len = 1 } }, 3864 .{ "[:", SpecialCase{ .tokens = .{ "[:", "", "" }, .len = 1 } }, 3865 .{ "[=", SpecialCase{ .tokens = .{ "[=", "", "" }, .len = 1 } }, 3866 .{ "\\\")", SpecialCase{ .tokens = .{ "\\\")", "", "" }, .len = 1 } }, 3867 .{ "\\n", SpecialCase{ .tokens = .{ "\\n", "", "" }, .len = 1 } }, 3868 .{ "\\t", SpecialCase{ .tokens = .{ "\\t", "", "" }, .len = 1 } }, 3869 .{ "]=", SpecialCase{ .tokens = .{ "]=", "", "" }, .len = 1 } }, 3870 .{ "^_^", SpecialCase{ .tokens = .{ "^_^", "", "" }, .len = 1 } }, 3871 .{ "^__^", SpecialCase{ .tokens = .{ "^__^", "", "" }, .len = 1 } }, 3872 .{ "^___^", SpecialCase{ .tokens = .{ "^___^", "", "" }, .len = 1 } }, 3873 .{ "a.", SpecialCase{ .tokens = .{ "a.", "", "" }, .len = 1 } }, 3874 .{ "a.m.", SpecialCase{ .tokens = .{ "a.m.", "", "" }, .len = 1 } }, 3875 .{ "ain't", SpecialCase{ .tokens = .{ "ai", "n't", "" }, .len = 2 } }, 3876 .{ "aint", SpecialCase{ .tokens = .{ "ai", "nt", "" }, .len = 2 } }, 3877 .{ "ain\xe2\x80\x99t", SpecialCase{ .tokens = .{ "ai", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3878 .{ "and/or", SpecialCase{ .tokens = .{ "and/or", "", "" }, .len = 1 } }, 3879 .{ "aren't", SpecialCase{ .tokens = .{ "are", "n't", "" }, .len = 2 } }, 3880 .{ "arent", SpecialCase{ .tokens = .{ "are", "nt", "" }, .len = 2 } }, 3881 .{ "aren\xe2\x80\x99t", SpecialCase{ .tokens = .{ "are", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3882 .{ "b.", SpecialCase{ .tokens = .{ "b.", "", "" }, .len = 1 } }, 3883 .{ "c'mon", SpecialCase{ .tokens = .{ "c'm", "on", "" }, .len = 2 } }, 3884 .{ "c.", SpecialCase{ .tokens = .{ "c.", "", "" }, .len = 1 } }, 3885 .{ "can't", SpecialCase{ .tokens = .{ "ca", "n't", "" }, .len = 2 } }, 3886 .{ "can't've", SpecialCase{ .tokens = .{ "ca", "n't", "'ve" }, .len = 3 } }, 3887 .{ "cannot", SpecialCase{ .tokens = .{ "can", "not", "" }, .len = 2 } }, 3888 .{ "cant", SpecialCase{ .tokens = .{ "ca", "nt", "" }, .len = 2 } }, 3889 .{ "cantve", SpecialCase{ .tokens = .{ "ca", "nt", "ve" }, .len = 3 } }, 3890 .{ "can\xe2\x80\x99t", SpecialCase{ .tokens = .{ "ca", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3891 .{ "can\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "ca", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3892 .{ "co.", SpecialCase{ .tokens = .{ "co.", "", "" }, .len = 1 } }, 3893 .{ "could've", SpecialCase{ .tokens = .{ "could", "'ve", "" }, .len = 2 } }, 3894 .{ "couldn't", SpecialCase{ .tokens = .{ "could", "n't", "" }, .len = 2 } }, 3895 .{ "couldn't've", SpecialCase{ .tokens = .{ "could", "n't", "'ve" }, .len = 3 } }, 3896 .{ "couldnt", SpecialCase{ .tokens = .{ "could", "nt", "" }, .len = 2 } }, 3897 .{ "couldntve", SpecialCase{ .tokens = .{ "could", "nt", "ve" }, .len = 3 } }, 3898 .{ "couldn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "could", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3899 .{ "couldn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "could", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3900 .{ "couldve", SpecialCase{ .tokens = .{ "could", "ve", "" }, .len = 2 } }, 3901 .{ "could\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "could", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3902 .{ "c\xe2\x80\x99mon", SpecialCase{ .tokens = .{ "c\xe2\x80\x99m", "on", "" }, .len = 2 } }, 3903 .{ "d.", SpecialCase{ .tokens = .{ "d.", "", "" }, .len = 1 } }, 3904 .{ "daren't", SpecialCase{ .tokens = .{ "dare", "n't", "" }, .len = 2 } }, 3905 .{ "darent", SpecialCase{ .tokens = .{ "dare", "nt", "" }, .len = 2 } }, 3906 .{ "daren\xe2\x80\x99t", SpecialCase{ .tokens = .{ "dare", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3907 .{ "didn't", SpecialCase{ .tokens = .{ "did", "n't", "" }, .len = 2 } }, 3908 .{ "didn't've", SpecialCase{ .tokens = .{ "did", "n't", "'ve" }, .len = 3 } }, 3909 .{ "didnt", SpecialCase{ .tokens = .{ "did", "nt", "" }, .len = 2 } }, 3910 .{ "didntve", SpecialCase{ .tokens = .{ "did", "nt", "ve" }, .len = 3 } }, 3911 .{ "didn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "did", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3912 .{ "didn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "did", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3913 .{ "doesn't", SpecialCase{ .tokens = .{ "does", "n't", "" }, .len = 2 } }, 3914 .{ "doesn't've", SpecialCase{ .tokens = .{ "does", "n't", "'ve" }, .len = 3 } }, 3915 .{ "doesnt", SpecialCase{ .tokens = .{ "does", "nt", "" }, .len = 2 } }, 3916 .{ "doesntve", SpecialCase{ .tokens = .{ "does", "nt", "ve" }, .len = 3 } }, 3917 .{ "doesn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "does", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3918 .{ "doesn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "does", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3919 .{ "doin", SpecialCase{ .tokens = .{ "doin", "", "" }, .len = 1 } }, 3920 .{ "doin'", SpecialCase{ .tokens = .{ "doin'", "", "" }, .len = 1 } }, 3921 .{ "doin\xe2\x80\x99", SpecialCase{ .tokens = .{ "doin\xe2\x80\x99", "", "" }, .len = 1 } }, 3922 .{ "don't", SpecialCase{ .tokens = .{ "do", "n't", "" }, .len = 2 } }, 3923 .{ "don't've", SpecialCase{ .tokens = .{ "do", "n't", "'ve" }, .len = 3 } }, 3924 .{ "dont", SpecialCase{ .tokens = .{ "do", "nt", "" }, .len = 2 } }, 3925 .{ "dontve", SpecialCase{ .tokens = .{ "do", "nt", "ve" }, .len = 3 } }, 3926 .{ "don\xe2\x80\x99t", SpecialCase{ .tokens = .{ "do", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3927 .{ "don\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "do", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3928 .{ "e.", SpecialCase{ .tokens = .{ "e.", "", "" }, .len = 1 } }, 3929 .{ "e.g.", SpecialCase{ .tokens = .{ "e.g.", "", "" }, .len = 1 } }, 3930 .{ "em", SpecialCase{ .tokens = .{ "em", "", "" }, .len = 1 } }, 3931 .{ "f.", SpecialCase{ .tokens = .{ "f.", "", "" }, .len = 1 } }, 3932 .{ "g.", SpecialCase{ .tokens = .{ "g.", "", "" }, .len = 1 } }, 3933 .{ "goin", SpecialCase{ .tokens = .{ "goin", "", "" }, .len = 1 } }, 3934 .{ "goin'", SpecialCase{ .tokens = .{ "goin'", "", "" }, .len = 1 } }, 3935 .{ "goin\xe2\x80\x99", SpecialCase{ .tokens = .{ "goin\xe2\x80\x99", "", "" }, .len = 1 } }, 3936 .{ "gonna", SpecialCase{ .tokens = .{ "gon", "na", "" }, .len = 2 } }, 3937 .{ "gotta", SpecialCase{ .tokens = .{ "got", "ta", "" }, .len = 2 } }, 3938 .{ "h.", SpecialCase{ .tokens = .{ "h.", "", "" }, .len = 1 } }, 3939 .{ "hadn't", SpecialCase{ .tokens = .{ "had", "n't", "" }, .len = 2 } }, 3940 .{ "hadn't've", SpecialCase{ .tokens = .{ "had", "n't", "'ve" }, .len = 3 } }, 3941 .{ "hadnt", SpecialCase{ .tokens = .{ "had", "nt", "" }, .len = 2 } }, 3942 .{ "hadntve", SpecialCase{ .tokens = .{ "had", "nt", "ve" }, .len = 3 } }, 3943 .{ "hadn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "had", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3944 .{ "hadn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "had", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 3945 .{ "hasn't", SpecialCase{ .tokens = .{ "has", "n't", "" }, .len = 2 } }, 3946 .{ "hasnt", SpecialCase{ .tokens = .{ "has", "nt", "" }, .len = 2 } }, 3947 .{ "hasn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "has", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3948 .{ "haven't", SpecialCase{ .tokens = .{ "have", "n't", "" }, .len = 2 } }, 3949 .{ "havent", SpecialCase{ .tokens = .{ "have", "nt", "" }, .len = 2 } }, 3950 .{ "haven\xe2\x80\x99t", SpecialCase{ .tokens = .{ "have", "n\xe2\x80\x99t", "" }, .len = 2 } }, 3951 .{ "havin", SpecialCase{ .tokens = .{ "havin", "", "" }, .len = 1 } }, 3952 .{ "havin'", SpecialCase{ .tokens = .{ "havin'", "", "" }, .len = 1 } }, 3953 .{ "havin\xe2\x80\x99", SpecialCase{ .tokens = .{ "havin\xe2\x80\x99", "", "" }, .len = 1 } }, 3954 .{ "he'd", SpecialCase{ .tokens = .{ "he", "'d", "" }, .len = 2 } }, 3955 .{ "he'd've", SpecialCase{ .tokens = .{ "he", "'d", "'ve" }, .len = 3 } }, 3956 .{ "he'll", SpecialCase{ .tokens = .{ "he", "'ll", "" }, .len = 2 } }, 3957 .{ "he'll've", SpecialCase{ .tokens = .{ "he", "'ll", "'ve" }, .len = 3 } }, 3958 .{ "he's", SpecialCase{ .tokens = .{ "he", "'s", "" }, .len = 2 } }, 3959 .{ "hed", SpecialCase{ .tokens = .{ "he", "d", "" }, .len = 2 } }, 3960 .{ "hedve", SpecialCase{ .tokens = .{ "he", "d", "ve" }, .len = 3 } }, 3961 .{ "hellve", SpecialCase{ .tokens = .{ "he", "ll", "ve" }, .len = 3 } }, 3962 .{ "hes", SpecialCase{ .tokens = .{ "he", "s", "" }, .len = 2 } }, 3963 .{ "he\xe2\x80\x99d", SpecialCase{ .tokens = .{ "he", "\xe2\x80\x99d", "" }, .len = 2 } }, 3964 .{ "he\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "he", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3965 .{ "he\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "he", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3966 .{ "he\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "he", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3967 .{ "he\xe2\x80\x99s", SpecialCase{ .tokens = .{ "he", "\xe2\x80\x99s", "" }, .len = 2 } }, 3968 .{ "how'd", SpecialCase{ .tokens = .{ "how", "'d", "" }, .len = 2 } }, 3969 .{ "how'd've", SpecialCase{ .tokens = .{ "how", "'d", "'ve" }, .len = 3 } }, 3970 .{ "how'd'y", SpecialCase{ .tokens = .{ "how", "'d", "'y" }, .len = 3 } }, 3971 .{ "how'll", SpecialCase{ .tokens = .{ "how", "'ll", "" }, .len = 2 } }, 3972 .{ "how'll've", SpecialCase{ .tokens = .{ "how", "'ll", "'ve" }, .len = 3 } }, 3973 .{ "how're", SpecialCase{ .tokens = .{ "how", "'re", "" }, .len = 2 } }, 3974 .{ "how's", SpecialCase{ .tokens = .{ "how", "'s", "" }, .len = 2 } }, 3975 .{ "how've", SpecialCase{ .tokens = .{ "how", "'ve", "" }, .len = 2 } }, 3976 .{ "howd", SpecialCase{ .tokens = .{ "how", "d", "" }, .len = 2 } }, 3977 .{ "howdve", SpecialCase{ .tokens = .{ "how", "d", "ve" }, .len = 3 } }, 3978 .{ "howll", SpecialCase{ .tokens = .{ "how", "ll", "" }, .len = 2 } }, 3979 .{ "howllve", SpecialCase{ .tokens = .{ "how", "ll", "ve" }, .len = 3 } }, 3980 .{ "howre", SpecialCase{ .tokens = .{ "how", "re", "" }, .len = 2 } }, 3981 .{ "hows", SpecialCase{ .tokens = .{ "how", "s", "" }, .len = 2 } }, 3982 .{ "howve", SpecialCase{ .tokens = .{ "how", "ve", "" }, .len = 2 } }, 3983 .{ "how\xe2\x80\x99d", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99d", "" }, .len = 2 } }, 3984 .{ "how\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 3985 .{ "how\xe2\x80\x99d\xe2\x80\x99y", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99d", "\xe2\x80\x99y" }, .len = 3 } }, 3986 .{ "how\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99ll", "" }, .len = 2 } }, 3987 .{ "how\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 3988 .{ "how\xe2\x80\x99re", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99re", "" }, .len = 2 } }, 3989 .{ "how\xe2\x80\x99s", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99s", "" }, .len = 2 } }, 3990 .{ "how\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "how", "\xe2\x80\x99ve", "" }, .len = 2 } }, 3991 .{ "i'd", SpecialCase{ .tokens = .{ "i", "'d", "" }, .len = 2 } }, 3992 .{ "i'd've", SpecialCase{ .tokens = .{ "i", "'d", "'ve" }, .len = 3 } }, 3993 .{ "i'll", SpecialCase{ .tokens = .{ "i", "'ll", "" }, .len = 2 } }, 3994 .{ "i'll've", SpecialCase{ .tokens = .{ "i", "'ll", "'ve" }, .len = 3 } }, 3995 .{ "i'm", SpecialCase{ .tokens = .{ "i", "'m", "" }, .len = 2 } }, 3996 .{ "i'ma", SpecialCase{ .tokens = .{ "i", "'m", "a" }, .len = 3 } }, 3997 .{ "i've", SpecialCase{ .tokens = .{ "i", "'ve", "" }, .len = 2 } }, 3998 .{ "i.", SpecialCase{ .tokens = .{ "i.", "", "" }, .len = 1 } }, 3999 .{ "i.e.", SpecialCase{ .tokens = .{ "i.e.", "", "" }, .len = 1 } }, 4000 .{ "id", SpecialCase{ .tokens = .{ "i", "d", "" }, .len = 2 } }, 4001 .{ "idve", SpecialCase{ .tokens = .{ "i", "d", "ve" }, .len = 3 } }, 4002 .{ "illve", SpecialCase{ .tokens = .{ "i", "ll", "ve" }, .len = 3 } }, 4003 .{ "im", SpecialCase{ .tokens = .{ "i", "m", "" }, .len = 2 } }, 4004 .{ "ima", SpecialCase{ .tokens = .{ "i", "m", "a" }, .len = 3 } }, 4005 .{ "isn't", SpecialCase{ .tokens = .{ "is", "n't", "" }, .len = 2 } }, 4006 .{ "isnt", SpecialCase{ .tokens = .{ "is", "nt", "" }, .len = 2 } }, 4007 .{ "isn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "is", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4008 .{ "it'd", SpecialCase{ .tokens = .{ "it", "'d", "" }, .len = 2 } }, 4009 .{ "it'd've", SpecialCase{ .tokens = .{ "it", "'d", "'ve" }, .len = 3 } }, 4010 .{ "it'll", SpecialCase{ .tokens = .{ "it", "'ll", "" }, .len = 2 } }, 4011 .{ "it'll've", SpecialCase{ .tokens = .{ "it", "'ll", "'ve" }, .len = 3 } }, 4012 .{ "it's", SpecialCase{ .tokens = .{ "it", "'s", "" }, .len = 2 } }, 4013 .{ "itd", SpecialCase{ .tokens = .{ "it", "d", "" }, .len = 2 } }, 4014 .{ "itdve", SpecialCase{ .tokens = .{ "it", "d", "ve" }, .len = 3 } }, 4015 .{ "itll", SpecialCase{ .tokens = .{ "it", "ll", "" }, .len = 2 } }, 4016 .{ "itllve", SpecialCase{ .tokens = .{ "it", "ll", "ve" }, .len = 3 } }, 4017 .{ "it\xe2\x80\x99d", SpecialCase{ .tokens = .{ "it", "\xe2\x80\x99d", "" }, .len = 2 } }, 4018 .{ "it\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "it", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4019 .{ "it\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "it", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4020 .{ "it\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "it", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4021 .{ "it\xe2\x80\x99s", SpecialCase{ .tokens = .{ "it", "\xe2\x80\x99s", "" }, .len = 2 } }, 4022 .{ "ive", SpecialCase{ .tokens = .{ "i", "ve", "" }, .len = 2 } }, 4023 .{ "i\xe2\x80\x99d", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99d", "" }, .len = 2 } }, 4024 .{ "i\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4025 .{ "i\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4026 .{ "i\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4027 .{ "i\xe2\x80\x99m", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99m", "" }, .len = 2 } }, 4028 .{ "i\xe2\x80\x99ma", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99m", "a" }, .len = 3 } }, 4029 .{ "i\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "i", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4030 .{ "j.", SpecialCase{ .tokens = .{ "j.", "", "" }, .len = 1 } }, 4031 .{ "k.", SpecialCase{ .tokens = .{ "k.", "", "" }, .len = 1 } }, 4032 .{ "l.", SpecialCase{ .tokens = .{ "l.", "", "" }, .len = 1 } }, 4033 .{ "let's", SpecialCase{ .tokens = .{ "let", "'s", "" }, .len = 2 } }, 4034 .{ "let\xe2\x80\x99s", SpecialCase{ .tokens = .{ "let", "\xe2\x80\x99s", "" }, .len = 2 } }, 4035 .{ "ll", SpecialCase{ .tokens = .{ "ll", "", "" }, .len = 1 } }, 4036 .{ "lovin", SpecialCase{ .tokens = .{ "lovin", "", "" }, .len = 1 } }, 4037 .{ "lovin'", SpecialCase{ .tokens = .{ "lovin'", "", "" }, .len = 1 } }, 4038 .{ "lovin\xe2\x80\x99", SpecialCase{ .tokens = .{ "lovin\xe2\x80\x99", "", "" }, .len = 1 } }, 4039 .{ "m.", SpecialCase{ .tokens = .{ "m.", "", "" }, .len = 1 } }, 4040 .{ "ma'am", SpecialCase{ .tokens = .{ "ma'am", "", "" }, .len = 1 } }, 4041 .{ "mayn't", SpecialCase{ .tokens = .{ "may", "n't", "" }, .len = 2 } }, 4042 .{ "mayn't've", SpecialCase{ .tokens = .{ "may", "n't", "'ve" }, .len = 3 } }, 4043 .{ "maynt", SpecialCase{ .tokens = .{ "may", "nt", "" }, .len = 2 } }, 4044 .{ "mayntve", SpecialCase{ .tokens = .{ "may", "nt", "ve" }, .len = 3 } }, 4045 .{ "mayn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "may", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4046 .{ "mayn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "may", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4047 .{ "ma\xe2\x80\x99am", SpecialCase{ .tokens = .{ "ma\xe2\x80\x99am", "", "" }, .len = 1 } }, 4048 .{ "might've", SpecialCase{ .tokens = .{ "might", "'ve", "" }, .len = 2 } }, 4049 .{ "mightn't", SpecialCase{ .tokens = .{ "might", "n't", "" }, .len = 2 } }, 4050 .{ "mightn't've", SpecialCase{ .tokens = .{ "might", "n't", "'ve" }, .len = 3 } }, 4051 .{ "mightnt", SpecialCase{ .tokens = .{ "might", "nt", "" }, .len = 2 } }, 4052 .{ "mightntve", SpecialCase{ .tokens = .{ "might", "nt", "ve" }, .len = 3 } }, 4053 .{ "mightn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "might", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4054 .{ "mightn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "might", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4055 .{ "mightve", SpecialCase{ .tokens = .{ "might", "ve", "" }, .len = 2 } }, 4056 .{ "might\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "might", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4057 .{ "must've", SpecialCase{ .tokens = .{ "must", "'ve", "" }, .len = 2 } }, 4058 .{ "mustn't", SpecialCase{ .tokens = .{ "must", "n't", "" }, .len = 2 } }, 4059 .{ "mustn't've", SpecialCase{ .tokens = .{ "must", "n't", "'ve" }, .len = 3 } }, 4060 .{ "mustnt", SpecialCase{ .tokens = .{ "must", "nt", "" }, .len = 2 } }, 4061 .{ "mustntve", SpecialCase{ .tokens = .{ "must", "nt", "ve" }, .len = 3 } }, 4062 .{ "mustn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "must", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4063 .{ "mustn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "must", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4064 .{ "mustve", SpecialCase{ .tokens = .{ "must", "ve", "" }, .len = 2 } }, 4065 .{ "must\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "must", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4066 .{ "n.", SpecialCase{ .tokens = .{ "n.", "", "" }, .len = 1 } }, 4067 .{ "needn't", SpecialCase{ .tokens = .{ "need", "n't", "" }, .len = 2 } }, 4068 .{ "needn't've", SpecialCase{ .tokens = .{ "need", "n't", "'ve" }, .len = 3 } }, 4069 .{ "neednt", SpecialCase{ .tokens = .{ "need", "nt", "" }, .len = 2 } }, 4070 .{ "needntve", SpecialCase{ .tokens = .{ "need", "nt", "ve" }, .len = 3 } }, 4071 .{ "needn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "need", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4072 .{ "needn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "need", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4073 .{ "not've", SpecialCase{ .tokens = .{ "not", "'ve", "" }, .len = 2 } }, 4074 .{ "nothin", SpecialCase{ .tokens = .{ "nothin", "", "" }, .len = 1 } }, 4075 .{ "nothin'", SpecialCase{ .tokens = .{ "nothin'", "", "" }, .len = 1 } }, 4076 .{ "nothin\xe2\x80\x99", SpecialCase{ .tokens = .{ "nothin\xe2\x80\x99", "", "" }, .len = 1 } }, 4077 .{ "notve", SpecialCase{ .tokens = .{ "not", "ve", "" }, .len = 2 } }, 4078 .{ "not\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "not", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4079 .{ "nuff", SpecialCase{ .tokens = .{ "nuff", "", "" }, .len = 1 } }, 4080 .{ "nuthin", SpecialCase{ .tokens = .{ "nuthin", "", "" }, .len = 1 } }, 4081 .{ "nuthin'", SpecialCase{ .tokens = .{ "nuthin'", "", "" }, .len = 1 } }, 4082 .{ "nuthin\xe2\x80\x99", SpecialCase{ .tokens = .{ "nuthin\xe2\x80\x99", "", "" }, .len = 1 } }, 4083 .{ "o'clock", SpecialCase{ .tokens = .{ "o'clock", "", "" }, .len = 1 } }, 4084 .{ "o.", SpecialCase{ .tokens = .{ "o.", "", "" }, .len = 1 } }, 4085 .{ "o.0", SpecialCase{ .tokens = .{ "o.0", "", "" }, .len = 1 } }, 4086 .{ "o.O", SpecialCase{ .tokens = .{ "o.O", "", "" }, .len = 1 } }, 4087 .{ "o.o", SpecialCase{ .tokens = .{ "o.o", "", "" }, .len = 1 } }, 4088 .{ "o_0", SpecialCase{ .tokens = .{ "o_0", "", "" }, .len = 1 } }, 4089 .{ "o_O", SpecialCase{ .tokens = .{ "o_O", "", "" }, .len = 1 } }, 4090 .{ "o_o", SpecialCase{ .tokens = .{ "o_o", "", "" }, .len = 1 } }, 4091 .{ "ol", SpecialCase{ .tokens = .{ "ol", "", "" }, .len = 1 } }, 4092 .{ "ol'", SpecialCase{ .tokens = .{ "ol'", "", "" }, .len = 1 } }, 4093 .{ "ol\xe2\x80\x99", SpecialCase{ .tokens = .{ "ol\xe2\x80\x99", "", "" }, .len = 1 } }, 4094 .{ "oughtn't", SpecialCase{ .tokens = .{ "ought", "n't", "" }, .len = 2 } }, 4095 .{ "oughtn't've", SpecialCase{ .tokens = .{ "ought", "n't", "'ve" }, .len = 3 } }, 4096 .{ "oughtnt", SpecialCase{ .tokens = .{ "ought", "nt", "" }, .len = 2 } }, 4097 .{ "oughtntve", SpecialCase{ .tokens = .{ "ought", "nt", "ve" }, .len = 3 } }, 4098 .{ "oughtn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "ought", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4099 .{ "oughtn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "ought", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4100 .{ "o\xe2\x80\x99clock", SpecialCase{ .tokens = .{ "o\xe2\x80\x99clock", "", "" }, .len = 1 } }, 4101 .{ "p.", SpecialCase{ .tokens = .{ "p.", "", "" }, .len = 1 } }, 4102 .{ "p.m.", SpecialCase{ .tokens = .{ "p.m.", "", "" }, .len = 1 } }, 4103 .{ "q.", SpecialCase{ .tokens = .{ "q.", "", "" }, .len = 1 } }, 4104 .{ "r.", SpecialCase{ .tokens = .{ "r.", "", "" }, .len = 1 } }, 4105 .{ "s.", SpecialCase{ .tokens = .{ "s.", "", "" }, .len = 1 } }, 4106 .{ "shan't", SpecialCase{ .tokens = .{ "sha", "n't", "" }, .len = 2 } }, 4107 .{ "shan't've", SpecialCase{ .tokens = .{ "sha", "n't", "'ve" }, .len = 3 } }, 4108 .{ "shant", SpecialCase{ .tokens = .{ "sha", "nt", "" }, .len = 2 } }, 4109 .{ "shantve", SpecialCase{ .tokens = .{ "sha", "nt", "ve" }, .len = 3 } }, 4110 .{ "shan\xe2\x80\x99t", SpecialCase{ .tokens = .{ "sha", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4111 .{ "shan\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "sha", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4112 .{ "she'd", SpecialCase{ .tokens = .{ "she", "'d", "" }, .len = 2 } }, 4113 .{ "she'd've", SpecialCase{ .tokens = .{ "she", "'d", "'ve" }, .len = 3 } }, 4114 .{ "she'll", SpecialCase{ .tokens = .{ "she", "'ll", "" }, .len = 2 } }, 4115 .{ "she'll've", SpecialCase{ .tokens = .{ "she", "'ll", "'ve" }, .len = 3 } }, 4116 .{ "she's", SpecialCase{ .tokens = .{ "she", "'s", "" }, .len = 2 } }, 4117 .{ "shedve", SpecialCase{ .tokens = .{ "she", "d", "ve" }, .len = 3 } }, 4118 .{ "shellve", SpecialCase{ .tokens = .{ "she", "ll", "ve" }, .len = 3 } }, 4119 .{ "shes", SpecialCase{ .tokens = .{ "she", "s", "" }, .len = 2 } }, 4120 .{ "she\xe2\x80\x99d", SpecialCase{ .tokens = .{ "she", "\xe2\x80\x99d", "" }, .len = 2 } }, 4121 .{ "she\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "she", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4122 .{ "she\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "she", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4123 .{ "she\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "she", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4124 .{ "she\xe2\x80\x99s", SpecialCase{ .tokens = .{ "she", "\xe2\x80\x99s", "" }, .len = 2 } }, 4125 .{ "should've", SpecialCase{ .tokens = .{ "should", "'ve", "" }, .len = 2 } }, 4126 .{ "shouldn't", SpecialCase{ .tokens = .{ "should", "n't", "" }, .len = 2 } }, 4127 .{ "shouldn't've", SpecialCase{ .tokens = .{ "should", "n't", "'ve" }, .len = 3 } }, 4128 .{ "shouldnt", SpecialCase{ .tokens = .{ "should", "nt", "" }, .len = 2 } }, 4129 .{ "shouldntve", SpecialCase{ .tokens = .{ "should", "nt", "ve" }, .len = 3 } }, 4130 .{ "shouldn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "should", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4131 .{ "shouldn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "should", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4132 .{ "shouldve", SpecialCase{ .tokens = .{ "should", "ve", "" }, .len = 2 } }, 4133 .{ "should\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "should", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4134 .{ "somethin", SpecialCase{ .tokens = .{ "somethin", "", "" }, .len = 1 } }, 4135 .{ "somethin'", SpecialCase{ .tokens = .{ "somethin'", "", "" }, .len = 1 } }, 4136 .{ "somethin\xe2\x80\x99", SpecialCase{ .tokens = .{ "somethin\xe2\x80\x99", "", "" }, .len = 1 } }, 4137 .{ "t.", SpecialCase{ .tokens = .{ "t.", "", "" }, .len = 1 } }, 4138 .{ "that'd", SpecialCase{ .tokens = .{ "that", "'d", "" }, .len = 2 } }, 4139 .{ "that'd've", SpecialCase{ .tokens = .{ "that", "'d", "'ve" }, .len = 3 } }, 4140 .{ "that'll", SpecialCase{ .tokens = .{ "that", "'ll", "" }, .len = 2 } }, 4141 .{ "that'll've", SpecialCase{ .tokens = .{ "that", "'ll", "'ve" }, .len = 3 } }, 4142 .{ "that's", SpecialCase{ .tokens = .{ "that", "'s", "" }, .len = 2 } }, 4143 .{ "thatd", SpecialCase{ .tokens = .{ "that", "d", "" }, .len = 2 } }, 4144 .{ "thatdve", SpecialCase{ .tokens = .{ "that", "d", "ve" }, .len = 3 } }, 4145 .{ "thatll", SpecialCase{ .tokens = .{ "that", "ll", "" }, .len = 2 } }, 4146 .{ "thatllve", SpecialCase{ .tokens = .{ "that", "ll", "ve" }, .len = 3 } }, 4147 .{ "thats", SpecialCase{ .tokens = .{ "that", "s", "" }, .len = 2 } }, 4148 .{ "that\xe2\x80\x99d", SpecialCase{ .tokens = .{ "that", "\xe2\x80\x99d", "" }, .len = 2 } }, 4149 .{ "that\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "that", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4150 .{ "that\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "that", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4151 .{ "that\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "that", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4152 .{ "that\xe2\x80\x99s", SpecialCase{ .tokens = .{ "that", "\xe2\x80\x99s", "" }, .len = 2 } }, 4153 .{ "there'd", SpecialCase{ .tokens = .{ "there", "'d", "" }, .len = 2 } }, 4154 .{ "there'd've", SpecialCase{ .tokens = .{ "there", "'d", "'ve" }, .len = 3 } }, 4155 .{ "there'll", SpecialCase{ .tokens = .{ "there", "'ll", "" }, .len = 2 } }, 4156 .{ "there'll've", SpecialCase{ .tokens = .{ "there", "'ll", "'ve" }, .len = 3 } }, 4157 .{ "there're", SpecialCase{ .tokens = .{ "there", "'re", "" }, .len = 2 } }, 4158 .{ "there's", SpecialCase{ .tokens = .{ "there", "'s", "" }, .len = 2 } }, 4159 .{ "there've", SpecialCase{ .tokens = .{ "there", "'ve", "" }, .len = 2 } }, 4160 .{ "thered", SpecialCase{ .tokens = .{ "there", "d", "" }, .len = 2 } }, 4161 .{ "theredve", SpecialCase{ .tokens = .{ "there", "d", "ve" }, .len = 3 } }, 4162 .{ "therell", SpecialCase{ .tokens = .{ "there", "ll", "" }, .len = 2 } }, 4163 .{ "therellve", SpecialCase{ .tokens = .{ "there", "ll", "ve" }, .len = 3 } }, 4164 .{ "therere", SpecialCase{ .tokens = .{ "there", "re", "" }, .len = 2 } }, 4165 .{ "theres", SpecialCase{ .tokens = .{ "there", "s", "" }, .len = 2 } }, 4166 .{ "thereve", SpecialCase{ .tokens = .{ "there", "ve", "" }, .len = 2 } }, 4167 .{ "there\xe2\x80\x99d", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99d", "" }, .len = 2 } }, 4168 .{ "there\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4169 .{ "there\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4170 .{ "there\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4171 .{ "there\xe2\x80\x99re", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99re", "" }, .len = 2 } }, 4172 .{ "there\xe2\x80\x99s", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99s", "" }, .len = 2 } }, 4173 .{ "there\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "there", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4174 .{ "these'd", SpecialCase{ .tokens = .{ "these", "'d", "" }, .len = 2 } }, 4175 .{ "these'd've", SpecialCase{ .tokens = .{ "these", "'d", "'ve" }, .len = 3 } }, 4176 .{ "these'll", SpecialCase{ .tokens = .{ "these", "'ll", "" }, .len = 2 } }, 4177 .{ "these'll've", SpecialCase{ .tokens = .{ "these", "'ll", "'ve" }, .len = 3 } }, 4178 .{ "these're", SpecialCase{ .tokens = .{ "these", "'re", "" }, .len = 2 } }, 4179 .{ "these've", SpecialCase{ .tokens = .{ "these", "'ve", "" }, .len = 2 } }, 4180 .{ "thesed", SpecialCase{ .tokens = .{ "these", "d", "" }, .len = 2 } }, 4181 .{ "thesedve", SpecialCase{ .tokens = .{ "these", "d", "ve" }, .len = 3 } }, 4182 .{ "thesell", SpecialCase{ .tokens = .{ "these", "ll", "" }, .len = 2 } }, 4183 .{ "thesellve", SpecialCase{ .tokens = .{ "these", "ll", "ve" }, .len = 3 } }, 4184 .{ "thesere", SpecialCase{ .tokens = .{ "these", "re", "" }, .len = 2 } }, 4185 .{ "theseve", SpecialCase{ .tokens = .{ "these", "ve", "" }, .len = 2 } }, 4186 .{ "these\xe2\x80\x99d", SpecialCase{ .tokens = .{ "these", "\xe2\x80\x99d", "" }, .len = 2 } }, 4187 .{ "these\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "these", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4188 .{ "these\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "these", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4189 .{ "these\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "these", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4190 .{ "these\xe2\x80\x99re", SpecialCase{ .tokens = .{ "these", "\xe2\x80\x99re", "" }, .len = 2 } }, 4191 .{ "these\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "these", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4192 .{ "they'd", SpecialCase{ .tokens = .{ "they", "'d", "" }, .len = 2 } }, 4193 .{ "they'd've", SpecialCase{ .tokens = .{ "they", "'d", "'ve" }, .len = 3 } }, 4194 .{ "they'll", SpecialCase{ .tokens = .{ "they", "'ll", "" }, .len = 2 } }, 4195 .{ "they'll've", SpecialCase{ .tokens = .{ "they", "'ll", "'ve" }, .len = 3 } }, 4196 .{ "they're", SpecialCase{ .tokens = .{ "they", "'re", "" }, .len = 2 } }, 4197 .{ "they've", SpecialCase{ .tokens = .{ "they", "'ve", "" }, .len = 2 } }, 4198 .{ "theyd", SpecialCase{ .tokens = .{ "they", "d", "" }, .len = 2 } }, 4199 .{ "theydve", SpecialCase{ .tokens = .{ "they", "d", "ve" }, .len = 3 } }, 4200 .{ "theyll", SpecialCase{ .tokens = .{ "they", "ll", "" }, .len = 2 } }, 4201 .{ "theyllve", SpecialCase{ .tokens = .{ "they", "ll", "ve" }, .len = 3 } }, 4202 .{ "theyre", SpecialCase{ .tokens = .{ "they", "re", "" }, .len = 2 } }, 4203 .{ "theyve", SpecialCase{ .tokens = .{ "they", "ve", "" }, .len = 2 } }, 4204 .{ "they\xe2\x80\x99d", SpecialCase{ .tokens = .{ "they", "\xe2\x80\x99d", "" }, .len = 2 } }, 4205 .{ "they\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "they", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4206 .{ "they\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "they", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4207 .{ "they\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "they", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4208 .{ "they\xe2\x80\x99re", SpecialCase{ .tokens = .{ "they", "\xe2\x80\x99re", "" }, .len = 2 } }, 4209 .{ "they\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "they", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4210 .{ "this'd", SpecialCase{ .tokens = .{ "this", "'d", "" }, .len = 2 } }, 4211 .{ "this'd've", SpecialCase{ .tokens = .{ "this", "'d", "'ve" }, .len = 3 } }, 4212 .{ "this'll", SpecialCase{ .tokens = .{ "this", "'ll", "" }, .len = 2 } }, 4213 .{ "this'll've", SpecialCase{ .tokens = .{ "this", "'ll", "'ve" }, .len = 3 } }, 4214 .{ "this's", SpecialCase{ .tokens = .{ "this", "'s", "" }, .len = 2 } }, 4215 .{ "thisd", SpecialCase{ .tokens = .{ "this", "d", "" }, .len = 2 } }, 4216 .{ "thisdve", SpecialCase{ .tokens = .{ "this", "d", "ve" }, .len = 3 } }, 4217 .{ "thisll", SpecialCase{ .tokens = .{ "this", "ll", "" }, .len = 2 } }, 4218 .{ "thisllve", SpecialCase{ .tokens = .{ "this", "ll", "ve" }, .len = 3 } }, 4219 .{ "thiss", SpecialCase{ .tokens = .{ "this", "s", "" }, .len = 2 } }, 4220 .{ "this\xe2\x80\x99d", SpecialCase{ .tokens = .{ "this", "\xe2\x80\x99d", "" }, .len = 2 } }, 4221 .{ "this\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "this", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4222 .{ "this\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "this", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4223 .{ "this\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "this", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4224 .{ "this\xe2\x80\x99s", SpecialCase{ .tokens = .{ "this", "\xe2\x80\x99s", "" }, .len = 2 } }, 4225 .{ "those'd", SpecialCase{ .tokens = .{ "those", "'d", "" }, .len = 2 } }, 4226 .{ "those'd've", SpecialCase{ .tokens = .{ "those", "'d", "'ve" }, .len = 3 } }, 4227 .{ "those'll", SpecialCase{ .tokens = .{ "those", "'ll", "" }, .len = 2 } }, 4228 .{ "those'll've", SpecialCase{ .tokens = .{ "those", "'ll", "'ve" }, .len = 3 } }, 4229 .{ "those're", SpecialCase{ .tokens = .{ "those", "'re", "" }, .len = 2 } }, 4230 .{ "those've", SpecialCase{ .tokens = .{ "those", "'ve", "" }, .len = 2 } }, 4231 .{ "thosed", SpecialCase{ .tokens = .{ "those", "d", "" }, .len = 2 } }, 4232 .{ "thosedve", SpecialCase{ .tokens = .{ "those", "d", "ve" }, .len = 3 } }, 4233 .{ "thosell", SpecialCase{ .tokens = .{ "those", "ll", "" }, .len = 2 } }, 4234 .{ "thosellve", SpecialCase{ .tokens = .{ "those", "ll", "ve" }, .len = 3 } }, 4235 .{ "thosere", SpecialCase{ .tokens = .{ "those", "re", "" }, .len = 2 } }, 4236 .{ "thoseve", SpecialCase{ .tokens = .{ "those", "ve", "" }, .len = 2 } }, 4237 .{ "those\xe2\x80\x99d", SpecialCase{ .tokens = .{ "those", "\xe2\x80\x99d", "" }, .len = 2 } }, 4238 .{ "those\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "those", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4239 .{ "those\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "those", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4240 .{ "those\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "those", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4241 .{ "those\xe2\x80\x99re", SpecialCase{ .tokens = .{ "those", "\xe2\x80\x99re", "" }, .len = 2 } }, 4242 .{ "those\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "those", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4243 .{ "u.", SpecialCase{ .tokens = .{ "u.", "", "" }, .len = 1 } }, 4244 .{ "v.", SpecialCase{ .tokens = .{ "v.", "", "" }, .len = 1 } }, 4245 .{ "v.s.", SpecialCase{ .tokens = .{ "v.s.", "", "" }, .len = 1 } }, 4246 .{ "v.v", SpecialCase{ .tokens = .{ "v.v", "", "" }, .len = 1 } }, 4247 .{ "v_v", SpecialCase{ .tokens = .{ "v_v", "", "" }, .len = 1 } }, 4248 .{ "vs.", SpecialCase{ .tokens = .{ "vs.", "", "" }, .len = 1 } }, 4249 .{ "w.", SpecialCase{ .tokens = .{ "w.", "", "" }, .len = 1 } }, 4250 .{ "w/o", SpecialCase{ .tokens = .{ "w/o", "", "" }, .len = 1 } }, 4251 .{ "wasn't", SpecialCase{ .tokens = .{ "was", "n't", "" }, .len = 2 } }, 4252 .{ "wasnt", SpecialCase{ .tokens = .{ "was", "nt", "" }, .len = 2 } }, 4253 .{ "wasn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "was", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4254 .{ "we'd", SpecialCase{ .tokens = .{ "we", "'d", "" }, .len = 2 } }, 4255 .{ "we'd've", SpecialCase{ .tokens = .{ "we", "'d", "'ve" }, .len = 3 } }, 4256 .{ "we'll", SpecialCase{ .tokens = .{ "we", "'ll", "" }, .len = 2 } }, 4257 .{ "we'll've", SpecialCase{ .tokens = .{ "we", "'ll", "'ve" }, .len = 3 } }, 4258 .{ "we're", SpecialCase{ .tokens = .{ "we", "'re", "" }, .len = 2 } }, 4259 .{ "we've", SpecialCase{ .tokens = .{ "we", "'ve", "" }, .len = 2 } }, 4260 .{ "wed", SpecialCase{ .tokens = .{ "we", "d", "" }, .len = 2 } }, 4261 .{ "wedve", SpecialCase{ .tokens = .{ "we", "d", "ve" }, .len = 3 } }, 4262 .{ "wellve", SpecialCase{ .tokens = .{ "we", "ll", "ve" }, .len = 3 } }, 4263 .{ "weren't", SpecialCase{ .tokens = .{ "were", "n't", "" }, .len = 2 } }, 4264 .{ "werent", SpecialCase{ .tokens = .{ "were", "nt", "" }, .len = 2 } }, 4265 .{ "weren\xe2\x80\x99t", SpecialCase{ .tokens = .{ "were", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4266 .{ "weve", SpecialCase{ .tokens = .{ "we", "ve", "" }, .len = 2 } }, 4267 .{ "we\xe2\x80\x99d", SpecialCase{ .tokens = .{ "we", "\xe2\x80\x99d", "" }, .len = 2 } }, 4268 .{ "we\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "we", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4269 .{ "we\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "we", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4270 .{ "we\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "we", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4271 .{ "we\xe2\x80\x99re", SpecialCase{ .tokens = .{ "we", "\xe2\x80\x99re", "" }, .len = 2 } }, 4272 .{ "we\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "we", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4273 .{ "what'd", SpecialCase{ .tokens = .{ "what", "'d", "" }, .len = 2 } }, 4274 .{ "what'd've", SpecialCase{ .tokens = .{ "what", "'d", "'ve" }, .len = 3 } }, 4275 .{ "what'll", SpecialCase{ .tokens = .{ "what", "'ll", "" }, .len = 2 } }, 4276 .{ "what'll've", SpecialCase{ .tokens = .{ "what", "'ll", "'ve" }, .len = 3 } }, 4277 .{ "what're", SpecialCase{ .tokens = .{ "what", "'re", "" }, .len = 2 } }, 4278 .{ "what's", SpecialCase{ .tokens = .{ "what", "'s", "" }, .len = 2 } }, 4279 .{ "what've", SpecialCase{ .tokens = .{ "what", "'ve", "" }, .len = 2 } }, 4280 .{ "whatd", SpecialCase{ .tokens = .{ "what", "d", "" }, .len = 2 } }, 4281 .{ "whatdve", SpecialCase{ .tokens = .{ "what", "d", "ve" }, .len = 3 } }, 4282 .{ "whatll", SpecialCase{ .tokens = .{ "what", "ll", "" }, .len = 2 } }, 4283 .{ "whatllve", SpecialCase{ .tokens = .{ "what", "ll", "ve" }, .len = 3 } }, 4284 .{ "whatre", SpecialCase{ .tokens = .{ "what", "re", "" }, .len = 2 } }, 4285 .{ "whats", SpecialCase{ .tokens = .{ "what", "s", "" }, .len = 2 } }, 4286 .{ "whatve", SpecialCase{ .tokens = .{ "what", "ve", "" }, .len = 2 } }, 4287 .{ "what\xe2\x80\x99d", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99d", "" }, .len = 2 } }, 4288 .{ "what\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4289 .{ "what\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4290 .{ "what\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4291 .{ "what\xe2\x80\x99re", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99re", "" }, .len = 2 } }, 4292 .{ "what\xe2\x80\x99s", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99s", "" }, .len = 2 } }, 4293 .{ "what\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "what", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4294 .{ "when'd", SpecialCase{ .tokens = .{ "when", "'d", "" }, .len = 2 } }, 4295 .{ "when'd've", SpecialCase{ .tokens = .{ "when", "'d", "'ve" }, .len = 3 } }, 4296 .{ "when'll", SpecialCase{ .tokens = .{ "when", "'ll", "" }, .len = 2 } }, 4297 .{ "when'll've", SpecialCase{ .tokens = .{ "when", "'ll", "'ve" }, .len = 3 } }, 4298 .{ "when're", SpecialCase{ .tokens = .{ "when", "'re", "" }, .len = 2 } }, 4299 .{ "when's", SpecialCase{ .tokens = .{ "when", "'s", "" }, .len = 2 } }, 4300 .{ "when've", SpecialCase{ .tokens = .{ "when", "'ve", "" }, .len = 2 } }, 4301 .{ "whend", SpecialCase{ .tokens = .{ "when", "d", "" }, .len = 2 } }, 4302 .{ "whendve", SpecialCase{ .tokens = .{ "when", "d", "ve" }, .len = 3 } }, 4303 .{ "whenll", SpecialCase{ .tokens = .{ "when", "ll", "" }, .len = 2 } }, 4304 .{ "whenllve", SpecialCase{ .tokens = .{ "when", "ll", "ve" }, .len = 3 } }, 4305 .{ "whenre", SpecialCase{ .tokens = .{ "when", "re", "" }, .len = 2 } }, 4306 .{ "whens", SpecialCase{ .tokens = .{ "when", "s", "" }, .len = 2 } }, 4307 .{ "whenve", SpecialCase{ .tokens = .{ "when", "ve", "" }, .len = 2 } }, 4308 .{ "when\xe2\x80\x99d", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99d", "" }, .len = 2 } }, 4309 .{ "when\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4310 .{ "when\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4311 .{ "when\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4312 .{ "when\xe2\x80\x99re", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99re", "" }, .len = 2 } }, 4313 .{ "when\xe2\x80\x99s", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99s", "" }, .len = 2 } }, 4314 .{ "when\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "when", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4315 .{ "where'd", SpecialCase{ .tokens = .{ "where", "'d", "" }, .len = 2 } }, 4316 .{ "where'd've", SpecialCase{ .tokens = .{ "where", "'d", "'ve" }, .len = 3 } }, 4317 .{ "where'll", SpecialCase{ .tokens = .{ "where", "'ll", "" }, .len = 2 } }, 4318 .{ "where'll've", SpecialCase{ .tokens = .{ "where", "'ll", "'ve" }, .len = 3 } }, 4319 .{ "where're", SpecialCase{ .tokens = .{ "where", "'re", "" }, .len = 2 } }, 4320 .{ "where's", SpecialCase{ .tokens = .{ "where", "'s", "" }, .len = 2 } }, 4321 .{ "where've", SpecialCase{ .tokens = .{ "where", "'ve", "" }, .len = 2 } }, 4322 .{ "whered", SpecialCase{ .tokens = .{ "where", "d", "" }, .len = 2 } }, 4323 .{ "wheredve", SpecialCase{ .tokens = .{ "where", "d", "ve" }, .len = 3 } }, 4324 .{ "wherell", SpecialCase{ .tokens = .{ "where", "ll", "" }, .len = 2 } }, 4325 .{ "wherellve", SpecialCase{ .tokens = .{ "where", "ll", "ve" }, .len = 3 } }, 4326 .{ "wherere", SpecialCase{ .tokens = .{ "where", "re", "" }, .len = 2 } }, 4327 .{ "wheres", SpecialCase{ .tokens = .{ "where", "s", "" }, .len = 2 } }, 4328 .{ "whereve", SpecialCase{ .tokens = .{ "where", "ve", "" }, .len = 2 } }, 4329 .{ "where\xe2\x80\x99d", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99d", "" }, .len = 2 } }, 4330 .{ "where\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4331 .{ "where\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4332 .{ "where\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4333 .{ "where\xe2\x80\x99re", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99re", "" }, .len = 2 } }, 4334 .{ "where\xe2\x80\x99s", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99s", "" }, .len = 2 } }, 4335 .{ "where\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "where", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4336 .{ "who'd", SpecialCase{ .tokens = .{ "who", "'d", "" }, .len = 2 } }, 4337 .{ "who'd've", SpecialCase{ .tokens = .{ "who", "'d", "'ve" }, .len = 3 } }, 4338 .{ "who'll", SpecialCase{ .tokens = .{ "who", "'ll", "" }, .len = 2 } }, 4339 .{ "who'll've", SpecialCase{ .tokens = .{ "who", "'ll", "'ve" }, .len = 3 } }, 4340 .{ "who're", SpecialCase{ .tokens = .{ "who", "'re", "" }, .len = 2 } }, 4341 .{ "who's", SpecialCase{ .tokens = .{ "who", "'s", "" }, .len = 2 } }, 4342 .{ "who've", SpecialCase{ .tokens = .{ "who", "'ve", "" }, .len = 2 } }, 4343 .{ "whod", SpecialCase{ .tokens = .{ "who", "d", "" }, .len = 2 } }, 4344 .{ "whodve", SpecialCase{ .tokens = .{ "who", "d", "ve" }, .len = 3 } }, 4345 .{ "wholl", SpecialCase{ .tokens = .{ "who", "ll", "" }, .len = 2 } }, 4346 .{ "whollve", SpecialCase{ .tokens = .{ "who", "ll", "ve" }, .len = 3 } }, 4347 .{ "whos", SpecialCase{ .tokens = .{ "who", "s", "" }, .len = 2 } }, 4348 .{ "whove", SpecialCase{ .tokens = .{ "who", "ve", "" }, .len = 2 } }, 4349 .{ "who\xe2\x80\x99d", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99d", "" }, .len = 2 } }, 4350 .{ "who\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4351 .{ "who\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4352 .{ "who\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4353 .{ "who\xe2\x80\x99re", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99re", "" }, .len = 2 } }, 4354 .{ "who\xe2\x80\x99s", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99s", "" }, .len = 2 } }, 4355 .{ "who\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "who", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4356 .{ "why'd", SpecialCase{ .tokens = .{ "why", "'d", "" }, .len = 2 } }, 4357 .{ "why'd've", SpecialCase{ .tokens = .{ "why", "'d", "'ve" }, .len = 3 } }, 4358 .{ "why'll", SpecialCase{ .tokens = .{ "why", "'ll", "" }, .len = 2 } }, 4359 .{ "why'll've", SpecialCase{ .tokens = .{ "why", "'ll", "'ve" }, .len = 3 } }, 4360 .{ "why're", SpecialCase{ .tokens = .{ "why", "'re", "" }, .len = 2 } }, 4361 .{ "why's", SpecialCase{ .tokens = .{ "why", "'s", "" }, .len = 2 } }, 4362 .{ "why've", SpecialCase{ .tokens = .{ "why", "'ve", "" }, .len = 2 } }, 4363 .{ "whyd", SpecialCase{ .tokens = .{ "why", "d", "" }, .len = 2 } }, 4364 .{ "whydve", SpecialCase{ .tokens = .{ "why", "d", "ve" }, .len = 3 } }, 4365 .{ "whyll", SpecialCase{ .tokens = .{ "why", "ll", "" }, .len = 2 } }, 4366 .{ "whyllve", SpecialCase{ .tokens = .{ "why", "ll", "ve" }, .len = 3 } }, 4367 .{ "whyre", SpecialCase{ .tokens = .{ "why", "re", "" }, .len = 2 } }, 4368 .{ "whys", SpecialCase{ .tokens = .{ "why", "s", "" }, .len = 2 } }, 4369 .{ "whyve", SpecialCase{ .tokens = .{ "why", "ve", "" }, .len = 2 } }, 4370 .{ "why\xe2\x80\x99d", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99d", "" }, .len = 2 } }, 4371 .{ "why\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4372 .{ "why\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4373 .{ "why\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4374 .{ "why\xe2\x80\x99re", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99re", "" }, .len = 2 } }, 4375 .{ "why\xe2\x80\x99s", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99s", "" }, .len = 2 } }, 4376 .{ "why\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "why", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4377 .{ "won't", SpecialCase{ .tokens = .{ "wo", "n't", "" }, .len = 2 } }, 4378 .{ "won't've", SpecialCase{ .tokens = .{ "wo", "n't", "'ve" }, .len = 3 } }, 4379 .{ "wont", SpecialCase{ .tokens = .{ "wo", "nt", "" }, .len = 2 } }, 4380 .{ "wontve", SpecialCase{ .tokens = .{ "wo", "nt", "ve" }, .len = 3 } }, 4381 .{ "won\xe2\x80\x99t", SpecialCase{ .tokens = .{ "wo", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4382 .{ "won\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "wo", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4383 .{ "would've", SpecialCase{ .tokens = .{ "would", "'ve", "" }, .len = 2 } }, 4384 .{ "wouldn't", SpecialCase{ .tokens = .{ "would", "n't", "" }, .len = 2 } }, 4385 .{ "wouldn't've", SpecialCase{ .tokens = .{ "would", "n't", "'ve" }, .len = 3 } }, 4386 .{ "wouldnt", SpecialCase{ .tokens = .{ "would", "nt", "" }, .len = 2 } }, 4387 .{ "wouldntve", SpecialCase{ .tokens = .{ "would", "nt", "ve" }, .len = 3 } }, 4388 .{ "wouldn\xe2\x80\x99t", SpecialCase{ .tokens = .{ "would", "n\xe2\x80\x99t", "" }, .len = 2 } }, 4389 .{ "wouldn\xe2\x80\x99t\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "would", "n\xe2\x80\x99t", "\xe2\x80\x99ve" }, .len = 3 } }, 4390 .{ "wouldve", SpecialCase{ .tokens = .{ "would", "ve", "" }, .len = 2 } }, 4391 .{ "would\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "would", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4392 .{ "x.", SpecialCase{ .tokens = .{ "x.", "", "" }, .len = 1 } }, 4393 .{ "xD", SpecialCase{ .tokens = .{ "xD", "", "" }, .len = 1 } }, 4394 .{ "xDD", SpecialCase{ .tokens = .{ "xDD", "", "" }, .len = 1 } }, 4395 .{ "y'all", SpecialCase{ .tokens = .{ "y'", "all", "" }, .len = 2 } }, 4396 .{ "y.", SpecialCase{ .tokens = .{ "y.", "", "" }, .len = 1 } }, 4397 .{ "yall", SpecialCase{ .tokens = .{ "y", "all", "" }, .len = 2 } }, 4398 .{ "you'd", SpecialCase{ .tokens = .{ "you", "'d", "" }, .len = 2 } }, 4399 .{ "you'd've", SpecialCase{ .tokens = .{ "you", "'d", "'ve" }, .len = 3 } }, 4400 .{ "you'll", SpecialCase{ .tokens = .{ "you", "'ll", "" }, .len = 2 } }, 4401 .{ "you'll've", SpecialCase{ .tokens = .{ "you", "'ll", "'ve" }, .len = 3 } }, 4402 .{ "you're", SpecialCase{ .tokens = .{ "you", "'re", "" }, .len = 2 } }, 4403 .{ "you've", SpecialCase{ .tokens = .{ "you", "'ve", "" }, .len = 2 } }, 4404 .{ "youd", SpecialCase{ .tokens = .{ "you", "d", "" }, .len = 2 } }, 4405 .{ "youdve", SpecialCase{ .tokens = .{ "you", "d", "ve" }, .len = 3 } }, 4406 .{ "youll", SpecialCase{ .tokens = .{ "you", "ll", "" }, .len = 2 } }, 4407 .{ "youllve", SpecialCase{ .tokens = .{ "you", "ll", "ve" }, .len = 3 } }, 4408 .{ "youre", SpecialCase{ .tokens = .{ "you", "re", "" }, .len = 2 } }, 4409 .{ "youve", SpecialCase{ .tokens = .{ "you", "ve", "" }, .len = 2 } }, 4410 .{ "you\xe2\x80\x99d", SpecialCase{ .tokens = .{ "you", "\xe2\x80\x99d", "" }, .len = 2 } }, 4411 .{ "you\xe2\x80\x99d\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "you", "\xe2\x80\x99d", "\xe2\x80\x99ve" }, .len = 3 } }, 4412 .{ "you\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "you", "\xe2\x80\x99ll", "" }, .len = 2 } }, 4413 .{ "you\xe2\x80\x99ll\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "you", "\xe2\x80\x99ll", "\xe2\x80\x99ve" }, .len = 3 } }, 4414 .{ "you\xe2\x80\x99re", SpecialCase{ .tokens = .{ "you", "\xe2\x80\x99re", "" }, .len = 2 } }, 4415 .{ "you\xe2\x80\x99ve", SpecialCase{ .tokens = .{ "you", "\xe2\x80\x99ve", "" }, .len = 2 } }, 4416 .{ "y\xe2\x80\x99all", SpecialCase{ .tokens = .{ "y\xe2\x80\x99", "all", "" }, .len = 2 } }, 4417 .{ "z.", SpecialCase{ .tokens = .{ "z.", "", "" }, .len = 1 } }, 4418 .{ "\xc2\xa0", SpecialCase{ .tokens = .{ "\xc2\xa0", "", "" }, .len = 1 } }, 4419 .{ "\xc2\xaf\\(\xe3\x83\x84)/\xc2\xaf", SpecialCase{ .tokens = .{ "\xc2\xaf\\(\xe3\x83\x84)/\xc2\xaf", "", "" }, .len = 1 } }, 4420 .{ "\xc2\xb0C.", SpecialCase{ .tokens = .{ "\xc2\xb0", "C", "." }, .len = 3 } }, 4421 .{ "\xc2\xb0F.", SpecialCase{ .tokens = .{ "\xc2\xb0", "F", "." }, .len = 3 } }, 4422 .{ "\xc2\xb0K.", SpecialCase{ .tokens = .{ "\xc2\xb0", "K", "." }, .len = 3 } }, 4423 .{ "\xc2\xb0c.", SpecialCase{ .tokens = .{ "\xc2\xb0", "c", "." }, .len = 3 } }, 4424 .{ "\xc2\xb0f.", SpecialCase{ .tokens = .{ "\xc2\xb0", "f", "." }, .len = 3 } }, 4425 .{ "\xc2\xb0k.", SpecialCase{ .tokens = .{ "\xc2\xb0", "k", "." }, .len = 3 } }, 4426 .{ "\xc3\xa4.", SpecialCase{ .tokens = .{ "\xc3\xa4.", "", "" }, .len = 1 } }, 4427 .{ "\xc3\xb6.", SpecialCase{ .tokens = .{ "\xc3\xb6.", "", "" }, .len = 1 } }, 4428 .{ "\xc3\xbc.", SpecialCase{ .tokens = .{ "\xc3\xbc.", "", "" }, .len = 1 } }, 4429 .{ "\xe0\xb2\xa0_\xe0\xb2\xa0", SpecialCase{ .tokens = .{ "\xe0\xb2\xa0_\xe0\xb2\xa0", "", "" }, .len = 1 } }, 4430 .{ "\xe0\xb2\xa0\xef\xb8\xb5\xe0\xb2\xa0", SpecialCase{ .tokens = .{ "\xe0\xb2\xa0\xef\xb8\xb5\xe0\xb2\xa0", "", "" }, .len = 1 } }, 4431 .{ "\xe2\x80\x94", SpecialCase{ .tokens = .{ "\xe2\x80\x94", "", "" }, .len = 1 } }, 4432 .{ "\xe2\x80\x98S", SpecialCase{ .tokens = .{ "\xe2\x80\x98S", "", "" }, .len = 1 } }, 4433 .{ "\xe2\x80\x98s", SpecialCase{ .tokens = .{ "\xe2\x80\x98s", "", "" }, .len = 1 } }, 4434 .{ "\xe2\x80\x99", SpecialCase{ .tokens = .{ "\xe2\x80\x99", "", "" }, .len = 1 } }, 4435 .{ "\xe2\x80\x99Cause", SpecialCase{ .tokens = .{ "\xe2\x80\x99Cause", "", "" }, .len = 1 } }, 4436 .{ "\xe2\x80\x99Cos", SpecialCase{ .tokens = .{ "\xe2\x80\x99Cos", "", "" }, .len = 1 } }, 4437 .{ "\xe2\x80\x99Coz", SpecialCase{ .tokens = .{ "\xe2\x80\x99Coz", "", "" }, .len = 1 } }, 4438 .{ "\xe2\x80\x99Cuz", SpecialCase{ .tokens = .{ "\xe2\x80\x99Cuz", "", "" }, .len = 1 } }, 4439 .{ "\xe2\x80\x99S", SpecialCase{ .tokens = .{ "\xe2\x80\x99S", "", "" }, .len = 1 } }, 4440 .{ "\xe2\x80\x99bout", SpecialCase{ .tokens = .{ "\xe2\x80\x99bout", "", "" }, .len = 1 } }, 4441 .{ "\xe2\x80\x99cause", SpecialCase{ .tokens = .{ "\xe2\x80\x99cause", "", "" }, .len = 1 } }, 4442 .{ "\xe2\x80\x99cos", SpecialCase{ .tokens = .{ "\xe2\x80\x99cos", "", "" }, .len = 1 } }, 4443 .{ "\xe2\x80\x99coz", SpecialCase{ .tokens = .{ "\xe2\x80\x99coz", "", "" }, .len = 1 } }, 4444 .{ "\xe2\x80\x99cuz", SpecialCase{ .tokens = .{ "\xe2\x80\x99cuz", "", "" }, .len = 1 } }, 4445 .{ "\xe2\x80\x99d", SpecialCase{ .tokens = .{ "\xe2\x80\x99d", "", "" }, .len = 1 } }, 4446 .{ "\xe2\x80\x99em", SpecialCase{ .tokens = .{ "\xe2\x80\x99em", "", "" }, .len = 1 } }, 4447 .{ "\xe2\x80\x99ll", SpecialCase{ .tokens = .{ "\xe2\x80\x99ll", "", "" }, .len = 1 } }, 4448 .{ "\xe2\x80\x99nuff", SpecialCase{ .tokens = .{ "\xe2\x80\x99nuff", "", "" }, .len = 1 } }, 4449 .{ "\xe2\x80\x99re", SpecialCase{ .tokens = .{ "\xe2\x80\x99re", "", "" }, .len = 1 } }, 4450 .{ "\xe2\x80\x99s", SpecialCase{ .tokens = .{ "\xe2\x80\x99s", "", "" }, .len = 1 } }, 4451 .{ "\xe2\x80\x99\xe2\x80\x99", SpecialCase{ .tokens = .{ "\xe2\x80\x99\xe2\x80\x99", "", "" }, .len = 1 } }, 4452});