1 // Generated by Snowball 2.0.0 - https://snowballstem.org/ 2 3 package org.tartarus.snowball.ext; 4 5 import org.tartarus.snowball.Among; 6 7 /** 8 * This class implements the stemming algorithm defined by a snowball script. 9 * 10 * <p>Generated by Snowball 2.0.0 - https://snowballstem.org/ 11 */ 12 @SuppressWarnings("unused") 13 public class BasqueStemmer extends org.tartarus.snowball.SnowballStemmer { 14 15 private static final long serialVersionUID = 1L; 16 private static final java.lang.invoke.MethodHandles.Lookup methodObject = 17 java.lang.invoke.MethodHandles.lookup(); 18 19 private static final Among a_0[] = { 20 new Among("idea", -1, 1), 21 new Among("bidea", 0, 1), 22 new Among("kidea", 0, 1), 23 new Among("pidea", 0, 1), 24 new Among("kundea", -1, 1), 25 new Among("galea", -1, 1), 26 new Among("tailea", -1, 1), 27 new Among("tzailea", -1, 1), 28 new Among("gunea", -1, 1), 29 new Among("kunea", -1, 1), 30 new Among("tzaga", -1, 1), 31 new Among("gaia", -1, 1), 32 new Among("aldia", -1, 1), 33 new Among("taldia", 12, 1), 34 new Among("karia", -1, 1), 35 new Among("garria", -1, 2), 36 new Among("karria", -1, 1), 37 new Among("ka", -1, 1), 38 new Among("tzaka", 17, 1), 39 new Among("la", -1, 1), 40 new Among("mena", -1, 1), 41 new Among("pena", -1, 1), 42 new Among("kina", -1, 1), 43 new Among("ezina", -1, 1), 44 new Among("tezina", 23, 1), 45 new Among("kuna", -1, 1), 46 new Among("tuna", -1, 1), 47 new Among("kizuna", -1, 1), 48 new Among("era", -1, 1), 49 new Among("bera", 28, 1), 50 new Among("arabera", 29, 4), 51 new Among("kera", 28, 1), 52 new Among("pera", 28, 1), 53 new Among("orra", -1, 1), 54 new Among("korra", 33, 1), 55 new Among("dura", -1, 1), 56 new Among("gura", -1, 1), 57 new Among("kura", -1, 1), 58 new Among("tura", -1, 1), 59 new Among("eta", -1, 1), 60 new Among("keta", 39, 1), 61 new Among("gailua", -1, 1), 62 new Among("eza", -1, 1), 63 new Among("erreza", 42, 1), 64 new Among("tza", -1, 2), 65 new Among("gaitza", 44, 1), 66 new Among("kaitza", 44, 1), 67 new Among("kuntza", 44, 1), 68 new Among("ide", -1, 1), 69 new Among("bide", 48, 1), 70 new Among("kide", 48, 1), 71 new Among("pide", 48, 1), 72 new Among("kunde", -1, 1), 73 new Among("tzake", -1, 1), 74 new Among("tzeke", -1, 1), 75 new Among("le", -1, 1), 76 new Among("gale", 55, 1), 77 new Among("taile", 55, 1), 78 new Among("tzaile", 55, 1), 79 new Among("gune", -1, 1), 80 new Among("kune", -1, 1), 81 new Among("tze", -1, 1), 82 new Among("atze", 61, 1), 83 new Among("gai", -1, 1), 84 new Among("aldi", -1, 1), 85 new Among("taldi", 64, 1), 86 new Among("ki", -1, 1), 87 new Among("ari", -1, 1), 88 new Among("kari", 67, 1), 89 new Among("lari", 67, 1), 90 new Among("tari", 67, 1), 91 new Among("etari", 70, 1), 92 new Among("garri", -1, 2), 93 new Among("karri", -1, 1), 94 new Among("arazi", -1, 1), 95 new Among("tarazi", 74, 1), 96 new Among("an", -1, 1), 97 new Among("ean", 76, 1), 98 new Among("rean", 77, 1), 99 new Among("kan", 76, 1), 100 new Among("etan", 76, 1), 101 new Among("atseden", -1, 3), 102 new Among("men", -1, 1), 103 new Among("pen", -1, 1), 104 new Among("kin", -1, 1), 105 new Among("rekin", 84, 1), 106 new Among("ezin", -1, 1), 107 new Among("tezin", 86, 1), 108 new Among("tun", -1, 1), 109 new Among("kizun", -1, 1), 110 new Among("go", -1, 1), 111 new Among("ago", 90, 1), 112 new Among("tio", -1, 1), 113 new Among("dako", -1, 1), 114 new Among("or", -1, 1), 115 new Among("kor", 94, 1), 116 new Among("tzat", -1, 1), 117 new Among("du", -1, 1), 118 new Among("gailu", -1, 1), 119 new Among("tu", -1, 1), 120 new Among("atu", 99, 1), 121 new Among("aldatu", 100, 1), 122 new Among("tatu", 100, 1), 123 new Among("baditu", 99, 5), 124 new Among("ez", -1, 1), 125 new Among("errez", 104, 1), 126 new Among("tzez", 104, 1), 127 new Among("gaitz", -1, 1), 128 new Among("kaitz", -1, 1) 129 }; 130 131 private static final Among a_1[] = { 132 new Among("ada", -1, 1), 133 new Among("kada", 0, 1), 134 new Among("anda", -1, 1), 135 new Among("denda", -1, 1), 136 new Among("gabea", -1, 1), 137 new Among("kabea", -1, 1), 138 new Among("aldea", -1, 1), 139 new Among("kaldea", 6, 1), 140 new Among("taldea", 6, 1), 141 new Among("ordea", -1, 1), 142 new Among("zalea", -1, 1), 143 new Among("tzalea", 10, 1), 144 new Among("gilea", -1, 1), 145 new Among("emea", -1, 1), 146 new Among("kumea", -1, 1), 147 new Among("nea", -1, 1), 148 new Among("enea", 15, 1), 149 new Among("zionea", 15, 1), 150 new Among("unea", 15, 1), 151 new Among("gunea", 18, 1), 152 new Among("pea", -1, 1), 153 new Among("aurrea", -1, 1), 154 new Among("tea", -1, 1), 155 new Among("kotea", 22, 1), 156 new Among("artea", 22, 1), 157 new Among("ostea", 22, 1), 158 new Among("etxea", -1, 1), 159 new Among("ga", -1, 1), 160 new Among("anga", 27, 1), 161 new Among("gaia", -1, 1), 162 new Among("aldia", -1, 1), 163 new Among("taldia", 30, 1), 164 new Among("handia", -1, 1), 165 new Among("mendia", -1, 1), 166 new Among("geia", -1, 1), 167 new Among("egia", -1, 1), 168 new Among("degia", 35, 1), 169 new Among("tegia", 35, 1), 170 new Among("nahia", -1, 1), 171 new Among("ohia", -1, 1), 172 new Among("kia", -1, 1), 173 new Among("tokia", 40, 1), 174 new Among("oia", -1, 1), 175 new Among("koia", 42, 1), 176 new Among("aria", -1, 1), 177 new Among("karia", 44, 1), 178 new Among("laria", 44, 1), 179 new Among("taria", 44, 1), 180 new Among("eria", -1, 1), 181 new Among("keria", 48, 1), 182 new Among("teria", 48, 1), 183 new Among("garria", -1, 2), 184 new Among("larria", -1, 1), 185 new Among("kirria", -1, 1), 186 new Among("duria", -1, 1), 187 new Among("asia", -1, 1), 188 new Among("tia", -1, 1), 189 new Among("ezia", -1, 1), 190 new Among("bizia", -1, 1), 191 new Among("ontzia", -1, 1), 192 new Among("ka", -1, 1), 193 new Among("joka", 60, 3), 194 new Among("aurka", 60, 10), 195 new Among("ska", 60, 1), 196 new Among("xka", 60, 1), 197 new Among("zka", 60, 1), 198 new Among("gibela", -1, 1), 199 new Among("gela", -1, 1), 200 new Among("kaila", -1, 1), 201 new Among("skila", -1, 1), 202 new Among("tila", -1, 1), 203 new Among("ola", -1, 1), 204 new Among("na", -1, 1), 205 new Among("kana", 72, 1), 206 new Among("ena", 72, 1), 207 new Among("garrena", 74, 1), 208 new Among("gerrena", 74, 1), 209 new Among("urrena", 74, 1), 210 new Among("zaina", 72, 1), 211 new Among("tzaina", 78, 1), 212 new Among("kina", 72, 1), 213 new Among("mina", 72, 1), 214 new Among("garna", 72, 1), 215 new Among("una", 72, 1), 216 new Among("duna", 83, 1), 217 new Among("asuna", 83, 1), 218 new Among("tasuna", 85, 1), 219 new Among("ondoa", -1, 1), 220 new Among("kondoa", 87, 1), 221 new Among("ngoa", -1, 1), 222 new Among("zioa", -1, 1), 223 new Among("koa", -1, 1), 224 new Among("takoa", 91, 1), 225 new Among("zkoa", 91, 1), 226 new Among("noa", -1, 1), 227 new Among("zinoa", 94, 1), 228 new Among("aroa", -1, 1), 229 new Among("taroa", 96, 1), 230 new Among("zaroa", 96, 1), 231 new Among("eroa", -1, 1), 232 new Among("oroa", -1, 1), 233 new Among("osoa", -1, 1), 234 new Among("toa", -1, 1), 235 new Among("ttoa", 102, 1), 236 new Among("ztoa", 102, 1), 237 new Among("txoa", -1, 1), 238 new Among("tzoa", -1, 1), 239 new Among("\u00F1oa", -1, 1), 240 new Among("ra", -1, 1), 241 new Among("ara", 108, 1), 242 new Among("dara", 109, 1), 243 new Among("liara", 109, 1), 244 new Among("tiara", 109, 1), 245 new Among("tara", 109, 1), 246 new Among("etara", 113, 1), 247 new Among("tzara", 109, 1), 248 new Among("bera", 108, 1), 249 new Among("kera", 108, 1), 250 new Among("pera", 108, 1), 251 new Among("ora", 108, 2), 252 new Among("tzarra", 108, 1), 253 new Among("korra", 108, 1), 254 new Among("tra", 108, 1), 255 new Among("sa", -1, 1), 256 new Among("osa", 123, 1), 257 new Among("ta", -1, 1), 258 new Among("eta", 125, 1), 259 new Among("keta", 126, 1), 260 new Among("sta", 125, 1), 261 new Among("dua", -1, 1), 262 new Among("mendua", 129, 1), 263 new Among("ordua", 129, 1), 264 new Among("lekua", -1, 1), 265 new Among("burua", -1, 1), 266 new Among("durua", -1, 1), 267 new Among("tsua", -1, 1), 268 new Among("tua", -1, 1), 269 new Among("mentua", 136, 1), 270 new Among("estua", 136, 1), 271 new Among("txua", -1, 1), 272 new Among("zua", -1, 1), 273 new Among("tzua", 140, 1), 274 new Among("za", -1, 1), 275 new Among("eza", 142, 1), 276 new Among("eroza", 142, 1), 277 new Among("tza", 142, 2), 278 new Among("koitza", 145, 1), 279 new Among("antza", 145, 1), 280 new Among("gintza", 145, 1), 281 new Among("kintza", 145, 1), 282 new Among("kuntza", 145, 1), 283 new Among("gabe", -1, 1), 284 new Among("kabe", -1, 1), 285 new Among("kide", -1, 1), 286 new Among("alde", -1, 1), 287 new Among("kalde", 154, 1), 288 new Among("talde", 154, 1), 289 new Among("orde", -1, 1), 290 new Among("ge", -1, 1), 291 new Among("zale", -1, 1), 292 new Among("tzale", 159, 1), 293 new Among("gile", -1, 1), 294 new Among("eme", -1, 1), 295 new Among("kume", -1, 1), 296 new Among("ne", -1, 1), 297 new Among("zione", 164, 1), 298 new Among("une", 164, 1), 299 new Among("gune", 166, 1), 300 new Among("pe", -1, 1), 301 new Among("aurre", -1, 1), 302 new Among("te", -1, 1), 303 new Among("kote", 170, 1), 304 new Among("arte", 170, 1), 305 new Among("oste", 170, 1), 306 new Among("etxe", -1, 1), 307 new Among("gai", -1, 1), 308 new Among("di", -1, 1), 309 new Among("aldi", 176, 1), 310 new Among("taldi", 177, 1), 311 new Among("geldi", 176, 8), 312 new Among("handi", 176, 1), 313 new Among("mendi", 176, 1), 314 new Among("gei", -1, 1), 315 new Among("egi", -1, 1), 316 new Among("degi", 183, 1), 317 new Among("tegi", 183, 1), 318 new Among("nahi", -1, 1), 319 new Among("ohi", -1, 1), 320 new Among("ki", -1, 1), 321 new Among("toki", 188, 1), 322 new Among("oi", -1, 1), 323 new Among("goi", 190, 1), 324 new Among("koi", 190, 1), 325 new Among("ari", -1, 1), 326 new Among("kari", 193, 1), 327 new Among("lari", 193, 1), 328 new Among("tari", 193, 1), 329 new Among("garri", -1, 2), 330 new Among("larri", -1, 1), 331 new Among("kirri", -1, 1), 332 new Among("duri", -1, 1), 333 new Among("asi", -1, 1), 334 new Among("ti", -1, 1), 335 new Among("ontzi", -1, 1), 336 new Among("\u00F1i", -1, 1), 337 new Among("ak", -1, 1), 338 new Among("ek", -1, 1), 339 new Among("tarik", -1, 1), 340 new Among("gibel", -1, 1), 341 new Among("ail", -1, 1), 342 new Among("kail", 209, 1), 343 new Among("kan", -1, 1), 344 new Among("tan", -1, 1), 345 new Among("etan", 212, 1), 346 new Among("en", -1, 4), 347 new Among("ren", 214, 2), 348 new Among("garren", 215, 1), 349 new Among("gerren", 215, 1), 350 new Among("urren", 215, 1), 351 new Among("ten", 214, 4), 352 new Among("tzen", 214, 4), 353 new Among("zain", -1, 1), 354 new Among("tzain", 221, 1), 355 new Among("kin", -1, 1), 356 new Among("min", -1, 1), 357 new Among("dun", -1, 1), 358 new Among("asun", -1, 1), 359 new Among("tasun", 226, 1), 360 new Among("aizun", -1, 1), 361 new Among("ondo", -1, 1), 362 new Among("kondo", 229, 1), 363 new Among("go", -1, 1), 364 new Among("ngo", 231, 1), 365 new Among("zio", -1, 1), 366 new Among("ko", -1, 1), 367 new Among("trako", 234, 5), 368 new Among("tako", 234, 1), 369 new Among("etako", 236, 1), 370 new Among("eko", 234, 1), 371 new Among("tariko", 234, 1), 372 new Among("sko", 234, 1), 373 new Among("tuko", 234, 1), 374 new Among("minutuko", 241, 6), 375 new Among("zko", 234, 1), 376 new Among("no", -1, 1), 377 new Among("zino", 244, 1), 378 new Among("ro", -1, 1), 379 new Among("aro", 246, 1), 380 new Among("igaro", 247, 9), 381 new Among("taro", 247, 1), 382 new Among("zaro", 247, 1), 383 new Among("ero", 246, 1), 384 new Among("giro", 246, 1), 385 new Among("oro", 246, 1), 386 new Among("oso", -1, 1), 387 new Among("to", -1, 1), 388 new Among("tto", 255, 1), 389 new Among("zto", 255, 1), 390 new Among("txo", -1, 1), 391 new Among("tzo", -1, 1), 392 new Among("gintzo", 259, 1), 393 new Among("\u00F1o", -1, 1), 394 new Among("zp", -1, 1), 395 new Among("ar", -1, 1), 396 new Among("dar", 263, 1), 397 new Among("behar", 263, 1), 398 new Among("zehar", 263, 7), 399 new Among("liar", 263, 1), 400 new Among("tiar", 263, 1), 401 new Among("tar", 263, 1), 402 new Among("tzar", 263, 1), 403 new Among("or", -1, 2), 404 new Among("kor", 271, 1), 405 new Among("os", -1, 1), 406 new Among("ket", -1, 1), 407 new Among("du", -1, 1), 408 new Among("mendu", 275, 1), 409 new Among("ordu", 275, 1), 410 new Among("leku", -1, 1), 411 new Among("buru", -1, 2), 412 new Among("duru", -1, 1), 413 new Among("tsu", -1, 1), 414 new Among("tu", -1, 1), 415 new Among("tatu", 282, 4), 416 new Among("mentu", 282, 1), 417 new Among("estu", 282, 1), 418 new Among("txu", -1, 1), 419 new Among("zu", -1, 1), 420 new Among("tzu", 287, 1), 421 new Among("gintzu", 288, 1), 422 new Among("z", -1, 1), 423 new Among("ez", 290, 1), 424 new Among("eroz", 290, 1), 425 new Among("tz", 290, 1), 426 new Among("koitz", 293, 1) 427 }; 428 429 private static final Among a_2[] = { 430 new Among("zlea", -1, 2), 431 new Among("keria", -1, 1), 432 new Among("la", -1, 1), 433 new Among("era", -1, 1), 434 new Among("dade", -1, 1), 435 new Among("tade", -1, 1), 436 new Among("date", -1, 1), 437 new Among("tate", -1, 1), 438 new Among("gi", -1, 1), 439 new Among("ki", -1, 1), 440 new Among("ik", -1, 1), 441 new Among("lanik", 10, 1), 442 new Among("rik", 10, 1), 443 new Among("larik", 12, 1), 444 new Among("ztik", 10, 1), 445 new Among("go", -1, 1), 446 new Among("ro", -1, 1), 447 new Among("ero", 16, 1), 448 new Among("to", -1, 1) 449 }; 450 451 private static final char g_v[] = {17, 65, 16}; 452 453 private int I_p2; 454 private int I_p1; 455 private int I_pV; 456 r_mark_regions()457 private boolean r_mark_regions() { 458 I_pV = limit; 459 I_p1 = limit; 460 I_p2 = limit; 461 int v_1 = cursor; 462 lab0: 463 { 464 lab1: 465 { 466 int v_2 = cursor; 467 lab2: 468 { 469 if (!(in_grouping(g_v, 97, 117))) { 470 break lab2; 471 } 472 lab3: 473 { 474 int v_3 = cursor; 475 lab4: 476 { 477 if (!(out_grouping(g_v, 97, 117))) { 478 break lab4; 479 } 480 golab5: 481 while (true) { 482 lab6: 483 { 484 if (!(in_grouping(g_v, 97, 117))) { 485 break lab6; 486 } 487 break golab5; 488 } 489 if (cursor >= limit) { 490 break lab4; 491 } 492 cursor++; 493 } 494 break lab3; 495 } 496 cursor = v_3; 497 if (!(in_grouping(g_v, 97, 117))) { 498 break lab2; 499 } 500 golab7: 501 while (true) { 502 lab8: 503 { 504 if (!(out_grouping(g_v, 97, 117))) { 505 break lab8; 506 } 507 break golab7; 508 } 509 if (cursor >= limit) { 510 break lab2; 511 } 512 cursor++; 513 } 514 } 515 break lab1; 516 } 517 cursor = v_2; 518 if (!(out_grouping(g_v, 97, 117))) { 519 break lab0; 520 } 521 lab9: 522 { 523 int v_6 = cursor; 524 lab10: 525 { 526 if (!(out_grouping(g_v, 97, 117))) { 527 break lab10; 528 } 529 golab11: 530 while (true) { 531 lab12: 532 { 533 if (!(in_grouping(g_v, 97, 117))) { 534 break lab12; 535 } 536 break golab11; 537 } 538 if (cursor >= limit) { 539 break lab10; 540 } 541 cursor++; 542 } 543 break lab9; 544 } 545 cursor = v_6; 546 if (!(in_grouping(g_v, 97, 117))) { 547 break lab0; 548 } 549 if (cursor >= limit) { 550 break lab0; 551 } 552 cursor++; 553 } 554 } 555 I_pV = cursor; 556 } 557 cursor = v_1; 558 int v_8 = cursor; 559 lab13: 560 { 561 golab14: 562 while (true) { 563 lab15: 564 { 565 if (!(in_grouping(g_v, 97, 117))) { 566 break lab15; 567 } 568 break golab14; 569 } 570 if (cursor >= limit) { 571 break lab13; 572 } 573 cursor++; 574 } 575 golab16: 576 while (true) { 577 lab17: 578 { 579 if (!(out_grouping(g_v, 97, 117))) { 580 break lab17; 581 } 582 break golab16; 583 } 584 if (cursor >= limit) { 585 break lab13; 586 } 587 cursor++; 588 } 589 I_p1 = cursor; 590 golab18: 591 while (true) { 592 lab19: 593 { 594 if (!(in_grouping(g_v, 97, 117))) { 595 break lab19; 596 } 597 break golab18; 598 } 599 if (cursor >= limit) { 600 break lab13; 601 } 602 cursor++; 603 } 604 golab20: 605 while (true) { 606 lab21: 607 { 608 if (!(out_grouping(g_v, 97, 117))) { 609 break lab21; 610 } 611 break golab20; 612 } 613 if (cursor >= limit) { 614 break lab13; 615 } 616 cursor++; 617 } 618 I_p2 = cursor; 619 } 620 cursor = v_8; 621 return true; 622 } 623 r_RV()624 private boolean r_RV() { 625 if (!(I_pV <= cursor)) { 626 return false; 627 } 628 return true; 629 } 630 r_R2()631 private boolean r_R2() { 632 if (!(I_p2 <= cursor)) { 633 return false; 634 } 635 return true; 636 } 637 r_R1()638 private boolean r_R1() { 639 if (!(I_p1 <= cursor)) { 640 return false; 641 } 642 return true; 643 } 644 r_aditzak()645 private boolean r_aditzak() { 646 int among_var; 647 ket = cursor; 648 among_var = find_among_b(a_0); 649 if (among_var == 0) { 650 return false; 651 } 652 bra = cursor; 653 switch (among_var) { 654 case 1: 655 if (!r_RV()) { 656 return false; 657 } 658 slice_del(); 659 break; 660 case 2: 661 if (!r_R2()) { 662 return false; 663 } 664 slice_del(); 665 break; 666 case 3: 667 slice_from("atseden"); 668 break; 669 case 4: 670 slice_from("arabera"); 671 break; 672 case 5: 673 slice_from("baditu"); 674 break; 675 } 676 return true; 677 } 678 r_izenak()679 private boolean r_izenak() { 680 int among_var; 681 ket = cursor; 682 among_var = find_among_b(a_1); 683 if (among_var == 0) { 684 return false; 685 } 686 bra = cursor; 687 switch (among_var) { 688 case 1: 689 if (!r_RV()) { 690 return false; 691 } 692 slice_del(); 693 break; 694 case 2: 695 if (!r_R2()) { 696 return false; 697 } 698 slice_del(); 699 break; 700 case 3: 701 slice_from("jok"); 702 break; 703 case 4: 704 if (!r_R1()) { 705 return false; 706 } 707 slice_del(); 708 break; 709 case 5: 710 slice_from("tra"); 711 break; 712 case 6: 713 slice_from("minutu"); 714 break; 715 case 7: 716 slice_from("zehar"); 717 break; 718 case 8: 719 slice_from("geldi"); 720 break; 721 case 9: 722 slice_from("igaro"); 723 break; 724 case 10: 725 slice_from("aurka"); 726 break; 727 } 728 return true; 729 } 730 r_adjetiboak()731 private boolean r_adjetiboak() { 732 int among_var; 733 ket = cursor; 734 among_var = find_among_b(a_2); 735 if (among_var == 0) { 736 return false; 737 } 738 bra = cursor; 739 switch (among_var) { 740 case 1: 741 if (!r_RV()) { 742 return false; 743 } 744 slice_del(); 745 break; 746 case 2: 747 slice_from("z"); 748 break; 749 } 750 return true; 751 } 752 753 @Override stem()754 public boolean stem() { 755 r_mark_regions(); 756 limit_backward = cursor; 757 cursor = limit; 758 while (true) { 759 int v_2 = limit - cursor; 760 lab0: 761 { 762 if (!r_aditzak()) { 763 break lab0; 764 } 765 continue; 766 } 767 cursor = limit - v_2; 768 break; 769 } 770 while (true) { 771 int v_3 = limit - cursor; 772 lab1: 773 { 774 if (!r_izenak()) { 775 break lab1; 776 } 777 continue; 778 } 779 cursor = limit - v_3; 780 break; 781 } 782 int v_4 = limit - cursor; 783 r_adjetiboak(); 784 cursor = limit - v_4; 785 cursor = limit_backward; 786 return true; 787 } 788 789 @Override equals(Object o)790 public boolean equals(Object o) { 791 return o instanceof BasqueStemmer; 792 } 793 794 @Override hashCode()795 public int hashCode() { 796 return BasqueStemmer.class.getName().hashCode(); 797 } 798 } 799