diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-01-23 22:38:00 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2016-01-23 22:38:00 +0000 |
commit | faa5f31c4901212372d2dcf7080d9f0a23d5f195 (patch) | |
tree | cda02ce149a95cfa5d20f01943eceae7ff256b7b /Build/source/texk/gregorio/gregorio-src/src | |
parent | 21d19604dc80efef1747f4a048c9dae5e8e810b1 (diff) |
gregorio 4.1.0-beta1
git-svn-id: svn://tug.org/texlive/trunk@39470 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/gregorio/gregorio-src/src')
25 files changed, 13257 insertions, 8586 deletions
diff --git a/Build/source/texk/gregorio/gregorio-src/src/Makefile.am b/Build/source/texk/gregorio/gregorio-src/src/Makefile.am index e2424dcbec7..1bc3209ac20 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/Makefile.am +++ b/Build/source/texk/gregorio/gregorio-src/src/Makefile.am @@ -23,7 +23,7 @@ gregorio_LDADD = $(KPSE_LIBS) bin_PROGRAMS = gregorio gregorio_SOURCES = gregorio-utils.c characters.c characters.h \ - messages.c messages.h struct.c struct.h \ + messages.c messages.h struct.c struct.h enum_generator.h \ unicode.c unicode.h sha1.c sha1.h support.c support.h \ config.h bool.h plugins.h utf8strings.h dump/dump.c \ gregoriotex/gregoriotex-write.c \ diff --git a/Build/source/texk/gregorio/gregorio-src/src/characters.c b/Build/source/texk/gregorio/gregorio-src/src/characters.c index d5e3aa31f6f..dc18f5d593e 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/characters.c +++ b/Build/source/texk/gregorio/gregorio-src/src/characters.c @@ -230,7 +230,7 @@ static bool go_to_end_initial(gregorio_character **param_character) if (!current_character) { return false; } - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); /* skip past any initial */ if (!current_character->is_character && current_character->cos.s.type == ST_T_BEGIN @@ -280,6 +280,7 @@ static void style_pop(det_style **first_style, det_style *element) return; } if (element->previous_style) { + assert(*first_style != element); element->previous_style->next_style = element->next_style; if (element->next_style) { element->next_style->previous_style = element->previous_style; @@ -322,14 +323,14 @@ static void free_styles(det_style **first_style) * special-character. It places current_character to the character next to the * end of the verbatim or special_char charachters. */ -static __inline void verb_or_sp(gregorio_character **ptr_character, +static __inline void verb_or_sp(const gregorio_character **ptr_character, const grestyle_style style, FILE *const f, void (*const function) (FILE *, grewchar *)) { int i, j; grewchar *text; - gregorio_character *current_character; - gregorio_character *begin_character; + const gregorio_character *current_character; + const gregorio_character *begin_character; i = 0; j = 0; @@ -348,7 +349,7 @@ static __inline void verb_or_sp(gregorio_character **ptr_character, } } if (i == 0) { - ptr_character = ¤t_character; + *ptr_character = current_character; return; } text = (grewchar *) gregorio_malloc((i + 1) * sizeof(grewchar)); @@ -384,9 +385,9 @@ static __inline void verb_or_sp(gregorio_character **ptr_character, * complex styles. It would be a bit stupid to do such a thing, but users are * usually very creative when it comes to inventing twisted things... */ -void gregorio_write_text(const bool skip_initial, - gregorio_character *current_character, - FILE *const f, void (*const printverb) (FILE *, grewchar *), +void gregorio_write_text(const gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *const f, + void (*const printverb) (FILE *, grewchar *), void (*const printchar) (FILE *, grewchar), void (*const begin) (FILE *, grestyle_style), void (*const end) (FILE *, grestyle_style), @@ -409,7 +410,7 @@ void gregorio_write_text(const bool skip_initial, printspchar); break; case ST_INITIAL: - if (skip_initial) { + if (phase == WTP_FIRST_SYLLABLE) { while (current_character) { if (!current_character->is_character && current_character->cos.s.type == ST_T_END @@ -433,13 +434,16 @@ void gregorio_write_text(const bool skip_initial, } } - current_character = current_character->next_character; + if (current_character) { + current_character = current_character->next_character; + } } } -void gregorio_write_first_letter_alignment_text(const bool skip_initial, - gregorio_character *current_character, - FILE *const f, void (*const printverb) (FILE *, grewchar *), +void gregorio_write_first_letter_alignment_text( + const gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *const f, + void (*const printverb) (FILE *, grewchar *), void (*const printchar) (FILE *, grewchar), void (*const begin) (FILE *, grestyle_style), void (*const end) (FILE *, grestyle_style), @@ -448,7 +452,7 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, /* stack of styles to close and reopen */ det_style *first_style = NULL; det_style *last_style = NULL; - bool first_letter_open = true; + int first_letter_open = (phase == WTP_FIRST_SYLLABLE)? 2 : 1; if (!current_character) { return; @@ -457,7 +461,9 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, /* go to the first character */ gregorio_go_to_first_character(¤t_character); - begin(f, ST_SYLLABLE_INITIAL); + if (phase != WTP_FIRST_SYLLABLE) { + begin(f, ST_SYLLABLE_INITIAL); + } /* loop until there are no characters left */ for (; current_character; @@ -466,7 +472,7 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, /* found a real character */ if (current_character->is_character) { printchar(f, current_character->cos.character); - close_first_letter = first_letter_open; + close_first_letter = first_letter_open != 0; } else switch (current_character->cos.s.type) { case ST_T_NOTHING: assert(false); @@ -476,29 +482,23 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, switch (current_character->cos.s.style) { case ST_CENTER: case ST_FORCED_CENTER: - /* ignore */ - break; case ST_INITIAL: - if (skip_initial) { - while (current_character) { - if (!current_character->is_character - && current_character->cos.s.type == ST_T_END - && current_character->cos.s.style == - ST_INITIAL) { - break; - } - current_character = current_character->next_character; - } - } /* else ignore */ + case ST_FIRST_SYLLABLE_INITIAL: + /* ignore */ break; case ST_VERBATIM: verb_or_sp(¤t_character, ST_VERBATIM, f, printverb); - close_first_letter = first_letter_open; + close_first_letter = first_letter_open != 0; break; case ST_SPECIAL_CHAR: verb_or_sp(¤t_character, ST_SPECIAL_CHAR, f, printspchar); - close_first_letter = first_letter_open; + close_first_letter = first_letter_open != 0; break; + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + if (phase == WTP_FIRST_SYLLABLE) { + break; + } /* else fall through */ default: /* push the style onto the stack */ style_push(&first_style, current_character->cos.s.style); @@ -510,27 +510,32 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, case ST_CENTER: case ST_FORCED_CENTER: case ST_INITIAL: + case ST_FIRST_SYLLABLE_INITIAL: /* ignore */ break; case ST_VERBATIM: case ST_SPECIAL_CHAR: assert(false); break; + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + if (phase == WTP_FIRST_SYLLABLE) { + break; + } /* else fall through */ default: /* pop the style from the stack */ - assert(first_style->style == current_character->cos.s.style); + assert(first_style && first_style->style + == current_character->cos.s.style); style_pop(&first_style, first_style); end(f, current_character->cos.s.style); } break; } - if (!current_character->next_character && first_letter_open) { - close_first_letter = first_letter_open; - } - - if (close_first_letter) { - first_letter_open = false; + while (close_first_letter || (!current_character->next_character + && first_letter_open > 0)) { + close_first_letter = false; + --first_letter_open; /* close all the styles in the stack */ if (first_style) { @@ -563,12 +568,18 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, } } + if (phase == WTP_FIRST_SYLLABLE) { + while ((--first_letter_open) >= 0) { + end(f, ST_SYLLABLE_INITIAL); + } + } + free_styles(&first_style); } /* the default behaviour is to write only the initial, that is to say things * between the styles ST_INITIAL */ -void gregorio_write_initial(gregorio_character *current_character, +void gregorio_write_initial(const gregorio_character *current_character, FILE *const f, void (*const printverb) (FILE *, grewchar *), void (*const printchar) (FILE *, grewchar), void (*const begin) (FILE *, grestyle_style), @@ -795,10 +806,12 @@ static void suppress_this_character(gregorio_character *to_suppress) return; } if (to_suppress->previous_character) { + assert(to_suppress->previous_character->next_character == to_suppress); to_suppress->previous_character->next_character = to_suppress->next_character; } if (to_suppress->next_character) { + assert(to_suppress->next_character->previous_character == to_suppress); to_suppress->next_character->previous_character = to_suppress->previous_character; } @@ -936,8 +949,9 @@ static __inline bool _suppress_char_and_end_c( return true; } else { if ((*ptr_character)->previous_character) { + gregorio_character *to_suppress = *ptr_character; (*ptr_character) = (*ptr_character)->previous_character; - suppress_this_character((*ptr_character)->next_character); + suppress_this_character(to_suppress); } else { suppress_this_character(*ptr_character); *ptr_character = NULL; @@ -963,7 +977,7 @@ static __inline bool _suppress_char_and_end_c( * in the middle of a verbatim block. */ -void gregorio_rebuild_characters(gregorio_character **param_character, +void gregorio_rebuild_characters(gregorio_character **const param_character, gregorio_center_determination center_is_determined, bool skip_initial) { /* the current_character */ @@ -979,9 +993,9 @@ void gregorio_rebuild_characters(gregorio_character **param_character, if (!current_character->next_character) { /* nothing else to rebuild, but the initial needs to be ST_CENTER */ insert_style_after(ST_T_END, ST_CENTER, ¤t_character); - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); insert_style_before(ST_T_BEGIN, ST_CENTER, current_character); - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); (*param_character) = current_character; return; } @@ -989,7 +1003,7 @@ void gregorio_rebuild_characters(gregorio_character **param_character, /* move to the character after the initial */ current_character = current_character->next_character; } else { - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); } } /* first we see if there is already a center determined */ @@ -1170,12 +1184,12 @@ void gregorio_rebuild_characters(gregorio_character **param_character, if (skip_initial && go_to_end_initial(¤t_character)) { current_character = current_character->next_character; } else { - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); } insert_style_before(ST_T_BEGIN, ST_CENTER, current_character); } /* well.. you're quite brave if you reach this comment. */ - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); (*param_character) = current_character; free_styles(&first_style); } @@ -1204,7 +1218,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, gregorio_character *first_character; gregorio_character *start_of_special; /* so, here we start: we go to the first_character */ - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); /* first we look at the styles, to see if there is a FORCED_CENTER * somewhere and we also remove the CENTER styles if the syllable starts at * CENTER */ @@ -1232,7 +1246,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, current_character = current_character->next_character; } current_character = *param_character; - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); first_character = current_character; /* now we are going to place the two INITIAL styles (begin and end) */ while (current_character) { @@ -1308,7 +1322,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, current_character = current_character->next_character; } } else { - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); } if (current_character) { bool marked_syllable_initial = false; @@ -1355,7 +1369,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, } current_character = *param_character; - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); (*param_character) = current_character; } @@ -1390,6 +1404,6 @@ void gregorio_set_first_word(gregorio_character **const character) /* else there are no more characters here */ if (*character) { - gregorio_go_to_first_character(character); + gregorio_go_to_first_character_c(character); } } diff --git a/Build/source/texk/gregorio/gregorio-src/src/characters.h b/Build/source/texk/gregorio/gregorio-src/src/characters.h index 1575fc0d1c9..06486dadc9b 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/characters.h +++ b/Build/source/texk/gregorio/gregorio-src/src/characters.h @@ -57,23 +57,28 @@ typedef struct det_style { gregorio_character *gregorio_first_text(gregorio_score *score); -void gregorio_write_text(bool skip_initial, - gregorio_character *current_character, - FILE *f, void (*printverb) (FILE *, grewchar *), +typedef enum gregorio_write_text_phase { + WTP_NORMAL, + WTP_FIRST_SYLLABLE +} gregorio_write_text_phase; + +void gregorio_write_text(gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *f, + void (*printverb) (FILE *, grewchar *), void (*printchar) (FILE *, grewchar), void (*begin) (FILE *, grestyle_style), void (*end) (FILE *, grestyle_style), void (*printspchar) (FILE *, grewchar *)); -void gregorio_write_first_letter_alignment_text(bool skip_initial, - gregorio_character *current_character, - FILE *f, void (*printverb) (FILE *, grewchar *), +void gregorio_write_first_letter_alignment_text(gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *f, + void (*printverb) (FILE *, grewchar *), void (*printchar) (FILE *, grewchar), void (*begin) (FILE *, grestyle_style), void (*end) (FILE *, grestyle_style), void (*printspchar) (FILE *, grewchar *)); -void gregorio_write_initial(gregorio_character *current_character, +void gregorio_write_initial(const gregorio_character *current_character, FILE *f, void (*printverb) (FILE *, grewchar *), void (*printchar) (FILE *, grewchar), void (*begin) (FILE *, grestyle_style), diff --git a/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c b/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c index f1c8fc6b8c9..f2adafa80c5 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c +++ b/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c @@ -30,78 +30,15 @@ #include "plugins.h" #include "support.h" -static const char *unknown(int value) { - static char buf[20]; - gregorio_snprintf(buf, 20, "?%d", value); - return buf; -} - -static const char *dump_translation_type_to_string(gregorio_tr_centering - translation_type) -{ - switch (translation_type) { - case TR_NORMAL: - return "TR_NORMAL"; - case TR_WITH_CENTER_BEGINNING: - return "TR_WITH_CENTER_BEGINNING"; - case TR_WITH_CENTER_END: - return "TR_WITH_CENTER_END"; - } - return unknown(translation_type); -} - -static const char *dump_nlba_to_string(gregorio_nlba no_linebreak_area) -{ - switch (no_linebreak_area) { - case NLBA_NORMAL: - return "NLBA_NORMAL"; - case NLBA_BEGINNING: - return "NLBA_BEGINNING"; - case NLBA_END: - return "NLBA_END"; - } - return unknown(no_linebreak_area); -} - static const char *dump_style_to_string(grestyle_style style) { - switch (style) { - case ST_NO_STYLE: - return " ST_NO_STYLE"; - case ST_ITALIC: - return " ST_ITALIC"; - case ST_CENTER: - return " ST_CENTER"; - case ST_FORCED_CENTER: - return " ST_FORCED_CENTER"; - case ST_INITIAL: - return " ST_INITIAL"; - case ST_BOLD: - return " ST_BOLD"; - case ST_TT: - return " ST_TT"; - case ST_UNDERLINED: - return " ST_UNDERLINED"; - case ST_COLORED: - return " ST_COLORED"; - case ST_SMALL_CAPS: - return " ST_SMALL_CAPS"; - case ST_SPECIAL_CHAR: - return " ST_SPECIAL_CHAR"; - case ST_VERBATIM: - return " ST_VERBATIM"; - case ST_FIRST_WORD: - return " ST_FIRST_WORD"; - case ST_FIRST_SYLLABLE: - return "ST_FIRST_SYLLABLE"; - case ST_FIRST_SYLLABLE_INITIAL: - return "ST_FIRST_SYLLABLE_INITIAL"; - default: - return unknown(style); - } + static char buf[50]; + + gregorio_snprintf(buf, sizeof buf, "%16s", grestyle_style_to_string(style)); + return buf; } -static void dump_write_characters(FILE *const f, +void dump_write_characters(FILE *const f, const gregorio_character * current_character) { while (current_character) { @@ -124,399 +61,18 @@ static void dump_write_characters(FILE *const f, } } -static const char *dump_key_to_char(const int key) -{ - switch (key) { - case -2: - return "f1"; - case 0: - return "f2"; - case 2: - return "f3"; - case 4: - return "f4"; - case 1: - return "c1"; - case 3: - return "c2"; - case 5: - return "c3"; - case 7: - return "c4"; - } - return "no key defined"; -} - -static const char *dump_syllable_position(gregorio_word_position pos) -{ - switch (pos) { - case WORD_BEGINNING: - return "WORD_BEGINNING"; - case WORD_MIDDLE: - return "WORD_MIDDLE"; - case WORD_END: - return "WORD_END"; - case WORD_ONE_SYLLABLE: - return "WORD_ONE_SYLLABLE"; - } - return "unknown"; -} - -static const char *dump_type(gregorio_type type) -{ - switch (type) { - case GRE_NOTE: - return "GRE_NOTE"; - case GRE_GLYPH: - return "GRE_GLYPH"; - case GRE_ELEMENT: - return "GRE_ELEMENT"; - case GRE_FLAT: - return "GRE_FLAT"; - case GRE_SHARP: - return "GRE_SHARP"; - case GRE_NATURAL: - return "GRE_NATURAL"; - case GRE_C_KEY_CHANGE: - return "GRE_C_KEY_CHANGE"; - case GRE_F_KEY_CHANGE: - return "GRE_F_KEY_CHANGE"; - case GRE_END_OF_LINE: - return "GRE_END_OF_LINE"; - case GRE_END_OF_PAR: - return "GRE_END_OF_PAR"; - case GRE_CUSTOS: - return "GRE_CUSTOS"; - case GRE_SPACE: - return "GRE_SPACE"; - case GRE_BAR: - return "GRE_BAR"; - case GRE_SYLLABLE: - return "GRE_SYLLABLE"; - case GRE_TEXVERB_GLYPH: - return "GRE_TEXVERB_GLYPH"; - case GRE_TEXVERB_ELEMENT: - return "GRE_TEXVERB_ELEMENT"; - case GRE_NLBA: - return "GRE_NLBA"; - case GRE_ALT: - return "GRE_ALT"; - case GRE_MANUAL_CUSTOS: - return "GRE_MANUAL_CUSTOS"; - default: - return "unknown"; - } -} - -static const char *dump_bar_type(gregorio_bar element_type) -{ - switch (element_type) { - case B_NO_BAR: - return "B_NO_BAR"; - case B_VIRGULA: - return "B_VIRGULA"; - case B_DIVISIO_MINIMA: - return "B_DIVISIO_MINIMA"; - case B_DIVISIO_MINOR: - return "B_DIVISIO_MINOR"; - case B_DIVISIO_MAIOR: - return "B_DIVISIO_MAIOR"; - case B_DIVISIO_FINALIS: - return "B_DIVISIO_FINALIS"; - case B_DIVISIO_MINOR_D1: - return "B_DIVISIO_MINOR_D1"; - case B_DIVISIO_MINOR_D2: - return "B_DIVISIO_MINOR_D2"; - case B_DIVISIO_MINOR_D3: - return "B_DIVISIO_MINOR_D3"; - case B_DIVISIO_MINOR_D4: - return "B_DIVISIO_MINOR_D4"; - case B_DIVISIO_MINOR_D5: - return "B_DIVISIO_MINOR_D5"; - case B_DIVISIO_MINOR_D6: - return "B_DIVISIO_MINOR_D6"; - } - return "unknown"; -} - -static const char *dump_space_type(gregorio_space element_type) -{ - switch (element_type) { - case SP_DEFAULT: - return "SP_DEFAULT"; - case SP_NO_SPACE: - return "SP_NO_SPACE"; - case SP_ZERO_WIDTH: - return "SP_ZERO_WIDTH"; - case SP_NEUMATIC_CUT: - return "SP_NEUMATIC_CUT"; - case SP_LARGER_SPACE: - return "SP_LARGER_SPACE"; - case SP_GLYPH_SPACE: - return "SP_GLYPH_SPACE"; - case SP_GLYPH_SPACE_NB: - return "SP_GLYPH_SPACE_NB"; - case SP_LARGER_SPACE_NB: - return "SP_LARGER_SPACE_NB"; - case SP_NEUMATIC_CUT_NB: - return "SP_NEUMATIC_CUT_NB"; - } - return "unknown"; -} - -static const char *dump_liquescentia(gregorio_liquescentia liquescentia) -{ - switch (liquescentia) { - case L_NO_LIQUESCENTIA: - return "L_NO_LIQUESCENTIA"; - case L_DEMINUTUS: - return "L_DEMINUTUS"; - case L_AUCTUS_ASCENDENS: - return "L_AUCTUS_ASCENDENS"; - case L_AUCTUS_DESCENDENS: - return "L_AUCTUS_DESCENDENS"; - case L_AUCTA: - return "L_AUCTA"; - case L_INITIO_DEBILIS: - return "L_INITIO_DEBILIS"; - case L_DEMINUTUS_INITIO_DEBILIS: - return "L_DEMINUTUS_INITIO_DEBILIS"; - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - return "L_AUCTUS_ASCENDENS_INITIO_DEBILIS"; - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - return "L_AUCTUS_DESCENDENS_INITIO_DEBILIS"; - case L_AUCTA_INITIO_DEBILIS: - return "L_AUCTA_INITIO_DEBILIS"; - } - return "unknown"; -} - -static const char *dump_glyph_type(gregorio_glyph_type glyph_type) -{ - switch (glyph_type) { - case G_PUNCTUM_INCLINATUM: - return "G_PUNCTUM_INCLINATUM"; - case G_2_PUNCTA_INCLINATA_DESCENDENS: - return "G_2_PUNCTA_INCLINATA_DESCENDENS"; - case G_3_PUNCTA_INCLINATA_DESCENDENS: - return "G_3_PUNCTA_INCLINATA_DESCENDENS"; - case G_4_PUNCTA_INCLINATA_DESCENDENS: - return "G_4_PUNCTA_INCLINATA_DESCENDENS"; - case G_5_PUNCTA_INCLINATA_DESCENDENS: - return "G_5_PUNCTA_INCLINATA_DESCENDENS"; - case G_2_PUNCTA_INCLINATA_ASCENDENS: - return "G_2_PUNCTA_INCLINATA_ASCENDENS"; - case G_3_PUNCTA_INCLINATA_ASCENDENS: - return "G_3_PUNCTA_INCLINATA_ASCENDENS"; - case G_4_PUNCTA_INCLINATA_ASCENDENS: - return "G_4_PUNCTA_INCLINATA_ASCENDENS"; - case G_5_PUNCTA_INCLINATA_ASCENDENS: - return "G_5_PUNCTA_INCLINATA_ASCENDENS"; - case G_TRIGONUS: - return "G_TRIGONUS"; - case G_PUNCTA_INCLINATA: - return "G_PUNCTA_INCLINATA"; - case G_UNDETERMINED: - return "G_UNDETERMINED"; - case G_VIRGA: - return "G_VIRGA"; - case G_VIRGA_REVERSA: - return "G_VIRGA_REVERSA"; - case G_STROPHA: - return "G_STROPHA"; - case G_STROPHA_AUCTA: - return "G_STROPHA_AUCTA"; - case G_PUNCTUM: - return "G_PUNCTUM"; - case G_PODATUS: - return "G_PODATUS"; - case G_PES_QUADRATUM: - return "G_PES_QUADRATUM"; - case G_FLEXA: - return "G_FLEXA"; - case G_TORCULUS: - return "G_TORCULUS"; - case G_TORCULUS_RESUPINUS: - return "G_TORCULUS_RESUPINUS"; - case G_TORCULUS_RESUPINUS_FLEXUS: - return "G_TORCULUS_RESUPINUS_FLEXUS"; - case G_PORRECTUS: - return "G_PORRECTUS"; - case G_PORRECTUS_FLEXUS: - return "G_PORRECTUS_FLEXUS"; - case G_BIVIRGA: - return "G_BIVIRGA"; - case G_TRIVIRGA: - return "G_TRIVIRGA"; - case G_DISTROPHA: - return "G_DISTROPHA"; - case G_DISTROPHA_AUCTA: - return "G_DISTROPHA_AUCTA"; - case G_TRISTROPHA: - return "G_TRISTROPHA"; - case G_ANCUS: - return "G_ANCUS"; - case G_TRISTROPHA_AUCTA: - return "G_TRISTROPHA_AUCTA"; - case G_PES_QUADRATUM_FIRST_PART: - return "G_PES_QUADRATUM_FIRST_PART"; - case G_SCANDICUS: - return "G_SCANDICUS"; - case G_SALICUS: - return "G_SALICUS"; - case G_VIRGA_STRATA: - return "G_VIRGA_STRATA"; - case G_TORCULUS_LIQUESCENS: - return "G_TORCULUS_LIQUESCENS"; - default: - return "unknown"; - } -} - -static const char *dump_shape(gregorio_shape shape) -{ - switch (shape) { - case S_UNDETERMINED: - return "S_UNDETERMINED"; - case S_PUNCTUM: - return "S_PUNCTUM"; - case S_PUNCTUM_END_OF_GLYPH: - return "S_PUNCTUM_END_OF_GLYPH"; - case S_PUNCTUM_INCLINATUM: - return "S_PUNCTUM_INCLINATUM"; - case S_PUNCTUM_INCLINATUM_DEMINUTUS: - return "S_PUNCTUM_INCLINATUM_DEMINUTUS"; - case S_PUNCTUM_INCLINATUM_AUCTUS: - return "S_PUNCTUM_INCLINATUM_AUCTUS"; - case S_VIRGA: - return "S_VIRGA"; - case S_VIRGA_REVERSA: - return "S_VIRGA_REVERSA"; - case S_BIVIRGA: - return "S_BIVIRGA"; - case S_TRIVIRGA: - return "S_TRIVIRGA"; - case S_ORISCUS: - return "S_ORISCUS"; - case S_ORISCUS_AUCTUS: - return "S_ORISCUS_AUCTUS"; - case S_ORISCUS_DEMINUTUS: - return "S_ORISCUS_DEMINUTUS"; - case S_ORISCUS_SCAPUS: - return "S_ORISCUS_SCAPUS"; - case S_QUILISMA: - return "S_QUILISMA"; - case S_STROPHA: - return "S_STROPHA"; - case S_STROPHA_AUCTA: - return "S_STROPHA_AUCTA"; - case S_DISTROPHA: - return "S_DISTROPHA"; - case S_DISTROPHA_AUCTA: - return "S_DISTROPHA_AUCTA"; - case S_TRISTROPHA: - return "S_TRISTROPHA"; - case S_TRISTROPHA_AUCTA: - return "S_TRISTROPHA_AUCTA"; - case S_QUADRATUM: - return "S_QUADRATUM"; - case S_PUNCTUM_CAVUM: - return "S_PUNCTUM_CAVUM"; - case S_LINEA_PUNCTUM: - return "S_LINEA_PUNCTUM"; - case S_LINEA_PUNCTUM_CAVUM: - return "S_LINEA_PUNCTUM_CAVUM"; - case S_LINEA: - return "S_LINEA"; - case S_PUNCTUM_CAVUM_INCLINATUM: - return "S_PUNCTUM_CAVUM_INCLINATUM"; - case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: - return "S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS"; - default: - return "unknown"; - } -} - -static const char *dump_signs(gregorio_sign signs) -{ - switch (signs) { - case _NO_SIGN: - return "_NO_SIGN"; - case _PUNCTUM_MORA: - return "_PUNCTUM_MORA"; - case _AUCTUM_DUPLEX: - return "_AUCTUM_DUPLEX"; - case _V_EPISEMA: - return "_V_EPISEMA"; - case _V_EPISEMA_PUNCTUM_MORA: - return "_V_EPISEMA_PUNCTUM_MORA"; - case _V_EPISEMA_AUCTUM_DUPLEX: - return "_V_EPISEMA_AUCTUM_DUPLEX"; - default: - return "unknown"; - } -} - -/* a function dumping special signs */ -static const char *dump_special_sign(gregorio_sign special_sign) -{ - switch (special_sign) { - case _ACCENTUS: - return "_ACCENTUS"; - case _ACCENTUS_REVERSUS: - return "_ACCENTUS_REVERSUS"; - case _CIRCULUS: - return "_CIRCULUS"; - case _SEMI_CIRCULUS: - return "_SEMI_CIRCULUS"; - case _SEMI_CIRCULUS_REVERSUS: - return "_SEMI_CIRCULUS_REVERSUS"; - case _V_EPISEMA: - return "_V_EPISEMA"; - case _V_EPISEMA_BAR_H_EPISEMA: - return "_V_EPISEMA_BAR_H_EPISEMA"; - case _BAR_H_EPISEMA: - return "_BAR_H_EPISEMA"; - default: - return "unknown"; - } -} - -static const char *dump_h_episema_size(grehepisema_size size) -{ - switch (size) { - case H_NORMAL: - return "H_NORMAL"; - case H_SMALL_LEFT: - return "H_SMALL_LEFT"; - case H_SMALL_CENTRE: - return "H_SMALL_CENTRE"; - case H_SMALL_RIGHT: - return "H_SMALL_RIGHT"; - } - return "unknown"; -} - static const char *dump_bool(bool value) { return value? "true" : "false"; } -static const char *dump_vposition(gregorio_vposition vpos) { - switch (vpos) { - case VPOS_AUTO: - return "VPOS_AUTO"; - case VPOS_ABOVE: - return "VPOS_ABOVE"; - case VPOS_BELOW: - return "VPOS_BELOW"; - } - return "unknown"; -} - -static const char *dump_pitch(const char height) { +static const char *dump_pitch(const char height, const char highest_pitch) { static char buf[20]; - if (height >= LOWEST_PITCH && height <= HIGHEST_PITCH) { - gregorio_snprintf(buf, 20, "%c", height + 'a' - LOWEST_PITCH); + if (height >= LOWEST_PITCH && height <= highest_pitch) { + char pitch = height + 'a' - LOWEST_PITCH; + if (pitch == 'o') { + pitch = 'p'; + } + gregorio_snprintf(buf, 20, "%c", pitch); } else { gregorio_snprintf(buf, 20, "?%d", height); } @@ -529,6 +85,7 @@ void dump_write_score(FILE *f, gregorio_score *score) int i; int annotation_num; gregorio_syllable *syllable; + gregorio_header *header; if (!f) { gregorio_message(_("call with NULL file"), "gregoriotex_write_score", @@ -552,63 +109,33 @@ void dump_write_score(FILE *f, gregorio_score *score) if (score->score_copyright) { fprintf(f, " score_copyright %s\n", score->score_copyright); } - if (score->office_part) { - fprintf(f, " office_part %s\n", score->office_part); - } - if (score->occasion) { - fprintf(f, " occasion %s\n", score->occasion); - } - if (score->meter) { - fprintf(f, " meter %s\n", score->meter); - } - if (score->commentary) { - fprintf(f, " commentary %s\n", score->commentary); - } - if (score->arranger) { - fprintf(f, " arranger %s\n", score->arranger); - } - if (score->si.author) { - fprintf(f, " author %s\n", score->si.author); - } - if (score->si.date) { - fprintf(f, " date %s\n", score->si.date); - } - if (score->si.manuscript) { - fprintf(f, " manuscript %s\n", score->si.manuscript); - } - if (score->si.manuscript_reference) { - fprintf(f, " manuscript_reference %s\n", - score->si.manuscript_reference); - } - if (score->si.manuscript_storage_place) { - fprintf(f, " manuscript_storage_place %s\n", - score->si.manuscript_storage_place); + if (score->author) { + fprintf(f, " author %s\n", score->author); } - if (score->si.book) { - fprintf(f, " book %s\n", score->si.book); - } - if (score->si.transcriber) { - fprintf(f, " transcriber %s\n", score->si.transcriber); - } - if (score->si.transcription_date) { - fprintf(f, " transcription_date %s\n", - score->si.transcription_date); + if (score->mode) { + fprintf(f, " mode %s\n", score->mode); } - if (score->gregoriotex_font) { - fprintf(f, " gregoriotex_font %s\n", - score->gregoriotex_font); + if (score->mode_modifier) { + fprintf(f, " mode_modifier %s\n", score->mode_modifier); } - if (score->mode) { - fprintf(f, " mode %d\n", score->mode); + if (score->mode_differentia) { + fprintf(f, " mode_differentia %s\n", score->mode_differentia); } - if (score->initial_style) { - fprintf(f, " initial_style %d\n", score->initial_style); + if (score->staff_lines != 4) { + fprintf(f, " staff_lines %d\n", (int)score->staff_lines); } if (score->nabc_lines) { - fprintf (f, " nabc_lines %d\n", (int)score->nabc_lines); + fprintf(f, " nabc_lines %d\n", (int)score->nabc_lines); + } + if (score->legacy_oriscus_orientation) { + fprintf(f, " oriscus-orientation legacy\n"); } - if (score->user_notes) { - fprintf(f, " user_notes %s\n", score->user_notes); + fprintf(f, "\n\n" + "=====================================================================\n" + " HEADERS\n" + "=====================================================================\n"); + for (header = score->headers; header; header = header->next) { + fprintf(f, " %-25s %s\n", header->name, header->value); } fprintf(f, "\n\n" "=====================================================================\n" @@ -616,13 +143,23 @@ void dump_write_score(FILE *f, gregorio_score *score) "=====================================================================\n"); for (i = 0; i < score->number_of_voices; i++) { fprintf(f, " Voice %d\n", i + 1); - if (voice_info->initial_key) { - fprintf(f, " initial_key %d (%s)\n", - voice_info->initial_key, - dump_key_to_char(voice_info->initial_key)); - if (voice_info->flatted_key) { + if (voice_info->initial_clef.line) { + fprintf(f, " initial_key %d (%c%d)\n", + gregorio_calculate_new_key(voice_info->initial_clef), + gregorio_clef_to_char(voice_info->initial_clef.clef), + voice_info->initial_clef.line); + if (voice_info->initial_clef.flatted) { fprintf(f, " flatted_key true\n"); } + if (voice_info->initial_clef.secondary_line) { + fprintf(f, " secondary_clef %c%d\n", + gregorio_clef_to_char( + voice_info->initial_clef.secondary_clef), + voice_info->initial_clef.secondary_line); + if (voice_info->initial_clef.secondary_flatted) { + fprintf(f, " secondary_flatted_key true\n"); + } + } } for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { @@ -631,13 +168,6 @@ void dump_write_score(FILE *f, gregorio_score *score) score->annotation[annotation_num]); } } - if (voice_info->style) { - fprintf(f, " style %s\n", voice_info->style); - } - if (voice_info->virgula_position) { - fprintf(f, " virgula_position %s\n", - voice_info->virgula_position); - } voice_info = voice_info->next_voice_info; } fprintf(f, "\n\n" @@ -649,20 +179,20 @@ void dump_write_score(FILE *f, gregorio_score *score) gregorio_element *element; if (syllable->type) { fprintf(f, " type %d (%s)\n", - syllable->type, dump_type(syllable->type)); + syllable->type, gregorio_type_to_string(syllable->type)); } if (syllable->position) { fprintf(f, " position %d (%s)\n", syllable->position, - dump_syllable_position(syllable->position)); + gregorio_word_position_to_string(syllable->position)); } if (syllable->special_sign) { fprintf(f, " special sign %s\n", - dump_special_sign(syllable->special_sign)); + gregorio_sign_to_string(syllable->special_sign)); } if (syllable->no_linebreak_area != NLBA_NORMAL) { fprintf(f, " no line break area %s\n", - dump_nlba_to_string(syllable->no_linebreak_area)); + gregorio_nlba_to_string(syllable->no_linebreak_area)); } if (syllable->text) { if (syllable->translation) { @@ -674,7 +204,7 @@ void dump_write_score(FILE *f, gregorio_score *score) && syllable->translation_type != TR_WITH_CENTER_END) || syllable->translation_type == TR_WITH_CENTER_END) { fprintf(f, "\n Translation type %s", - dump_translation_type_to_string + gregorio_tr_centering_to_string (syllable->translation_type)); if (syllable->translation_type == TR_WITH_CENTER_END) { fprintf(f, "\n"); @@ -692,13 +222,14 @@ void dump_write_score(FILE *f, gregorio_score *score) fprintf(f, "---------------------------------------------------------------------\n"); if (element->type) { fprintf(f, " type %d (%s)\n", - element->type, dump_type(element->type)); + element->type, gregorio_type_to_string(element->type)); } switch (element->type) { case GRE_CUSTOS: if (element->u.misc.pitched.pitch) { fprintf(f, " pitch %s\n", - dump_pitch(element->u.misc.pitched.pitch)); + dump_pitch(element->u.misc.pitched.pitch, + score->highest_pitch)); } if (element->u.misc.pitched.force_pitch) { fprintf(f, " force_pitch true\n"); @@ -706,10 +237,13 @@ void dump_write_score(FILE *f, gregorio_score *score) break; case GRE_SPACE: if (element->u.misc.unpitched.info.space) { - fprintf(f, " space %d (%s)\n", + char *factor = element->u.misc.unpitched.info. + ad_hoc_space_factor; + fprintf(f, " space %d (%s)%s%s\n", element->u.misc.unpitched.info.space, - dump_space_type(element->u.misc.unpitched.info. - space)); + gregorio_space_to_string( + element->u.misc.unpitched.info.space), + factor? " x " : "", factor? factor : ""); } break; case GRE_TEXVERB_ELEMENT: @@ -719,7 +253,7 @@ void dump_write_score(FILE *f, gregorio_score *score) case GRE_NLBA: fprintf(f, " nlba %d (%s)\n", element->u.misc.unpitched.info.nlba, - dump_nlba_to_string(element->u.misc.unpitched.info. + gregorio_nlba_to_string(element->u.misc.unpitched.info. nlba)); break; case GRE_ALT: @@ -730,40 +264,44 @@ void dump_write_score(FILE *f, gregorio_score *score) if (element->u.misc.unpitched.info.bar) { fprintf(f, " bar %d (%s)\n", element->u.misc.unpitched.info.bar, - dump_bar_type(element->u.misc.unpitched.info.bar)); + gregorio_bar_to_string(element->u.misc.unpitched. + info.bar)); if (element->u.misc.unpitched.special_sign) { fprintf(f, " special sign %d (%s)\n", element->u.misc.unpitched.special_sign, - dump_special_sign(element->u.misc.unpitched. - special_sign)); + gregorio_sign_to_string(element-> + u.misc.unpitched.special_sign)); } } break; - case GRE_C_KEY_CHANGE: - if (element->u.misc.pitched.pitch) { - fprintf(f, " clef %d (c%d)\n", - element->u.misc.pitched.pitch, - element->u.misc.pitched.pitch - '0'); - if (element->u.misc.pitched.flatted_key) { + case GRE_CLEF: + if (element->u.misc.clef.line) { + fprintf(f, " clef %d (%c%d)\n", + gregorio_calculate_new_key(element->u.misc.clef), + gregorio_clef_to_char(element->u.misc.clef.clef), + element->u.misc.clef.line); + if (element->u.misc.clef.flatted) { fprintf(f, " flatted_key true\n"); } - } - break; - case GRE_F_KEY_CHANGE: - if (element->u.misc.pitched.pitch) { - fprintf(f, " clef %d (f%d)\n", - element->u.misc.pitched.pitch, - element->u.misc.pitched.pitch - '0'); - if (element->u.misc.pitched.flatted_key) { - fprintf(f, " flatted_key true\n"); + if (element->u.misc.clef.secondary_line) { + fprintf(f, " secondary_clef %c%d\n", + gregorio_clef_to_char( + element->u.misc.clef.secondary_clef), + element->u.misc.clef.secondary_line); + if (element->u.misc.clef.secondary_flatted) { + fprintf(f, " secondary_flatted_key true\n"); + } } } break; case GRE_END_OF_LINE: - if (element->u.misc.unpitched.info.sub_type) { - fprintf(f, " sub_type %d (%s)\n", - element->u.misc.unpitched.info.sub_type, - dump_type(element->u.misc.unpitched.info.sub_type)); + if (element->u.misc.unpitched.info.eol_ragged) { + fprintf(f, " ragged true\n"); + } + if (element->u.misc.unpitched.info.eol_forces_custos) { + fprintf(f, " forces custos %s\n", + dump_bool(element + ->u.misc.unpitched.info.eol_forces_custos_on)); } break; case GRE_ELEMENT: @@ -773,7 +311,8 @@ void dump_write_score(FILE *f, gregorio_score *score) fprintf(f, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); if (glyph->type) { fprintf(f, " type %d (%s)\n", - glyph->type, dump_type(glyph->type)); + glyph->type, gregorio_type_to_string(glyph-> + type)); } switch (glyph->type) { case GRE_TEXVERB_GLYPH: @@ -784,39 +323,33 @@ void dump_write_score(FILE *f, gregorio_score *score) case GRE_SPACE: fprintf(f, " space %d (%s)\n", glyph->u.misc.unpitched.info.space, - dump_space_type(glyph->u.misc.unpitched.info. - space)); + gregorio_space_to_string(glyph->u.misc. + unpitched.info.space)); break; case GRE_BAR: fprintf(f, " glyph_type %d (%s)\n", glyph->u.misc.unpitched.info.bar, - dump_bar_type(glyph->u.misc.unpitched.info. - bar)); + gregorio_bar_to_string(glyph->u.misc.unpitched. + info.bar)); if (glyph->u.misc.unpitched.special_sign) { fprintf(f, " special sign %d (%s)\n", glyph->u.misc.unpitched.special_sign, - dump_special_sign(glyph->u.misc.unpitched. - special_sign)); + gregorio_sign_to_string(glyph-> + u.misc.unpitched.special_sign)); } break; - case GRE_FLAT: - case GRE_NATURAL: - case GRE_SHARP: - fprintf(f, " pitch %s\n", - dump_pitch(glyph->u.misc.pitched.pitch)); - break; - case GRE_GLYPH: fprintf(f, " glyph_type %d (%s)\n", glyph->u.notes.glyph_type, - dump_glyph_type(glyph->u.notes.glyph_type)); + gregorio_glyph_type_to_string(glyph->u.notes. + glyph_type)); if (glyph->u.notes.liquescentia) { fprintf(f, " liquescentia %d (%s)\n", glyph->u.notes.liquescentia, - dump_liquescentia(glyph->u.notes. - liquescentia)); + gregorio_liquescentia_to_string( + glyph->u.notes.liquescentia)); } break; @@ -830,24 +363,27 @@ void dump_write_score(FILE *f, gregorio_score *score) fprintf(f, "- - - - - - - - - - - - - - - - - - - - - - - \n"); if (note->type) { fprintf(f, " type %d (%s)\n", - note->type, dump_type(note->type)); + note->type, + gregorio_type_to_string(note->type)); } switch (note->type) { case GRE_NOTE: if (note->u.note.pitch) { fprintf(f, " pitch %s\n", - dump_pitch(note->u.note.pitch)); + dump_pitch(note->u.note.pitch, + score->highest_pitch)); } if (note->u.note.shape) { fprintf(f, " shape %d (%s)\n", note->u.note.shape, - dump_shape(note->u.note.shape)); + gregorio_shape_to_string( + note->u.note.shape)); } if (note->u.note.liquescentia) { fprintf(f, " liquescentia %d (%s)\n", note->u.note.liquescentia, - dump_liquescentia(note->u.note. - liquescentia)); + gregorio_liquescentia_to_string( + note->u.note.liquescentia)); } break; @@ -865,7 +401,8 @@ void dump_write_score(FILE *f, gregorio_score *score) } if (note->signs) { fprintf(f, " signs %d (%s)\n", - note->signs, dump_signs(note->signs)); + note->signs, + gregorio_sign_to_string(note->signs)); } if (note->signs & _V_EPISEMA && note->v_episema_height) { if (note->v_episema_height < note->u.note.pitch) { @@ -879,18 +416,21 @@ void dump_write_score(FILE *f, gregorio_score *score) || note->signs == _V_EPISEMA_PUNCTUM_MORA) && note->mora_vposition) { fprintf(f, " mora vposition %s\n", - dump_vposition(note->mora_vposition)); + gregorio_vposition_to_string(note-> + mora_vposition)); } if (note->special_sign) { fprintf(f, " special sign %d (%s)\n", note->special_sign, - dump_special_sign(note->special_sign)); + gregorio_sign_to_string( + note->special_sign)); } if (note->h_episema_above == HEPISEMA_AUTO && note->h_episema_below == HEPISEMA_AUTO) { fprintf(f, " auto hepisema size %d (%s)\n", note->h_episema_above_size, - dump_h_episema_size(note->h_episema_above_size)); + grehepisema_size_to_string(note-> + h_episema_above_size)); fprintf(f, " auto hepisema bridge %s\n", dump_bool(note->h_episema_above_connect)); } @@ -898,18 +438,28 @@ void dump_write_score(FILE *f, gregorio_score *score) if (note->h_episema_above == HEPISEMA_FORCED) { fprintf(f, " above hepisema size %d (%s)\n", note->h_episema_above_size, - dump_h_episema_size(note->h_episema_above_size)); + grehepisema_size_to_string(note-> + h_episema_above_size)); fprintf(f, " above hepisema bridge %s\n", dump_bool(note->h_episema_above_connect)); } if (note->h_episema_below == HEPISEMA_FORCED) { fprintf(f, " below hepisema size %d (%s)\n", note->h_episema_below_size, - dump_h_episema_size(note->h_episema_below_size)); + grehepisema_size_to_string(note-> + h_episema_below_size)); fprintf(f, " below hepisema bridge %s\n", dump_bool(note->h_episema_below_connect)); } } + if (note->explicit_high_ledger_line) { + fprintf(f, " explicit high line %s\n", + dump_bool(note->supposed_high_ledger_line)); + } + if (note->explicit_low_ledger_line) { + fprintf(f, " explicit low line %s\n", + dump_bool(note->supposed_low_ledger_line)); + } } } } diff --git a/Build/source/texk/gregorio/gregorio-src/src/enum_generator.h b/Build/source/texk/gregorio/gregorio-src/src/enum_generator.h new file mode 100644 index 00000000000..e6c6ae1049e --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/src/enum_generator.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md) + * + * This file is part of Gregorio. + * + * Gregorio is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Gregorio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Gregorio. If not, see <http://www.gnu.org/licenses/>. + */ + +/* These macros are used for generating enum code. This is based on the + * technique described in http://stackoverflow.com/a/202511 + * + * Two of these macros are meant for use outside this set of macros: + * + * - ENUM declares the enum itself and a prototype for the function that + * returns the string value of the enum's numeric value. This is meant to be + * used from a header file. + * - ENUM_TO_STRING defines the function whose prototype was declared by ENUM. + * This is meant to be used from a code file. + * + * These two macros both take the following two arguments: + * + * - TYPE is the name to use for the enum. + * - DEF is the name of a macro that generates the bodies of the enum and the + * to-string function. DEF should take four arguments, in the following + * order (with suggested names): + * - A is a macro that generates an enum value with a specifiec numeric + * value. It takes two arguments, the name and the numeric value. + * - E is a macro that generates an enum value that has no specific numeric + * value. It takes one argument, the name. + * - X is a macro that generates the last enum value when it has a specific + * numeric value. It takes the same two arguments as A. + * - L is a macro that generates the last enum value when it has no specific + * numeric value. It takes the same argument as E. + * + * Note: If we were supporting C11, we could take empty macro arguments and + * would be able to get away with only two arguments to DEF. + */ + +#ifndef ENUM_GENERATOR_H +#define ENUM_GENERATOR_H + +/* for enum values */ +#define ENUM_VALUE(NAME,VALUE) NAME = VALUE, +#define ENUM_ENTRY(NAME) NAME, +#define ENUM_LAST_VALUE(NAME,VALUE) NAME = VALUE +#define ENUM_LAST_ENTRY(NAME) NAME + +/* for enum case */ +#define ENUM_VALUE_CASE(NAME,VALUE) case NAME: return #NAME; +#define ENUM_ENTRY_CASE(NAME) case NAME: return #NAME; + +/* enum declaration */ +#define ENUM(TYPE,DEF) \ + typedef enum TYPE { \ + DEF(ENUM_VALUE, ENUM_ENTRY, ENUM_LAST_VALUE, ENUM_LAST_ENTRY) \ + } TYPE; \ + const char *TYPE##_to_string(TYPE value) + +/* enum *_to_string function defintiion */ +#define ENUM_TO_STRING(TYPE,DEF) \ + const char *TYPE##_to_string(TYPE value) \ + { \ + switch(value) { \ + DEF(ENUM_VALUE_CASE, ENUM_ENTRY_CASE, ENUM_VALUE_CASE, ENUM_ENTRY_CASE) \ + default: return gregorio_unknown(value); \ + } \ + } + +#endif diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c index 3991760f8ee..a0291dd50e3 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c @@ -128,26 +128,21 @@ static gregorio_element *gabc_det_elements_from_glyphs( while (current_glyph) { if (current_glyph->type != GRE_GLYPH) { - /* we ignore flats and naturals, except if they are alone */ - if (current_glyph->type == GRE_NATURAL - || current_glyph->type == GRE_FLAT - || current_glyph->type == GRE_SHARP) { - if (!current_glyph->next) { - first_element = current_element; - close_element(¤t_element, &first_glyph, current_glyph); - } - current_glyph = current_glyph->next; - continue; - } - /* we must not cut after a zero_width_space */ - if (current_glyph->type == GRE_SPACE - && current_glyph->u.misc.unpitched.info.space == SP_ZERO_WIDTH) { - if (!current_glyph->next) { - close_element(¤t_element, &first_glyph, current_glyph); + /* we must not cut after a glyph-level space */ + if (current_glyph->type == GRE_SPACE) { + switch (current_glyph->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + case SP_HALF_SPACE: + if (!current_glyph->next) { + close_element(¤t_element, &first_glyph, current_glyph); + } + current_glyph = current_glyph->next; + do_not_cut = true; + continue; + default: + /* any other space should be handled normally */ + break; } - current_glyph = current_glyph->next; - do_not_cut = true; - continue; } /* we must not cut after a zero_width_space */ if (current_glyph->type == GRE_TEXVERB_GLYPH) { @@ -161,16 +156,19 @@ static gregorio_element *gabc_det_elements_from_glyphs( cut_before(current_glyph, &first_glyph, &previous_glyph, ¤t_element); /* if statement to make neumatic cuts not appear in elements, as - * there is always one between elements */ + * there is always one between elements, unless the next element + * is a space */ if (current_glyph->type != GRE_SPACE - || current_glyph->u.misc.unpitched.info.space != SP_NEUMATIC_CUT) - /* clef change or space other thant neumatic cut */ - { + || current_glyph->u.misc.unpitched.info.space + != SP_NEUMATIC_CUT + || (current_glyph->next + && current_glyph->next->type == GRE_SPACE)) { + /* clef change or space other than neumatic cut */ if (!first_element) { first_element = current_element; } gregorio_add_misc_element(¤t_element, current_glyph->type, - current_glyph->u.misc, + &(current_glyph->u.misc), current_glyph->texverb); } first_glyph = current_glyph->next; @@ -191,6 +189,7 @@ static gregorio_element *gabc_det_elements_from_glyphs( } switch (current_glyph_type) { case G_PUNCTA_ASCENDENS: + case G_ALTERATION: if (!do_not_cut) { cut_before(current_glyph, &first_glyph, &previous_glyph, ¤t_element); @@ -264,21 +263,24 @@ static gregorio_element *gabc_det_elements_from_glyphs( */ static gregorio_element *gabc_det_elements_from_notes( - gregorio_note *current_note, int *current_key) + gregorio_note *current_note, int *current_key, + const gregorio_score *const score) { gregorio_element *final = NULL; - gregorio_glyph *tmp = gabc_det_glyphs_from_notes(current_note, current_key); + gregorio_glyph *tmp = gabc_det_glyphs_from_notes(current_note, current_key, + score); final = gabc_det_elements_from_glyphs(tmp); return final; } -gregorio_element *gabc_det_elements_from_string(char *const str, int *const current_key, - char *macros[10], gregorio_scanner_location *const loc) +gregorio_element *gabc_det_elements_from_string(char *const str, + int *const current_key, char *macros[10], + gregorio_scanner_location *const loc, const gregorio_score *const score) { gregorio_element *final; gregorio_note *tmp; - tmp = gabc_det_notes_from_string(str, macros, loc); - final = gabc_det_elements_from_notes(tmp, current_key); + tmp = gabc_det_notes_from_string(str, macros, loc, score); + final = gabc_det_elements_from_notes(tmp, current_key, score); return final; } diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c index 37328ee1d95..b54369e9e7b 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c @@ -43,184 +43,6 @@ static __inline gregorio_scanner_location *copy_note_location( /**************************** * - * First see the comments of - * gabc_det_glyphs_from_notes. This function is used when - * we have finished to determine a glyph. We have the last glyph that - * have been added: last_glyph. The glyph we want to add is given by - * glyph_type and liquescentia. - * - * The glyph we want to add goes from first_note to current_note, we - * isolate these notes from the notes that won't be in the glyph, and - * we add the glyph to the list_of_glyphs. - * -****************************/ - -static gregorio_note *close_glyph(gregorio_glyph **last_glyph, - gregorio_glyph_type glyph_type, gregorio_note **first_note, - gregorio_liquescentia liquescentia, gregorio_note *current_note) -{ - gregorio_note *new_current_note = current_note; - gregorio_scanner_location loc; - /* a variable necessary for the patch for G_BIVIRGA & co. */ - gregorio_note *added_notes = NULL; - gregorio_note *next_note = NULL; - - /* patch to have good glyph type in the case where a glyph ends by a note - * with shape S_QUADRATUM */ - if (glyph_type == G_PES_QUADRATUM_FIRST_PART - || glyph_type == G_PES_QUILISMA_QUADRATUM_FIRST_PART) { - glyph_type = G_PUNCTUM; - } - - gregorio_add_glyph(last_glyph, glyph_type, *first_note, liquescentia); - if (current_note->next) { - current_note->next->previous = NULL; - *first_note = current_note->next; - current_note->next = NULL; - } - /* here we "patch" the structure for bivirga, tristropha, etc. */ - /* the idea is not to have a S_BIVIRGA in the shape of the note (which is - * dirty) but rather a G_BIVIRGA in the glyph (which is the case now) and - * two virgas */ - - if (glyph_type == G_BIVIRGA || glyph_type == G_DISTROPHA - || glyph_type == G_TRIVIRGA || glyph_type == G_TRISTROPHA - || glyph_type == G_DISTROPHA_AUCTA - || glyph_type == G_TRISTROPHA_AUCTA) { - gregorio_go_to_first_note(¤t_note); - while (current_note) { - if (current_note->type == GRE_NOTE) { - switch (current_note->u.note.shape) { - case S_TRIVIRGA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, - copy_note_location(current_note, &loc)); - case S_BIVIRGA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, - copy_note_location(current_note, &loc)); - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_VIRGA, current_note->signs, - current_note->u.note.liquescentia, current_note, - copy_note_location(current_note, &loc)); - break; - case S_TRISTROPHA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - case S_DISTROPHA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, current_note->signs, - current_note->u.note.liquescentia, current_note, - copy_note_location(current_note, &loc)); - break; - case S_TRISTROPHA_AUCTA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - case S_DISTROPHA_AUCTA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA_AUCTA, current_note->signs, - current_note->u.note.liquescentia, current_note, - copy_note_location(current_note, &loc)); - break; - default: - break; - } - } - /* this is the case of two separate virga that have been spotted - * as a bivirga */ - if (!added_notes) { - break; - } - next_note = current_note->next; - /* now we have what we want, we set up the links and free the old - * note */ - if (next_note) { - current_note->next->previous = added_notes; - added_notes->next = next_note; - } - gregorio_go_to_first_note(&added_notes); - if (current_note->previous) { - current_note->previous->next = added_notes; - added_notes->previous = current_note->previous; - } else { - new_current_note = added_notes; - } - /* Detaching current_note is not strictly necessary here because we - * are effectively plucking out added_notes into its own glyph; - * however, detaching the note is safer if this behavior changes in - * the future because gregorio_free_one_note nullifies surrounding - * pointers */ - current_note->next = NULL; - current_note->previous = NULL; - gregorio_free_one_note(¤t_note); - if (!next_note) { - current_note = added_notes; - break; - } - current_note = next_note; - } - gregorio_go_to_first_note(¤t_note); - /* finally we set the just added glyph first_note to current_note */ - (*last_glyph)->u.notes.first_note = current_note; - } - return new_current_note; -} - -/* a small function to automatically determine the pitch of a custo : it is - * the pitch of the next note, but we must take care of the clef changes, as - * custo are (normally and for now) only present before clef changes. */ -/* TODO: there may be a side effect with the flated keys... */ - -static char gabc_determine_custo_pitch(gregorio_note *current_note, - int current_key) -{ - int pitch_difference = 0; - int newkey; - while (current_note) { - if (current_note->type == GRE_C_KEY_CHANGE - || current_note->type == GRE_C_KEY_CHANGE_FLATED) { - newkey = gregorio_calculate_new_key(C_KEY, - current_note->u.note.pitch - '0'); - pitch_difference = newkey - current_key; - } - if (current_note->type == GRE_F_KEY_CHANGE - || current_note->type == GRE_F_KEY_CHANGE_FLATED) { - newkey = gregorio_calculate_new_key(F_KEY, - current_note->u.note.pitch - '0'); - pitch_difference = newkey - current_key; - } - if (current_note->type == GRE_NOTE) { - pitch_difference = - (int) current_note->u.note.pitch - pitch_difference; - while (pitch_difference < LOWEST_PITCH) { - pitch_difference += 7; - } - while (pitch_difference > HIGHEST_PITCH) { - pitch_difference -= 7; - } - assert(pitch_difference >= LOWEST_PITCH - && pitch_difference <= HIGHEST_PITCH); - return (char) pitch_difference; - } - current_note = current_note->next; - } - return DUMMY_PITCH; -} - -/**************************** - * * This function is the basis of all the determination of glyphs. The * phylosophy of the function is to say : We have a glyph that we have * determined, and we have the following note, can we "add" it to the @@ -247,17 +69,17 @@ static char gabc_determine_custo_pitch(gregorio_note *current_note, * DET_END_OF_CURRENT: we have been able to add the note to the glyph, * but we won't be able to add more notes to the glyph, we can close * it. The new type is returned. - - * DET_END_OF_BOTH: we have'nt been able to add the note to the glyph, + * + * DET_END_OF_BOTH: we haven't been able to add the note to the glyph, * and we won't be able to add notes to the new glyph. This special * case is quite rare, we use it for trivirga, tristropha, etc. - + * * When we encouter a S_QUADRATUM (or S_QUILISMA_QUADRATUM), we build * a new glyph with the (temporary) shape G_PES_QUADRATUM_FIRST_PART * (or G_PES_QUILISMA_QUADRATUM_FIRST_PART), and we wait for the next * note. * -****************************/ + ****************************/ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, char current_pitch, char last_pitch, gregorio_shape shape, @@ -290,6 +112,12 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, next_glyph_type = G_PUNCTUM; *end_of_glyph = DET_END_OF_BOTH; break; + case S_FLAT: + case S_SHARP: + case S_NATURAL: + next_glyph_type = G_ALTERATION; + *end_of_glyph = DET_END_OF_BOTH; + break; case S_PUNCTUM: /* * we determine here the shape of the thing if it is made of puncta @@ -342,6 +170,14 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, case G_VIRGA_STRATA: if (current_pitch > last_pitch) { next_glyph_type = G_SALICUS; + } else { + next_glyph_type = G_PUNCTUM; + *end_of_glyph = DET_END_OF_PREVIOUS; + } + break; + case G_SALICUS: + if (current_pitch < last_pitch) { + next_glyph_type = G_SALICUS_FLEXUS; *end_of_glyph = DET_END_OF_CURRENT; } else { next_glyph_type = G_PUNCTUM; @@ -391,18 +227,14 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, break; } break; - case S_ORISCUS: - *end_of_glyph = DET_END_OF_PREVIOUS; - next_glyph_type = G_PUNCTUM; - break; - case S_ORISCUS_AUCTUS: - *end_of_glyph = DET_END_OF_PREVIOUS; - next_glyph_type = G_PUNCTUM; - break; + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_DEMINUTUS: - *end_of_glyph = DET_END_OF_PREVIOUS; - next_glyph_type = G_PUNCTUM; - break; + case S_ORISCUS_CAVUM_UNDETERMINED: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: case S_QUILISMA: *end_of_glyph = DET_END_OF_PREVIOUS; next_glyph_type = G_PUNCTUM; @@ -603,6 +435,362 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, /**************************** * + * First see the comments of + * gabc_det_glyphs_from_notes. This function is used when + * we have finished to determine a glyph. We have the last glyph that + * have been added: last_glyph. The glyph we want to add is given by + * glyph_type and liquescentia. + * + * The glyph we want to add goes from first_note to current_note, we + * isolate these notes from the notes that won't be in the glyph, and + * we add the glyph to the list_of_glyphs. + * +****************************/ + +static gregorio_note *close_normal_glyph(gregorio_glyph **last_glyph, + gregorio_glyph_type glyph_type, gregorio_note **first_note, + gregorio_liquescentia liquescentia, gregorio_note *current_note) +{ + gregorio_note *new_current_note = current_note; + gregorio_scanner_location loc; + /* a variable necessary for the patch for G_BIVIRGA & co. */ + gregorio_note *added_notes = NULL; + gregorio_note *next_note = NULL; + + /* patch to have good glyph type in the case where a glyph ends by a note + * with shape S_QUADRATUM */ + if (glyph_type == G_PES_QUADRATUM_FIRST_PART + || glyph_type == G_PES_QUILISMA_QUADRATUM_FIRST_PART) { + glyph_type = G_PUNCTUM; + } + + gregorio_add_glyph(last_glyph, glyph_type, *first_note, liquescentia); + if (current_note->next) { + current_note->next->previous = NULL; + *first_note = current_note->next; + current_note->next = NULL; + } + /* here we "patch" the structure for bivirga, tristropha, etc. */ + /* the idea is not to have a S_BIVIRGA in the shape of the note (which is + * dirty) but rather a G_BIVIRGA in the glyph (which is the case now) and + * two virgas */ + + if (glyph_type == G_BIVIRGA || glyph_type == G_DISTROPHA + || glyph_type == G_TRIVIRGA || glyph_type == G_TRISTROPHA + || glyph_type == G_DISTROPHA_AUCTA + || glyph_type == G_TRISTROPHA_AUCTA) { + gregorio_go_to_first_note(¤t_note); + while (current_note) { + if (current_note->type == GRE_NOTE) { + switch (current_note->u.note.shape) { + case S_TRIVIRGA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, + copy_note_location(current_note, &loc)); + case S_BIVIRGA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, + copy_note_location(current_note, &loc)); + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_VIRGA, current_note->signs, + current_note->u.note.liquescentia, current_note, + copy_note_location(current_note, &loc)); + break; + case S_TRISTROPHA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + case S_DISTROPHA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, current_note->signs, + current_note->u.note.liquescentia, current_note, + copy_note_location(current_note, &loc)); + break; + case S_TRISTROPHA_AUCTA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + case S_DISTROPHA_AUCTA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA_AUCTA, current_note->signs, + current_note->u.note.liquescentia, current_note, + copy_note_location(current_note, &loc)); + break; + default: + break; + } + } + /* this is the case of two separate virga that have been spotted + * as a bivirga */ + if (!added_notes) { + break; + } + next_note = current_note->next; + /* now we have what we want, we set up the links and free the old + * note */ + if (next_note) { + current_note->next->previous = added_notes; + added_notes->next = next_note; + } + gregorio_go_to_first_note(&added_notes); + if (current_note->previous) { + current_note->previous->next = added_notes; + added_notes->previous = current_note->previous; + } else { + new_current_note = added_notes; + } + /* Detaching current_note is not strictly necessary here because we + * are effectively plucking out added_notes into its own glyph; + * however, detaching the note is safer if this behavior changes in + * the future because gregorio_free_one_note nullifies surrounding + * pointers */ + current_note->next = NULL; + current_note->previous = NULL; + gregorio_free_one_note(¤t_note); + if (!next_note) { + current_note = added_notes; + break; + } + current_note = next_note; + } + gregorio_go_to_first_note(¤t_note); + /* finally we set the just added glyph first_note to current_note */ + (*last_glyph)->u.notes.first_note = current_note; + } + return new_current_note; +} + +static gregorio_note *close_fused_glyph(gregorio_glyph **last_glyph, + gregorio_glyph_type glyph_type, gregorio_note **first_note, + gregorio_liquescentia liquescentia, gregorio_note *current_note) +{ + (*first_note)->u.note.liquescentia |= (liquescentia & L_FUSED); + return close_normal_glyph(last_glyph, glyph_type, first_note, liquescentia, + current_note); +} + +static gregorio_note *next_non_texverb_note(gregorio_note *first_note, + gregorio_note *last_note) +{ + if (first_note == NULL) { + return NULL; + } + + if (first_note == last_note) { + if (first_note->type == GRE_TEXVERB_GLYPH) { + gregorio_message(_("Unexpected texverb at start of iteration"), + "next_non_texverb_note", VERBOSITY_ERROR, 0); + } + return first_note; + } + + for (first_note = first_note->next; first_note && first_note != last_note; + first_note = first_note->next) { + if (first_note->type != GRE_TEXVERB_GLYPH) { + return first_note; + } + } + + if (first_note && first_note->type == GRE_TEXVERB_GLYPH) { + gregorio_message(_("Unexpected texverb at end of iteration"), + "next_non_texverb_note", VERBOSITY_ERROR, 0); + } + + return last_note; +} + +static void add_intervening_texverbs(gregorio_glyph **last_glyph, + gregorio_note *first_note, gregorio_note *last_note) +{ + for ( ; first_note && first_note->type == GRE_TEXVERB_GLYPH; ) { + bool on_last_note = (first_note == last_note); + + gregorio_add_unpitched_element_as_glyph(last_glyph, first_note->type, + &(first_note->u.other), _NO_SIGN, first_note->texverb); + first_note->texverb = NULL; + gregorio_free_one_note(&first_note); + + if (on_last_note) { + break; + } + } +} + +static gregorio_note *close_fusion_glyph(gregorio_glyph **last_glyph, + gregorio_note **first_note, gregorio_liquescentia liquescentia, + gregorio_note *real_last_note) +{ + bool first = true; + gregorio_note *last_note, *texverb_tail; + gregorio_note *next; + int prev_shift = 0, shift, shift2; + gregorio_note *result; + + if ((*first_note)->type == GRE_TEXVERB_GLYPH) { + gregorio_message(_("Unexpected texverb at start of fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return real_last_note; + } + + for (last_note = real_last_note; + last_note != *first_note && last_note->type == GRE_TEXVERB_GLYPH; + last_note = last_note->previous) { + /* skip over the trailing texverbs */ + } + texverb_tail = (last_note == real_last_note)? NULL : last_note->next; + + for (;;) { + bool processed = false; + + /* fusion must work through glyph-level texverbs */ + if ((*first_note)->type == GRE_TEXVERB_GLYPH) { + gregorio_add_unpitched_element_as_glyph(last_glyph, + (*first_note)->type, &((*first_note)->u.other), _NO_SIGN, + (*first_note)->texverb); + (*first_note)->texverb = NULL; + if (*first_note == last_note) { + gregorio_message(_("Unexpected texverb at end of fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return last_note; + } + gregorio_free_one_note(first_note); + } + + if (*first_note == last_note || !(next = (*first_note)->next)) { + gregorio_message(_("Unexpected single note during fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return last_note; + } + + next = next_non_texverb_note(*first_note, last_note); + + shift = next->u.note.pitch - (*first_note)->u.note.pitch; + if (shift != 0 && next == last_note) { + /* there are exactly two notes left, so we end fusion */ + add_intervening_texverbs(last_glyph, (*first_note)->next, next); + result = close_fused_glyph(last_glyph, + shift < 0? G_FLEXA : G_PODATUS, first_note, + liquescentia, last_note); + if (texverb_tail) { + add_intervening_texverbs(last_glyph, texverb_tail, + real_last_note); + } + return result; + } + if (prev_shift >= 0 && shift < 0) { + /* check for a porrectus-like flexus */ + gregorio_note *next_next = next_non_texverb_note(next, last_note); + if (!next_next) { + gregorio_message(_("Unexpected end of notes during fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return last_note; + } + shift2 = next_next->u.note.pitch - next->u.note.pitch; + if (shift2 > 0) { + if (next_next == last_note) { + /* there are exactly three notes left in a porrectus shape, + * so we end fusion */ + add_intervening_texverbs(last_glyph, (*first_note)->next, + next); + add_intervening_texverbs(last_glyph, next->next, next_next); + result = close_fused_glyph(last_glyph, + G_PORRECTUS, first_note, + liquescentia, last_note); + add_intervening_texverbs(last_glyph, texverb_tail, + real_last_note); + return result; + } + /* found a porrectus-like flexus */ + add_intervening_texverbs(last_glyph, *first_note, next); + close_fused_glyph(last_glyph, + shift < 0? G_FLEXA : G_PODATUS, first_note, + liquescentia & ~TAIL_LIQUESCENTIA_MASK, next); + prev_shift = shift2; + processed = true; + } + } + + if (!processed) { + /* didn't find anything interesting, so fuse the single note */ + gabc_determination ignored; + gregorio_glyph_type next_glyph_type = + gregorio_add_note_to_a_glyph(G_UNDETERMINED, + (*first_note)->u.note.pitch, 0, (*first_note)->u.note.shape, + (*first_note)->u.note.liquescentia, *first_note, &ignored); + close_fused_glyph(last_glyph, next_glyph_type, first_note, + liquescentia & ~TAIL_LIQUESCENTIA_MASK, *first_note); + prev_shift = shift; + } + + if (first) { + first = false; + liquescentia = (liquescentia & TAIL_LIQUESCENTIA_MASK) | L_FUSED; + } + } +} + +static gregorio_note *close_glyph(gregorio_glyph **last_glyph, + gregorio_glyph_type glyph_type, gregorio_note **first_note, + gregorio_liquescentia liquescentia, gregorio_note *current_note) +{ + if (glyph_type == G_FUSED) { + return close_fusion_glyph(last_glyph, first_note, liquescentia, + current_note); + } else { + return close_normal_glyph(last_glyph, glyph_type, first_note, + liquescentia, current_note); + } +} + +/* a small function to automatically determine the pitch of a custo : it is + * the pitch of the next note, but we must take care of the clef changes, as + * custo are (normally and for now) only present before clef changes. */ +/* TODO: there may be a side effect with the flated keys... */ + +static char gabc_determine_custo_pitch(gregorio_note *current_note, + int current_key, const gregorio_score *const score) +{ + int pitch_difference = 0; + int newkey; + for (; current_note; current_note = current_note->next) { + switch (current_note->type) { + case GRE_CLEF: + newkey = gregorio_calculate_new_key(current_note->u.clef); + pitch_difference = newkey - current_key; + break; + + case GRE_NOTE: + pitch_difference = + (int) current_note->u.note.pitch - pitch_difference; + while (pitch_difference < LOWEST_PITCH) { + pitch_difference += 7; + } + while (pitch_difference > score->highest_pitch) { + pitch_difference -= 7; + } + assert(pitch_difference >= LOWEST_PITCH + && pitch_difference <= score->highest_pitch); + return (char) pitch_difference; + + default: + break; + } + } + return DUMMY_PITCH; +} + +/**************************** + * * Function called with a list of gregorio_notes as argument, this * list is determined from gabc notation by the function * gabc_det_notes_from_string. @@ -640,7 +828,7 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, /* this function updates current_key with the new values (with clef changes) */ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, - int *current_key) + int *current_key, const gregorio_score *const score) { /* the first note of the current glyph, to be able to close it well: * later we will cut the link (next_notes and previous_note) between @@ -655,8 +843,6 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, gregorio_glyph_type current_glyph_type = G_UNDETERMINED; gregorio_glyph_type next_glyph_type = G_UNDETERMINED; char last_pitch = USELESS_VALUE; - /* a variable for the signs of bars and to tell if a key is flatted or - * not */ gregorio_note *next_note = NULL; /* determination of end of glyphs, see comments on @@ -665,6 +851,8 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, /* a char representing the liquescentia of the current glyph */ gregorio_liquescentia liquescentia = L_NO_LIQUESCENTIA; + gregorio_liquescentia head_liquescentia; + bool autofuse = false, first_autofused_note = false; if (current_note == NULL) { return NULL; @@ -673,14 +861,20 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, gregorio_go_to_first_note(¤t_note); while (current_note) { + bool add = true; + next_note = current_note->next; if (current_note->type != GRE_NOTE) { gregorio_type type = current_note->type; char pitch = USELESS_VALUE; - bool flat = false; bool force = false; gregorio_sign sign = _NO_SIGN; + if (current_glyph_type == G_FUSED && type == GRE_TEXVERB_GLYPH) { + current_note = next_note; + continue; + } + if (current_glyph_type != G_UNDETERMINED) { close_glyph(&last_glyph, next_glyph_type, ¤t_glyph_first_note, liquescentia, @@ -690,33 +884,14 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, } switch (type) { - case GRE_C_KEY_CHANGE: + case GRE_CLEF: pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(C_KEY, pitch - '0'); - break; - - case GRE_F_KEY_CHANGE: - pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(F_KEY, pitch - '0'); - break; - - case GRE_C_KEY_CHANGE_FLATED: - pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(C_KEY, pitch - '0'); - type = GRE_C_KEY_CHANGE; - flat = true; - break; - - case GRE_F_KEY_CHANGE_FLATED: - pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(F_KEY, pitch - '0'); - type = GRE_F_KEY_CHANGE; - flat = true; + *current_key = gregorio_calculate_new_key(current_note->u.clef); break; case GRE_CUSTOS: pitch = gabc_determine_custo_pitch(current_note->next, - *current_key); + *current_key, score); break; case GRE_MANUAL_CUSTOS: @@ -741,10 +916,15 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, } break; - case GRE_FLAT: - case GRE_SHARP: - case GRE_NATURAL: - pitch = current_note->u.note.pitch; + case GRE_AUTOFUSE_START: + autofuse = true; + first_autofused_note = true; + add = false; + break; + + case GRE_AUTOFUSE_END: + autofuse = false; + add = false; break; default: @@ -752,12 +932,18 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, break; } - if (pitch == USELESS_VALUE) { - gregorio_add_unpitched_element_as_glyph(&last_glyph, type, - current_note->u.other, sign, current_note->texverb); - } else { - gregorio_add_pitched_element_as_glyph(&last_glyph, type, pitch, - flat, force, current_note->texverb); + if (add) { + if (pitch == USELESS_VALUE) { + gregorio_add_unpitched_element_as_glyph(&last_glyph, type, + &(current_note->u.other), sign, + current_note->texverb); + } else if (type == GRE_CLEF) { + gregorio_add_clef_as_glyph(&last_glyph, + current_note->u.clef, current_note->texverb); + } else { + gregorio_add_pitched_element_as_glyph(&last_glyph, type, + pitch, force, current_note->texverb); + } } current_glyph_first_note = current_note->next; current_note->texverb = NULL; @@ -766,31 +952,86 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, continue; } - /* - * first we do what must be done with liquescentia - */ - if (is_initio_debilis(current_note->u.note.liquescentia)) { - /* - * meaning that the note is an initio debilis, maybe more - */ + /* first we do what must be done with liquescentia */ + head_liquescentia = current_note->u.note.liquescentia + & (L_INITIO_DEBILIS | L_FUSED); + if (head_liquescentia) { + /* initio debilis or fused */ if (current_glyph_type != G_UNDETERMINED) { - /* - * if it is not the first glyph - */ + /* if it is not the first glyph */ close_glyph(&last_glyph, current_glyph_type, ¤t_glyph_first_note, liquescentia, current_note->previous); current_glyph_type = G_UNDETERMINED; } - liquescentia = L_INITIO_DEBILIS; + liquescentia = head_liquescentia; + } + + if (autofuse) { + if (current_glyph_first_note == current_note) { + if (first_autofused_note) { + first_autofused_note = false; + } else { + if (!(current_note->u.note.liquescentia & L_INITIO_DEBILIS)) { + current_note->u.note.liquescentia |= L_FUSED; + liquescentia |= L_FUSED; + } + } + } else { + /* only handle the multi-note case here; the single-note + * case will be added normally by the state machine */ + if (is_tail_liquescentia(current_note->u.note.liquescentia) + && current_glyph_type > G_PUNCTA_INCLINATA) { + /* once we hit a liquescent, that's the end of a string of + * fused notes */ + liquescentia |= current_note->u.note.liquescentia; + current_note = close_glyph(&last_glyph, G_FUSED, + ¤t_glyph_first_note, liquescentia, + current_note); + current_glyph_type = G_UNDETERMINED; + liquescentia = L_NO_LIQUESCENTIA; + add = false; + } else { + switch (current_note->u.note.shape) { + case S_PUNCTUM: + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_SCAPUS: + case S_QUILISMA: + case S_QUADRATUM: + case S_QUILISMA_QUADRATUM: + /* these are fusible */ + if (current_glyph_type <= G_PUNCTA_INCLINATA) { + /* if we had some puncta inclinata, then end them */ + close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, + liquescentia, current_note->previous); + if (!(current_note->u.note.liquescentia + & L_INITIO_DEBILIS)) { + current_note->u.note.liquescentia |= L_FUSED; + liquescentia |= L_FUSED; + } + } + next_glyph_type = current_glyph_type = G_FUSED; + add = false; + break; + + default: + /* not fusible; will be added normally by the state + * machine */ + break; + } + } + } } - next_glyph_type = - gregorio_add_note_to_a_glyph(current_glyph_type, - current_note->u.note.pitch, last_pitch, - current_note->u.note.shape, - current_note->u.note.liquescentia, - current_glyph_first_note, &end_of_glyph); + if (add) { + next_glyph_type = + gregorio_add_note_to_a_glyph(current_glyph_type, + current_note->u.note.pitch, last_pitch, + current_note->u.note.shape, + current_note->u.note.liquescentia, + current_glyph_first_note, &end_of_glyph); + } /* patch to have good shapes in the special cases of pes quadratum and * pes quilisma quadratum. */ @@ -808,186 +1049,190 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, break; } - /* see comments on gregorio_add_note_to_a_glyph for the meaning of - * end_of_glyph */ - switch (end_of_glyph) { - case DET_NO_END: - current_glyph_type = next_glyph_type; - /* - * we deal with liquescentia - */ - if (is_liquescentia(current_note->u.note.liquescentia)) { - /* special cases of oriscus auctus, treated like normal oriscus - * in some cases. */ - if (current_note->u.note.shape == S_ORISCUS_AUCTUS - && current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.pitch < - current_note->u.note.pitch) { - last_pitch = current_note->u.note.pitch; - current_note->u.note.shape = S_ORISCUS; - current_note->u.note.liquescentia = L_NO_LIQUESCENTIA; - current_note = next_note; - continue; - } - /* special cases of the punctum inclinatum deminutus and - * auctus */ - if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { - if (current_note->u.note.liquescentia == L_DEMINUTUS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_DEMINUTUS; + if (add) { + /* see comments on gregorio_add_note_to_a_glyph for the meaning of + * end_of_glyph */ + switch (end_of_glyph) { + case DET_NO_END: + current_glyph_type = next_glyph_type; + /* + * we deal with liquescentia + */ + if (is_tail_liquescentia(current_note->u.note.liquescentia)) { + /* special cases of oriscus descendens, treated like normal + * oriscus in some cases. */ + if (score->legacy_oriscus_orientation) { + if ((current_note->u.note.shape == S_ORISCUS_DESCENDENS + || current_note->u.note.shape + == S_ORISCUS_CAVUM_DESCENDENS) + && current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.pitch < + current_note->u.note.pitch) { + last_pitch = current_note->u.note.pitch; + current_note->u.note.shape = + current_note->u.note.shape + == S_ORISCUS_DESCENDENS? S_ORISCUS_ASCENDENS + : S_ORISCUS_CAVUM_ASCENDENS; + current_note->u.note.liquescentia = + L_NO_LIQUESCENTIA; + current_note = next_note; + continue; + } } - if (current_note->u.note.liquescentia == L_AUCTA - || current_note->u.note.liquescentia == - L_AUCTUS_DESCENDENS - || current_note->u.note.liquescentia == - L_AUCTUS_ASCENDENS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_AUCTUS; + /* special cases of the punctum inclinatum deminutus and + * auctus */ + if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { + if (current_note->u.note.liquescentia == L_DEMINUTUS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_DEMINUTUS; + } + if (current_note->u.note.liquescentia == + L_AUCTUS_DESCENDENS + || current_note->u.note.liquescentia == + L_AUCTUS_ASCENDENS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_AUCTUS; + } + + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + last_pitch = current_note->u.note.pitch; + current_note = next_note; + continue; + } } + if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { + switch (current_note->u.note.liquescentia + & TAIL_LIQUESCENTIA_MASK) { + case L_AUCTUS_DESCENDENS: + case L_AUCTUS_ASCENDENS: + current_note->u.note.shape = + S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; + break; + + default: + /* do nothing */ + break; + } - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - last_pitch = current_note->u.note.pitch; - current_note = next_note; - continue; + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + last_pitch = current_note->u.note.pitch; + current_note = next_note; + continue; + } } + liquescentia |= current_note->u.note.liquescentia; + /* once again, only works with the good values in the header + * file */ + current_note = close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, liquescentia, current_note); + current_glyph_type = G_UNDETERMINED; + liquescentia = L_NO_LIQUESCENTIA; } - if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { - switch (current_note->u.note.liquescentia) { - case L_AUCTA: - case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - current_note->u.note.shape = - S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; - break; - - default: - /* do nothing */ - break; + break; + case DET_END_OF_PREVIOUS: + if (current_note->previous) + { + /* we don't want to close previous glyph twice */ + close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, liquescentia, + current_note->previous); + } + current_glyph_type = next_glyph_type; + liquescentia = L_NO_LIQUESCENTIA; + last_pitch = USELESS_VALUE; + /* we deal with liquescentia */ + if (is_tail_liquescentia(current_note->u.note.liquescentia)) + /* not an initio debilis, because we considered it in the first + * part... */ + { + /* special cases of the punctum inclinatum deminutus and + * auctus */ + if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { + if (current_note->u.note.liquescentia == L_DEMINUTUS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_DEMINUTUS; + } + if (current_note->u.note.liquescentia == + L_AUCTUS_DESCENDENS + || current_note->u.note.liquescentia == + L_AUCTUS_ASCENDENS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_AUCTUS; + } + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + current_note = next_note; + continue; + } } + if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { + switch (current_note->u.note.liquescentia + & TAIL_LIQUESCENTIA_MASK) { + case L_AUCTUS_DESCENDENS: + case L_AUCTUS_ASCENDENS: + current_note->u.note.shape = + S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; + break; + + default: + /* do nothing */ + break; + } - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - last_pitch = current_note->u.note.pitch; - current_note = next_note; - continue; + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + current_note = next_note; + continue; + } } + current_note = close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, + current_note->u.note.liquescentia, current_note); + current_glyph_type = G_UNDETERMINED; } + break; + case DET_END_OF_CURRENT: liquescentia += current_note->u.note.liquescentia; - /* once again, only works with the good values in the header - * file */ - current_note = close_glyph(&last_glyph, current_glyph_type, + /* once again, only works with the good values in the header file */ + current_note = close_glyph(&last_glyph, next_glyph_type, ¤t_glyph_first_note, liquescentia, current_note); current_glyph_type = G_UNDETERMINED; liquescentia = L_NO_LIQUESCENTIA; - } - break; - case DET_END_OF_PREVIOUS: - if (current_note->previous) - { - /* we don't want to close previous glyph twice */ - close_glyph(&last_glyph, current_glyph_type, - ¤t_glyph_first_note, liquescentia, - current_note->previous); - } - current_glyph_type = next_glyph_type; - liquescentia = L_NO_LIQUESCENTIA; - last_pitch = USELESS_VALUE; - /* we deal with liquescentia */ - if (is_liquescentia(current_note->u.note.liquescentia)) - /* not an initio debilis, because we considered it in the first - * part... */ - { - /* special cases of the punctum inclinatum deminutus and - * auctus */ - if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { - if (current_note->u.note.liquescentia == L_DEMINUTUS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_DEMINUTUS; - } - if (current_note->u.note.liquescentia == L_AUCTA - || current_note->u.note.liquescentia == - L_AUCTUS_DESCENDENS - || current_note->u.note.liquescentia == - L_AUCTUS_ASCENDENS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_AUCTUS; - } - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - current_note = next_note; - continue; - } - } - if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { - switch (current_note->u.note.liquescentia) { - case L_AUCTA: - case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - current_note->u.note.shape = - S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; - break; - - default: - /* do nothing */ - break; - } - - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - current_note = next_note; - continue; - } + break; + case DET_END_OF_BOTH: + if (current_note->previous) + { + /* we don't want to close previous glyph twice */ + close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, liquescentia, + current_note->previous); } - current_note = close_glyph(&last_glyph, current_glyph_type, + current_glyph_type = G_UNDETERMINED; + liquescentia = L_NO_LIQUESCENTIA; + current_note = close_glyph(&last_glyph, next_glyph_type, ¤t_glyph_first_note, current_note->u.note.liquescentia, current_note); - current_glyph_type = G_UNDETERMINED; - } - break; - case DET_END_OF_CURRENT: - liquescentia += current_note->u.note.liquescentia; - /* once again, only works with the good values in the header file */ - current_note = close_glyph(&last_glyph, next_glyph_type, - ¤t_glyph_first_note, liquescentia, current_note); - current_glyph_type = G_UNDETERMINED; - liquescentia = L_NO_LIQUESCENTIA; - break; - default: /* case DET_END_OF_BOTH: */ - if (current_note->previous) - { - /* we don't want to close previous glyph twice */ - close_glyph(&last_glyph, current_glyph_type, - ¤t_glyph_first_note, liquescentia, - current_note->previous); + break; } - current_glyph_type = G_UNDETERMINED; - liquescentia = L_NO_LIQUESCENTIA; - current_note = close_glyph(&last_glyph, next_glyph_type, - ¤t_glyph_first_note, - current_note->u.note.liquescentia, current_note); - break; } if (!next_note && current_glyph_type != G_UNDETERMINED) { diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c index cf07911a96c..28602e9290d 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c @@ -403,1212 +403,1212 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, - 28, 26, 26, 27, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 29, 30, 26, 26, 26, 31, 26, 32, - - 26, 26, 26, 26, 33, 34, 35, 36, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 37, 38, - 39, 40, 41, 26, 26, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 26, 43, - 26, 26, 44, 26, 26, 26, 45, 46, 26, 26, - 47, 48, 26, 26, 26, 49, 50, 51, 51, 52, - 51, 51, 53, 51, 51, 51, 51, 51, 51, 51, - 26, 54, 26, 55, 56, 57, 26, 26, 58, 59, - 26, 26, 60, 61, 26, 62, 63, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26 - }, - - { - 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, - 28, 26, 26, 27, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 29, 30, 26, 26, 26, 31, 26, 32, - 26, 26, 26, 26, 33, 34, 35, 36, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 37, 38, - 39, 40, 41, 26, 26, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 26, 43, - - 26, 26, 44, 26, 26, 26, 45, 46, 26, 26, - 47, 48, 26, 26, 26, 49, 50, 51, 51, 52, - 51, 51, 53, 51, 51, 51, 51, 51, 51, 51, - 26, 54, 26, 55, 56, 57, 26, 26, 58, 59, - 26, 26, 60, 61, 26, 62, 63, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26 - }, - - { - 25, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64 - }, - - { - 25, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64 - - }, - - { - 25, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 65, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66 - }, - - { - 25, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 65, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66 - }, - - { - 25, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 65, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67 - }, - - { - 25, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 65, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67 - }, - - { - 25, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 65, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68 - - }, - - { - 25, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 65, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68 - }, - - { - 25, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 65, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69 - }, - - { - 25, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 65, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69 - }, - - { - 25, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 65, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70 - }, - - { - 25, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 65, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70 - - }, - - { - 25, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 72, 71, 71, 72, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71 - }, - - { - 25, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 72, 71, 71, 72, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71 - }, - - { - 25, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 65, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73 - }, - - { - 25, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 65, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73 - }, - - { - 25, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 65, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74 - - }, - - { - 25, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 65, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74 - }, - - { - 25, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 65, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75 - }, - - { - 25, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 65, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75 - }, - - { - 25, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 65, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76 - }, - - { - 25, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 65, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76 - - }, - - { - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25 - }, - - { - 25, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26 - }, - - { - 25, -27, -27, -27, -27, -27, -27, -27, -27, 77, - 77, -27, -27, 77, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27 - }, - - { - 25, -28, -28, -28, -28, -28, -28, -28, -28, 77, - 77, -28, -28, 77, -28, -28, -28, -28, -28, -28, - - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28 - }, - - { - 25, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29 - - }, - - { - 25, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 79, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 80, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78 - }, - - { - 25, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31 - }, - - { - 25, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, 81, 81, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32 - }, - - { - 25, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, 82, - 83, 84, 85, 86, 87, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33 - }, - - { - 25, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - - -34, -34, -34, -34, -34, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, 88, 88, 88, + 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, + 42, 40, 40, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 43, 44, 40, 45, 40, 46, 40, 47, + + 40, 40, 40, 40, 48, 49, 50, 51, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 52, 53, + 54, 55, 56, 40, 57, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, + 58, 40, 60, 40, 40, 40, 61, 62, 40, 40, + 63, 64, 40, 65, 40, 66, 67, 68, 68, 69, + 68, 68, 69, 68, 68, 68, 68, 68, 68, 68, + 68, 70, 68, 71, 72, 73, 40, 40, 74, 75, + 76, 77, 78, 79, 40, 80, 81, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40 + }, + + { + 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, + 42, 40, 40, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 43, 44, 40, 45, 40, 46, 40, 47, + 40, 40, 40, 40, 48, 49, 50, 51, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 52, 53, + 54, 55, 56, 40, 57, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, + + 58, 40, 60, 40, 40, 40, 61, 62, 40, 40, + 63, 64, 40, 65, 40, 66, 67, 68, 68, 69, + 68, 68, 69, 68, 68, 68, 68, 68, 68, 68, + 68, 70, 68, 71, 72, 73, 40, 40, 74, 75, + 76, 77, 78, 79, 40, 80, 81, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40 + }, + + { + 39, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82 + }, + + { + 39, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82 + + }, + + { + 39, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 83, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84 + }, + + { + 39, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 83, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84 + }, + + { + 39, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 83, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85 + }, + + { + 39, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 83, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85 + }, + + { + 39, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 83, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86 + + }, + + { + 39, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 83, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86 + }, + + { + 39, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 83, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87 + }, + + { + 39, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 83, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87 + }, + + { + 39, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34 - - }, - - { - 25, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, 89, 89, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35 - }, - - { - 25, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - - -36, -36, -36, -36, -36, -36, -36, 90, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36 - }, - - { - 25, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, 91, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37 - }, - - { - 25, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, 92, - 93, 94, 95, 96, 97, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38 - }, - - { - 25, -39, -39, -39, -39, -39, -39, -39, -39, -39, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 83, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88 + }, + + { + 39, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 83, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88 + + }, + + { + 39, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 90, 89, 89, 90, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89 + }, + + { + 39, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 90, 89, 89, 90, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89 + }, + + { + 39, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 83, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91 + }, + + { + 39, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 83, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91 + }, + + { + 39, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 83, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92 + + }, + + { + 39, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 83, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92 + }, + + { + 39, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 83, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93 + }, + + { + 39, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 83, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93 + }, + + { + 39, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 83, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94 + }, + + { + 39, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 83, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94 + + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 96, 97, 95, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 96, 97, 95, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 99, 100, 95, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 99, 100, 95, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 95, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 95, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102 + + }, + + { + 39, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 95, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 95, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 103, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 104, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 103, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 104, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 95, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 95, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105 + }, + + { + 39, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 95, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 95, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105 + + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 106, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 107, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 106, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 107, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, 98, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, @@ -1616,7 +1616,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - 99, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, @@ -1636,7 +1636,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -40, -40, -40, -40, -40, -40, -40, -40, -40, + 39, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, @@ -1667,8 +1667,8 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + 39, -41, -41, -41, -41, -41, -41, -41, -41, 108, + 108, -41, -41, 108, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, @@ -1699,20 +1699,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -42, -42, -42, -42, -42, -42, -42, -42, -42, + 39, -42, -42, -42, -42, -42, -42, -42, -42, 108, + 108, -42, -42, 108, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, 100, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, -42, 101, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, 102, -42, -42, 103, -42, - 104, 105, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, @@ -1730,7 +1730,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -43, -43, -43, -43, -43, -43, -43, -43, -43, + 39, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, @@ -1762,39 +1762,39 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + 39, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 110, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 111, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44 + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109 }, { - 25, -45, -45, -45, -45, -45, -45, -45, -45, -45, + 39, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, @@ -1825,7 +1825,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -46, -46, -46, -46, -46, -46, -46, -46, -46, + 39, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, @@ -1857,11 +1857,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -47, -47, -47, -47, -47, -47, -47, -47, -47, - -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + 39, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, 112, 112, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, @@ -1888,19 +1888,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -48, -48, -48, -48, -48, -48, -48, -48, -48, + 39, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, 113, + 113, 113, 113, 113, 113, 113, 113, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, 106, -48, 107, - -48, 108, -48, 109, -48, -48, -48, -48, -48, -48, - 110, 111, -48, -48, -48, -48, -48, 112, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, @@ -1920,19 +1920,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, 113, 113, - 113, 113, 113, 113, -49, -49, -49, -49, -49, -49, - - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + 39, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + + -49, -49, -49, -49, -49, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, -49, + 114, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, -49, 114, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, @@ -1952,11 +1952,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + 39, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, 115, 115, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, @@ -1983,20 +1983,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -51, -51, -51, -51, -51, -51, -51, -51, -51, + 39, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, 100, -51, -51, -51, -51, - -51, -51, -51, 114, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, 116, 117, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, -51, 101, -51, -51, -51, + -51, 118, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, 102, -51, -51, 103, -51, - 104, 105, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, @@ -2015,20 +2015,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -52, -52, -52, -52, -52, -52, -52, -52, -52, + 39, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, 100, -52, -52, -52, -52, - -52, -52, -52, 114, -52, -52, -52, -52, -52, 115, - 115, 115, 115, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, 119, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, 101, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52, 116, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, 102, -52, -52, 103, -52, - 104, 105, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, @@ -2046,21 +2046,21 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -53, -53, -53, -53, -53, -53, -53, -53, -53, + 39, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, 100, -53, -53, -53, -53, - -53, -53, -53, 114, -53, -53, -53, -53, -53, 115, - 115, 115, 115, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, 113, + 113, 113, 113, 113, 113, 113, 113, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, 101, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53, 116, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, 102, -53, -53, 103, -53, - 104, 105, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, @@ -2078,11 +2078,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + 39, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, 120, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, @@ -2090,7 +2090,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + 121, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, @@ -2110,7 +2110,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -55, -55, -55, -55, -55, -55, -55, -55, -55, + 39, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, @@ -2141,13 +2141,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -56, -56, -56, -56, -56, -56, -56, -56, -56, + 39, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -56, -56, -56, -56, -56, -56, -56, 117, 118, - 119, 120, 121, 122, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, @@ -2173,19 +2173,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + 39, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + 122, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, 123, -57, -57, -57, -57, -57, 122, 122, 124, + 122, 122, 124, 122, 122, 122, 122, 122, 122, 122, + 122, -57, 122, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, @@ -2204,7 +2204,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -58, -58, -58, -58, -58, -58, -58, -58, -58, + 39, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, @@ -2213,10 +2213,10 @@ static yyconst flex_int32_t yy_nxt[][256] = -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, 125, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, 126, -58, -58, 127, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, @@ -2236,7 +2236,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -59, -59, -59, -59, -59, -59, -59, -59, -59, + 39, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, @@ -2268,11 +2268,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -60, -60, -60, -60, -60, -60, -60, -60, -60, + 39, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, -60, 123, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, @@ -2299,7 +2299,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -61, -61, -61, -61, -61, -61, -61, -61, -61, + 39, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, @@ -2331,7 +2331,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -62, -62, -62, -62, -62, -62, -62, -62, -62, + 39, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, @@ -2362,12 +2362,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -63, -63, -63, -63, -63, -63, -63, -63, -63, + 39, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, 128, -63, 129, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, @@ -2394,39 +2394,39 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 39, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, -64, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, 130, -64, 131, + -64, 132, -64, 133, 134, -64, -64, -64, 135, -64, + 136, 137, -64, -64, -64, -64, -64, 138, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124 + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64 }, { - 25, -65, -65, -65, -65, -65, -65, -65, -65, -65, + 39, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, @@ -2457,202 +2457,202 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, -66, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125 - }, - - { - 25, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, -67, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126 - }, - - { - 25, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, -68, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127 - }, - - { - 25, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, -69, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128 - - }, - - { - 25, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, -70, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129 - }, - - { - 25, 130, 130, 130, 130, 130, 130, 130, 130, 130, - -71, 130, 130, -71, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130 - }, - - { - 25, -72, -72, -72, -72, -72, -72, -72, -72, -72, - 131, -72, -72, 131, -72, -72, -72, -72, -72, -72, - -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 39, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, 139, 139, + 139, 139, 139, 139, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66 + }, + + { + 39, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67 + }, + + { + 39, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, 140, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, 125, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, 126, -68, -68, 127, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68 + }, + + { + 39, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, 140, -69, -69, -69, -69, -69, 141, + 141, 141, 141, 141, -69, -69, -69, -69, -69, -69, + + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, 125, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, 142, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, 126, -69, -69, 127, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69 + + }, + + { + 39, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70 + }, + + { + 39, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71 + }, + + { + 39, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, 143, 144, + 145, 146, 147, 148, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, @@ -2678,135 +2678,135 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, -73, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132 - }, - - { - 25, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, -74, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133 - - }, - - { - 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, -75, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134 - }, - - { - 25, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, -76, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135 - }, - - { - 25, -77, -77, -77, -77, -77, -77, -77, -77, 77, - 77, -77, -77, 77, -77, -77, -77, -77, -77, -77, + 39, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73 + }, + + { + 39, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74 + + }, + + { + 39, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75 + }, + + { + 39, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76 + }, + + { + 39, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, @@ -2836,12 +2836,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -78, -78, -78, -78, -78, -78, -78, -78, -78, + 39, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, 149, -78, 150, -78, -78, 151, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, @@ -2868,7 +2868,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -79, -79, -79, -79, -79, -79, -79, -79, -79, + 39, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, @@ -2900,11 +2900,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -80, -80, -80, -80, -80, -80, -80, -80, -80, + 39, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, 136, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, @@ -2931,7 +2931,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -81, -81, -81, -81, -81, -81, -81, -81, -81, + 39, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, @@ -2963,38 +2963,38 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 39, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, -82, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82 + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152 }, { - 25, -83, -83, -83, -83, -83, -83, -83, -83, -83, + 39, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, @@ -3026,198 +3026,198 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84 - - }, - - { - 25, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85 - }, - - { - 25, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86 - }, - - { - 25, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87 - }, - - { - 25, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88 - }, - - { - 25, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89 - - }, - - { - 25, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + 39, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, -84, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153 + + }, + + { + 39, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, -85, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154 + }, + + { + 39, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, -86, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155 + }, + + { + 39, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, -87, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156 + }, + + { + 39, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, -88, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157 + }, + + { + 39, 158, 158, 158, 158, 158, 158, 158, 158, 158, + -89, 158, 158, -89, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158 + + }, + + { + 39, -90, -90, -90, -90, -90, -90, -90, -90, -90, + 159, -90, -90, 159, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, @@ -3247,134 +3247,134 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91 - }, - - { - 25, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92 - }, - - { - 25, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93 - }, - - { - 25, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94 - - }, - - { - 25, -95, -95, -95, -95, -95, -95, -95, -95, -95, + 39, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, -91, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160 + }, + + { + 39, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, -92, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161 + }, + + { + 39, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, -93, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162 + }, + + { + 39, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, -94, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163 + + }, + + { + 39, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, @@ -3405,13 +3405,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -96, -96, -96, -96, -96, -96, -96, -96, -96, + 39, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, - -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, - -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, 164, -96, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, @@ -3437,12 +3437,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -97, -97, -97, -97, -97, -97, -97, -97, -97, - -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, - -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, + 39, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, + -97, -97, -97, -97, -97, -97, -97, -97, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, @@ -3468,19 +3468,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -98, -98, -98, -98, -98, -98, -98, -98, -98, + 39, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, 167, -98, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, 168, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, - -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, - -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, - 137, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, @@ -3500,18 +3500,18 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + 39, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, 169, -99, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, 138, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, @@ -3532,12 +3532,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + 39, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, @@ -3563,17 +3563,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -101, -101, -101, -101, -101, -101, -101, -101, -101, + 39, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, 172, -101, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, - -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, - -101, -101, -101, -101, -101, -101, 139, -101, -101, -101, - -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, 173, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, @@ -3595,197 +3595,197 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, 140, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102 - }, - - { - 25, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, 141, -103, - - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103 - }, - - { - 25, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104 - - }, - - { - 25, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105 - }, - - { - 25, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, 142, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106 - }, - - { - 25, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - 143, -107, -107, -107, -107, 144, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107 - }, - - { - 25, -108, -108, -108, -108, -108, -108, -108, -108, -108, - -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + 39, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, -102, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, -102, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174 + }, + + { + 39, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, -103, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175 + }, + + { + 39, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, -104, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176 + + }, + + { + 39, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, -105, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, -105, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177 + }, + + { + 39, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, -106, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178 + }, + + { + 39, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, -107, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179 + }, + + { + 39, -108, -108, -108, -108, -108, -108, -108, -108, 108, + 108, -108, -108, 108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, @@ -3795,8 +3795,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, - -108, -108, -108, -108, -108, -108, -108, -108, -108, 145, - -108, -108, -108, -108, -108, -108, -108, -108, 146, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, @@ -3816,7 +3816,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -109, -109, -109, -109, -109, -109, -109, -109, -109, + 39, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, @@ -3827,8 +3827,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, - -109, -109, -109, -109, -109, -109, -109, -109, -109, 147, - -109, -109, -109, -109, -109, -109, -109, -109, 148, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, @@ -3848,7 +3848,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -110, -110, -110, -110, -110, -110, -110, -110, -110, + 39, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, @@ -3859,8 +3859,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, -110, -110, -110, -110, -110, -110, 149, - -110, -110, -110, -110, -110, -110, -110, -110, 150, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, @@ -3879,17 +3879,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -111, -111, -111, -111, -111, -111, -111, -111, -111, + 39, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, 180, 117, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -111, -111, -111, -111, -111, -111, 151, 152, + -111, 181, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, @@ -3911,7 +3911,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -112, -112, -112, -112, -112, -112, -112, -112, -112, + 39, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, @@ -3921,7 +3921,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, - -112, -112, -112, -112, -112, -112, -112, -112, 153, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, @@ -3942,13 +3942,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -113, -113, -113, -113, -113, -113, -113, -113, -113, + 39, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, - -113, -113, -113, -113, -113, -113, -113, -113, 113, 113, - 113, 113, 113, 113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, @@ -3974,7 +3974,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -114, -114, -114, -114, -114, -114, -114, -114, -114, + 39, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, @@ -4006,7 +4006,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -115, -115, -115, -115, -115, -115, -115, -115, -115, + 39, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, @@ -4037,18 +4037,18 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -116, -116, -116, -116, -116, -116, -116, -116, -116, + 39, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, 154, - 154, 154, 154, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, 182, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, @@ -4069,7 +4069,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -117, -117, -117, -117, -117, -117, -117, -117, -117, + 39, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, @@ -4100,7 +4100,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -118, -118, -118, -118, -118, -118, -118, -118, -118, + 39, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, @@ -4132,7 +4132,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -119, -119, -119, -119, -119, -119, -119, -119, -119, + 39, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, @@ -4164,7 +4164,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -120, -120, -120, -120, -120, -120, -120, -120, -120, + 39, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, @@ -4176,7 +4176,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, - -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + 183, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, @@ -4195,7 +4195,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -121, -121, -121, -121, -121, -121, -121, -121, -121, + 39, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, @@ -4206,7 +4206,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, - -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, 184, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, @@ -4227,7 +4227,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -122, -122, -122, -122, -122, -122, -122, -122, -122, + 39, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, @@ -4258,7 +4258,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -123, -123, -123, -123, -123, -123, -123, -123, -123, + 39, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, @@ -4290,233 +4290,232 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, -124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124 - - }, - - { - 25, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, -125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125 - }, - - { - 25, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, -126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126 - }, - - { - 25, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, -127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127 - }, - - { - 25, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, -128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128 - }, - - { - 25, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, -129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129 - - }, - - { - 25, 130, 130, 130, 130, 130, 130, 130, 130, 130, - -130, 130, 130, -130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130 - }, - - { - 25, -131, -131, -131, -131, -131, -131, -131, -131, -131, - 131, -131, -131, 131, -131, -131, -131, -131, -131, -131, + 39, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, 185, + 185, 185, 185, 185, -124, -124, -124, -124, -124, -124, + + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, 186, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124 + + }, + + { + 39, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, 187, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125 + }, + + { + 39, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, 188, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126 + }, + + { + 39, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, 189, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127 + }, + + { + 39, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128 + }, + + { + 39, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129 + + }, + + { + 39, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + + -130, -130, -130, -130, -130, -130, -130, -130, 190, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130 + }, + + { + 39, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, - -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, @@ -4524,6 +4523,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + 191, -131, -131, -131, -131, 192, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, @@ -4543,133 +4543,133 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, -132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132 - }, - - { - 25, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, -133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133 - }, - - { - 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, -134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134 - - }, - - { - 25, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, -135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135 - }, - - { - 25, -136, -136, -136, -136, -136, -136, -136, -136, -136, + 39, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, 193, + -132, -132, -132, -132, -132, -132, -132, -132, 194, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132 + }, + + { + 39, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, 195, + -133, -133, -133, -133, -133, -133, -133, -133, 196, -133, + + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133 + }, + + { + 39, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, 197, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134 + + }, + + { + 39, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + + -135, -135, -135, -135, -135, -135, -135, -135, 198, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135 + }, + + { + 39, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, @@ -4680,8 +4680,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, - -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, - -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, 199, + -136, -136, -136, -136, -136, -136, -136, -136, 200, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, @@ -4701,7 +4701,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -137, -137, -137, -137, -137, -137, -137, -137, -137, + 39, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, @@ -4711,9 +4711,9 @@ static yyconst flex_int32_t yy_nxt[][256] = -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, - -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, - -137, -137, -137, -137, -137, -137, -137, -137, 155, -137, - -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, + -137, -137, -137, -137, -137, -137, -137, -137, 201, 202, + -137, -137, -137, -137, -137, -137, -137, -137, 203, -137, + -137, -137, -137, -137, -137, 204, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, @@ -4732,7 +4732,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -138, -138, -138, -138, -138, -138, -138, -138, -138, + 39, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, @@ -4742,9 +4742,9 @@ static yyconst flex_int32_t yy_nxt[][256] = -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, - -138, -138, -138, -138, -138, -138, -138, -138, 156, -138, - -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, - -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, 205, -138, + -138, -138, -138, -138, -138, -138, -138, -138, 206, -138, + -138, -138, -138, -138, -138, 207, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, @@ -4764,16 +4764,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, + 39, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, + -139, -139, -139, -139, -139, -139, -139, -139, 139, 139, + 139, 139, 139, 139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, -139, -139, -139, 157, -139, -139, -139, + -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, @@ -4796,19 +4796,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -140, -140, -140, -140, -140, -140, -140, -140, -140, + 39, -140, -140, -140, -140, -140, -140, -140, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - 158, -140, 158, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, 159, -140, -140, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, @@ -4827,7 +4827,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -141, -141, -141, -141, -141, -141, -141, -141, -141, + 39, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, @@ -4839,7 +4839,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, 160, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, @@ -4859,19 +4859,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, + 39, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, + -142, -142, -142, -142, -142, -142, -142, -142, -142, 208, + 208, 208, 208, 208, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, -142, -142, -142, 161, -142, -142, -142, + -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, @@ -4890,13 +4890,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -143, -143, -143, -143, -143, -143, -143, -143, -143, + 39, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, 162, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, @@ -4922,12 +4922,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -144, -144, -144, -144, -144, -144, -144, -144, -144, + 39, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, 163, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, @@ -4954,12 +4954,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -145, -145, -145, -145, -145, -145, -145, -145, -145, + 39, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, - -145, -145, -145, -145, -145, -145, -145, -145, -145, 164, - 164, 164, 164, 164, 164, 164, 164, 164, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, @@ -4985,13 +4985,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -146, -146, -146, -146, -146, -146, -146, -146, -146, + 39, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, -146, -146, -146, -146, -146, 165, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, @@ -5017,12 +5017,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -147, -147, -147, -147, -147, -147, -147, -147, -147, + 39, -147, -147, -147, -147, -147, -147, -147, -147, -147, + -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, + -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, - -147, -147, -147, -147, -147, -147, -147, -147, -147, 166, - 166, 166, 166, 166, 166, 166, 166, 166, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, @@ -5048,13 +5048,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -148, -148, -148, -148, -148, -148, -148, -148, -148, + 39, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, - -148, -148, -148, -148, -148, -148, -148, -148, 167, -148, + -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, @@ -5080,12 +5080,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -149, -149, -149, -149, -149, -149, -149, -149, -149, + 39, -149, -149, -149, -149, -149, -149, -149, -149, -149, + -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, + -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, -149, -149, -149, -149, -149, -149, 168, - 168, 168, 168, 168, 168, 168, 168, 168, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, @@ -5112,12 +5112,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -150, -150, -150, -150, -150, -150, -150, -150, -150, + 39, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, - -150, -150, -150, -150, -150, -150, -150, -150, 169, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, @@ -5143,13 +5143,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -151, -151, -151, -151, -151, -151, -151, -151, -151, + 39, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, -151, -151, -151, -151, -151, 170, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, @@ -5175,235 +5175,235 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, 171, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152 - }, - - { - 25, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, 172, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153 - }, - - { - 25, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154 - - }, - - { - 25, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, 173, -155, - - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155 - }, - - { - 25, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, 174, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156 - }, - - { - 25, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157 - }, - - { - 25, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158 - }, - - { - 25, -159, -159, -159, -159, -159, -159, -159, -159, -159, - -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + 39, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, -152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152 + }, + + { + 39, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, -153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153 + }, + + { + 39, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, -154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154 + + }, + + { + 39, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, -155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155 + }, + + { + 39, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, -156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156 + }, + + { + 39, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, -157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157 + }, + + { + 39, 158, 158, 158, 158, 158, 158, 158, 158, 158, + -158, 158, 158, -158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158 + }, + + { + 39, -159, -159, -159, -159, -159, -159, -159, -159, -159, + 159, -159, -159, 159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, - 175, -159, 175, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, @@ -5428,143 +5428,143 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160 - }, - - { - 25, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, 176, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, 177, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161 - }, - - { - 25, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162 - }, - - { - 25, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163 - }, - - { - 25, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + 39, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, -160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160 + }, + + { + 39, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, -161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161 + }, + + { + 39, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, -162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162 + }, + + { + 39, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, -163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163 + }, + + { + 39, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, 178, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, @@ -5586,16 +5586,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + 39, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, 167, -165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, 168, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, @@ -5617,17 +5617,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -166, -166, -166, -166, -166, -166, -166, -166, -166, + 39, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, 179, -166, -166, -166, -166, -166, -166, + -166, -166, -166, 168, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, @@ -5649,17 +5649,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + 39, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, 168, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, @@ -5680,7 +5680,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -168, -168, -168, -168, -168, -168, -168, -168, -168, + 39, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, @@ -5690,7 +5690,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, - -168, -168, -168, 180, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, @@ -5712,12 +5712,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + 39, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, @@ -5744,16 +5744,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, + 39, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, -170, -170, -170, -170, -170, 181, 181, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, + -170, -170, -170, -170, -170, -170, 172, -170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, + -170, -170, -170, 173, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, @@ -5775,17 +5775,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -171, -171, -171, -171, -171, -171, -171, -171, -171, + 39, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, -171, -171, -171, -171, -171, 182, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, -171, -171, -171, -171, 183, -171, -171, + -171, -171, -171, 173, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, @@ -5807,17 +5807,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, + 39, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, 184, 184, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, + -172, -172, -172, -172, -172, -172, -172, -172, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, + -172, -172, -172, 173, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, @@ -5838,7 +5838,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -173, -173, -173, -173, -173, -173, -173, -173, -173, + 39, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, @@ -5848,7 +5848,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, - -173, -173, -173, -173, -173, -173, -173, 185, -173, -173, + -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, @@ -5870,198 +5870,197 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - - -174, -174, 186, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174 - - }, - - { - 25, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175 - }, - - { - 25, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176 - }, - - { - 25, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, 187, - 187, 187, 187, 187, 187, 187, 187, 187, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177 - }, - - { - 25, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178 - }, - - { - 25, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179 - - }, - - { - 25, -180, -180, -180, -180, -180, -180, -180, -180, -180, - -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + 39, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, -174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, -174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174 + + }, + + { + 39, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, -175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175 + }, + + { + 39, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, -176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176 + }, + + { + 39, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, -177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, -177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177 + }, + + { + 39, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, -178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178 + }, + + { + 39, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, -179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179 + + }, + + { + 39, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, @@ -6070,6 +6069,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, 211, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, @@ -6091,20 +6091,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -181, -181, -181, -181, -181, -181, -181, -181, -181, + 39, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, -181, -181, -181, -181, -181, -181, 188, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, 189, -181, 190, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, @@ -6123,11 +6123,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -182, -182, -182, -182, -182, -182, -182, -182, -182, + 39, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, - -182, -182, -182, -182, -182, -182, -182, -182, 191, 191, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, @@ -6154,18 +6154,18 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -183, -183, -183, -183, -183, -183, -183, -183, -183, + 39, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, - -183, -183, -183, -183, -183, -183, -183, -183, 192, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, + -183, -183, -183, -183, -183, -183, -183, -183, 212, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, @@ -6186,20 +6186,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -184, -184, -184, -184, -184, -184, -184, -184, -184, + 39, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, - -184, -184, -184, -184, -184, -184, -184, -184, -184, 193, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, 213, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, - -184, -184, -184, 194, -184, 195, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, @@ -6218,13 +6218,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -185, -185, -185, -185, -185, -185, -185, -185, -185, + 39, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, - -185, -185, 196, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, @@ -6249,13 +6249,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -186, -186, -186, -186, -186, -186, -186, -186, -186, + 39, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, 214, + 214, 214, 214, 214, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, @@ -6281,7 +6281,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -187, -187, -187, -187, -187, -187, -187, -187, -187, + 39, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, @@ -6290,8 +6290,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, + -187, -187, -187, -187, -187, -187, 215, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, - -187, -187, -187, 197, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, @@ -6312,19 +6312,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -188, -188, -188, -188, -188, -188, -188, -188, -188, + 39, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, + 216, -188, 216, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, + -188, -188, -188, -188, -188, 217, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, @@ -6344,7 +6344,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -189, -189, -189, -189, -189, -189, -189, -189, -189, + 39, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, @@ -6354,9 +6354,9 @@ static yyconst flex_int32_t yy_nxt[][256] = -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 198, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 218, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, @@ -6376,7 +6376,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -190, -190, -190, -190, -190, -190, -190, -190, -190, + 39, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, @@ -6385,10 +6385,10 @@ static yyconst flex_int32_t yy_nxt[][256] = -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, 199, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, 219, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, @@ -6407,20 +6407,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -191, -191, -191, -191, -191, -191, -191, -191, -191, + 39, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, - -191, -191, -191, -191, -191, -191, -191, -191, -191, 200, + -191, -191, -191, -191, -191, -191, -191, -191, 220, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, - -191, -191, -191, 201, -191, 202, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, @@ -6439,12 +6439,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -192, -192, -192, -192, -192, -192, -192, -192, -192, + 39, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, -192, -192, 203, 203, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, + -192, -192, -192, -192, -192, -192, -192, -192, 221, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, @@ -6470,13 +6470,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -193, -193, -193, -193, -193, -193, -193, -193, -193, + 39, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, + -193, -193, -193, -193, -193, -193, -193, -193, -193, 222, + 222, 222, 222, 222, 222, 222, 222, 222, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, @@ -6502,17 +6502,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + 39, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, 223, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, -194, -194, 204, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, @@ -6534,16 +6534,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -195, -195, -195, -195, -195, -195, -195, -195, -195, + 39, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, 224, + 224, 224, 224, 224, 224, 224, 224, 224, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, - -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, - -195, -195, -195, 205, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, @@ -6565,13 +6565,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -196, -196, -196, -196, -196, -196, -196, -196, -196, + 39, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, - -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, + -196, -196, -196, -196, -196, -196, -196, -196, 225, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, @@ -6597,12 +6597,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -197, -197, -197, -197, -197, -197, -197, -197, -197, - -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, + 39, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, + -197, -197, -197, -197, -197, -197, -197, -197, 226, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, @@ -6628,13 +6628,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -198, -198, -198, -198, -198, -198, -198, -198, -198, + 39, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, - -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, 227, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, @@ -6660,12 +6660,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -199, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, + 39, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, + -199, -199, -199, -199, -199, -199, -199, -199, -199, 228, + 228, 228, 228, 228, 228, 228, 228, 228, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, @@ -6692,12 +6692,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, + 39, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, + -200, -200, -200, -200, -200, -200, -200, -200, 229, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, @@ -6723,17 +6723,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -201, -201, -201, -201, -201, -201, -201, -201, -201, + 39, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, + -201, -201, -201, -201, -201, -201, -201, -201, 230, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, - -201, -201, -201, 206, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, @@ -6755,7 +6755,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -202, -202, -202, -202, -202, -202, -202, -202, -202, + 39, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, @@ -6765,7 +6765,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, - -202, -202, -202, 207, -202, -202, -202, -202, -202, -202, + -202, -202, -202, -202, -202, -202, -202, -202, 231, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, @@ -6786,21 +6786,21 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -203, -203, -203, -203, -203, -203, -203, -203, -203, + 39, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -203, -203, -203, -203, -203, -203, -203, -203, 208, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, 232, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -203, -203, 209, -203, 210, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, @@ -6818,7 +6818,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -204, -204, -204, -204, -204, -204, -204, -204, -204, + 39, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, @@ -6829,7 +6829,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -204, -204, -204, -204, -204, 233, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, @@ -6850,12 +6850,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + 39, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, -205, -205, -205, -205, -205, -205, -205, 234, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, @@ -6881,7 +6881,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -206, -206, -206, -206, -206, -206, -206, -206, -206, + 39, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, @@ -6892,7 +6892,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, - -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, 235, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, @@ -6913,7 +6913,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -207, -207, -207, -207, -207, -207, -207, -207, -207, + 39, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, @@ -6924,7 +6924,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, - -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, + -207, -207, -207, -207, -207, -207, -207, -207, 236, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, @@ -6944,7 +6944,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -208, -208, -208, -208, -208, -208, -208, -208, -208, + 39, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, @@ -6976,17 +6976,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 39, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, 211, -209, -209, -209, -209, -209, -209, + -209, -209, -209, 168, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, @@ -7008,16 +7008,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + 39, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + -210, -210, -210, -210, -210, -210, -210, -210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, 212, -210, -210, -210, -210, -210, -210, + -210, -210, -210, 173, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, @@ -7039,7 +7039,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -211, -211, -211, -211, -211, -211, -211, -211, -211, + 39, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, @@ -7071,7 +7071,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -212, -212, -212, -212, -212, -212, -212, -212, -212, + 39, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, @@ -7081,7 +7081,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, - -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, 237, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, @@ -7101,6 +7101,3293 @@ static yyconst flex_int32_t yy_nxt[][256] = -212, -212, -212, -212, -212, -212 }, + { + 39, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, 238, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213 + }, + + { + 39, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214 + + }, + + { + 39, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215 + }, + + { + 39, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216 + }, + + { + 39, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + 239, -217, 239, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217 + }, + + { + 39, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218 + }, + + { + 39, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, 240, -219, + + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, 241, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219 + + }, + + { + 39, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220 + }, + + { + 39, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221 + }, + + { + 39, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, 242, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222 + }, + + { + 39, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223 + }, + + { + 39, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, 243, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224 + + }, + + { + 39, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225 + }, + + { + 39, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + + -226, -226, -226, -226, -226, -226, -226, -226, 244, 245, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226 + }, + + { + 39, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, 246, 247, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227 + }, + + { + 39, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, 248, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228 + }, + + { + 39, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229 + + }, + + { + 39, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, 249, 249, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230 + }, + + { + 39, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, 250, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, 251, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231 + }, + + { + 39, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, 252, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232 + }, + + { + 39, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, 253, -233, -233, + + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233 + }, + + { + 39, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, 254, 254, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234 + + }, + + { + 39, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, 255, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235 + }, + + { + 39, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, 256, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236 + }, + + { + 39, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, 257, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237 + }, + + { + 39, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, 258, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238 + }, + + { + 39, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239 + + }, + + { + 39, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240 + }, + + { + 39, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + + -241, -241, -241, -241, -241, -241, -241, -241, -241, 259, + 259, 259, 259, 259, 259, 259, 259, 259, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241 + }, + + { + 39, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242 + }, + + { + 39, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243 + }, + + { + 39, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, 260, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244 + + }, + + { + 39, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, 261, -245, -245, -245, -245, -245, -245, + + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245 + }, + + { + 39, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, 262, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246 + }, + + { + 39, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, 263, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247 + }, + + { + 39, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248 + }, + + { + 39, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, 264, + + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, 265, -249, 266, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249 + + }, + + { + 39, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, 267, 267, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250 + }, + + { + 39, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, 268, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251 + }, + + { + 39, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, 269, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252 + }, + + { + 39, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, 270, -253, -253, -253, -253, -253, + + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253 + }, + + { + 39, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, 271, + + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, 272, -254, 273, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254 + + }, + + { + 39, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, 274, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255 + }, + + { + 39, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, 275, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256 + }, + + { + 39, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, 276, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257 + }, + + { + 39, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258 + }, + + { + 39, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, 277, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259 + + }, + + { + 39, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260 + }, + + { + 39, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261 + }, + + { + 39, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262 + }, + + { + 39, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263 + }, + + { + 39, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264 + + }, + + { + 39, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, 278, -265, -265, -265, -265, -265, -265, + + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265 + }, + + { + 39, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, 279, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266 + }, + + { + 39, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, 280, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, 281, -267, 282, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267 + }, + + { + 39, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, 283, 283, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268 + }, + + { + 39, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, 284, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269 + + }, + + { + 39, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, 285, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270 + }, + + { + 39, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271 + }, + + { + 39, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 286, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272 + }, + + { + 39, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, 287, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273 + }, + + { + 39, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, 288, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274 + + }, + + { + 39, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, 289, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275 + }, + + { + 39, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276 + }, + + { + 39, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277 + }, + + { + 39, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278 + }, + + { + 39, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279 + + }, + + { + 39, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280 + }, + + { + 39, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, 290, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281 + }, + + { + 39, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, 291, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282 + }, + + { + 39, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, 292, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + + -283, -283, -283, 293, -283, 294, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283 + }, + + { + 39, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284 + + }, + + { + 39, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, 295, 295, + 295, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285 + }, + + { + 39, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286 + }, + + { + 39, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287 + }, + + { + 39, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288 + }, + + { + 39, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, 296, 296, + 296, -289, -289, -289, -289, -289, -289, -289, -289, -289, + + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289 + + }, + + { + 39, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290 + }, + + { + 39, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291 + }, + + { + 39, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292 + }, + + { + 39, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, 297, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293 + }, + + { + 39, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, 298, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294 + + }, + + { + 39, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, 299, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, 300, -295, 301, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295 + }, + + { + 39, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, 302, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, 303, -296, 304, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296 + }, + + { + 39, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297 + }, + + { + 39, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298 + }, + + { + 39, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, -299, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305 + + }, + + { + 39, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, 306, -300, -300, -300, -300, -300, -300, + + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300 + }, + + { + 39, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, 307, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301 + }, + + { + 39, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, -302, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308 + }, + + { + 39, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, 309, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303 + }, + + { + 39, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, 310, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304 + + }, + + { + 39, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 311, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305 + }, + + { + 39, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306 + }, + + { + 39, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307 + }, + + { + 39, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 312, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308 + }, + + { + 39, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309 + + }, + + { + 39, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310 + }, + + { + 39, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, -311, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313 + }, + + { + 39, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, -312, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314 + }, + + { + 39, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 315, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313 + }, + + { + 39, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 316, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314 + + }, + + { + 39, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315 + }, + + { + 39, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316 + }, + } ; static yy_state_type yy_get_previous_state (void ); @@ -7118,8 +10405,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 134 +#define YY_END_OF_BUFFER 135 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -7127,63 +10414,85 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int32_t yy_accept[213] = +static yyconst flex_int32_t yy_accept[317] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 110, 108, 42, 42, 78, 108, - 1, 94, 49, 108, 96, 76, 63, 56, 99, 83, - 98, 92, 102, 66, 106, 104, 45, 108, 95, 48, - 92, 92, 92, 101, 100, 65, 107, 105, 103, 43, - 39, 40, 97, 34, 38, 35, 36, 32, 33, 37, - 3, 2, 28, 29, 30, 31, 42, 82, 81, 79, - 94, 50, 51, 52, 53, 54, 55, 93, 96, 77, - 64, 57, 58, 59, 60, 61, 62, 0, 0, 74, - - 0, 0, 0, 73, 75, 0, 0, 0, 0, 0, - 0, 0, 95, 41, 46, 0, 67, 68, 69, 70, - 71, 72, 44, 34, 35, 36, 32, 33, 37, 3, - 2, 28, 29, 30, 31, 80, 0, 0, 86, 88, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 0, 0, 87, 89, 90, 85, - 0, 5, 4, 0, 24, 0, 23, 0, 22, 0, - 0, 0, 0, 0, 91, 25, 0, 20, 19, 18, - 0, 0, 0, 0, 0, 26, 0, 6, 0, 0, - 0, 0, 7, 0, 0, 27, 21, 10, 14, 8, - - 0, 0, 0, 11, 15, 12, 16, 9, 0, 0, - 13, 17 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 133, + 64, 64, 97, 133, 91, 1, 115, 77, 133, 117, + 94, 80, 79, 120, 103, 119, 133, 112, 123, 83, + 127, 125, 69, 133, 29, 116, 76, 112, 112, 122, + 121, 82, 128, 126, 124, 90, 92, 66, 61, 62, + 118, 36, 54, 37, 38, 34, 35, 39, 3, 2, + 30, 31, 32, 33, 134, 134, 134, 134, 134, 134, + + 134, 46, 134, 134, 51, 134, 134, 64, 102, 101, + 98, 115, 78, 113, 117, 96, 93, 40, 81, 0, + 0, 114, 28, 114, 0, 0, 0, 70, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 63, + 72, 0, 84, 85, 86, 87, 88, 89, 67, 68, + 65, 36, 37, 38, 34, 35, 39, 3, 2, 30, + 31, 32, 33, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 43, 46, 47, 48, 51, 52, 53, 100, + 42, 95, 0, 0, 74, 0, 106, 108, 104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, + 99, 0, 0, 75, 107, 109, 110, 105, 0, 5, + 4, 0, 24, 0, 23, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 25, + 0, 20, 19, 0, 0, 0, 0, 18, 0, 0, + 0, 45, 0, 0, 50, 0, 0, 26, 0, 130, + 129, 132, 131, 6, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 27, 21, 10, 14, 8, + 0, 0, 0, 44, 0, 11, 15, 49, 0, 12, + 16, 9, 0, 0, 0, 0, 13, 17, 0, 0, + + 0, 0, 0, 0, 0, 56, 57, 0, 59, 60, + 0, 0, 0, 0, 55, 58 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; -static yyconst yy_state_type yy_NUL_trans[213] = +static yyconst yy_state_type yy_NUL_trans[317] = { 0, - 26, 26, 64, 64, 66, 66, 67, 67, 68, 68, - 69, 69, 70, 70, 71, 71, 73, 73, 74, 74, - 75, 75, 76, 76, 0, 0, 0, 0, 0, 78, + 40, 40, 82, 82, 84, 84, 85, 85, 86, 86, + 87, 87, 88, 88, 89, 89, 91, 91, 92, 92, + 93, 93, 94, 94, 95, 95, 95, 95, 102, 102, + 95, 95, 105, 105, 95, 95, 95, 95, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 0, 153, 154, 155, 156, 157, 158, 0, + 160, 161, 162, 163, 0, 0, 0, 0, 0, 0, + + 0, 174, 175, 176, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 0, 125, 126, 127, 128, 129, - 130, 0, 132, 133, 134, 135, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 153, 154, 155, 156, 157, 158, 0, 160, + 161, 162, 163, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 175, 176, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 125, 126, 127, 128, 129, 130, - 0, 132, 133, 134, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, + + 0, 308, 0, 0, 305, 0, 0, 308, 0, 0, + 313, 314, 313, 314, 0, 0 } ; extern int gabc_notes_determination__flex_debug; @@ -7242,12 +10551,35 @@ static char char_for_brace; static unsigned int nbof_isolated_episema; static char *notesmacros[10]; static char tempstr[256]; -static int brace_var_counter; -static int overbrace_var, underbrace_var; +static int brace_var_counter = 0; +static int overbrace_var = 0, underbrace_var = 0; static const char *overbrace_var_kind; +static int before_ledger_type; +static char *before_ledger_length = NULL; +static int ledger_var[2] = { 0, 0 }; +static unsigned char staff_lines; +static signed char highest_pitch; +static bool legacy_oriscus_orientation; +static int slur_var[2] = { 0, 0 }; +static char slur_shift[2] = { '\0', '\0' }; +static gregorio_note *slur_start[] = { NULL, NULL }; + +typedef enum ledger_line_type { + LL_OVER = 0, + LL_UNDER = 1 +} ledger_line_type; static __inline char pitch_letter_to_height(const char pitch) { - return pitch - 'a' + LOWEST_PITCH; + char result = pitch - 'a' + LOWEST_PITCH; + if (pitch == 'p') { + --result; + } + if (result > highest_pitch) { + gregorio_messagef("pitch_letter_to_height", VERBOSITY_ERROR, 0, + _("invalid pitch for %u lines: %c"), (unsigned int)staff_lines, + pitch); + } + return result; } static gregorio_shape punctum(const char pitch) @@ -7263,9 +10595,19 @@ static __inline void lex_add_note(int i, gregorio_shape shape, char signs, char liquescentia) { nbof_isolated_episema = 0; - gregorio_add_note(¤t_note, - pitch_letter_to_height(tolower((unsigned char)gabc_notes_determination_text[i])), + gregorio_add_note(¤t_note, pitch_letter_to_height( + tolower((unsigned char)gabc_notes_determination_text[i])), shape, signs, liquescentia, NULL, ¬es_lloc); + + if (ledger_var[LL_OVER]) { + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } + + if (ledger_var[LL_UNDER]) { + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } } static __inline void add_bar_as_note(gregorio_bar bar) @@ -7281,7 +10623,8 @@ static __inline void error(void) gabc_notes_determination_text[3] - '0'); } -static void add_h_episema(void) { +static void add_h_episema(void) +{ grehepisema_size size = H_NORMAL; gregorio_vposition vposition = VPOS_AUTO; bool disable_bridge = false; @@ -7321,7 +10664,8 @@ static void add_h_episema(void) { &nbof_isolated_episema); } -static void add_sign(gregorio_sign sign) { +static void add_sign(gregorio_sign sign) +{ gregorio_vposition vposition = VPOS_AUTO; switch(gabc_notes_determination_text[1]) { case '0': @@ -7334,24 +10678,285 @@ static void add_sign(gregorio_sign sign) { gregorio_add_sign(current_note, sign, vposition); } -static __inline void add_alteration(const gregorio_type type) { - gregorio_add_alteration_as_note(¤t_note, type, - pitch_letter_to_height(gabc_notes_determination_text[0]), - ¬es_lloc); +static void save_before_ledger(const char *const before_ledger) +{ + if (strcmp(before_ledger, "0") == 0) { + before_ledger_type = 0; + before_ledger_length = ""; + } else if (strcmp(before_ledger, "1") == 0) { + before_ledger_type = 1; + before_ledger_length = ""; + } else { + before_ledger_type = 2; + before_ledger_length = gregorio_strdup(before_ledger); + } +} + +static void add_static_ledger(const ledger_line_type type, const char *length) { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreDrawAdditionalLine{%d}{%s}{%d}{%s}{0}{}", + type, length + 1, before_ledger_type, before_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); +} + +static __inline const char *ledger_type_name(const ledger_line_type type) { + switch (type) { + case LL_OVER: + return "over"; + case LL_UNDER: + return "under"; + } + gregorio_messagef("ledger_type_name", VERBOSITY_ERROR, 0, + _("invalid ledger type %d"), type); + return NULL; +} + +static void add_variable_ledger(const ledger_line_type type, + const char *after_ledger) +{ + if (ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("add_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line without termination of " + "previous %s-staff ledger line"), typename, typename); + } else { + int after_ledger_type; + const char *after_ledger_length; + + ++after_ledger; + + if (strcmp(after_ledger, "0") == 0) { + after_ledger_type = 0; + after_ledger_length = ""; + } else if (strcmp(after_ledger, "1") == 0) { + after_ledger_type = 1; + after_ledger_length = ""; + } else { + after_ledger_type = 2; + after_ledger_length = after_ledger; + } + + ledger_var[type] = ++brace_var_counter; + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{1}" + "\\GreDrawAdditionalLine{%d}{\\GreVarBraceLength{%d}}" + "{%d}{%s}{%d}{%s}", + ledger_var[type], type, ledger_var[type], before_ledger_type, + before_ledger_length, after_ledger_type, after_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } +} + +static void end_variable_ledger(const ledger_line_type type) +{ + if (!ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("end_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line termination without variable " + "%s-staff ledger line start"), typename, typename); + } else { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{2}", ledger_var[type]); + ledger_var[type] = 0; + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } } +static __inline int parse_clef_line(char line) +{ + line -= '0'; + if (line < 0 || line > staff_lines) { + gregorio_messagef("parse_clef_line", VERBOSITY_ERROR, 0, + _("invalid clef line for %u lines: %d"), + (unsigned int)staff_lines, (int)line); + return 1; + } + return line; +} +static __inline gregorio_bar parse_dominican_bar(char bar) +{ + bar -= '0'; + if (bar < 1 || bar > (2 * (staff_lines - 1))) { + gregorio_messagef("parse_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar for %u lines: ;%d"), + (unsigned int)staff_lines, (int)bar); + } + switch (bar) { + case 1: + return B_DIVISIO_MINOR_D1; + case 2: + return B_DIVISIO_MINOR_D2; + case 3: + return B_DIVISIO_MINOR_D3; + case 4: + return B_DIVISIO_MINOR_D4; + case 5: + return B_DIVISIO_MINOR_D5; + case 6: + return B_DIVISIO_MINOR_D6; + case 7: + return B_DIVISIO_MINOR_D7; + case 8: + return B_DIVISIO_MINOR_D8; + } + gregorio_messagef("check_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar: %d"), (int)bar); + return B_NO_BAR; +} +static __inline gregorio_clef letter_to_clef(char letter) +{ + switch (letter) { + case 'c': + return CLEF_C; + case 'f': + return CLEF_F; + } + gregorio_messagef("letter_to_clef", VERBOSITY_ERROR, 0, + _("invalid clef: %c"), letter); + return CLEF_C; +} + +static __inline void slur_assert(char *fn, bool test) { + if (!test) { + gregorio_message(_("invalid slur text"), fn, VERBOSITY_FATAL, 0); + exit(1); + } +} + +static char *parse_slur_shift(char *shift) +{ + char *c; + + c = strchr(gabc_notes_determination_text, ':'); + slur_assert("parse_slur_shift", c != NULL); + slur_assert("parse_slur_shift", *(++c) != '\0'); + *shift = *c; + return c; +} +static void parse_slur(int direction) +{ + char shift, *width, *height, *end; + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "parse_slur", VERBOSITY_ERROR, 0); + return; + } + end = parse_slur_shift(&shift); + width = strchr(end, ';'); + slur_assert("parse_slur", width != NULL); + height = strchr(++width, ','); + slur_assert("parse_slur", height != NULL); + *height = '\0'; + end = strchr(++height, ']'); + slur_assert("parse_slur", end != NULL); + *end = '\0'; + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreSlur{%d}{%d}{%c}{%s}{%s}{}", + current_note->u.note.pitch + direction, direction, shift, width, + height); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); +} +static void start_var_slur(int index) +{ + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + if (slur_var[index]) { + gregorio_message( + _("variable slur without termination of previous slur"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + slur_var[index] = ++brace_var_counter; + parse_slur_shift(slur_shift + index); + slur_start[index] = current_note; +} -#line 7355 "gabc/gabc-notes-determination-l.c" +static void end_var_slur(int direction, int index) +{ + char shift; + + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + if (!slur_var[index] || !slur_shift[index] || !slur_start[index]) { + gregorio_message(_("variable slur end without variable slur start"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + parse_slur_shift(&shift); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{1}" + "\\GreSlur{%d}{%d}{%c}{\\GreVarBraceLength{%d}}{}{%d}", + slur_var[index], slur_shift[index], + slur_start[index]->u.note.pitch + direction, direction, + slur_shift[index], slur_var[index], + current_note->u.note.pitch + direction); + gregorio_add_texverb_to_note(slur_start[index], gregorio_strdup(tempstr)); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{2}", slur_var[index], shift); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); + + + slur_var[index] = 0; + slur_shift[index] = '\0'; + slur_start[index] = NULL; +} + + + + + + + + + + + + + + + + + +#line 10960 "gabc/gabc-notes-determination-l.c" #define INITIAL 0 #define texverbnote 1 @@ -7365,6 +10970,13 @@ static __inline void add_alteration(const gregorio_type type) { #define underbrace 9 #define overcurlybrace 10 #define overcurlyaccentusbrace 11 +#define space 12 +#define nbspace 13 +#define overledger 14 +#define overledger2 15 +#define underledger 16 +#define underledger2 17 +#define endledger 18 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -7573,9 +11185,9 @@ YY_DECL } { -#line 172 "gabc/gabc-notes-determination.l" +#line 468 "gabc/gabc-notes-determination.l" -#line 7579 "gabc/gabc-notes-determination-l.c" +#line 11191 "gabc/gabc-notes-determination-l.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -7622,7 +11234,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 173 "gabc/gabc-notes-determination.l" +#line 469 "gabc/gabc-notes-determination.l" { BEGIN(comments); } @@ -7630,35 +11242,35 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 176 "gabc/gabc-notes-determination.l" +#line 472 "gabc/gabc-notes-determination.l" { BEGIN(INITIAL); } YY_BREAK case 3: YY_RULE_SETUP -#line 179 "gabc/gabc-notes-determination.l" +#line 475 "gabc/gabc-notes-determination.l" { /* ignored */ } YY_BREAK case 4: YY_RULE_SETUP -#line 182 "gabc/gabc-notes-determination.l" +#line 478 "gabc/gabc-notes-determination.l" { BEGIN(choralsign); } YY_BREAK case 5: YY_RULE_SETUP -#line 185 "gabc/gabc-notes-determination.l" +#line 481 "gabc/gabc-notes-determination.l" { BEGIN(choralnabc); } YY_BREAK case 6: YY_RULE_SETUP -#line 188 "gabc/gabc-notes-determination.l" +#line 484 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[4]-'0'; BEGIN(overbrace); @@ -7666,7 +11278,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 192 "gabc/gabc-notes-determination.l" +#line 488 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[4]-'0'; BEGIN(underbrace); @@ -7674,7 +11286,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 196 "gabc/gabc-notes-determination.l" +#line 492 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[5]-'0'; BEGIN(overcurlybrace); @@ -7682,7 +11294,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 200 "gabc/gabc-notes-determination.l" +#line 496 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[6]-'0'; BEGIN(overcurlyaccentusbrace); @@ -7690,7 +11302,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 204 "gabc/gabc-notes-determination.l" +#line 500 "gabc/gabc-notes-determination.l" { if (overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7704,13 +11316,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 11: YY_RULE_SETUP -#line 220 "gabc/gabc-notes-determination.l" +#line 516 "gabc/gabc-notes-determination.l" { if (underbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7723,13 +11335,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreUnderBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", underbrace_var, char_for_brace, underbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 12: YY_RULE_SETUP -#line 235 "gabc/gabc-notes-determination.l" +#line 531 "gabc/gabc-notes-determination.l" { if (overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7743,13 +11355,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{0}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 13: YY_RULE_SETUP -#line 251 "gabc/gabc-notes-determination.l" +#line 547 "gabc/gabc-notes-determination.l" { if (overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7763,13 +11375,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{1}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 14: YY_RULE_SETUP -#line 267 "gabc/gabc-notes-determination.l" +#line 563 "gabc/gabc-notes-determination.l" { if (!overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7786,13 +11398,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 15: YY_RULE_SETUP -#line 286 "gabc/gabc-notes-determination.l" +#line 582 "gabc/gabc-notes-determination.l" { if (!underbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7804,13 +11416,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", underbrace_var, char_for_brace); underbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 16: YY_RULE_SETUP -#line 300 "gabc/gabc-notes-determination.l" +#line 596 "gabc/gabc-notes-determination.l" { if (!overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7827,13 +11439,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 17: YY_RULE_SETUP -#line 319 "gabc/gabc-notes-determination.l" +#line 615 "gabc/gabc-notes-determination.l" { if (!overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7850,23 +11462,23 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 18: YY_RULE_SETUP -#line 338 "gabc/gabc-notes-determination.l" +#line 634 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[3]-'0']) { - gregorio_add_texverb_to_note(¤t_note, + gregorio_add_texverb_to_note(current_note, gregorio_strdup(notesmacros[gabc_notes_determination_text[3]-'0'])); } else error(); } YY_BREAK case 19: YY_RULE_SETUP -#line 344 "gabc/gabc-notes-determination.l" +#line 640 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[3]-'0']) { gregorio_add_texverb_as_note(¤t_note, @@ -7877,7 +11489,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 351 "gabc/gabc-notes-determination.l" +#line 647 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[3]-'0']) { gregorio_add_texverb_as_note(¤t_note, @@ -7888,7 +11500,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 358 "gabc/gabc-notes-determination.l" +#line 654 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[5]-'0']) { gregorio_add_texverb_as_note(¤t_note, @@ -7899,683 +11511,916 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 365 "gabc/gabc-notes-determination.l" +#line 661 "gabc/gabc-notes-determination.l" { BEGIN(texverbnote); } YY_BREAK case 23: YY_RULE_SETUP -#line 368 "gabc/gabc-notes-determination.l" +#line 664 "gabc/gabc-notes-determination.l" { BEGIN(texverbglyph); } YY_BREAK case 24: YY_RULE_SETUP -#line 371 "gabc/gabc-notes-determination.l" +#line 667 "gabc/gabc-notes-determination.l" { BEGIN(texverbelement); } YY_BREAK case 25: YY_RULE_SETUP -#line 374 "gabc/gabc-notes-determination.l" +#line 670 "gabc/gabc-notes-determination.l" { BEGIN(alt); } YY_BREAK case 26: YY_RULE_SETUP -#line 377 "gabc/gabc-notes-determination.l" +#line 673 "gabc/gabc-notes-determination.l" { gregorio_add_nlba_as_note(¤t_note, NLBA_BEGINNING, ¬es_lloc); } YY_BREAK case 27: YY_RULE_SETUP -#line 380 "gabc/gabc-notes-determination.l" +#line 676 "gabc/gabc-notes-determination.l" { gregorio_add_nlba_as_note(¤t_note, NLBA_END, ¬es_lloc); } YY_BREAK case 28: -/* rule 28 can match eol */ YY_RULE_SETUP -#line 383 "gabc/gabc-notes-determination.l" +#line 679 "gabc/gabc-notes-determination.l" { - gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreOverBrace{%s}{0pt}{0pt}{%d}", - gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_start_autofuse(¤t_note, ¬es_lloc); } YY_BREAK case 29: -/* rule 29 can match eol */ YY_RULE_SETUP -#line 389 "gabc/gabc-notes-determination.l" +#line 682 "gabc/gabc-notes-determination.l" { - gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreUnderBrace{%s}{0pt}{0pt}{%d}", - gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_end_autofuse(¤t_note, ¬es_lloc); } YY_BREAK case 30: /* rule 30 can match eol */ YY_RULE_SETUP -#line 395 "gabc/gabc-notes-determination.l" +#line 685 "gabc/gabc-notes-determination.l" { gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}", + "\\GreOverBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 31: /* rule 31 can match eol */ YY_RULE_SETUP -#line 401 "gabc/gabc-notes-determination.l" +#line 691 "gabc/gabc-notes-determination.l" { gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}", + "\\GreUnderBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 32: /* rule 32 can match eol */ YY_RULE_SETUP -#line 407 "gabc/gabc-notes-determination.l" +#line 697 "gabc/gabc-notes-determination.l" { - gregorio_add_cs_to_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), false); + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}", + gabc_notes_determination_text, char_for_brace); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP -#line 411 "gabc/gabc-notes-determination.l" +#line 703 "gabc/gabc-notes-determination.l" { - gregorio_add_cs_to_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), true); + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}", + gabc_notes_determination_text, char_for_brace); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 34: /* rule 34 can match eol */ YY_RULE_SETUP -#line 415 "gabc/gabc-notes-determination.l" +#line 709 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_to_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text)); + gregorio_add_cs_to_note(¤t_note, + gregorio_strdup(gabc_notes_determination_text), false); } YY_BREAK case 35: /* rule 35 can match eol */ YY_RULE_SETUP -#line 419 "gabc/gabc-notes-determination.l" +#line 713 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), - GRE_TEXVERB_GLYPH, ¬es_lloc); + gregorio_add_cs_to_note(¤t_note, + gregorio_strdup(gabc_notes_determination_text), true); } YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP -#line 424 "gabc/gabc-notes-determination.l" +#line 717 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), - GRE_TEXVERB_ELEMENT, ¬es_lloc); + gregorio_add_texverb_to_note(current_note, + gregorio_strdup(gabc_notes_determination_text)); } YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP -#line 429 "gabc/gabc-notes-determination.l" +#line 721 "gabc/gabc-notes-determination.l" { gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), GRE_ALT, - ¬es_lloc); + gregorio_strdup(gabc_notes_determination_text), + GRE_TEXVERB_GLYPH, ¬es_lloc); } YY_BREAK case 38: +/* rule 38 can match eol */ YY_RULE_SETUP -#line 434 "gabc/gabc-notes-determination.l" +#line 726 "gabc/gabc-notes-determination.l" { - BEGIN(INITIAL); + gregorio_add_texverb_as_note(¤t_note, + gregorio_strdup(gabc_notes_determination_text), + GRE_TEXVERB_ELEMENT, ¬es_lloc); } YY_BREAK case 39: +/* rule 39 can match eol */ YY_RULE_SETUP -#line 437 "gabc/gabc-notes-determination.l" +#line 731 "gabc/gabc-notes-determination.l" { gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup("\\hbox to 0pt{"), GRE_TEXVERB_ELEMENT, + gregorio_strdup(gabc_notes_determination_text), GRE_ALT, ¬es_lloc); } YY_BREAK case 40: YY_RULE_SETUP -#line 442 "gabc/gabc-notes-determination.l" +#line 736 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), - GRE_TEXVERB_ELEMENT, ¬es_lloc); + BEGIN(space); } YY_BREAK case 41: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 447 "gabc/gabc-notes-determination.l" +#line 739 "gabc/gabc-notes-determination.l" { - gregorio_add_manual_custos_as_note(¤t_note, - pitch_letter_to_height(gabc_notes_determination_text[0]), - ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); } YY_BREAK case 42: -/* rule 42 can match eol */ YY_RULE_SETUP -#line 452 "gabc/gabc-notes-determination.l" -/* ignore ends of line and tabs */; +#line 743 "gabc/gabc-notes-determination.l" +{ + BEGIN(nbspace); + } YY_BREAK case 43: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 453 "gabc/gabc-notes-determination.l" +#line 746 "gabc/gabc-notes-determination.l" { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_LINE, - ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE_NB, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); } YY_BREAK case 44: YY_RULE_SETUP -#line 457 "gabc/gabc-notes-determination.l" +#line 750 "gabc/gabc-notes-determination.l" { - gregorio_add_custo_as_note(¤t_note, ¬es_lloc); + end_variable_ledger(LL_OVER); } YY_BREAK case 45: YY_RULE_SETUP -#line 460 "gabc/gabc-notes-determination.l" +#line 753 "gabc/gabc-notes-determination.l" { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_PAR, - ¬es_lloc); + BEGIN(overledger); } YY_BREAK case 46: +/* rule 46 can match eol */ YY_RULE_SETUP -#line 464 "gabc/gabc-notes-determination.l" +#line 756 "gabc/gabc-notes-determination.l" { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, GRE_C_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, GRE_F_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } + save_before_ledger(gabc_notes_determination_text); + BEGIN(overledger2); } YY_BREAK case 47: +/* rule 47 can match eol */ YY_RULE_SETUP -#line 473 "gabc/gabc-notes-determination.l" +#line 760 "gabc/gabc-notes-determination.l" { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, - GRE_C_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, - GRE_F_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } + add_static_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 48: +/* rule 48 can match eol */ YY_RULE_SETUP -#line 484 "gabc/gabc-notes-determination.l" +#line 764 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_VIRGULA); + add_variable_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 49: YY_RULE_SETUP -#line 487 "gabc/gabc-notes-determination.l" +#line 768 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINIMA); + end_variable_ledger(LL_UNDER); } YY_BREAK case 50: YY_RULE_SETUP -#line 490 "gabc/gabc-notes-determination.l" +#line 771 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D1); + BEGIN(underledger); } YY_BREAK case 51: +/* rule 51 can match eol */ YY_RULE_SETUP -#line 493 "gabc/gabc-notes-determination.l" +#line 774 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D2); + save_before_ledger(gabc_notes_determination_text); + BEGIN(underledger2); } YY_BREAK case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 496 "gabc/gabc-notes-determination.l" +#line 778 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D3); + add_static_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 53: +/* rule 53 can match eol */ YY_RULE_SETUP -#line 499 "gabc/gabc-notes-determination.l" +#line 782 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D4); + add_variable_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 54: YY_RULE_SETUP -#line 502 "gabc/gabc-notes-determination.l" +#line 786 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D5); + BEGIN(INITIAL); } YY_BREAK case 55: +/* rule 55 can match eol */ YY_RULE_SETUP -#line 505 "gabc/gabc-notes-determination.l" +#line 789 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D6); + parse_slur(1); } YY_BREAK case 56: YY_RULE_SETUP -#line 508 "gabc/gabc-notes-determination.l" +#line 792 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR); + start_var_slur(0); } YY_BREAK case 57: YY_RULE_SETUP -#line 511 "gabc/gabc-notes-determination.l" +#line 795 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D1); + end_var_slur(1, 0); } YY_BREAK case 58: +/* rule 58 can match eol */ YY_RULE_SETUP -#line 514 "gabc/gabc-notes-determination.l" +#line 798 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D2); + parse_slur(-1); } YY_BREAK case 59: YY_RULE_SETUP -#line 517 "gabc/gabc-notes-determination.l" +#line 801 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D3); + start_var_slur(1); } YY_BREAK case 60: YY_RULE_SETUP -#line 520 "gabc/gabc-notes-determination.l" +#line 804 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D4); + end_var_slur(-1, 1); } YY_BREAK case 61: YY_RULE_SETUP -#line 523 "gabc/gabc-notes-determination.l" +#line 807 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D5); + gregorio_add_texverb_as_note(¤t_note, + gregorio_strdup("\\hbox to 0pt{"), GRE_TEXVERB_ELEMENT, + ¬es_lloc); } YY_BREAK case 62: YY_RULE_SETUP -#line 526 "gabc/gabc-notes-determination.l" +#line 812 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D6); + gregorio_add_texverb_as_note(¤t_note, + gregorio_strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), + GRE_TEXVERB_ELEMENT, ¬es_lloc); } YY_BREAK case 63: YY_RULE_SETUP -#line 529 "gabc/gabc-notes-determination.l" +#line 817 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MAIOR); + gregorio_add_manual_custos_as_note(¤t_note, + pitch_letter_to_height(gabc_notes_determination_text[0]), + ¬es_lloc); } YY_BREAK case 64: +/* rule 64 can match eol */ YY_RULE_SETUP -#line 532 "gabc/gabc-notes-determination.l" -{ - add_bar_as_note(B_DIVISIO_FINALIS); - } +#line 822 "gabc/gabc-notes-determination.l" +/* ignore ends of line and tabs */; YY_BREAK case 65: YY_RULE_SETUP -#line 535 "gabc/gabc-notes-determination.l" +#line 823 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_PUNCTUM_CAVUM); + gregorio_add_custo_as_note(¤t_note, ¬es_lloc); } YY_BREAK case 66: YY_RULE_SETUP -#line 538 "gabc/gabc-notes-determination.l" +#line 826 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM); + gregorio_add_end_of_line_as_note(¤t_note, false, false, false, + ¬es_lloc); } YY_BREAK case 67: YY_RULE_SETUP -#line 541 "gabc/gabc-notes-determination.l" +#line 830 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM); + gregorio_add_end_of_line_as_note(¤t_note, false, true, true, + ¬es_lloc); } YY_BREAK case 68: YY_RULE_SETUP -#line 544 "gabc/gabc-notes-determination.l" +#line 834 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _ACCENTUS); + gregorio_add_end_of_line_as_note(¤t_note, false, true, false, + ¬es_lloc); } YY_BREAK case 69: YY_RULE_SETUP -#line 547 "gabc/gabc-notes-determination.l" +#line 838 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _ACCENTUS_REVERSUS); + gregorio_add_end_of_line_as_note(¤t_note, true, false, false, + ¬es_lloc); } YY_BREAK case 70: YY_RULE_SETUP -#line 550 "gabc/gabc-notes-determination.l" +#line 842 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _CIRCULUS); + gregorio_add_end_of_line_as_note(¤t_note, true, true, true, + ¬es_lloc); } YY_BREAK case 71: YY_RULE_SETUP -#line 553 "gabc/gabc-notes-determination.l" +#line 846 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _SEMI_CIRCULUS); + gregorio_add_end_of_line_as_note(¤t_note, true, true, false, + ¬es_lloc); } YY_BREAK case 72: YY_RULE_SETUP -#line 556 "gabc/gabc-notes-determination.l" +#line 850 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS); + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[1]), false, + ¬es_lloc); } YY_BREAK case 73: YY_RULE_SETUP -#line 559 "gabc/gabc-notes-determination.l" +#line 856 "gabc/gabc-notes-determination.l" { - add_alteration(GRE_FLAT); + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[2]), true, + ¬es_lloc); } YY_BREAK case 74: YY_RULE_SETUP -#line 562 "gabc/gabc-notes-determination.l" +#line 862 "gabc/gabc-notes-determination.l" { - add_alteration(GRE_SHARP); + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[2]), false); } YY_BREAK case 75: YY_RULE_SETUP -#line 565 "gabc/gabc-notes-determination.l" +#line 867 "gabc/gabc-notes-determination.l" { - add_alteration(GRE_NATURAL); + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[3]), true); } YY_BREAK case 76: YY_RULE_SETUP -#line 568 "gabc/gabc-notes-determination.l" +#line 872 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, ¬es_lloc); + add_bar_as_note(B_VIRGULA); } YY_BREAK case 77: YY_RULE_SETUP -#line 571 "gabc/gabc-notes-determination.l" +#line 875 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, ¬es_lloc); + add_bar_as_note(B_DIVISIO_MINIMA); } YY_BREAK case 78: YY_RULE_SETUP -#line 574 "gabc/gabc-notes-determination.l" +#line 878 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, ¬es_lloc); + add_bar_as_note(parse_dominican_bar(gabc_notes_determination_text[1])); } YY_BREAK case 79: YY_RULE_SETUP -#line 577 "gabc/gabc-notes-determination.l" +#line 881 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, - ¬es_lloc); + add_bar_as_note(B_DIVISIO_MINOR); } YY_BREAK case 80: YY_RULE_SETUP -#line 581 "gabc/gabc-notes-determination.l" +#line 884 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, - ¬es_lloc); + add_bar_as_note(B_DIVISIO_MAIOR); } YY_BREAK case 81: YY_RULE_SETUP -#line 585 "gabc/gabc-notes-determination.l" +#line 887 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, - ¬es_lloc); + add_bar_as_note(B_DIVISIO_FINALIS); } YY_BREAK case 82: -/* rule 82 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ -YY_LINENO_REWIND_TO(yy_bp + 1); -(yy_c_buf_p) = yy_cp = yy_bp + 1; -YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 589 "gabc/gabc-notes-determination.l" +#line 890 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, ¬es_lloc); + gregorio_change_shape(current_note, S_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } YY_BREAK case 83: YY_RULE_SETUP -#line 592 "gabc/gabc-notes-determination.l" +#line 894 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_LINEA); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM, + legacy_oriscus_orientation); } YY_BREAK case 84: YY_RULE_SETUP -#line 595 "gabc/gabc-notes-determination.l" +#line 898 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } YY_BREAK case 85: YY_RULE_SETUP -#line 598 "gabc/gabc-notes-determination.l" +#line 902 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _ACCENTUS); } YY_BREAK case 86: YY_RULE_SETUP -#line 601 "gabc/gabc-notes-determination.l" +#line 905 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _ACCENTUS_REVERSUS); } YY_BREAK case 87: YY_RULE_SETUP -#line 604 "gabc/gabc-notes-determination.l" +#line 908 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _CIRCULUS); } YY_BREAK case 88: YY_RULE_SETUP -#line 607 "gabc/gabc-notes-determination.l" +#line 911 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _SEMI_CIRCULUS); } YY_BREAK case 89: YY_RULE_SETUP -#line 610 "gabc/gabc-notes-determination.l" +#line 914 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTA); + gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS); } YY_BREAK case 90: YY_RULE_SETUP -#line 613 "gabc/gabc-notes-determination.l" +#line 917 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_change_shape(current_note, S_FLAT, legacy_oriscus_orientation); } YY_BREAK case 91: YY_RULE_SETUP -#line 616 "gabc/gabc-notes-determination.l" +#line 920 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTA); + gregorio_change_shape(current_note, S_SHARP, + legacy_oriscus_orientation); } YY_BREAK case 92: YY_RULE_SETUP -#line 619 "gabc/gabc-notes-determination.l" +#line 924 "gabc/gabc-notes-determination.l" { - lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN, - L_NO_LIQUESCENTIA); + gregorio_change_shape(current_note, S_NATURAL, + legacy_oriscus_orientation); } YY_BREAK case 93: YY_RULE_SETUP -#line 623 "gabc/gabc-notes-determination.l" +#line 928 "gabc/gabc-notes-determination.l" { - lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, - L_INITIO_DEBILIS); + gregorio_add_space_as_note(¤t_note, SP_HALF_SPACE, NULL, + ¬es_lloc); } YY_BREAK case 94: YY_RULE_SETUP -#line 627 "gabc/gabc-notes-determination.l" +#line 932 "gabc/gabc-notes-determination.l" { - add_sign(_V_EPISEMA); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); } YY_BREAK case 95: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 630 "gabc/gabc-notes-determination.l" +#line 936 "gabc/gabc-notes-determination.l" { - add_h_episema(); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); } YY_BREAK case 96: YY_RULE_SETUP -#line 633 "gabc/gabc-notes-determination.l" +#line 940 "gabc/gabc-notes-determination.l" { - add_sign(_PUNCTUM_MORA); + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, NULL, + ¬es_lloc); } YY_BREAK case 97: YY_RULE_SETUP -#line 636 "gabc/gabc-notes-determination.l" +#line 944 "gabc/gabc-notes-determination.l" { - gregorio_add_liquescentia(current_note, L_DEMINUTUS); + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, NULL, + ¬es_lloc); } YY_BREAK case 98: YY_RULE_SETUP -#line 639 "gabc/gabc-notes-determination.l" +#line 948 "gabc/gabc-notes-determination.l" { - gregorio_add_liquescentia(current_note, L_AUCTUS_DESCENDENS); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, + ¬es_lloc); } YY_BREAK case 99: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp = yy_bp + 2; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 642 "gabc/gabc-notes-determination.l" +#line 952 "gabc/gabc-notes-determination.l" { - gregorio_add_liquescentia(current_note, L_AUCTUS_ASCENDENS); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, + ¬es_lloc); } YY_BREAK case 100: YY_RULE_SETUP -#line 645 "gabc/gabc-notes-determination.l" +#line 956 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_QUADRATUM); + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, NULL, + ¬es_lloc); } YY_BREAK case 101: YY_RULE_SETUP -#line 648 "gabc/gabc-notes-determination.l" +#line 960 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_ORISCUS); + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, NULL, + ¬es_lloc); } YY_BREAK case 102: +/* rule 102 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +YY_LINENO_REWIND_TO(yy_bp + 1); +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 651 "gabc/gabc-notes-determination.l" +#line 964 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_ORISCUS_SCAPUS); + gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, NULL, + ¬es_lloc); } YY_BREAK case 103: YY_RULE_SETUP -#line 654 "gabc/gabc-notes-determination.l" +#line 968 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_QUILISMA); + gregorio_change_shape(current_note, S_LINEA, + legacy_oriscus_orientation); } YY_BREAK case 104: YY_RULE_SETUP -#line 657 "gabc/gabc-notes-determination.l" +#line 972 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM); + lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 105: YY_RULE_SETUP -#line 660 "gabc/gabc-notes-determination.l" +#line 975 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_VIRGA); + lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 106: YY_RULE_SETUP -#line 663 "gabc/gabc-notes-determination.l" +#line 978 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_VIRGA_REVERSA); + lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 107: YY_RULE_SETUP -#line 666 "gabc/gabc-notes-determination.l" +#line 981 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_STROPHA); + lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 108: YY_RULE_SETUP -#line 669 "gabc/gabc-notes-determination.l" +#line 984 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 987 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); + } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 990 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 993 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); + } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 996 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN, + L_NO_LIQUESCENTIA); + } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 1000 "gabc/gabc-notes-determination.l" +{ + lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, + L_INITIO_DEBILIS); + } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 1004 "gabc/gabc-notes-determination.l" +{ + lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, + L_FUSED); + } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 1008 "gabc/gabc-notes-determination.l" +{ + add_sign(_V_EPISEMA); + } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 1011 "gabc/gabc-notes-determination.l" +{ + add_h_episema(); + } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 1014 "gabc/gabc-notes-determination.l" +{ + add_sign(_PUNCTUM_MORA); + } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 1017 "gabc/gabc-notes-determination.l" +{ + gregorio_add_tail_liquescentia(current_note, L_DEMINUTUS, + legacy_oriscus_orientation); + } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 1021 "gabc/gabc-notes-determination.l" +{ + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_DESCENDENS, + legacy_oriscus_orientation); + } + YY_BREAK +case 120: +YY_RULE_SETUP +#line 1025 "gabc/gabc-notes-determination.l" +{ + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_ASCENDENS, + legacy_oriscus_orientation); + } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 1029 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_QUADRATUM, + legacy_oriscus_orientation); + } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 1033 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, legacy_oriscus_orientation + ? S_ORISCUS_ASCENDENS : S_ORISCUS_UNDETERMINED, + legacy_oriscus_orientation); + } + YY_BREAK +case 123: +YY_RULE_SETUP +#line 1038 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_ORISCUS_SCAPUS, + legacy_oriscus_orientation); + } + YY_BREAK +case 124: +YY_RULE_SETUP +#line 1042 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_QUILISMA, + legacy_oriscus_orientation); + } + YY_BREAK +case 125: +YY_RULE_SETUP +#line 1046 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM, + legacy_oriscus_orientation); + } + YY_BREAK +case 126: +YY_RULE_SETUP +#line 1050 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_VIRGA, + legacy_oriscus_orientation); + } + YY_BREAK +case 127: +YY_RULE_SETUP +#line 1054 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_VIRGA_REVERSA, + legacy_oriscus_orientation); + } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 1058 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_STROPHA, + legacy_oriscus_orientation); + } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 1062 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 1066 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_high_ledger_line = false; + current_note->explicit_high_ledger_line = true; + } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 1070 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 1074 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_low_ledger_line = false; + current_note->explicit_low_ledger_line = true; + } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 1078 "gabc/gabc-notes-determination.l" { gregorio_messagef("det_notes_from_string", VERBOSITY_ERROR, 0, _("unrecognized character: \"%c\""), gabc_notes_determination_text[0]); } YY_BREAK -case 109: +case 134: YY_RULE_SETUP -#line 675 "gabc/gabc-notes-determination.l" +#line 1084 "gabc/gabc-notes-determination.l" ECHO; YY_BREAK -#line 8579 "gabc/gabc-notes-determination-l.c" +#line 12424 "gabc/gabc-notes-determination-l.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(texverbnote): case YY_STATE_EOF(texverbglyph): @@ -8588,6 +12433,13 @@ case YY_STATE_EOF(overbrace): case YY_STATE_EOF(underbrace): case YY_STATE_EOF(overcurlybrace): case YY_STATE_EOF(overcurlyaccentusbrace): +case YY_STATE_EOF(space): +case YY_STATE_EOF(nbspace): +case YY_STATE_EOF(overledger): +case YY_STATE_EOF(overledger2): +case YY_STATE_EOF(underledger): +case YY_STATE_EOF(underledger2): +case YY_STATE_EOF(endledger): yyterminate(); case YY_END_OF_BUFFER: @@ -9547,12 +13399,12 @@ void gabc_notes_determination_free (void * ptr ) #define YYTABLES_NAME "yytables" -#line 675 "gabc/gabc-notes-determination.l" +#line 1084 "gabc/gabc-notes-determination.l" gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], - gregorio_scanner_location *loc) + gregorio_scanner_location *loc, const gregorio_score *const score) { int i; YY_BUFFER_STATE buf; @@ -9565,6 +13417,10 @@ gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], notes_lloc.last_column = loc->first_column; notes_lloc.last_offset = loc->first_offset; + staff_lines = score->staff_lines; + highest_pitch = score->highest_pitch; + legacy_oriscus_orientation = score->legacy_oriscus_orientation; + /* a small optimization could uccur here: we could do it only once at the * beginning of the score, not at each syllable */ for (i = 0; i < 10; i++) { diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l index f48875aea4a..c3813238d43 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l @@ -42,12 +42,35 @@ static char char_for_brace; static unsigned int nbof_isolated_episema; static char *notesmacros[10]; static char tempstr[256]; -static int brace_var_counter; -static int overbrace_var, underbrace_var; +static int brace_var_counter = 0; +static int overbrace_var = 0, underbrace_var = 0; static const char *overbrace_var_kind; +static int before_ledger_type; +static char *before_ledger_length = NULL; +static int ledger_var[2] = { 0, 0 }; +static unsigned char staff_lines; +static signed char highest_pitch; +static bool legacy_oriscus_orientation; +static int slur_var[2] = { 0, 0 }; +static char slur_shift[2] = { '\0', '\0' }; +static gregorio_note *slur_start[] = { NULL, NULL }; + +typedef enum ledger_line_type { + LL_OVER = 0, + LL_UNDER = 1 +} ledger_line_type; static __inline char pitch_letter_to_height(const char pitch) { - return pitch - 'a' + LOWEST_PITCH; + char result = pitch - 'a' + LOWEST_PITCH; + if (pitch == 'p') { + --result; + } + if (result > highest_pitch) { + gregorio_messagef("pitch_letter_to_height", VERBOSITY_ERROR, 0, + _("invalid pitch for %u lines: %c"), (unsigned int)staff_lines, + pitch); + } + return result; } static gregorio_shape punctum(const char pitch) @@ -63,9 +86,19 @@ static __inline void lex_add_note(int i, gregorio_shape shape, char signs, char liquescentia) { nbof_isolated_episema = 0; - gregorio_add_note(¤t_note, - pitch_letter_to_height(tolower((unsigned char)gabc_notes_determination_text[i])), + gregorio_add_note(¤t_note, pitch_letter_to_height( + tolower((unsigned char)gabc_notes_determination_text[i])), shape, signs, liquescentia, NULL, ¬es_lloc); + + if (ledger_var[LL_OVER]) { + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } + + if (ledger_var[LL_UNDER]) { + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } } static __inline void add_bar_as_note(gregorio_bar bar) @@ -81,7 +114,8 @@ static __inline void error(void) gabc_notes_determination_text[3] - '0'); } -static void add_h_episema(void) { +static void add_h_episema(void) +{ grehepisema_size size = H_NORMAL; gregorio_vposition vposition = VPOS_AUTO; bool disable_bridge = false; @@ -121,7 +155,8 @@ static void add_h_episema(void) { &nbof_isolated_episema); } -static void add_sign(gregorio_sign sign) { +static void add_sign(gregorio_sign sign) +{ gregorio_vposition vposition = VPOS_AUTO; switch(gabc_notes_determination_text[1]) { case '0': @@ -134,10 +169,266 @@ static void add_sign(gregorio_sign sign) { gregorio_add_sign(current_note, sign, vposition); } -static __inline void add_alteration(const gregorio_type type) { - gregorio_add_alteration_as_note(¤t_note, type, - pitch_letter_to_height(gabc_notes_determination_text[0]), - ¬es_lloc); +static void save_before_ledger(const char *const before_ledger) +{ + if (strcmp(before_ledger, "0") == 0) { + before_ledger_type = 0; + before_ledger_length = ""; + } else if (strcmp(before_ledger, "1") == 0) { + before_ledger_type = 1; + before_ledger_length = ""; + } else { + before_ledger_type = 2; + before_ledger_length = gregorio_strdup(before_ledger); + } +} + +static void add_static_ledger(const ledger_line_type type, const char *length) { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreDrawAdditionalLine{%d}{%s}{%d}{%s}{0}{}", + type, length + 1, before_ledger_type, before_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); +} + +static __inline const char *ledger_type_name(const ledger_line_type type) { + switch (type) { + case LL_OVER: + return "over"; + case LL_UNDER: + return "under"; + } + gregorio_messagef("ledger_type_name", VERBOSITY_ERROR, 0, + _("invalid ledger type %d"), type); + return NULL; +} + +static void add_variable_ledger(const ledger_line_type type, + const char *after_ledger) +{ + if (ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("add_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line without termination of " + "previous %s-staff ledger line"), typename, typename); + } else { + int after_ledger_type; + const char *after_ledger_length; + + ++after_ledger; + + if (strcmp(after_ledger, "0") == 0) { + after_ledger_type = 0; + after_ledger_length = ""; + } else if (strcmp(after_ledger, "1") == 0) { + after_ledger_type = 1; + after_ledger_length = ""; + } else { + after_ledger_type = 2; + after_ledger_length = after_ledger; + } + + ledger_var[type] = ++brace_var_counter; + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{1}" + "\\GreDrawAdditionalLine{%d}{\\GreVarBraceLength{%d}}" + "{%d}{%s}{%d}{%s}", + ledger_var[type], type, ledger_var[type], before_ledger_type, + before_ledger_length, after_ledger_type, after_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } +} + +static void end_variable_ledger(const ledger_line_type type) +{ + if (!ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("end_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line termination without variable " + "%s-staff ledger line start"), typename, typename); + } else { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{2}", ledger_var[type]); + ledger_var[type] = 0; + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } +} + +static __inline int parse_clef_line(char line) +{ + line -= '0'; + if (line < 0 || line > staff_lines) { + gregorio_messagef("parse_clef_line", VERBOSITY_ERROR, 0, + _("invalid clef line for %u lines: %d"), + (unsigned int)staff_lines, (int)line); + return 1; + } + return line; +} + +static __inline gregorio_bar parse_dominican_bar(char bar) +{ + bar -= '0'; + if (bar < 1 || bar > (2 * (staff_lines - 1))) { + gregorio_messagef("parse_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar for %u lines: ;%d"), + (unsigned int)staff_lines, (int)bar); + } + + switch (bar) { + case 1: + return B_DIVISIO_MINOR_D1; + case 2: + return B_DIVISIO_MINOR_D2; + case 3: + return B_DIVISIO_MINOR_D3; + case 4: + return B_DIVISIO_MINOR_D4; + case 5: + return B_DIVISIO_MINOR_D5; + case 6: + return B_DIVISIO_MINOR_D6; + case 7: + return B_DIVISIO_MINOR_D7; + case 8: + return B_DIVISIO_MINOR_D8; + } + + gregorio_messagef("check_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar: %d"), (int)bar); + return B_NO_BAR; +} + +static __inline gregorio_clef letter_to_clef(char letter) +{ + switch (letter) { + case 'c': + return CLEF_C; + case 'f': + return CLEF_F; + } + gregorio_messagef("letter_to_clef", VERBOSITY_ERROR, 0, + _("invalid clef: %c"), letter); + return CLEF_C; +} + +static __inline void slur_assert(char *fn, bool test) { + if (!test) { + gregorio_message(_("invalid slur text"), fn, VERBOSITY_FATAL, 0); + exit(1); + } +} + +static char *parse_slur_shift(char *shift) +{ + char *c; + + c = strchr(gabc_notes_determination_text, ':'); + slur_assert("parse_slur_shift", c != NULL); + slur_assert("parse_slur_shift", *(++c) != '\0'); + *shift = *c; + return c; +} + +static void parse_slur(int direction) +{ + char shift, *width, *height, *end; + + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "parse_slur", VERBOSITY_ERROR, 0); + return; + } + + end = parse_slur_shift(&shift); + width = strchr(end, ';'); + slur_assert("parse_slur", width != NULL); + height = strchr(++width, ','); + slur_assert("parse_slur", height != NULL); + *height = '\0'; + end = strchr(++height, ']'); + slur_assert("parse_slur", end != NULL); + *end = '\0'; + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreSlur{%d}{%d}{%c}{%s}{%s}{}", + current_note->u.note.pitch + direction, direction, shift, width, + height); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); +} + +static void start_var_slur(int index) +{ + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + + if (slur_var[index]) { + gregorio_message( + _("variable slur without termination of previous slur"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + + slur_var[index] = ++brace_var_counter; + parse_slur_shift(slur_shift + index); + slur_start[index] = current_note; +} + +static void end_var_slur(int direction, int index) +{ + char shift; + + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + if (!slur_var[index] || !slur_shift[index] || !slur_start[index]) { + gregorio_message(_("variable slur end without variable slur start"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + parse_slur_shift(&shift); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{1}" + "\\GreSlur{%d}{%d}{%c}{\\GreVarBraceLength{%d}}{}{%d}", + slur_var[index], slur_shift[index], + slur_start[index]->u.note.pitch + direction, direction, + slur_shift[index], slur_var[index], + current_note->u.note.pitch + direction); + gregorio_add_texverb_to_note(slur_start[index], gregorio_strdup(tempstr)); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{2}", slur_var[index], shift); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); + + + slur_var[index] = 0; + slur_shift[index] = '\0'; + slur_start[index] = NULL; } %} @@ -168,6 +459,11 @@ static __inline void add_alteration(const gregorio_type type) { %x underbrace %x overcurlybrace %x overcurlyaccentusbrace +%x space +%x nbspace +%x overledger overledger2 +%x underledger underledger2 +%x endledger %% <INITIAL>\% { @@ -214,7 +510,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ub:[01]\{\] { @@ -229,7 +525,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreUnderBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", underbrace_var, char_for_brace, underbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocb:[01]\{\] { @@ -245,7 +541,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{0}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocba:[01]\{\] { @@ -261,7 +557,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{1}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ob:[01]\}\] { @@ -280,7 +576,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ub:[01]\}\] { @@ -294,7 +590,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", underbrace_var, char_for_brace); underbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocb:[01]\}\] { @@ -313,7 +609,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocba:[01]\}\] { @@ -332,12 +628,12 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[nm[1-9]\] { if (notesmacros[gabc_notes_determination_text[3]-'0']) { - gregorio_add_texverb_to_note(¤t_note, + gregorio_add_texverb_to_note(current_note, gregorio_strdup(notesmacros[gabc_notes_determination_text[3]-'0'])); } else error(); } @@ -380,29 +676,35 @@ static __inline void add_alteration(const gregorio_type type) { <INITIAL><\/nlba> { gregorio_add_nlba_as_note(¤t_note, NLBA_END, ¬es_lloc); } +<INITIAL>@\[ { + gregorio_start_autofuse(¤t_note, ¬es_lloc); + } +<INITIAL>\] { + gregorio_end_autofuse(¤t_note, ¬es_lloc); + } <overbrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreOverBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <underbrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreUnderBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <overcurlybrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <overcurlyaccentusbrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <choralsign>[^\]]+ { gregorio_add_cs_to_note(¤t_note, @@ -413,7 +715,7 @@ static __inline void add_alteration(const gregorio_type type) { gregorio_strdup(gabc_notes_determination_text), true); } <texverbnote>[^\]]+ { - gregorio_add_texverb_to_note(¤t_note, + gregorio_add_texverb_to_note(current_note, gregorio_strdup(gabc_notes_determination_text)); } <texverbglyph>[^\]]+ { @@ -431,9 +733,77 @@ static __inline void add_alteration(const gregorio_type type) { gregorio_strdup(gabc_notes_determination_text), GRE_ALT, ¬es_lloc); } -<texverbnote,texverbglyph,texverbelement,choralsign,choralnabc,alt,overcurlyaccentusbrace,overcurlybrace,overbrace,underbrace>\] { +<INITIAL>\/\[ { + BEGIN(space); + } +<space>-?(\.[0-9]+|[0-9]+(\.[0-9]*)?)/\] { + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); + } +<INITIAL>!\/\[ { + BEGIN(nbspace); + } +<nbspace>-?(\.[0-9]+|[0-9]+(\.[0-9]*)?)/\] { + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE_NB, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); + } +<INITIAL>\[oll:\}\] { + end_variable_ledger(LL_OVER); + } +<INITIAL>\[oll: { + BEGIN(overledger); + } +<overledger>[^;{]+ { + save_before_ledger(gabc_notes_determination_text); + BEGIN(overledger2); + } +<overledger2>;[^\]]+ { + add_static_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); + } +<overledger2>\{[^\]]+ { + add_variable_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); + } +<INITIAL>\[ull:\}\] { + end_variable_ledger(LL_UNDER); + } +<INITIAL>\[ull: { + BEGIN(underledger); + } +<underledger>[^;{]+ { + save_before_ledger(gabc_notes_determination_text); + BEGIN(underledger2); + } +<underledger2>;[^\]]+ { + add_static_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); + } +<underledger2>\{[^\]]+ { + add_variable_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); + } +<texverbnote,texverbglyph,texverbelement,choralsign,choralnabc,alt,overcurlyaccentusbrace,overcurlybrace,overbrace,underbrace,space,nbspace,endledger>\] { BEGIN(INITIAL); } +<INITIAL>\[oslur:[012];[^,]+,[^\]]+\] { + parse_slur(1); + } +<INITIAL>\[oslur:[012]\{\] { + start_var_slur(0); + } +<INITIAL>\[oslur:[012]\}\] { + end_var_slur(1, 0); + } +<INITIAL>\[uslur:[012];[^,]+,[^\]]+\] { + parse_slur(-1); + } +<INITIAL>\[uslur:[012]\{\] { + start_var_slur(1); + } +<INITIAL>\[uslur:[012]\}\] { + end_var_slur(-1, 1); + } \{ { gregorio_add_texverb_as_note(¤t_note, gregorio_strdup("\\hbox to 0pt{"), GRE_TEXVERB_ELEMENT, @@ -444,88 +814,73 @@ static __inline void add_alteration(const gregorio_type type) { gregorio_strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), GRE_TEXVERB_ELEMENT, ¬es_lloc); } -[a-m]\+ { +[a-np]\+ { gregorio_add_manual_custos_as_note(¤t_note, pitch_letter_to_height(gabc_notes_determination_text[0]), ¬es_lloc); } [\t\r\n]+ /* ignore ends of line and tabs */; +z0 { + gregorio_add_custo_as_note(¤t_note, ¬es_lloc); + } z { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_LINE, + gregorio_add_end_of_line_as_note(¤t_note, false, false, false, ¬es_lloc); } -z0 { - gregorio_add_custo_as_note(¤t_note, ¬es_lloc); +z\+ { + gregorio_add_end_of_line_as_note(¤t_note, false, true, true, + ¬es_lloc); } -Z { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_PAR, +z- { + gregorio_add_end_of_line_as_note(¤t_note, false, true, false, ¬es_lloc); } -(c|f)[1-4] { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, GRE_C_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, GRE_F_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } +Z { + gregorio_add_end_of_line_as_note(¤t_note, true, false, false, + ¬es_lloc); } -(cb|fb)[1-4] { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, - GRE_C_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, - GRE_F_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } +Z\+ { + gregorio_add_end_of_line_as_note(¤t_note, true, true, true, + ¬es_lloc); } -` { - add_bar_as_note(B_VIRGULA); +Z- { + gregorio_add_end_of_line_as_note(¤t_note, true, true, false, + ¬es_lloc); } -, { - add_bar_as_note(B_DIVISIO_MINIMA); +[cf][1-5] { + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[1]), false, + ¬es_lloc); } -,1 { - add_bar_as_note(B_DIVISIO_MINOR_D1); +[cf]b[1-5] { + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[2]), true, + ¬es_lloc); } -,2 { - add_bar_as_note(B_DIVISIO_MINOR_D2); +@[cf][1-5] { + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[2]), false); } -,3 { - add_bar_as_note(B_DIVISIO_MINOR_D3); +@[cf]b[1-5] { + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[3]), true); } -,4 { - add_bar_as_note(B_DIVISIO_MINOR_D4); +` { + add_bar_as_note(B_VIRGULA); } -,5 { - add_bar_as_note(B_DIVISIO_MINOR_D5); +, { + add_bar_as_note(B_DIVISIO_MINIMA); } -,6 { - add_bar_as_note(B_DIVISIO_MINOR_D6); +[,;][1-8] { + add_bar_as_note(parse_dominican_bar(gabc_notes_determination_text[1])); } ; { add_bar_as_note(B_DIVISIO_MINOR); } -;1 { - add_bar_as_note(B_DIVISIO_MINOR_D1); - } -;2 { - add_bar_as_note(B_DIVISIO_MINOR_D2); - } -;3 { - add_bar_as_note(B_DIVISIO_MINOR_D3); - } -;4 { - add_bar_as_note(B_DIVISIO_MINOR_D4); - } -;5 { - add_bar_as_note(B_DIVISIO_MINOR_D5); - } -;6 { - add_bar_as_note(B_DIVISIO_MINOR_D6); - } : { add_bar_as_note(B_DIVISIO_MAIOR); } @@ -533,13 +888,16 @@ Z { add_bar_as_note(B_DIVISIO_FINALIS); } r { - gregorio_change_shape(current_note, S_PUNCTUM_CAVUM); + gregorio_change_shape(current_note, S_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } R { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM, + legacy_oriscus_orientation); } r0 { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } r1 { gregorio_add_special_sign(current_note, _ACCENTUS); @@ -556,74 +914,97 @@ r4 { r5 { gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS); } -[a-mA-M]x { - add_alteration(GRE_FLAT); +x { + gregorio_change_shape(current_note, S_FLAT, legacy_oriscus_orientation); } -[a-mA-M]# { - add_alteration(GRE_SHARP); +# { + gregorio_change_shape(current_note, S_SHARP, + legacy_oriscus_orientation); } -[a-mA-M]y { - add_alteration(GRE_NATURAL); +y { + gregorio_change_shape(current_note, S_NATURAL, + legacy_oriscus_orientation); + } +!?\/0 { + gregorio_add_space_as_note(¤t_note, SP_HALF_SPACE, NULL, + ¬es_lloc); } \/ { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); + } +\//\/\[ { + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); } \/\/ { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, NULL, + ¬es_lloc); } \ { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, NULL, + ¬es_lloc); } !\/ { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, + ¬es_lloc); + } +!\//\/\[ { + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, ¬es_lloc); } !\/\/ { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, NULL, ¬es_lloc); } !\ { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, NULL, ¬es_lloc); } !/[^\/ ] { - gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, NULL, + ¬es_lloc); } = { - gregorio_change_shape(current_note, S_LINEA); + gregorio_change_shape(current_note, S_LINEA, + legacy_oriscus_orientation); } -[a-mA-M]vv { +[a-npA-NP]vv { lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]vvv { +[a-npA-NP]vvv { lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]VV { +[a-npA-NP]VV { lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]VVV { +[a-npA-NP]VVV { lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]ss { +[a-npA-NP]ss { lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]ss(\<|\>) { - lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTA); +[a-npA-NP]ss(\<|\>) { + lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); } -[a-mA-M]sss { +[a-npA-NP]sss { lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]sss(\<|\>) { - lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTA); +[a-npA-NP]sss(\<|\>) { + lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); } -[a-mA-M] { +[a-npA-NP] { lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN, L_NO_LIQUESCENTIA); } --[a-mA-M] { +-[a-npA-NP] { lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, L_INITIO_DEBILIS); } +@[a-npA-NP] { + lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, + L_FUSED); + } \'[01]? { add_sign(_V_EPISEMA); } @@ -634,37 +1015,65 @@ _[0-5]* { add_sign(_PUNCTUM_MORA); } ~ { - gregorio_add_liquescentia(current_note, L_DEMINUTUS); + gregorio_add_tail_liquescentia(current_note, L_DEMINUTUS, + legacy_oriscus_orientation); } > { - gregorio_add_liquescentia(current_note, L_AUCTUS_DESCENDENS); + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_DESCENDENS, + legacy_oriscus_orientation); } \< { - gregorio_add_liquescentia(current_note, L_AUCTUS_ASCENDENS); + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_ASCENDENS, + legacy_oriscus_orientation); } q { - gregorio_change_shape(current_note, S_QUADRATUM); + gregorio_change_shape(current_note, S_QUADRATUM, + legacy_oriscus_orientation); } o { - gregorio_change_shape(current_note, S_ORISCUS); + gregorio_change_shape(current_note, legacy_oriscus_orientation + ? S_ORISCUS_ASCENDENS : S_ORISCUS_UNDETERMINED, + legacy_oriscus_orientation); } O { - gregorio_change_shape(current_note, S_ORISCUS_SCAPUS); + gregorio_change_shape(current_note, S_ORISCUS_SCAPUS, + legacy_oriscus_orientation); } w { - gregorio_change_shape(current_note, S_QUILISMA); + gregorio_change_shape(current_note, S_QUILISMA, + legacy_oriscus_orientation); } W { - gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM); + gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM, + legacy_oriscus_orientation); } v { - gregorio_change_shape(current_note, S_VIRGA); + gregorio_change_shape(current_note, S_VIRGA, + legacy_oriscus_orientation); } V { - gregorio_change_shape(current_note, S_VIRGA_REVERSA); + gregorio_change_shape(current_note, S_VIRGA_REVERSA, + legacy_oriscus_orientation); } s { - gregorio_change_shape(current_note, S_STROPHA); + gregorio_change_shape(current_note, S_STROPHA, + legacy_oriscus_orientation); + } +\[hl:1\] { + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } +\[hl:0\] { + current_note->supposed_high_ledger_line = false; + current_note->explicit_high_ledger_line = true; + } +\[ll:1\] { + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } +\[ll:0\] { + current_note->supposed_low_ledger_line = false; + current_note->explicit_low_ledger_line = true; } . { gregorio_messagef("det_notes_from_string", VERBOSITY_ERROR, 0, @@ -675,7 +1084,7 @@ s { %% gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], - gregorio_scanner_location *loc) + gregorio_scanner_location *loc, const gregorio_score *const score) { int i; YY_BUFFER_STATE buf; @@ -688,6 +1097,10 @@ gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], notes_lloc.last_column = loc->first_column; notes_lloc.last_offset = loc->first_offset; + staff_lines = score->staff_lines; + highest_pitch = score->highest_pitch; + legacy_oriscus_orientation = score->legacy_oriscus_orientation; + /* a small optimization could uccur here: we could do it only once at the * beginning of the score, not at each syllable */ for (i = 0; i < 10; i++) { diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c index fe52c82613f..03994f45487 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c @@ -384,8 +384,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 83 -#define YY_END_OF_BUFFER 84 +#define YY_NUM_RULES 70 +#define YY_END_OF_BUFFER 71 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -393,55 +393,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int32_t yy_accept[430] = +static yyconst flex_int32_t yy_accept[307] = { 0, - 0, 1, 7, 7, 0, 0, 78, 78, 59, 59, - 65, 65, 62, 62, 5, 5, 70, 70, 84, 41, - 83, 41, 41, 6, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 2, 2, - 3, 3, 1, 7, 7, 83, 42, 60, 77, 66, - 75, 76, 67, 68, 78, 79, 81, 80, 59, 66, - 65, 66, 62, 61, 5, 4, 70, 66, 40, 0, - 39, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 1, 7, - - 7, 0, 7, 7, 0, 7, 8, 8, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 78, 82, 59, 0, 65, 0, 62, 61, 5, - 4, 70, 0, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 53, 51, 0, 43, 0, 0, - 0, 0, 0, 63, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, - - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 0, 55, 57, 47, 49, 54, 52, - 46, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 34, 0, 0, 0, 73, - 0, 69, 0, 56, 58, 48, 50, 0, 0, 0, - 23, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 71, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 45, 0, 18, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, - 17, 0, 0, 0, 0, 0, 25, 37, 0, 0, - 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 29, 0, 0, 0, 0, - 19, 30, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 12, 0, 0, 31, 36, 0, - 0, 10, 0, 35, 0, 0, 0, 0, 0, 33, - 0, 0, 26, 0, 0, 0, 0, 27, 0 + 0, 1, 7, 7, 0, 0, 65, 65, 46, 46, + 52, 52, 49, 49, 5, 5, 57, 57, 71, 27, + 70, 27, 27, 24, 6, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 2, 2, 3, 3, 1, 7, + 7, 70, 28, 47, 64, 29, 53, 62, 63, 54, + 55, 65, 66, 68, 67, 46, 53, 52, 53, 49, + 48, 5, 4, 57, 53, 26, 0, 25, 0, 24, + 6, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 2, 1, 7, 7, 0, 7, 7, + 0, 7, 8, 8, 28, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 65, 69, 46, + 0, 52, 0, 49, 48, 5, 4, 57, 0, 25, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 7, 0, 0, 0, 40, 38, + 0, 30, 0, 0, 0, 0, 0, 50, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, + 24, 24, 24, 15, 24, 11, 24, 24, 24, 24, + 0, 0, 0, 59, 0, 42, 44, 34, 36, 41, + 39, 33, 0, 0, 0, 0, 51, 0, 24, 24, + 24, 0, 24, 24, 0, 0, 24, 24, 24, 24, + + 60, 0, 56, 0, 43, 45, 35, 37, 0, 24, + 19, 9, 24, 24, 24, 24, 24, 24, 24, 24, + 0, 0, 0, 31, 58, 24, 24, 24, 24, 24, + 24, 24, 0, 24, 24, 24, 32, 24, 24, 0, + 20, 24, 24, 24, 24, 0, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 18, 24, + 24, 24, 24, 22, 0, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 21, 24, 24, 24, 24, + 24, 24, 24, 24, 14, 24, 16, 24, 24, 24, + 13, 24, 24, 24, 24, 24, 24, 24, 12, 17, + + 10, 24, 24, 24, 23, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -452,305 +439,291 @@ static yyconst flex_int32_t yy_ec[256] = 1, 5, 1, 1, 6, 1, 7, 8, 1, 9, 10, 1, 1, 1, 11, 1, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 16, - 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 17, 1, 1, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 19, 1, 20, 1, 18, 1, 21, 22, 23, 24, + + 25, 26, 27, 28, 29, 18, 18, 30, 31, 32, + 33, 34, 18, 35, 36, 37, 38, 39, 18, 18, + 40, 18, 41, 42, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 18, 1, 19, 1, 1, 1, 20, 21, 22, 23, - - 24, 25, 26, 27, 28, 1, 29, 30, 31, 32, - 33, 34, 1, 35, 36, 37, 38, 39, 1, 40, - 41, 1, 42, 43, 44, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, - 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 44, 1, 1, 1, + 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 47, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[48] = +static yyconst flex_int32_t yy_meta[47] = { 0, 1, 1, 2, 3, 1, 1, 4, 5, 4, 5, - 1, 1, 1, 1, 6, 7, 1, 4, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 8, 5, 8, 1, 1, 1 + 6, 1, 7, 1, 8, 9, 1, 7, 4, 4, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 10, 5, 10, 1, 1, 1 } ; -static yyconst flex_int32_t yy_base[451] = +static yyconst flex_int32_t yy_base[329] = { 0, - 0, 37, 1, 9, 70, 78, 7, 19, 3, 36, - 634, 633, 5, 31, 50, 52, 632, 631, 646, 651, - 651, 88, 634, 639, 66, 610, 48, 22, 82, 610, - 621, 83, 70, 39, 78, 605, 603, 610, 106, 115, - 651, 120, 83, 122, 128, 130, 0, 651, 651, 134, - 625, 651, 651, 651, 0, 651, 136, 651, 0, 124, - 0, 624, 0, 146, 0, 148, 0, 623, 156, 160, - 0, 651, 602, 598, 595, 598, 598, 598, 591, 602, - 605, 593, 600, 595, 590, 589, 583, 596, 90, 587, - 595, 591, 582, 573, 593, 588, 576, 165, 129, 174, - - 176, 178, 595, 180, 0, 182, 184, 651, 0, 81, - 579, 591, 590, 568, 588, 574, 113, 566, 572, 584, - 581, 0, 196, 0, 181, 0, 560, 0, 201, 0, - 203, 0, 578, 0, 564, 576, 568, 565, 556, 561, - 567, 579, 567, 564, 561, 549, 559, 546, 559, 558, - 559, 556, 558, 558, 549, 541, 545, 542, 538, 546, - 556, 532, 539, 531, 651, 651, 550, 651, 545, 548, - 547, 546, 545, 651, 651, 544, 543, 542, 131, 521, - 527, 539, 525, 517, 521, 519, 651, 527, 526, 651, - 518, 537, 512, 513, 517, 506, 507, 507, 651, 530, - - 651, 516, 503, 516, 513, 512, 499, 523, 495, 515, - 510, 513, 651, 509, 651, 651, 651, 651, 651, 651, - 651, 511, 510, 509, 508, 651, 487, 503, 496, 486, - 485, 487, 505, 27, 497, 481, 495, 494, 491, 651, - 482, 476, 482, 485, 497, 651, 485, 474, 475, 651, - 484, 651, 486, 651, 651, 651, 651, 485, 464, 476, - 651, 471, 461, 651, 464, 472, 458, 466, 463, 466, - 456, 462, 478, 455, 476, 464, 450, 451, 463, 465, - 651, 651, 453, 445, 447, 458, 443, 441, 451, 441, - 462, 448, 443, 438, 436, 436, 433, 433, 437, 427, - - 452, 651, 429, 651, 435, 425, 418, 422, 434, 419, - 419, 651, 420, 429, 427, 651, 431, 416, 187, 425, - 414, 415, 435, 404, 409, 415, 431, 417, 403, 402, - 402, 426, 401, 394, 410, 396, 396, 398, 651, 394, - 651, 401, 395, 406, 386, 384, 413, 651, 384, 385, - 386, 385, 391, 651, 382, 395, 390, 383, 373, 402, - 382, 175, 378, 651, 382, 651, 376, 380, 380, 379, - 651, 651, 380, 380, 379, 365, 373, 374, 367, 361, - 373, 359, 362, 651, 369, 360, 370, 364, 379, 361, - 357, 651, 355, 362, 348, 347, 331, 333, 322, 324, - - 310, 309, 308, 285, 651, 200, 184, 651, 651, 191, - 188, 651, 175, 651, 164, 170, 168, 168, 150, 651, - 133, 108, 651, 69, 73, 49, 1, 651, 651, 221, - 229, 237, 245, 253, 261, 269, 277, 285, 293, 301, - 309, 317, 323, 331, 337, 345, 353, 361, 369, 377 + 0, 44, 49, 51, 84, 121, 50, 55, 33, 40, + 688, 687, 58, 64, 66, 68, 686, 685, 700, 705, + 705, 75, 688, 687, 692, 48, 62, 64, 66, 73, + 85, 88, 94, 96, 98, 107, 705, 109, 76, 120, + 135, 139, 0, 705, 705, 705, 153, 684, 705, 705, + 705, 0, 705, 142, 705, 0, 136, 0, 683, 0, + 111, 0, 148, 0, 682, 152, 156, 0, 0, 682, + 705, 138, 97, 142, 95, 155, 147, 156, 166, 162, + 158, 161, 160, 192, 154, 198, 200, 202, 677, 204, + 0, 206, 208, 705, 0, 191, 661, 673, 672, 650, + + 670, 656, 191, 648, 654, 666, 662, 0, 224, 0, + 208, 0, 642, 0, 229, 0, 231, 0, 659, 0, + 668, 209, 211, 667, 213, 227, 230, 236, 232, 237, + 238, 239, 241, 240, 662, 638, 645, 637, 705, 705, + 656, 705, 650, 654, 653, 652, 651, 705, 705, 650, + 649, 648, 231, 627, 633, 645, 631, 242, 245, 629, + 648, 248, 247, 647, 646, 645, 256, 257, 258, 260, + 638, 632, 636, 705, 631, 705, 705, 705, 705, 705, + 705, 705, 634, 633, 632, 631, 705, 610, 252, 259, + 261, 623, 271, 276, 260, 613, 277, 278, 616, 613, + + 705, 587, 705, 590, 705, 705, 705, 705, 581, 282, + 586, 583, 284, 279, 287, 289, 288, 291, 561, 290, + 542, 533, 429, 705, 705, 293, 294, 434, 285, 297, + 300, 295, 410, 430, 292, 302, 705, 296, 304, 404, + 428, 319, 321, 322, 323, 405, 324, 325, 327, 326, + 328, 329, 330, 331, 423, 335, 332, 337, 422, 340, + 341, 342, 344, 421, 392, 349, 352, 353, 355, 360, + 363, 368, 364, 369, 357, 419, 372, 373, 374, 380, + 381, 384, 385, 365, 417, 388, 416, 390, 392, 393, + 207, 394, 397, 396, 398, 403, 400, 407, 175, 172, + + 125, 408, 409, 415, 120, 705, 447, 457, 467, 477, + 487, 497, 507, 517, 522, 529, 539, 549, 559, 567, + 577, 585, 595, 605, 615, 625, 50, 635 } ; -static yyconst flex_int32_t yy_def[451] = +static yyconst flex_int32_t yy_def[329] = { 0, - 430, 430, 431, 431, 432, 432, 433, 433, 434, 434, - 435, 435, 436, 436, 437, 437, 438, 438, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 439, 440, 441, 442, 429, 429, 429, - 429, 429, 429, 429, 443, 429, 429, 429, 444, 50, - 445, 429, 446, 429, 447, 429, 448, 429, 429, 429, - 449, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 439, - - 440, 441, 440, 440, 450, 441, 429, 429, 442, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 443, 429, 444, 429, 445, 429, 446, 429, 447, - 429, 448, 429, 449, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 450, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 0, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429 + 306, 1, 307, 307, 308, 308, 309, 309, 310, 310, + 311, 311, 312, 312, 313, 313, 314, 314, 306, 306, + 306, 306, 306, 315, 306, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 306, 306, 306, 306, 306, 316, + 317, 318, 319, 306, 306, 306, 306, 306, 306, 306, + 306, 320, 306, 306, 306, 321, 47, 322, 306, 323, + 306, 324, 306, 325, 306, 306, 306, 326, 327, 315, + 306, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 306, 306, 316, 317, 318, 317, 317, + 328, 318, 306, 306, 319, 306, 306, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 320, 306, 321, + 306, 322, 306, 323, 306, 324, 306, 325, 306, 326, + 327, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 328, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 315, 315, 327, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 315, 315, + 327, 327, 315, 315, 327, 327, 315, 315, 315, 315, + + 306, 306, 306, 306, 306, 306, 306, 306, 306, 315, + 315, 327, 327, 315, 315, 327, 327, 327, 315, 315, + 327, 327, 306, 306, 306, 315, 327, 315, 315, 327, + 327, 327, 327, 315, 327, 327, 306, 315, 327, 327, + 315, 327, 327, 327, 327, 327, 327, 327, 315, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 315, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + + 327, 327, 327, 327, 327, 0, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306 } ; -static yyconst flex_int32_t yy_nxt[699] = +static yyconst flex_int32_t yy_nxt[752] = { 0, - 429, 429, 21, 45, 45, 429, 22, 64, 64, 429, - 23, 45, 45, 24, 56, 46, 57, 429, 60, 25, - 26, 27, 28, 46, 428, 29, 56, 30, 57, 31, - 32, 33, 34, 64, 64, 35, 36, 37, 38, 39, - 40, 79, 41, 42, 53, 80, 54, 23, 265, 58, - 24, 60, 66, 66, 66, 66, 25, 26, 27, 28, - 91, 58, 29, 92, 30, 266, 31, 32, 33, 34, - 427, 77, 35, 36, 37, 38, 48, 53, 49, 54, - 78, 43, 43, 43, 48, 50, 49, 51, 52, 89, - 69, 69, 426, 50, 70, 51, 52, 73, 425, 93, - - 74, 81, 86, 75, 162, 82, 87, 90, 98, 98, - 151, 53, 163, 54, 94, 88, 83, 98, 98, 53, - 152, 54, 69, 69, 101, 101, 70, 99, 99, 99, - 104, 104, 107, 107, 170, 125, 102, 123, 123, 123, - 123, 424, 105, 429, 108, 110, 171, 429, 129, 129, - 131, 131, 222, 111, 112, 113, 423, 114, 69, 69, - 422, 115, 69, 69, 223, 116, 70, 98, 98, 117, - 118, 119, 120, 99, 99, 99, 101, 101, 104, 104, - 429, 429, 104, 104, 101, 101, 107, 107, 102, 421, - 105, 420, 429, 419, 105, 418, 102, 123, 123, 123, - - 123, 176, 177, 129, 129, 131, 131, 335, 178, 375, - 376, 417, 163, 416, 415, 414, 179, 180, 181, 413, - 336, 20, 20, 20, 20, 20, 20, 20, 20, 44, - 44, 44, 44, 44, 44, 44, 44, 47, 47, 47, - 47, 47, 47, 47, 47, 55, 55, 55, 55, 55, - 55, 55, 55, 59, 59, 59, 59, 59, 59, 59, - 59, 61, 61, 61, 61, 61, 61, 61, 61, 63, - 63, 63, 63, 63, 63, 63, 63, 65, 65, 65, - 65, 65, 65, 65, 65, 67, 67, 67, 67, 67, - 67, 67, 67, 100, 100, 100, 100, 100, 100, 100, - - 100, 103, 103, 103, 103, 103, 103, 103, 103, 106, - 106, 106, 106, 106, 106, 106, 106, 109, 109, 109, - 412, 109, 109, 122, 122, 122, 122, 411, 122, 122, - 122, 124, 124, 124, 124, 124, 124, 126, 126, 126, - 126, 126, 126, 410, 126, 128, 409, 408, 128, 128, - 128, 128, 128, 130, 407, 406, 130, 130, 130, 130, - 130, 132, 132, 132, 132, 132, 132, 405, 132, 134, - 404, 134, 134, 134, 134, 134, 134, 161, 161, 161, - 161, 161, 403, 161, 161, 402, 401, 400, 399, 398, - 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, - - 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, - 377, 374, 373, 372, 371, 370, 369, 368, 367, 366, - 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, - 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 341, 340, 339, 338, 337, 334, - 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, - 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, - 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, - 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, - - 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, - 273, 272, 271, 270, 269, 268, 267, 264, 263, 262, - 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, - 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, - 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, - 231, 230, 229, 228, 227, 226, 225, 224, 221, 220, - 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, - 105, 209, 208, 207, 206, 205, 204, 203, 202, 201, - 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, - 190, 189, 188, 187, 186, 185, 184, 183, 182, 175, - - 174, 173, 172, 169, 168, 167, 166, 165, 164, 105, - 160, 159, 158, 157, 156, 155, 154, 153, 150, 149, - 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, - 138, 137, 136, 135, 133, 127, 121, 97, 96, 95, - 85, 84, 76, 72, 71, 429, 68, 68, 62, 62, - 19, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429 - + 20, 20, 21, 20, 20, 20, 22, 20, 20, 20, + 23, 20, 24, 25, 20, 20, 20, 24, 20, 20, + 26, 24, 24, 27, 24, 24, 28, 24, 29, 30, + 31, 32, 33, 24, 24, 34, 24, 24, 24, 24, + 20, 20, 20, 20, 20, 20, 35, 36, 57, 37, + 38, 41, 41, 41, 41, 57, 121, 53, 69, 54, + 61, 61, 53, 42, 54, 42, 61, 61, 63, 63, + 63, 63, 69, 50, 69, 51, 69, 66, 66, 72, + 50, 67, 51, 69, 75, 73, 74, 39, 39, 39, + 44, 55, 45, 77, 46, 69, 55, 76, 69, 47, + + 84, 84, 48, 49, 69, 69, 69, 69, 79, 84, + 84, 66, 66, 115, 115, 67, 125, 78, 82, 85, + 85, 85, 87, 87, 50, 80, 51, 44, 81, 45, + 69, 46, 83, 123, 88, 69, 47, 90, 90, 48, + 49, 93, 93, 109, 109, 109, 109, 111, 69, 91, + 117, 117, 69, 94, 66, 66, 306, 69, 66, 66, + 306, 50, 67, 51, 96, 69, 69, 124, 69, 122, + 69, 69, 69, 97, 98, 99, 69, 100, 127, 128, + 134, 101, 69, 126, 102, 69, 132, 129, 103, 104, + 105, 106, 131, 133, 84, 84, 130, 85, 85, 85, + + 87, 87, 90, 90, 306, 306, 90, 90, 87, 87, + 93, 93, 88, 144, 91, 136, 306, 69, 91, 69, + 88, 69, 137, 69, 145, 109, 109, 109, 109, 150, + 151, 115, 115, 117, 117, 161, 152, 69, 159, 137, + 69, 158, 69, 153, 154, 155, 69, 69, 69, 69, + 69, 69, 69, 183, 165, 69, 163, 69, 69, 167, + 164, 166, 69, 162, 184, 170, 69, 69, 69, 69, + 69, 69, 210, 212, 168, 169, 193, 190, 189, 198, + 197, 69, 199, 216, 194, 200, 69, 69, 69, 69, + 217, 214, 69, 211, 69, 69, 215, 69, 69, 69, + + 69, 69, 69, 69, 69, 69, 69, 69, 228, 241, + 69, 219, 69, 229, 69, 220, 227, 230, 226, 232, + 231, 238, 242, 243, 247, 234, 244, 239, 249, 69, + 248, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 250, 252, 69, 254, 69, 255, 253, + 69, 69, 69, 262, 69, 263, 258, 257, 259, 69, + 260, 268, 69, 69, 261, 69, 264, 69, 269, 266, + 69, 267, 272, 69, 69, 69, 271, 274, 69, 69, + 270, 277, 69, 69, 69, 283, 275, 279, 276, 278, + 69, 69, 280, 282, 69, 69, 281, 285, 69, 284, + + 69, 291, 69, 69, 69, 286, 69, 69, 69, 288, + 69, 290, 293, 69, 287, 289, 298, 69, 69, 69, + 295, 297, 296, 300, 292, 69, 69, 69, 294, 69, + 273, 69, 69, 265, 299, 301, 303, 256, 69, 251, + 246, 304, 245, 302, 240, 237, 305, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 60, 60, 60, + + 60, 60, 60, 60, 60, 60, 60, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 70, 70, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 95, + 95, 95, 236, 95, 235, 95, 95, 108, 108, 108, + 108, 233, 108, 108, 108, 108, 108, 110, 110, 110, + 110, 110, 110, 110, 110, 112, 112, 112, 112, 112, + 112, 112, 112, 69, 112, 114, 69, 225, 114, 114, + + 114, 114, 114, 114, 114, 116, 224, 223, 116, 116, + 116, 116, 116, 116, 116, 118, 118, 118, 118, 118, + 118, 118, 118, 222, 118, 120, 221, 120, 120, 120, + 120, 120, 120, 120, 120, 135, 135, 135, 135, 135, + 135, 135, 218, 135, 135, 213, 209, 208, 207, 206, + 205, 204, 203, 202, 201, 69, 196, 195, 192, 191, + 188, 187, 186, 185, 182, 181, 180, 179, 178, 177, + 176, 175, 174, 173, 172, 171, 91, 160, 69, 157, + 156, 149, 148, 147, 146, 143, 142, 141, 140, 139, + 138, 91, 69, 119, 113, 107, 71, 69, 68, 306, + + 65, 65, 59, 59, 19, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306 } ; -static yyconst flex_int32_t yy_chk[699] = +static yyconst flex_int32_t yy_chk[752] = { 0, - 0, 0, 1, 3, 3, 0, 1, 13, 13, 0, - 1, 4, 4, 1, 7, 3, 7, 0, 9, 1, - 1, 1, 1, 4, 427, 1, 8, 1, 8, 1, - 1, 1, 1, 14, 14, 1, 1, 1, 1, 2, - 2, 28, 2, 2, 9, 28, 9, 2, 234, 7, - 2, 10, 15, 15, 16, 16, 2, 2, 2, 2, - 34, 8, 2, 34, 2, 234, 2, 2, 2, 2, - 426, 27, 2, 2, 2, 2, 5, 10, 5, 10, - 27, 2, 2, 2, 6, 5, 6, 5, 5, 33, - 22, 22, 425, 6, 22, 6, 6, 25, 424, 35, - - 25, 29, 32, 25, 110, 29, 32, 33, 39, 39, - 89, 5, 110, 5, 35, 32, 29, 40, 40, 6, - 89, 6, 42, 42, 44, 44, 42, 43, 43, 43, - 45, 45, 46, 46, 117, 60, 44, 57, 57, 57, - 57, 422, 45, 60, 46, 50, 117, 60, 64, 64, - 66, 66, 179, 50, 50, 50, 421, 50, 69, 69, - 419, 50, 70, 70, 179, 50, 70, 98, 98, 50, - 50, 50, 50, 99, 99, 99, 100, 100, 101, 101, - 102, 102, 104, 104, 106, 106, 107, 107, 100, 418, - 101, 417, 102, 416, 104, 415, 106, 123, 123, 123, - - 123, 125, 125, 129, 129, 131, 131, 319, 125, 362, - 362, 413, 125, 411, 410, 407, 125, 125, 125, 406, - 319, 430, 430, 430, 430, 430, 430, 430, 430, 431, - 431, 431, 431, 431, 431, 431, 431, 432, 432, 432, - 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, - 433, 433, 433, 434, 434, 434, 434, 434, 434, 434, - 434, 435, 435, 435, 435, 435, 435, 435, 435, 436, - 436, 436, 436, 436, 436, 436, 436, 437, 437, 437, - 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, - 438, 438, 438, 439, 439, 439, 439, 439, 439, 439, - - 439, 440, 440, 440, 440, 440, 440, 440, 440, 441, - 441, 441, 441, 441, 441, 441, 441, 442, 442, 442, - 404, 442, 442, 443, 443, 443, 443, 403, 443, 443, - 443, 444, 444, 444, 444, 444, 444, 445, 445, 445, - 445, 445, 445, 402, 445, 446, 401, 400, 446, 446, - 446, 446, 446, 447, 399, 398, 447, 447, 447, 447, - 447, 448, 448, 448, 448, 448, 448, 397, 448, 449, - 396, 449, 449, 449, 449, 449, 449, 450, 450, 450, - 450, 450, 395, 450, 450, 394, 393, 391, 390, 389, - 388, 387, 386, 385, 383, 382, 381, 380, 379, 378, - - 377, 376, 375, 374, 373, 370, 369, 368, 367, 365, - 363, 361, 360, 359, 358, 357, 356, 355, 353, 352, - 351, 350, 349, 347, 346, 345, 344, 343, 342, 340, - 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, - 328, 327, 326, 325, 324, 323, 322, 321, 320, 318, - 317, 315, 314, 313, 311, 310, 309, 308, 307, 306, - 305, 303, 301, 300, 299, 298, 297, 296, 295, 294, - 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, - 283, 280, 279, 278, 277, 276, 275, 274, 273, 272, - 271, 270, 269, 268, 267, 266, 265, 263, 262, 260, - - 259, 258, 253, 251, 249, 248, 247, 245, 244, 243, - 242, 241, 239, 238, 237, 236, 235, 233, 232, 231, - 230, 229, 228, 227, 225, 224, 223, 222, 214, 212, - 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, - 200, 198, 197, 196, 195, 194, 193, 192, 191, 189, - 188, 186, 185, 184, 183, 182, 181, 180, 178, 177, - 176, 173, 172, 171, 170, 169, 167, 164, 163, 162, - 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, - 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, - 141, 140, 139, 138, 137, 136, 135, 133, 127, 121, - - 120, 119, 118, 116, 115, 114, 113, 112, 111, 103, - 97, 96, 95, 94, 93, 92, 91, 90, 88, 87, - 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, - 76, 75, 74, 73, 68, 62, 51, 38, 37, 36, - 31, 30, 26, 24, 23, 19, 18, 17, 12, 11, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429 - + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 9, 2, + 2, 3, 3, 4, 4, 10, 327, 7, 26, 7, + 13, 13, 8, 3, 8, 4, 14, 14, 15, 15, + 16, 16, 27, 9, 28, 9, 29, 22, 22, 26, + 10, 22, 10, 30, 28, 26, 27, 2, 2, 2, + 5, 7, 5, 30, 5, 31, 8, 29, 32, 5, + + 35, 35, 5, 5, 33, 75, 34, 73, 32, 36, + 36, 38, 38, 61, 61, 38, 75, 31, 34, 39, + 39, 39, 40, 40, 5, 32, 5, 6, 33, 6, + 305, 6, 34, 73, 40, 301, 6, 41, 41, 6, + 6, 42, 42, 54, 54, 54, 54, 57, 72, 41, + 63, 63, 74, 42, 66, 66, 57, 77, 67, 67, + 57, 6, 67, 6, 47, 76, 78, 74, 81, 72, + 83, 82, 80, 47, 47, 47, 79, 47, 77, 78, + 83, 47, 300, 76, 47, 299, 81, 79, 47, 47, + 47, 47, 80, 82, 84, 84, 79, 85, 85, 85, + + 86, 86, 87, 87, 88, 88, 90, 90, 92, 92, + 93, 93, 86, 103, 87, 96, 88, 291, 90, 122, + 92, 123, 96, 125, 103, 109, 109, 109, 109, 111, + 111, 115, 115, 117, 117, 125, 111, 126, 123, 111, + 127, 122, 129, 111, 111, 111, 128, 130, 131, 132, + 134, 133, 158, 153, 129, 159, 127, 163, 162, 131, + 128, 130, 189, 126, 153, 134, 167, 168, 169, 190, + 170, 191, 189, 191, 132, 133, 162, 159, 158, 168, + 167, 193, 169, 195, 163, 170, 194, 197, 198, 214, + 195, 193, 210, 190, 213, 229, 194, 215, 217, 216, + + 220, 218, 235, 226, 227, 232, 238, 230, 214, 229, + 231, 197, 236, 215, 239, 198, 213, 216, 210, 218, + 217, 226, 230, 231, 235, 220, 232, 227, 238, 242, + 236, 243, 244, 245, 247, 248, 250, 249, 251, 252, + 253, 254, 257, 239, 242, 256, 244, 258, 245, 243, + 260, 261, 262, 252, 263, 253, 248, 247, 249, 266, + 250, 258, 267, 268, 251, 269, 254, 275, 260, 256, + 270, 257, 263, 271, 273, 284, 262, 266, 272, 274, + 261, 269, 277, 278, 279, 275, 267, 271, 268, 270, + 280, 281, 272, 274, 282, 283, 273, 278, 286, 277, + + 288, 284, 289, 290, 292, 279, 294, 293, 295, 281, + 297, 283, 288, 296, 280, 282, 294, 298, 302, 303, + 290, 293, 292, 296, 286, 304, 287, 285, 289, 276, + 265, 264, 259, 255, 295, 297, 302, 246, 241, 240, + 234, 303, 233, 298, 228, 223, 304, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 312, 312, 312, + + 312, 312, 312, 312, 312, 312, 312, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 315, 315, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 319, + 319, 319, 222, 319, 221, 319, 319, 320, 320, 320, + 320, 219, 320, 320, 320, 320, 320, 321, 321, 321, + 321, 321, 321, 321, 321, 322, 322, 322, 322, 322, + 322, 322, 322, 212, 322, 323, 211, 209, 323, 323, + + 323, 323, 323, 323, 323, 324, 204, 202, 324, 324, + 324, 324, 324, 324, 324, 325, 325, 325, 325, 325, + 325, 325, 325, 200, 325, 326, 199, 326, 326, 326, + 326, 326, 326, 326, 326, 328, 328, 328, 328, 328, + 328, 328, 196, 328, 328, 192, 188, 186, 185, 184, + 183, 175, 173, 172, 171, 166, 165, 164, 161, 160, + 157, 156, 155, 154, 152, 151, 150, 147, 146, 145, + 144, 143, 141, 138, 137, 136, 135, 124, 121, 119, + 113, 107, 106, 105, 104, 102, 101, 100, 99, 98, + 97, 89, 70, 65, 59, 48, 25, 24, 23, 19, + + 18, 17, 12, 11, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306 } ; static yy_state_type yy_last_accepting_state; @@ -798,6 +771,7 @@ char *gabc_score_determination_text; #include <string.h> #include "struct.h" #include "messages.h" +#include "bool.h" #include "support.h" #include "gabc.h" @@ -805,6 +779,7 @@ char *gabc_score_determination_text; #include "gabc-score-determination-y.h" static unsigned char style_stack = 0; +static bool eof_found = false; #define YY_NO_INPUT @@ -853,7 +828,7 @@ static unsigned char style_stack = 0; for (a) single-line values, ending with a semicolon at end of line or a double semicolon, (b) multi-line values, which end at a double semicolon. */ -#line 857 "gabc/gabc-score-determination-l.c" +#line 832 "gabc/gabc-score-determination-l.c" #define INITIAL 0 #define attribute 1 @@ -1075,9 +1050,9 @@ YY_DECL } { -#line 106 "gabc/gabc-score-determination.l" +#line 108 "gabc/gabc-score-determination.l" -#line 1081 "gabc/gabc-score-determination-l.c" +#line 1056 "gabc/gabc-score-determination-l.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -1105,13 +1080,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 430 ) + if ( yy_current_state >= 307 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 651 ); + while ( yy_base[yy_current_state] != 705 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1137,7 +1112,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 107 "gabc/gabc-score-determination.l" +#line 109 "gabc/gabc-score-determination.l" { /* BOM written by a lot of windows softwares when they write UTF-8 */ } @@ -1145,14 +1120,14 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 110 "gabc/gabc-score-determination.l" +#line 112 "gabc/gabc-score-determination.l" { /* ignoring empty lines */ } YY_BREAK case 3: YY_RULE_SETUP -#line 113 "gabc/gabc-score-determination.l" +#line 115 "gabc/gabc-score-determination.l" { BEGIN(inicomments); } @@ -1160,21 +1135,21 @@ YY_RULE_SETUP case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 116 "gabc/gabc-score-determination.l" +#line 118 "gabc/gabc-score-determination.l" { BEGIN(INITIAL); } YY_BREAK case 5: YY_RULE_SETUP -#line 119 "gabc/gabc-score-determination.l" +#line 121 "gabc/gabc-score-determination.l" { /* ignored */ } YY_BREAK case 6: YY_RULE_SETUP -#line 122 "gabc/gabc-score-determination.l" +#line 124 "gabc/gabc-score-determination.l" { BEGIN(attribute); return COLON; @@ -1183,7 +1158,7 @@ YY_RULE_SETUP case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 126 "gabc/gabc-score-determination.l" +#line 128 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); @@ -1193,7 +1168,7 @@ YY_RULE_SETUP case 8: /* rule 8 can match eol */ YY_RULE_SETUP -#line 131 "gabc/gabc-score-determination.l" +#line 133 "gabc/gabc-score-determination.l" { BEGIN(INITIAL); return SEMICOLON; @@ -1201,7 +1176,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 135 "gabc/gabc-score-determination.l" +#line 137 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.character = gabc_score_determination_text[5]; return DEF_MACRO; @@ -1209,268 +1184,206 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 139 "gabc/gabc-score-determination.l" +#line 141 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NUMBER_OF_VOICES; } YY_BREAK case 11: YY_RULE_SETUP -#line 142 "gabc/gabc-score-determination.l" +#line 146 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NAME; } YY_BREAK case 12: YY_RULE_SETUP -#line 145 "gabc/gabc-score-determination.l" +#line 151 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return SCORE_COPYRIGHT; } YY_BREAK case 13: YY_RULE_SETUP -#line 148 "gabc/gabc-score-determination.l" +#line 156 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return GABC_COPYRIGHT; } YY_BREAK case 14: YY_RULE_SETUP -#line 151 "gabc/gabc-score-determination.l" +#line 161 "gabc/gabc-score-determination.l" { - return OFFICE_PART; + /* DEPRECATED by 4.1 */ + return INITIAL_STYLE; } YY_BREAK case 15: YY_RULE_SETUP -#line 154 "gabc/gabc-score-determination.l" +#line 165 "gabc/gabc-score-determination.l" { - return OCCASION; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE; } YY_BREAK case 16: YY_RULE_SETUP -#line 157 "gabc/gabc-score-determination.l" +#line 170 "gabc/gabc-score-determination.l" { - return METER; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_MODIFIER; } YY_BREAK case 17: YY_RULE_SETUP -#line 160 "gabc/gabc-score-determination.l" +#line 175 "gabc/gabc-score-determination.l" { - return COMMENTARY; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_DIFFERENTIA; } YY_BREAK case 18: YY_RULE_SETUP -#line 163 "gabc/gabc-score-determination.l" +#line 180 "gabc/gabc-score-determination.l" { - return ARRANGER; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return ANNOTATION; } YY_BREAK case 19: YY_RULE_SETUP -#line 166 "gabc/gabc-score-determination.l" +#line 185 "gabc/gabc-score-determination.l" { - return GABC_VERSION; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return AUTHOR; } YY_BREAK case 20: YY_RULE_SETUP -#line 169 "gabc/gabc-score-determination.l" +#line 190 "gabc/gabc-score-determination.l" { - return INITIAL_STYLE; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return LANGUAGE; } YY_BREAK case 21: YY_RULE_SETUP -#line 172 "gabc/gabc-score-determination.l" +#line 195 "gabc/gabc-score-determination.l" { - return MODE; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return STAFF_LINES; } YY_BREAK case 22: YY_RULE_SETUP -#line 175 "gabc/gabc-score-determination.l" +#line 200 "gabc/gabc-score-determination.l" { - return ANNOTATION; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return NABC_LINES; } YY_BREAK case 23: YY_RULE_SETUP -#line 178 "gabc/gabc-score-determination.l" +#line 205 "gabc/gabc-score-determination.l" { - return AUTHOR; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return ORISCUS_ORIENTATION; } YY_BREAK case 24: YY_RULE_SETUP -#line 181 "gabc/gabc-score-determination.l" +#line 210 "gabc/gabc-score-determination.l" { - return DATE; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return OTHER_HEADER; } YY_BREAK case 25: YY_RULE_SETUP -#line 184 "gabc/gabc-score-determination.l" -{ - return MANUSCRIPT; - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 187 "gabc/gabc-score-determination.l" -{ - return MANUSCRIPT_REFERENCE; - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 190 "gabc/gabc-score-determination.l" -{ - return MANUSCRIPT_STORAGE_PLACE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 193 "gabc/gabc-score-determination.l" -{ - return BOOK; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 196 "gabc/gabc-score-determination.l" -{ - return TRANSCRIBER; - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 199 "gabc/gabc-score-determination.l" -{ - return GENERATED_BY; - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 202 "gabc/gabc-score-determination.l" -{ - return CENTERING_SCHEME; - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 205 "gabc/gabc-score-determination.l" -{ - return LANGUAGE; - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 208 "gabc/gabc-score-determination.l" -{ - return TRANSCRIPTION_DATE; - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 211 "gabc/gabc-score-determination.l" -{ - return STYLE; - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 214 "gabc/gabc-score-determination.l" -{ - return VIRGULA_POSITION; - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 217 "gabc/gabc-score-determination.l" -{ - return GREGORIOTEX_FONT; - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 220 "gabc/gabc-score-determination.l" -{ - return NABC_LINES; - } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 223 "gabc/gabc-score-determination.l" -{ - return USER_NOTES; - } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 226 "gabc/gabc-score-determination.l" +#line 215 "gabc/gabc-score-determination.l" { return VOICE_CHANGE; } YY_BREAK -case 40: -/* rule 40 can match eol */ +case 26: +/* rule 26 can match eol */ YY_RULE_SETUP -#line 229 "gabc/gabc-score-determination.l" +#line 218 "gabc/gabc-score-determination.l" { BEGIN(score); return END_OF_DEFINITIONS; } YY_BREAK -case 41: +case 27: YY_RULE_SETUP -#line 233 "gabc/gabc-score-determination.l" +#line 222 "gabc/gabc-score-determination.l" { gregorio_messagef("det_score", VERBOSITY_ERROR, 0, _("unrecognized character: \"%c\" in definition part"), gabc_score_determination_text[0]); } YY_BREAK -case 42: -/* rule 42 can match eol */ +case 28: +/* rule 28 can match eol */ YY_RULE_SETUP -#line 238 "gabc/gabc-score-determination.l" +#line 227 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 43: +case 29: YY_RULE_SETUP -#line 243 "gabc/gabc-score-determination.l" +#line 232 "gabc/gabc-score-determination.l" +{ + return HYPHEN; + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 235 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return I_BEGINNING; } YY_BREAK -case 44: +case 31: YY_RULE_SETUP -#line 248 "gabc/gabc-score-determination.l" +#line 240 "gabc/gabc-score-determination.l" { return BNLBA; } YY_BREAK -case 45: +case 32: YY_RULE_SETUP -#line 251 "gabc/gabc-score-determination.l" +#line 243 "gabc/gabc-score-determination.l" { return ENLBA; } YY_BREAK -case 46: +case 33: YY_RULE_SETUP -#line 254 "gabc/gabc-score-determination.l" +#line 246 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1479,18 +1392,18 @@ YY_RULE_SETUP return I_END; } YY_BREAK -case 47: +case 34: YY_RULE_SETUP -#line 261 "gabc/gabc-score-determination.l" +#line 253 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return TT_BEGINNING; } YY_BREAK -case 48: +case 35: YY_RULE_SETUP -#line 266 "gabc/gabc-score-determination.l" +#line 258 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1499,18 +1412,18 @@ YY_RULE_SETUP return TT_END; } YY_BREAK -case 49: +case 36: YY_RULE_SETUP -#line 273 "gabc/gabc-score-determination.l" +#line 265 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return UL_BEGINNING; } YY_BREAK -case 50: +case 37: YY_RULE_SETUP -#line 278 "gabc/gabc-score-determination.l" +#line 270 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1519,18 +1432,18 @@ YY_RULE_SETUP return UL_END; } YY_BREAK -case 51: +case 38: YY_RULE_SETUP -#line 285 "gabc/gabc-score-determination.l" +#line 277 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return C_BEGINNING; } YY_BREAK -case 52: +case 39: YY_RULE_SETUP -#line 290 "gabc/gabc-score-determination.l" +#line 282 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1539,18 +1452,18 @@ YY_RULE_SETUP return C_END; } YY_BREAK -case 53: +case 40: YY_RULE_SETUP -#line 297 "gabc/gabc-score-determination.l" +#line 289 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return B_BEGINNING; } YY_BREAK -case 54: +case 41: YY_RULE_SETUP -#line 302 "gabc/gabc-score-determination.l" +#line 294 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1559,18 +1472,18 @@ YY_RULE_SETUP return B_END; } YY_BREAK -case 55: +case 42: YY_RULE_SETUP -#line 309 "gabc/gabc-score-determination.l" +#line 301 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return SC_BEGINNING; } YY_BREAK -case 56: +case 43: YY_RULE_SETUP -#line 314 "gabc/gabc-score-determination.l" +#line 306 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1579,18 +1492,18 @@ YY_RULE_SETUP return SC_END; } YY_BREAK -case 57: +case 44: YY_RULE_SETUP -#line 321 "gabc/gabc-score-determination.l" +#line 313 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return SP_BEGINNING; } YY_BREAK -case 58: +case 45: YY_RULE_SETUP -#line 326 "gabc/gabc-score-determination.l" +#line 318 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1599,49 +1512,49 @@ YY_RULE_SETUP return SP_END; } YY_BREAK -case 59: -/* rule 59 can match eol */ +case 46: +/* rule 46 can match eol */ YY_RULE_SETUP -#line 333 "gabc/gabc-score-determination.l" +#line 325 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 60: +case 47: YY_RULE_SETUP -#line 338 "gabc/gabc-score-determination.l" +#line 330 "gabc/gabc-score-determination.l" { BEGIN(comments); } YY_BREAK -case 61: -/* rule 61 can match eol */ +case 48: +/* rule 48 can match eol */ YY_RULE_SETUP -#line 341 "gabc/gabc-score-determination.l" +#line 333 "gabc/gabc-score-determination.l" { BEGIN(score); } YY_BREAK -case 62: +case 49: YY_RULE_SETUP -#line 344 "gabc/gabc-score-determination.l" +#line 336 "gabc/gabc-score-determination.l" { /* ignored */ } YY_BREAK -case 63: +case 50: YY_RULE_SETUP -#line 347 "gabc/gabc-score-determination.l" +#line 339 "gabc/gabc-score-determination.l" { BEGIN(verb); return VERB_BEGINNING; } YY_BREAK -case 64: +case 51: YY_RULE_SETUP -#line 351 "gabc/gabc-score-determination.l" +#line 343 "gabc/gabc-score-determination.l" { if (style_stack == 0) { BEGIN(score); @@ -1651,155 +1564,149 @@ YY_RULE_SETUP return VERB_END; } YY_BREAK -case 65: -/* rule 65 can match eol */ +case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 359 "gabc/gabc-score-determination.l" +#line 351 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 66: +case 53: YY_RULE_SETUP -#line 364 "gabc/gabc-score-determination.l" +#line 356 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 67: +case 54: YY_RULE_SETUP -#line 369 "gabc/gabc-score-determination.l" +#line 361 "gabc/gabc-score-determination.l" { return CENTER_BEGINNING; } YY_BREAK -case 68: +case 55: YY_RULE_SETUP -#line 372 "gabc/gabc-score-determination.l" +#line 364 "gabc/gabc-score-determination.l" { return CENTER_END; } YY_BREAK -case 69: +case 56: YY_RULE_SETUP -#line 375 "gabc/gabc-score-determination.l" +#line 367 "gabc/gabc-score-determination.l" { BEGIN(alt); return ALT_BEGIN; } YY_BREAK -case 70: -/* rule 70 can match eol */ +case 57: +/* rule 57 can match eol */ YY_RULE_SETUP -#line 379 "gabc/gabc-score-determination.l" +#line 371 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 71: +case 58: YY_RULE_SETUP -#line 384 "gabc/gabc-score-determination.l" +#line 376 "gabc/gabc-score-determination.l" { BEGIN(score); return ALT_END; } YY_BREAK -case 72: +case 59: YY_RULE_SETUP -#line 388 "gabc/gabc-score-determination.l" +#line 380 "gabc/gabc-score-determination.l" { return EUOUAE_B; } YY_BREAK -case 73: +case 60: YY_RULE_SETUP -#line 391 "gabc/gabc-score-determination.l" +#line 383 "gabc/gabc-score-determination.l" { return EUOUAE_E; } YY_BREAK -case 74: +case 61: YY_RULE_SETUP -#line 394 "gabc/gabc-score-determination.l" +#line 386 "gabc/gabc-score-determination.l" { return TRANSLATION_CENTER_END; } YY_BREAK -case 75: +case 62: YY_RULE_SETUP -#line 397 "gabc/gabc-score-determination.l" +#line 389 "gabc/gabc-score-determination.l" { return TRANSLATION_BEGINNING; } YY_BREAK -case 76: +case 63: YY_RULE_SETUP -#line 400 "gabc/gabc-score-determination.l" +#line 392 "gabc/gabc-score-determination.l" { return TRANSLATION_END; } YY_BREAK -case 77: +case 64: YY_RULE_SETUP -#line 403 "gabc/gabc-score-determination.l" +#line 395 "gabc/gabc-score-determination.l" { BEGIN(notes); return OPENING_BRACKET; } YY_BREAK -case 78: -/* rule 78 can match eol */ +case 65: +/* rule 65 can match eol */ YY_RULE_SETUP -#line 407 "gabc/gabc-score-determination.l" +#line 399 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return NOTES; } YY_BREAK -case 79: +case 66: YY_RULE_SETUP -#line 412 "gabc/gabc-score-determination.l" +#line 404 "gabc/gabc-score-determination.l" { return VOICE_CUT; } YY_BREAK -case 80: +case 67: YY_RULE_SETUP -#line 415 "gabc/gabc-score-determination.l" +#line 407 "gabc/gabc-score-determination.l" { return NABC_CUT; } YY_BREAK -case 81: +case 68: YY_RULE_SETUP -#line 418 "gabc/gabc-score-determination.l" +#line 410 "gabc/gabc-score-determination.l" { BEGIN(score); return CLOSING_BRACKET; } YY_BREAK -case 82: -/* rule 82 can match eol */ +case 69: +/* rule 69 can match eol */ YY_RULE_SETUP -#line 422 "gabc/gabc-score-determination.l" +#line 414 "gabc/gabc-score-determination.l" { BEGIN(score); return CLOSING_BRACKET_WITH_SPACE; } YY_BREAK -case 83: -YY_RULE_SETUP -#line 426 "gabc/gabc-score-determination.l" -ECHO; - YY_BREAK -#line 1803 "gabc/gabc-score-determination-l.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(attribute): case YY_STATE_EOF(score): @@ -1809,7 +1716,22 @@ case YY_STATE_EOF(verb): case YY_STATE_EOF(comments): case YY_STATE_EOF(inicomments): case YY_STATE_EOF(alt): - yyterminate(); +#line 418 "gabc/gabc-score-determination.l" +{ + if (!eof_found) { + eof_found = true; + return END_OF_FILE; + } else { + yyterminate(); + } + } + YY_BREAK +case 70: +YY_RULE_SETUP +#line 426 "gabc/gabc-score-determination.l" +ECHO; + YY_BREAK +#line 1735 "gabc/gabc-score-determination-l.c" case YY_END_OF_BUFFER: { @@ -2101,7 +2023,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 430 ) + if ( yy_current_state >= 307 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2129,11 +2051,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 430 ) + if ( yy_current_state >= 307 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 429); + yy_is_jam = (yy_current_state == 306); return yy_is_jam ? 0 : yy_current_state; } diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c index f3ecdfb6f08..2f27b7c54d1 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c @@ -168,8 +168,9 @@ static int voice; static gregorio_center_determination center_is_determined; /* current_key is... the current key... updated by each notes determination * (for key changes) */ -static int current_key = DEFAULT_KEY; +static int current_key; static bool got_language = false; +static bool got_staff_lines = false; static bool started_first_word = false; static struct sha1_ctx digester; @@ -187,7 +188,7 @@ static void gabc_score_determination_error(const char *error_str) VERBOSITY_ERROR, 0); } -static void gabc_fix_custos(gregorio_score *score_to_check) +static void fix_custos(gregorio_score *score_to_check) { gregorio_syllable *current_syllable; gregorio_element *current_element; @@ -200,7 +201,8 @@ static void gabc_fix_custos(gregorio_score *score_to_check) || !score_to_check->first_voice_info) { return; } - current_key = score_to_check->first_voice_info->initial_key; + current_key = gregorio_calculate_new_key( + score_to_check->first_voice_info->initial_clef); current_syllable = score_to_check->first_syllable; while (current_syllable) { current_element = (current_syllable->elements)[0]; @@ -210,55 +212,34 @@ static void gabc_fix_custos(gregorio_score *score_to_check) pitch = custo_element->u.misc.pitched.pitch; /* we look for the key */ while (current_element) { - switch (current_element->type) { - case GRE_C_KEY_CHANGE: - case GRE_C_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, + if (current_element->type == GRE_CLEF) { + pitch = gregorio_determine_next_pitch( current_syllable, current_element, NULL); - newkey = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); + newkey = gregorio_calculate_new_key( + current_element->u.misc.clef); pitch_difference = (char) newkey - (char) current_key; pitch -= pitch_difference; current_key = newkey; - break; - case GRE_F_KEY_CHANGE: - case GRE_F_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, - current_element, NULL); - newkey = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); - pitch_difference = (char) newkey - (char) current_key; - pitch -= pitch_difference; - current_key = newkey; - break; - default: - break; } if (!custo_element->u.misc.pitched.force_pitch) { while (pitch < LOWEST_PITCH) { pitch += 7; } - while (pitch > HIGHEST_PITCH) { + while (pitch > score_to_check->highest_pitch) { pitch -= 7; } custo_element->u.misc.pitched.pitch = pitch; } assert(custo_element->u.misc.pitched.pitch >= LOWEST_PITCH && custo_element->u.misc.pitched.pitch - <= HIGHEST_PITCH); + <= score_to_check->highest_pitch); current_element = current_element->next; } } if (current_element) { - if (current_element->type == GRE_C_KEY_CHANGE - || current_element->type == GRE_C_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); - } - if (current_element->type == GRE_F_KEY_CHANGE - || current_element->type == GRE_F_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); + if (current_element->type == GRE_CLEF) { + current_key = gregorio_calculate_new_key( + current_element->u.misc.clef); } current_element = current_element->next; } @@ -317,9 +298,12 @@ static void initialize_variables(void) no_linebreak_area = NLBA_NORMAL; euouae = EUOUAE_NORMAL; center_is_determined = CENTER_NOT_DETERMINED; + current_key = gregorio_calculate_new_key(gregorio_default_clef); for (i = 0; i < 10; i++) { macros[i] = NULL; } + got_language = false; + got_staff_lines = false; started_first_word = false; } @@ -340,8 +324,7 @@ static void free_variables(void) /* see whether a voice_info is empty */ static int voice_info_is_not_empty(const gregorio_voice_info *voice_info) { - return (voice_info->initial_key != 5 || voice_info->style - || voice_info->virgula_position); + return (voice_info->initial_clef.line); } /* @@ -492,24 +475,23 @@ static void gregorio_set_translation_center_beginning( static void rebuild_characters(void) { - bool has_initial = score->initial_style != NO_INITIAL; - /* we rebuild the first syllable text if it is the first syllable, or if * it is the second when the first has no text. * it is a patch for cases like (c4) Al(ab)le(ab) */ - if ((!score->first_syllable && has_initial && current_character) + if ((!score->first_syllable && current_character) || (current_syllable && !current_syllable->previous_syllable && !current_syllable->text && current_character)) { - gregorio_rebuild_first_syllable(¤t_character, has_initial); + /* leave the first syllable text untouched at this time */ + gregorio_go_to_first_character_c(¤t_character); started_first_word = true; - } - - gregorio_rebuild_characters(¤t_character, center_is_determined, - has_initial); + } else { + gregorio_rebuild_characters(¤t_character, center_is_determined, + false); - if (started_first_word) { - gregorio_set_first_word(¤t_character); + if (started_first_word) { + gregorio_set_first_word(¤t_character); + } } } @@ -597,26 +579,6 @@ static void gregorio_gabc_add_text(char *mbcharacters) } /* - * the function called when centering_scheme is seen in gabc - */ -static void set_centering_scheme(char *sc) -{ - gregorio_message("\"centering-scheme\" header is deprecated. Please use " - "\\gresetlyriccentering in TeX instead.", "set_centering_scheme", - VERBOSITY_DEPRECATION, 0); - if (strncmp((const char *) sc, "latine", 6) == 0) { - score->centering = SCHEME_VOWEL; - return; - } - if (strncmp((const char *) sc, "english", 6) == 0) { - score->centering = SCHEME_SYLLABLE; - return; - } - gregorio_message("centering-scheme unknown value: must be \"latine\" " - "or \"english\"", "set_centering_scheme", VERBOSITY_WARNING, 0); -} - -/* * * The two functions called when lex returns a style, we simply add it. All the * complex things will be done by the function after... @@ -638,6 +600,96 @@ void gabc_digest(const void *const buf, const size_t size) sha1_process_bytes(buf, size, &digester); } +static void determine_oriscus_orientation(gregorio_score *score) { + gregorio_syllable *syllable; + gregorio_element *element; + gregorio_glyph *glyph; + gregorio_note *note; + gregorio_note *oriscus = NULL; + + for (syllable = score->first_syllable; syllable; + syllable = syllable->next_syllable) { + for (element = syllable->elements[0]; element; + element = element->next) { + if (element->type == GRE_ELEMENT) { + for (glyph = element->u.first_glyph; glyph; + glyph = glyph->next) { + if (glyph->type == GRE_GLYPH) { + for (note = glyph->u.notes.first_note; note; + note = note->next) { + if (note->type == GRE_NOTE) { + if (oriscus) { + if (note->u.note.pitch + < oriscus->u.note.pitch) { + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } else { /* ascending or the same */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_ASCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_ASCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } + oriscus = NULL; + } + + switch (note->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus = note; + break; + + default: + break; + } + } + } + } + } + } + } + } + + if (oriscus) { + /* oriscus at the end of the score */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } +} + /* * The "main" function. It is the function that is called when we have to read * a gabc file. It takes a file descriptor, that is to say a file that is @@ -662,8 +714,11 @@ gregorio_score *gabc_read_score(FILE *f_in) /* the flex/bison main call, it will build the score (that we have * initialized) */ gabc_score_determination_parse(); - gregorio_fix_initial_keys(score, DEFAULT_KEY); - gabc_fix_custos(score); + if (!score->legacy_oriscus_orientation) { + determine_oriscus_orientation(score); + } + gregorio_fix_initial_keys(score, gregorio_default_clef); + fix_custos(score); free_variables(); /* the we check the validity and integrity of the score we have built. */ if (!check_score_integrity(score)) { @@ -685,11 +740,11 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { if (nabc_state == 0) { if (!elements[voice]) { elements[voice] = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); current_element = elements[voice]; } else { new_elements = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); last_element = elements[voice]; while(last_element->next) { last_element = last_element->next; @@ -716,7 +771,7 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { } } -#line 720 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */ +#line 775 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -751,35 +806,35 @@ extern int gabc_score_determination_debug; # define YYTOKENTYPE enum yytokentype { - ATTRIBUTE = 258, - COLON = 259, - SEMICOLON = 260, - OFFICE_PART = 261, - ANNOTATION = 262, - AUTHOR = 263, - DATE = 264, - MANUSCRIPT = 265, - MANUSCRIPT_REFERENCE = 266, - MANUSCRIPT_STORAGE_PLACE = 267, - TRANSCRIBER = 268, - TRANSCRIPTION_DATE = 269, - BOOK = 270, - STYLE = 271, - VIRGULA_POSITION = 272, - INITIAL_STYLE = 273, - MODE = 274, - GREGORIOTEX_FONT = 275, - GENERATED_BY = 276, - NAME = 277, - OPENING_BRACKET = 278, - NOTES = 279, - VOICE_CUT = 280, - CLOSING_BRACKET = 281, - NUMBER_OF_VOICES = 282, - VOICE_CHANGE = 283, - END_OF_DEFINITIONS = 284, - SPACE = 285, - CHARACTERS = 286, + NAME = 258, + AUTHOR = 259, + GABC_COPYRIGHT = 260, + SCORE_COPYRIGHT = 261, + NUMBER_OF_VOICES = 262, + LANGUAGE = 263, + STAFF_LINES = 264, + ORISCUS_ORIENTATION = 265, + DEF_MACRO = 266, + OTHER_HEADER = 267, + ANNOTATION = 268, + MODE = 269, + MODE_MODIFIER = 270, + MODE_DIFFERENTIA = 271, + INITIAL_STYLE = 272, + VOICE_CUT = 273, + VOICE_CHANGE = 274, + END_OF_DEFINITIONS = 275, + END_OF_FILE = 276, + COLON = 277, + SEMICOLON = 278, + SPACE = 279, + CHARACTERS = 280, + NOTES = 281, + HYPHEN = 282, + ATTRIBUTE = 283, + OPENING_BRACKET = 284, + CLOSING_BRACKET = 285, + CLOSING_BRACKET_WITH_SPACE = 286, I_BEGINNING = 287, I_END = 288, TT_BEGINNING = 289, @@ -799,61 +854,49 @@ extern int gabc_score_determination_debug; VERB_END = 303, CENTER_BEGINNING = 304, CENTER_END = 305, - CLOSING_BRACKET_WITH_SPACE = 306, - TRANSLATION_BEGINNING = 307, - TRANSLATION_END = 308, - GABC_COPYRIGHT = 309, - SCORE_COPYRIGHT = 310, - OCCASION = 311, - METER = 312, - COMMENTARY = 313, - ARRANGER = 314, - GABC_VERSION = 315, - USER_NOTES = 316, - DEF_MACRO = 317, - ALT_BEGIN = 318, - ALT_END = 319, - CENTERING_SCHEME = 320, - TRANSLATION_CENTER_END = 321, - BNLBA = 322, - ENLBA = 323, - EUOUAE_B = 324, - EUOUAE_E = 325, - NABC_CUT = 326, - NABC_LINES = 327, - LANGUAGE = 328 + TRANSLATION_BEGINNING = 306, + TRANSLATION_END = 307, + TRANSLATION_CENTER_END = 308, + ALT_BEGIN = 309, + ALT_END = 310, + BNLBA = 311, + ENLBA = 312, + EUOUAE_B = 313, + EUOUAE_E = 314, + NABC_CUT = 315, + NABC_LINES = 316 }; #endif /* Tokens. */ -#define ATTRIBUTE 258 -#define COLON 259 -#define SEMICOLON 260 -#define OFFICE_PART 261 -#define ANNOTATION 262 -#define AUTHOR 263 -#define DATE 264 -#define MANUSCRIPT 265 -#define MANUSCRIPT_REFERENCE 266 -#define MANUSCRIPT_STORAGE_PLACE 267 -#define TRANSCRIBER 268 -#define TRANSCRIPTION_DATE 269 -#define BOOK 270 -#define STYLE 271 -#define VIRGULA_POSITION 272 -#define INITIAL_STYLE 273 -#define MODE 274 -#define GREGORIOTEX_FONT 275 -#define GENERATED_BY 276 -#define NAME 277 -#define OPENING_BRACKET 278 -#define NOTES 279 -#define VOICE_CUT 280 -#define CLOSING_BRACKET 281 -#define NUMBER_OF_VOICES 282 -#define VOICE_CHANGE 283 -#define END_OF_DEFINITIONS 284 -#define SPACE 285 -#define CHARACTERS 286 +#define NAME 258 +#define AUTHOR 259 +#define GABC_COPYRIGHT 260 +#define SCORE_COPYRIGHT 261 +#define NUMBER_OF_VOICES 262 +#define LANGUAGE 263 +#define STAFF_LINES 264 +#define ORISCUS_ORIENTATION 265 +#define DEF_MACRO 266 +#define OTHER_HEADER 267 +#define ANNOTATION 268 +#define MODE 269 +#define MODE_MODIFIER 270 +#define MODE_DIFFERENTIA 271 +#define INITIAL_STYLE 272 +#define VOICE_CUT 273 +#define VOICE_CHANGE 274 +#define END_OF_DEFINITIONS 275 +#define END_OF_FILE 276 +#define COLON 277 +#define SEMICOLON 278 +#define SPACE 279 +#define CHARACTERS 280 +#define NOTES 281 +#define HYPHEN 282 +#define ATTRIBUTE 283 +#define OPENING_BRACKET 284 +#define CLOSING_BRACKET 285 +#define CLOSING_BRACKET_WITH_SPACE 286 #define I_BEGINNING 287 #define I_END 288 #define TT_BEGINNING 289 @@ -873,29 +916,17 @@ extern int gabc_score_determination_debug; #define VERB_END 303 #define CENTER_BEGINNING 304 #define CENTER_END 305 -#define CLOSING_BRACKET_WITH_SPACE 306 -#define TRANSLATION_BEGINNING 307 -#define TRANSLATION_END 308 -#define GABC_COPYRIGHT 309 -#define SCORE_COPYRIGHT 310 -#define OCCASION 311 -#define METER 312 -#define COMMENTARY 313 -#define ARRANGER 314 -#define GABC_VERSION 315 -#define USER_NOTES 316 -#define DEF_MACRO 317 -#define ALT_BEGIN 318 -#define ALT_END 319 -#define CENTERING_SCHEME 320 -#define TRANSLATION_CENTER_END 321 -#define BNLBA 322 -#define ENLBA 323 -#define EUOUAE_B 324 -#define EUOUAE_E 325 -#define NABC_CUT 326 -#define NABC_LINES 327 -#define LANGUAGE 328 +#define TRANSLATION_BEGINNING 306 +#define TRANSLATION_END 307 +#define TRANSLATION_CENTER_END 308 +#define ALT_BEGIN 309 +#define ALT_END 310 +#define BNLBA 311 +#define ENLBA 312 +#define EUOUAE_B 313 +#define EUOUAE_E 314 +#define NABC_CUT 315 +#define NABC_LINES 316 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -927,7 +958,7 @@ int gabc_score_determination_parse (void); /* Copy the second part of user declarations. */ -#line 931 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */ +#line 962 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */ #ifdef short # undef short @@ -1171,21 +1202,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 194 +#define YYLAST 175 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 74 +#define YYNTOKENS 62 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 51 +#define YYNNTS 23 /* YYNRULES -- Number of rules. */ -#define YYNRULES 118 +#define YYNRULES 82 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 162 +#define YYNSTATES 117 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 328 +#define YYMAXUTOK 316 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1225,26 +1256,22 @@ static const yytype_uint8 yytranslate[] = 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73 + 55, 56, 57, 58, 59, 60, 61 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 672, 672, 676, 681, 682, 686, 699, 706, 717, - 724, 733, 740, 747, 757, 764, 771, 778, 785, 792, - 802, 812, 823, 832, 843, 850, 857, 864, 872, 880, - 887, 894, 902, 913, 926, 933, 939, 943, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, - 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 984, - 985, 989, 1011, 1034, 1047, 1060, 1065, 1074, 1077, 1080, - 1083, 1086, 1089, 1092, 1095, 1098, 1107, 1110, 1113, 1116, - 1119, 1122, 1125, 1128, 1131, 1140, 1143, 1149, 1152, 1158, - 1159, 1162, 1163, 1164, 1165, 1168, 1169, 1173, 1179, 1182, - 1188, 1194, 1199, 1205, 1208, 1214, 1215, 1218, 1219 + 0, 736, 736, 740, 745, 746, 750, 754, 760, 770, + 775, 784, 790, 795, 800, 805, 810, 815, 823, 831, + 841, 850, 855, 859, 862, 867, 868, 872, 894, 917, + 930, 943, 948, 957, 958, 959, 963, 966, 969, 972, + 975, 978, 981, 984, 987, 996, 999, 1002, 1005, 1008, + 1011, 1014, 1017, 1020, 1029, 1032, 1038, 1041, 1047, 1048, + 1051, 1052, 1053, 1054, 1058, 1061, 1066, 1067, 1068, 1072, + 1078, 1081, 1087, 1093, 1098, 1106, 1109, 1118, 1121, 1127, + 1128, 1131, 1132 }; #endif @@ -1253,40 +1280,25 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "ATTRIBUTE", "COLON", "SEMICOLON", - "OFFICE_PART", "ANNOTATION", "AUTHOR", "DATE", "MANUSCRIPT", - "MANUSCRIPT_REFERENCE", "MANUSCRIPT_STORAGE_PLACE", "TRANSCRIBER", - "TRANSCRIPTION_DATE", "BOOK", "STYLE", "VIRGULA_POSITION", - "INITIAL_STYLE", "MODE", "GREGORIOTEX_FONT", "GENERATED_BY", "NAME", - "OPENING_BRACKET", "NOTES", "VOICE_CUT", "CLOSING_BRACKET", - "NUMBER_OF_VOICES", "VOICE_CHANGE", "END_OF_DEFINITIONS", "SPACE", - "CHARACTERS", "I_BEGINNING", "I_END", "TT_BEGINNING", "TT_END", - "UL_BEGINNING", "UL_END", "C_BEGINNING", "C_END", "B_BEGINNING", "B_END", - "SC_BEGINNING", "SC_END", "SP_BEGINNING", "SP_END", "VERB_BEGINNING", - "VERB", "VERB_END", "CENTER_BEGINNING", "CENTER_END", - "CLOSING_BRACKET_WITH_SPACE", "TRANSLATION_BEGINNING", "TRANSLATION_END", - "GABC_COPYRIGHT", "SCORE_COPYRIGHT", "OCCASION", "METER", "COMMENTARY", - "ARRANGER", "GABC_VERSION", "USER_NOTES", "DEF_MACRO", "ALT_BEGIN", - "ALT_END", "CENTERING_SCHEME", "TRANSLATION_CENTER_END", "BNLBA", - "ENLBA", "EUOUAE_B", "EUOUAE_E", "NABC_CUT", "NABC_LINES", "LANGUAGE", - "$accept", "score", "all_definitions", "definitions", - "number_of_voices_definition", "macro_definition", "name_definition", - "centering_scheme_definition", "language_definition", - "gabc_copyright_definition", "score_copyright_definition", - "gregoriotex_font_definition", "office_part_definition", - "occasion_definition", "meter_definition", "commentary_definition", - "arranger_definition", "gabc_version_definition", "mode_definition", - "nabc_lines_definition", "initial_style_definition", - "annotation_definition", "author_definition", "date_definition", - "manuscript_definition", "manuscript_reference_definition", - "manuscript_storage_place_definition", "book_definition", - "transcriber_definition", "transcription_date_definition", - "style_definition", "virgula_position_definition", - "generated_by_definition", "user_notes_definition", "attribute", - "definition", "notes", "note", "style_beginning", "style_end", "euouae", - "linebreak_area", "character", "text", "translation_beginning", - "translation", "above_line_text", "syllable_with_notes", - "notes_without_word", "syllable", "syllables", YY_NULLPTR + "$end", "error", "$undefined", "NAME", "AUTHOR", "GABC_COPYRIGHT", + "SCORE_COPYRIGHT", "NUMBER_OF_VOICES", "LANGUAGE", "STAFF_LINES", + "ORISCUS_ORIENTATION", "DEF_MACRO", "OTHER_HEADER", "ANNOTATION", "MODE", + "MODE_MODIFIER", "MODE_DIFFERENTIA", "INITIAL_STYLE", "VOICE_CUT", + "VOICE_CHANGE", "END_OF_DEFINITIONS", "END_OF_FILE", "COLON", + "SEMICOLON", "SPACE", "CHARACTERS", "NOTES", "HYPHEN", "ATTRIBUTE", + "OPENING_BRACKET", "CLOSING_BRACKET", "CLOSING_BRACKET_WITH_SPACE", + "I_BEGINNING", "I_END", "TT_BEGINNING", "TT_END", "UL_BEGINNING", + "UL_END", "C_BEGINNING", "C_END", "B_BEGINNING", "B_END", "SC_BEGINNING", + "SC_END", "SP_BEGINNING", "SP_END", "VERB_BEGINNING", "VERB", "VERB_END", + "CENTER_BEGINNING", "CENTER_END", "TRANSLATION_BEGINNING", + "TRANSLATION_END", "TRANSLATION_CENTER_END", "ALT_BEGIN", "ALT_END", + "BNLBA", "ENLBA", "EUOUAE_B", "EUOUAE_E", "NABC_CUT", "NABC_LINES", + "$accept", "score", "all_definitions", "definitions", "attribute", + "definition", "notes", "note", "closing_bracket_with_space", + "style_beginning", "style_end", "euouae", "linebreak_area", "character", + "text_hyphen", "text", "translation_beginning", "translation", + "above_line_text", "syllable_with_notes", "notes_without_word", + "syllable", "syllables", YY_NULLPTR }; #endif @@ -1301,15 +1313,14 @@ static const yytype_uint16 yytoknum[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328 + 315, 316 }; # endif -#define YYPACT_NINF -83 +#define YYPACT_NINF -55 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-83))) + (!!((Yystate) == (-55))) #define YYTABLE_NINF -3 @@ -1320,23 +1331,18 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int8 yypact[] = { - -83, 20, -83, -6, -83, 17, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, -83, -83, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, 53, -83, 2, -83, -83, -83, 21, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, 6, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -2, -83, -83, -83, -83, -83, -83, -83, -83, -83, - 8, -83, 93, -83, 28, -83, -7, -83, -83, -83, - 6, -30, -83, -83, 6, -83, -83, -83, -83, -83, - -83, 6 + -55, 26, -55, -1, -55, 1, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, -55, -55, 5, -55, -55, -55, -55, 36, -55, + 2, -55, -55, -55, 0, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, + -55, -6, -55, -8, -55, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, + -55, -55, -55, 7, -55, -55, -55, -55, -55, -55, + -55, -55, -55, 99, 8, -55, 71, -55, -55, 6, + 4, 15, 17, -55, -55, -55, 10, -6, -15, -55, + -55, -55, -55, -55, -6, -55, -55, 15, -55, -55, + -55, -55, -6, -55, -55, -6, -6 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1344,153 +1350,127 @@ static const yytype_int8 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 117, 0, 1, 105, 0, 0, 0, 0, + 4, 0, 81, 0, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 40, - 39, 66, 67, 41, 42, 64, 56, 57, 58, 59, - 60, 61, 63, 52, 62, 55, 54, 53, 50, 49, - 48, 51, 47, 46, 45, 44, 43, 65, 5, 69, - 107, 109, 0, 105, 0, 115, 116, 118, 0, 14, - 23, 24, 25, 26, 27, 28, 30, 31, 29, 32, - 33, 22, 20, 13, 34, 8, 6, 11, 12, 15, - 16, 17, 18, 19, 35, 7, 9, 21, 10, 113, - 69, 100, 77, 86, 78, 87, 79, 88, 80, 89, - 81, 90, 82, 91, 84, 93, 83, 92, 85, 94, - 0, 97, 98, 95, 96, 101, 102, 104, 103, 106, - 0, 99, 0, 69, 0, 37, 0, 75, 76, 70, - 111, 0, 69, 108, 114, 36, 73, 71, 72, 74, - 110, 112 + 0, 24, 3, 0, 5, 25, 69, 71, 0, 66, + 0, 79, 80, 82, 0, 10, 21, 12, 13, 8, + 11, 17, 22, 9, 23, 20, 14, 15, 16, 19, + 18, 77, 59, 64, 25, 36, 45, 37, 46, 38, + 47, 39, 48, 40, 49, 41, 50, 43, 52, 42, + 51, 44, 53, 0, 56, 57, 54, 55, 60, 61, + 63, 62, 67, 0, 0, 58, 0, 25, 7, 0, + 0, 31, 33, 26, 32, 25, 0, 73, 0, 65, + 68, 25, 64, 70, 78, 6, 29, 27, 30, 28, + 35, 34, 74, 25, 72, 75, 76 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, 157, -83, -82, -83, -83, -83, - -83, -83, -83, -38, -83, -36, -83, -83, -83, -83, - -83 + -55, -55, -55, -55, 152, -55, -54, -55, -46, -55, + -55, -55, -55, -37, -55, 19, -55, -11, -55, -55, + -55, -55, -55 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +static const yytype_int8 yydefgoto[] = { - -1, 1, 2, 3, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 79, 68, 109, 149, 135, 136, - 137, 138, 139, 72, 73, 74, 141, 75, 76, 77, - 5 + -1, 1, 2, 3, 35, 24, 51, 93, 94, 78, + 79, 80, 81, 82, 83, 28, 29, 30, 85, 31, + 32, 33, 5 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_int8 yytable[] = { - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, -2, 156, 157, - 4, 23, 24, 25, 144, 143, 145, 78, 150, 151, - 146, 152, 147, 155, 160, 142, 140, 0, 0, 0, - 69, 0, 0, 0, 158, 0, 0, 0, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 148, 0, 35, - 0, 154, 0, 0, 159, 0, 36, 37, 0, 70, - 161, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 0, 0, 0, 71, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 130, 0, 0, 71, - 131, 132, 133, 134, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 0, 153, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, - 131, 132, 133, 134, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 0, 0, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108 + 97, -2, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 84, 21, 22, + 90, 95, 106, 88, 91, 92, 4, 34, 89, 105, + 25, 87, 98, 104, 107, 92, 110, 101, 111, 113, + 114, 112, 96, 26, 109, 27, 100, 115, 86, 0, + 0, 0, 26, 0, 27, 0, 0, 0, 0, 116, + 23, 52, 0, 53, 108, 54, 0, 0, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 0, 70, 71, 72, 26, 0, 27, + 73, 0, 74, 75, 76, 77, 52, 0, 102, 0, + 0, 0, 0, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 0, 70, + 71, 72, 0, 103, 52, 73, 99, 74, 75, 76, + 77, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 0, 70, 71, 72, + 0, 0, 0, 73, 0, 74, 75, 76, 77, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 0, 0, 50 }; -static const yytype_int16 yycheck[] = +static const yytype_int8 yycheck[] = { - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 0, 25, 26, - 0, 27, 28, 29, 3, 23, 5, 4, 110, 31, - 24, 23, 26, 5, 64, 73, 72, -1, -1, -1, - 23, -1, -1, -1, 51, -1, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 51, -1, 65, - -1, 143, -1, -1, 71, -1, 72, 73, -1, 52, - 152, -1, -1, -1, -1, -1, 23, -1, -1, -1, - -1, -1, -1, 66, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, -1, 52, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, -1, -1, 66, - 67, 68, 69, 70, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, - 67, 68, 69, 70, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, -1, -1, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37 + 54, 0, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 28, 19, 20, + 26, 29, 18, 23, 30, 31, 0, 22, 28, 23, + 29, 29, 25, 87, 30, 31, 21, 29, 21, 29, + 55, 95, 53, 51, 90, 53, 83, 101, 29, -1, + -1, -1, 51, -1, 53, -1, -1, -1, -1, 113, + 61, 25, -1, 27, 60, 29, -1, -1, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, -1, 48, 49, 50, 51, -1, 53, + 54, -1, 56, 57, 58, 59, 25, -1, 27, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, -1, 52, 25, 54, 27, 56, 57, 58, + 59, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + -1, -1, -1, 54, -1, 56, 57, 58, 59, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, 23 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 75, 76, 77, 0, 124, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 27, 28, 29, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 65, 72, 73, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 109, 23, - 52, 66, 117, 118, 119, 121, 122, 123, 4, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, - 23, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, - 63, 67, 68, 69, 70, 112, 113, 114, 115, 116, - 119, 120, 117, 23, 3, 5, 24, 26, 51, 111, - 110, 31, 23, 53, 110, 5, 25, 26, 51, 71, - 64, 110 + 0, 63, 64, 65, 0, 84, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 19, 20, 61, 67, 29, 51, 53, 77, 78, + 79, 81, 82, 83, 22, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 68, 25, 27, 29, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 48, 49, 50, 54, 56, 57, 58, 59, 71, 72, + 73, 74, 75, 76, 79, 80, 77, 29, 23, 28, + 26, 30, 31, 69, 70, 29, 79, 68, 25, 27, + 75, 29, 27, 52, 68, 23, 18, 30, 60, 70, + 21, 21, 68, 29, 55, 68, 68 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 74, 75, 76, 77, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 108, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, - 110, 111, 111, 111, 111, 111, 111, 112, 112, 112, - 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 114, 114, 115, 115, 116, - 116, 116, 116, 116, 116, 117, 117, 118, 119, 119, - 120, 121, 121, 122, 122, 123, 123, 124, 124 + 0, 62, 63, 64, 65, 65, 66, 66, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 68, 68, 69, 69, 69, + 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 73, 73, 74, 74, 75, 75, + 75, 75, 75, 75, 76, 76, 77, 77, 77, 78, + 79, 79, 80, 81, 81, 81, 81, 82, 82, 83, + 83, 84, 84 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 0, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, + 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, + 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 3, 1, - 3, 3, 4, 2, 3, 1, 1, 0, 2 + 1, 1, 1, 1, 1, 2, 0, 2, 3, 1, + 3, 1, 3, 3, 4, 4, 5, 2, 3, 1, + 1, 0, 2 }; @@ -2076,7 +2056,7 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 646 "gabc/gabc-score-determination.y" /* yacc.c:1429 */ +#line 701 "gabc/gabc-score-determination.y" /* yacc.c:1429 */ { yylloc.first_line = 1; yylloc.first_column = 0; @@ -2086,7 +2066,7 @@ yyparse (void) yylloc.last_offset = 0; } -#line 2090 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */ +#line 2070 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2273,351 +2253,221 @@ yyreduce: switch (yyn) { case 3: -#line 676 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 740 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { end_definitions(); } -#line 2281 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2261 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 6: -#line 686 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 750 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { + (yyval).text = (yyvsp[-1]).text; + } +#line 2269 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 7: +#line 754 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + (yyval).text = NULL; + } +#line 2277 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 8: +#line 760 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); number_of_voices=atoi((yyvsp[0]).text); - free((yyvsp[0]).text); if (number_of_voices > MAX_NUMBER_OF_VOICES) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("can't define %d voices, maximum is %d"), number_of_voices, MAX_NUMBER_OF_VOICES); } - gregorio_set_score_number_of_voices (score, number_of_voices); + score->number_of_voices = number_of_voices; } -#line 2296 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2292 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 7: -#line 699 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 9: +#line 770 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { + /* these definitions are not passed through */ free(macros[(yyvsp[-1]).character - '0']); macros[(yyvsp[-1]).character - '0'] = (yyvsp[0]).text; } -#line 2305 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2302 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 8: -#line 706 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 10: +#line 775 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - if ((yyvsp[0]).text==NULL) { + if ((yyvsp[0]).text == NULL) { gregorio_message("name can't be empty","det_score", VERBOSITY_WARNING, 0); } check_multiple("name", score->name != NULL); - gregorio_set_score_name (score, (yyvsp[0]).text); - } -#line 2318 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 9: -#line 717 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - set_centering_scheme((yyvsp[0]).text); - free((yyvsp[0]).text); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->name = (yyvsp[0]).text; } -#line 2327 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2316 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 10: -#line 724 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 11: +#line 784 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { check_multiple("language", got_language); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); gregorio_set_centering_language((yyvsp[0]).text); - free((yyvsp[0]).text); got_language = true; } -#line 2338 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 11: -#line 733 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("gabc-copyright", score->gabc_copyright != NULL); - gregorio_set_score_gabc_copyright (score, (yyvsp[0]).text); - } -#line 2347 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2327 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 12: -#line 740 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 790 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("score_copyright", score->score_copyright != NULL); - gregorio_set_score_score_copyright (score, (yyvsp[0]).text); + check_multiple("gabc-copyright", score->gabc_copyright != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->gabc_copyright = (yyvsp[0]).text; } -#line 2356 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2337 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 13: -#line 747 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 795 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - gregorio_message("\"gregoriotex-font\" header is deprecated. " - "Please use \\gresetgregoriofont in TeX instead.", - "set_gregoriotex_font", VERBOSITY_DEPRECATION, 0); - check_multiple("GregorioTeX font", score->gregoriotex_font != NULL); - score->gregoriotex_font=(yyvsp[0]).text; + check_multiple("score_copyright", score->score_copyright != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->score_copyright = (yyvsp[0]).text; } -#line 2368 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2347 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 14: -#line 757 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 800 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("office part", score->office_part != NULL); - gregorio_set_score_office_part (score, (yyvsp[0]).text); + check_multiple("mode", score->mode != 0); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->mode = (yyvsp[0]).text; } -#line 2377 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2357 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 15: -#line 764 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 805 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("occasion", score->occasion != NULL); - gregorio_set_score_occasion (score, (yyvsp[0]).text); + check_multiple("mode-modifier", score->mode_modifier != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->mode_modifier = (yyvsp[0]).text; } -#line 2386 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2367 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 16: -#line 771 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 810 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("meter", score->meter != NULL); - gregorio_set_score_meter (score, (yyvsp[0]).text); + check_multiple("mode-differentia", score->mode_differentia != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->mode_differentia = (yyvsp[0]).text; } -#line 2395 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2377 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 17: -#line 778 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("commentary", score->commentary != NULL); - gregorio_set_score_commentary (score, (yyvsp[0]).text); - } -#line 2404 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 18: -#line 785 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("arranger", score->arranger != NULL); - gregorio_set_score_arranger (score, (yyvsp[0]).text); - } -#line 2413 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 19: -#line 792 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 815 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - /* Deprecated */ - gregorio_message("\"gabc-version\" header is deprecated and will be " - "ignored.", "gabc_score_determination_parse", - VERBOSITY_DEPRECATION, 0); - free((yyvsp[0]).text); - } -#line 2425 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 20: -#line 802 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("mode", score->mode != 0); + check_multiple("staff-lines", got_staff_lines); if ((yyvsp[0]).text) { - score->mode=atoi((yyvsp[0]).text); - free((yyvsp[0]).text); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + gregorio_set_score_staff_lines(score, atoi((yyvsp[0]).text)); + got_staff_lines = true; } } -#line 2437 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2390 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 21: -#line 812 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 18: +#line 823 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { check_multiple("nabc lines", score->nabc_lines != 0); if ((yyvsp[0]).text) { + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); nabc_lines=atoi((yyvsp[0]).text); score->nabc_lines=nabc_lines; - free((yyvsp[0]).text); } } -#line 2450 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2403 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 22: -#line 823 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 19: +#line 831 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if ((yyvsp[0]).text) { - score->initial_style=atoi((yyvsp[0]).text); + /* DEPRECATED by 4.1 */ + gregorio_message("\"initial-style\" header is deprecated. Please " + "use \\gresetinitiallines in TeX instead.", + "gabc_score_determination_parse", VERBOSITY_DEPRECATION, 0); + score->initial_style = atoi((yyvsp[0]).text); free((yyvsp[0]).text); } } -#line 2461 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2418 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 23: -#line 832 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 20: +#line 841 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (score->annotation [MAX_ANNOTATIONS - 1]) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("too many definitions of annotation found, only the " "first %d will be taken"), MAX_ANNOTATIONS); } - gregorio_set_score_annotation (score, (yyvsp[0]).text); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + gregorio_set_score_annotation(score, (yyvsp[0]).text); } -#line 2474 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2432 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 24: -#line 843 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("author", score->si.author != NULL); - gregorio_set_score_author (score, (yyvsp[0]).text); - } -#line 2483 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 25: + case 21: #line 850 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("date", score->si.date != NULL); - gregorio_set_score_date (score, (yyvsp[0]).text); - } -#line 2492 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 26: -#line 857 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("manuscript", score->si.manuscript != NULL); - gregorio_set_score_manuscript (score, (yyvsp[0]).text); + check_multiple("author", score->author != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->author = (yyvsp[0]).text; } -#line 2501 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2442 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 27: -#line 864 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("manuscript-reference", - score->si.manuscript_reference != NULL); - gregorio_set_score_manuscript_reference (score, (yyvsp[0]).text); - } -#line 2511 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 28: -#line 872 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("manuscript-storage-place", - score->si.manuscript_storage_place != NULL); - gregorio_set_score_manuscript_storage_place (score, (yyvsp[0]).text); - } -#line 2521 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 29: -#line 880 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("book", score->si.book != NULL); - gregorio_set_score_book (score, (yyvsp[0]).text); - } -#line 2530 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 30: -#line 887 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("transcriber", score->si.transcriber != NULL); - gregorio_set_score_transcriber (score, (yyvsp[0]).text); - } -#line 2539 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 31: -#line 894 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("transcription date", - score->si.transcription_date != NULL); - gregorio_set_score_transcription_date (score, (yyvsp[0]).text); - } -#line 2549 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 32: -#line 902 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - if (current_voice_info->style) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of style found for voice %d, only " - "the last will be taken into consideration"), voice); - } - gregorio_set_voice_style (current_voice_info, (yyvsp[0]).text); - } -#line 2562 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 33: -#line 913 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - if (current_voice_info->virgula_position) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of virgula position found for " - "voice %d, only the last will be taken into consideration"), - voice); - } - gregorio_set_voice_virgula_position (current_voice_info, (yyvsp[0]).text); - } -#line 2576 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 34: -#line 926 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - /* set_voice_generated_by (current_voice_info, $2.text); */ - free((yyvsp[0]).text); - } -#line 2585 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 35: -#line 933 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - gregorio_set_score_user_notes (score, (yyvsp[0]).text); - } -#line 2593 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 36: -#line 939 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 22: +#line 855 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - (yyval).text = (yyvsp[-1]).text; + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->legacy_oriscus_orientation = (strcmp((yyvsp[0]).text, "legacy") == 0); } -#line 2601 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2451 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 37: -#line 943 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 23: +#line 859 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - (yyval).text = NULL; + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); } -#line 2609 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2459 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 68: -#line 979 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 24: +#line 862 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { next_voice_info(); } -#line 2617 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2467 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 71: -#line 989 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 27: +#line 872 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (voice<number_of_voices) { gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1])); @@ -2640,11 +2490,11 @@ yyreduce: voice=0; nabc_state=0; } -#line 2644 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2494 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 72: -#line 1011 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 28: +#line 894 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (voice<number_of_voices) { gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1])); @@ -2668,11 +2518,11 @@ yyreduce: nabc_state=0; update_position_with_space(); } -#line 2672 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2522 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 73: -#line 1034 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 29: +#line 917 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (voice<number_of_voices) { gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1])); @@ -2686,11 +2536,11 @@ yyreduce: number_of_voices), voice+1, number_of_voices); } } -#line 2690 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2540 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 74: -#line 1047 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 30: +#line 930 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (!nabc_lines) { gregorio_message(_("You used character \"|\" in gabc without " @@ -2704,288 +2554,328 @@ yyreduce: nabc_state = (nabc_state + 1) % (nabc_lines+1); } } -#line 2708 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2558 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 75: -#line 1060 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 31: +#line 943 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { elements[voice]=NULL; voice=0; nabc_state=0; } -#line 2718 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2568 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 76: -#line 1065 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 32: +#line 948 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { elements[voice]=NULL; voice=0; nabc_state=0; update_position_with_space(); } -#line 2729 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2579 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 77: -#line 1074 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 36: +#line 963 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_ITALIC); } -#line 2737 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2587 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 78: -#line 1077 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 37: +#line 966 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_TT); } -#line 2745 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2595 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 79: -#line 1080 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 38: +#line 969 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_UNDERLINED); } -#line 2753 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2603 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 80: -#line 1083 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 39: +#line 972 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_COLORED); } -#line 2761 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2611 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 81: -#line 1086 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 40: +#line 975 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_BOLD); } -#line 2769 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2619 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 82: -#line 1089 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 41: +#line 978 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_SMALL_CAPS); } -#line 2777 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2627 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 83: -#line 1092 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 42: +#line 981 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_VERBATIM); } -#line 2785 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2635 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 84: -#line 1095 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 43: +#line 984 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_SPECIAL_CHAR); } -#line 2793 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2643 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 85: -#line 1098 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 44: +#line 987 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (!center_is_determined) { gregorio_gabc_add_style(ST_FORCED_CENTER); center_is_determined=CENTER_HALF_DETERMINED; } } -#line 2804 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2654 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 86: -#line 1107 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 45: +#line 996 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_ITALIC); } -#line 2812 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2662 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 87: -#line 1110 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 46: +#line 999 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_TT); } -#line 2820 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2670 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 88: -#line 1113 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 47: +#line 1002 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_UNDERLINED); } -#line 2828 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2678 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 89: -#line 1116 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 48: +#line 1005 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_COLORED); } -#line 2836 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2686 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 90: -#line 1119 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 49: +#line 1008 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_BOLD); } -#line 2844 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2694 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 91: -#line 1122 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 50: +#line 1011 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_SMALL_CAPS); } -#line 2852 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2702 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 92: -#line 1125 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 51: +#line 1014 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_VERBATIM); } -#line 2860 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2710 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 93: -#line 1128 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 52: +#line 1017 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_SPECIAL_CHAR); } -#line 2868 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2718 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 94: -#line 1131 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 53: +#line 1020 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (center_is_determined==CENTER_HALF_DETERMINED) { gregorio_gabc_end_style(ST_FORCED_CENTER); center_is_determined=CENTER_FULLY_DETERMINED; } } -#line 2879 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2729 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 95: -#line 1140 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 54: +#line 1029 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { euouae = EUOUAE_BEGINNING; } -#line 2887 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2737 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 96: -#line 1143 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 55: +#line 1032 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { euouae = EUOUAE_END; } -#line 2895 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2745 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 97: -#line 1149 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 56: +#line 1038 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { no_linebreak_area = NLBA_BEGINNING; } -#line 2903 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2753 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 98: -#line 1152 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 57: +#line 1041 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { no_linebreak_area = NLBA_END; } -#line 2911 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2761 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 100: -#line 1159 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 59: +#line 1048 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_text((yyvsp[0]).text); } -#line 2919 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2769 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 64: +#line 1058 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_gabc_add_text(gregorio_strdup("-")); + } +#line 2777 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 65: +#line 1061 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_gabc_add_text(gregorio_strdup("-")); + } +#line 2785 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 107: -#line 1173 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 69: +#line 1072 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { start_translation(TR_NORMAL); } -#line 2927 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2793 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 108: -#line 1179 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 70: +#line 1078 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { end_translation(); } -#line 2935 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2801 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 109: -#line 1182 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 71: +#line 1081 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { start_translation(TR_WITH_CENTER_END); } -#line 2943 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2809 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 110: -#line 1188 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 72: +#line 1087 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { abovelinestext = (yyvsp[-1]).text; } -#line 2951 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2817 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 111: -#line 1194 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 73: +#line 1093 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { rebuild_characters(); first_text_character = current_character; close_syllable(&(yylsp[-2])); } -#line 2961 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2827 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 112: -#line 1199 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 74: +#line 1098 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + rebuild_characters(); + first_text_character = current_character; close_syllable(&(yylsp[-3])); } -#line 2969 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2840 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 113: -#line 1205 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 75: +#line 1106 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + close_syllable(&(yylsp[-3])); + } +#line 2848 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 76: +#line 1109 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + close_syllable(&(yylsp[-4])); + } +#line 2859 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 77: +#line 1118 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { close_syllable(NULL); } -#line 2977 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2867 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 114: -#line 1208 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 78: +#line 1121 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { close_syllable(NULL); } -#line 2985 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2875 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; -#line 2989 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2879 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h index d68c9b6f591..7daec08eaf2 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h @@ -45,35 +45,35 @@ extern int gabc_score_determination_debug; # define YYTOKENTYPE enum yytokentype { - ATTRIBUTE = 258, - COLON = 259, - SEMICOLON = 260, - OFFICE_PART = 261, - ANNOTATION = 262, - AUTHOR = 263, - DATE = 264, - MANUSCRIPT = 265, - MANUSCRIPT_REFERENCE = 266, - MANUSCRIPT_STORAGE_PLACE = 267, - TRANSCRIBER = 268, - TRANSCRIPTION_DATE = 269, - BOOK = 270, - STYLE = 271, - VIRGULA_POSITION = 272, - INITIAL_STYLE = 273, - MODE = 274, - GREGORIOTEX_FONT = 275, - GENERATED_BY = 276, - NAME = 277, - OPENING_BRACKET = 278, - NOTES = 279, - VOICE_CUT = 280, - CLOSING_BRACKET = 281, - NUMBER_OF_VOICES = 282, - VOICE_CHANGE = 283, - END_OF_DEFINITIONS = 284, - SPACE = 285, - CHARACTERS = 286, + NAME = 258, + AUTHOR = 259, + GABC_COPYRIGHT = 260, + SCORE_COPYRIGHT = 261, + NUMBER_OF_VOICES = 262, + LANGUAGE = 263, + STAFF_LINES = 264, + ORISCUS_ORIENTATION = 265, + DEF_MACRO = 266, + OTHER_HEADER = 267, + ANNOTATION = 268, + MODE = 269, + MODE_MODIFIER = 270, + MODE_DIFFERENTIA = 271, + INITIAL_STYLE = 272, + VOICE_CUT = 273, + VOICE_CHANGE = 274, + END_OF_DEFINITIONS = 275, + END_OF_FILE = 276, + COLON = 277, + SEMICOLON = 278, + SPACE = 279, + CHARACTERS = 280, + NOTES = 281, + HYPHEN = 282, + ATTRIBUTE = 283, + OPENING_BRACKET = 284, + CLOSING_BRACKET = 285, + CLOSING_BRACKET_WITH_SPACE = 286, I_BEGINNING = 287, I_END = 288, TT_BEGINNING = 289, @@ -93,61 +93,49 @@ extern int gabc_score_determination_debug; VERB_END = 303, CENTER_BEGINNING = 304, CENTER_END = 305, - CLOSING_BRACKET_WITH_SPACE = 306, - TRANSLATION_BEGINNING = 307, - TRANSLATION_END = 308, - GABC_COPYRIGHT = 309, - SCORE_COPYRIGHT = 310, - OCCASION = 311, - METER = 312, - COMMENTARY = 313, - ARRANGER = 314, - GABC_VERSION = 315, - USER_NOTES = 316, - DEF_MACRO = 317, - ALT_BEGIN = 318, - ALT_END = 319, - CENTERING_SCHEME = 320, - TRANSLATION_CENTER_END = 321, - BNLBA = 322, - ENLBA = 323, - EUOUAE_B = 324, - EUOUAE_E = 325, - NABC_CUT = 326, - NABC_LINES = 327, - LANGUAGE = 328 + TRANSLATION_BEGINNING = 306, + TRANSLATION_END = 307, + TRANSLATION_CENTER_END = 308, + ALT_BEGIN = 309, + ALT_END = 310, + BNLBA = 311, + ENLBA = 312, + EUOUAE_B = 313, + EUOUAE_E = 314, + NABC_CUT = 315, + NABC_LINES = 316 }; #endif /* Tokens. */ -#define ATTRIBUTE 258 -#define COLON 259 -#define SEMICOLON 260 -#define OFFICE_PART 261 -#define ANNOTATION 262 -#define AUTHOR 263 -#define DATE 264 -#define MANUSCRIPT 265 -#define MANUSCRIPT_REFERENCE 266 -#define MANUSCRIPT_STORAGE_PLACE 267 -#define TRANSCRIBER 268 -#define TRANSCRIPTION_DATE 269 -#define BOOK 270 -#define STYLE 271 -#define VIRGULA_POSITION 272 -#define INITIAL_STYLE 273 -#define MODE 274 -#define GREGORIOTEX_FONT 275 -#define GENERATED_BY 276 -#define NAME 277 -#define OPENING_BRACKET 278 -#define NOTES 279 -#define VOICE_CUT 280 -#define CLOSING_BRACKET 281 -#define NUMBER_OF_VOICES 282 -#define VOICE_CHANGE 283 -#define END_OF_DEFINITIONS 284 -#define SPACE 285 -#define CHARACTERS 286 +#define NAME 258 +#define AUTHOR 259 +#define GABC_COPYRIGHT 260 +#define SCORE_COPYRIGHT 261 +#define NUMBER_OF_VOICES 262 +#define LANGUAGE 263 +#define STAFF_LINES 264 +#define ORISCUS_ORIENTATION 265 +#define DEF_MACRO 266 +#define OTHER_HEADER 267 +#define ANNOTATION 268 +#define MODE 269 +#define MODE_MODIFIER 270 +#define MODE_DIFFERENTIA 271 +#define INITIAL_STYLE 272 +#define VOICE_CUT 273 +#define VOICE_CHANGE 274 +#define END_OF_DEFINITIONS 275 +#define END_OF_FILE 276 +#define COLON 277 +#define SEMICOLON 278 +#define SPACE 279 +#define CHARACTERS 280 +#define NOTES 281 +#define HYPHEN 282 +#define ATTRIBUTE 283 +#define OPENING_BRACKET 284 +#define CLOSING_BRACKET 285 +#define CLOSING_BRACKET_WITH_SPACE 286 #define I_BEGINNING 287 #define I_END 288 #define TT_BEGINNING 289 @@ -167,29 +155,17 @@ extern int gabc_score_determination_debug; #define VERB_END 303 #define CENTER_BEGINNING 304 #define CENTER_END 305 -#define CLOSING_BRACKET_WITH_SPACE 306 -#define TRANSLATION_BEGINNING 307 -#define TRANSLATION_END 308 -#define GABC_COPYRIGHT 309 -#define SCORE_COPYRIGHT 310 -#define OCCASION 311 -#define METER 312 -#define COMMENTARY 313 -#define ARRANGER 314 -#define GABC_VERSION 315 -#define USER_NOTES 316 -#define DEF_MACRO 317 -#define ALT_BEGIN 318 -#define ALT_END 319 -#define CENTERING_SCHEME 320 -#define TRANSLATION_CENTER_END 321 -#define BNLBA 322 -#define ENLBA 323 -#define EUOUAE_B 324 -#define EUOUAE_E 325 -#define NABC_CUT 326 -#define NABC_LINES 327 -#define LANGUAGE 328 +#define TRANSLATION_BEGINNING 306 +#define TRANSLATION_END 307 +#define TRANSLATION_CENTER_END 308 +#define ALT_BEGIN 309 +#define ALT_END 310 +#define BNLBA 311 +#define ENLBA 312 +#define EUOUAE_B 313 +#define EUOUAE_E 314 +#define NABC_CUT 315 +#define NABC_LINES 316 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l index 1001a2f72a6..b0c695f383f 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l @@ -28,6 +28,7 @@ #include <string.h> #include "struct.h" #include "messages.h" +#include "bool.h" #include "support.h" #include "gabc.h" @@ -35,6 +36,7 @@ #include "gabc-score-determination-y.h" static unsigned char style_stack = 0; +static bool eof_found = false; #define YY_NO_INPUT @@ -137,91 +139,78 @@ semicolon. */ return DEF_MACRO; } <INITIAL>number-of-voices { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NUMBER_OF_VOICES; } <INITIAL>name { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NAME; } <INITIAL>score-copyright { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return SCORE_COPYRIGHT; } <INITIAL>gabc-copyright { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return GABC_COPYRIGHT; } -<INITIAL>office-part { - return OFFICE_PART; - } -<INITIAL>occasion { - return OCCASION; - } -<INITIAL>meter { - return METER; - } -<INITIAL>commentary { - return COMMENTARY; - } -<INITIAL>arranger { - return ARRANGER; - } -<INITIAL>gabc-version { - return GABC_VERSION; - } <INITIAL>initial-style { + /* DEPRECATED by 4.1 */ return INITIAL_STYLE; } <INITIAL>mode { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return MODE; } +<INITIAL>mode-modifier { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_MODIFIER; + } +<INITIAL>mode-differentia { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_DIFFERENTIA; + } <INITIAL>annotation { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return ANNOTATION; } <INITIAL>author { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return AUTHOR; } -<INITIAL>date { - return DATE; - } -<INITIAL>manuscript { - return MANUSCRIPT; - } -<INITIAL>manuscript-reference { - return MANUSCRIPT_REFERENCE; - } -<INITIAL>manuscript-storage-place { - return MANUSCRIPT_STORAGE_PLACE; - } -<INITIAL>book { - return BOOK; - } -<INITIAL>transcriber { - return TRANSCRIBER; - } -<INITIAL>generated-by { - return GENERATED_BY; - } -<INITIAL>centering-scheme { - return CENTERING_SCHEME; - } <INITIAL>language { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return LANGUAGE; } -<INITIAL>transcription-date { - return TRANSCRIPTION_DATE; - } -<INITIAL>style { - return STYLE; - } -<INITIAL>virgula-position { - return VIRGULA_POSITION; - } -<INITIAL>gregoriotex-font { - return GREGORIOTEX_FONT; +<INITIAL>staff-lines { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return STAFF_LINES; } <INITIAL>nabc-lines { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NABC_LINES; } -<INITIAL>user-notes { - return USER_NOTES; +<INITIAL>oriscus-orientation { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return ORISCUS_ORIENTATION; + } +<INITIAL>[A-Za-z0-9_]+(-[A-Za-z0-9_]+)* { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return OTHER_HEADER; } <INITIAL>--(.*) { return VOICE_CHANGE; @@ -235,11 +224,14 @@ semicolon. */ _("unrecognized character: \"%c\" in definition part"), gabc_score_determination_text[0]); } -<score>[^\{\}\(\[\]<%]+ { +<score>[^-\{\}\(\[\]<%]+ { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } +<score>- { + return HYPHEN; + } <score,style><i> { BEGIN(style); style_stack ++; @@ -423,5 +415,13 @@ semicolon. */ BEGIN(score); return CLOSING_BRACKET_WITH_SPACE; } +<<EOF>> { + if (!eof_found) { + eof_found = true; + return END_OF_FILE; + } else { + yyterminate(); + } + } %% diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y index fde1ecf2708..128236babd3 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y @@ -94,8 +94,9 @@ static int voice; static gregorio_center_determination center_is_determined; /* current_key is... the current key... updated by each notes determination * (for key changes) */ -static int current_key = DEFAULT_KEY; +static int current_key; static bool got_language = false; +static bool got_staff_lines = false; static bool started_first_word = false; static struct sha1_ctx digester; @@ -113,7 +114,7 @@ static void gabc_score_determination_error(const char *error_str) VERBOSITY_ERROR, 0); } -static void gabc_fix_custos(gregorio_score *score_to_check) +static void fix_custos(gregorio_score *score_to_check) { gregorio_syllable *current_syllable; gregorio_element *current_element; @@ -126,7 +127,8 @@ static void gabc_fix_custos(gregorio_score *score_to_check) || !score_to_check->first_voice_info) { return; } - current_key = score_to_check->first_voice_info->initial_key; + current_key = gregorio_calculate_new_key( + score_to_check->first_voice_info->initial_clef); current_syllable = score_to_check->first_syllable; while (current_syllable) { current_element = (current_syllable->elements)[0]; @@ -136,55 +138,34 @@ static void gabc_fix_custos(gregorio_score *score_to_check) pitch = custo_element->u.misc.pitched.pitch; /* we look for the key */ while (current_element) { - switch (current_element->type) { - case GRE_C_KEY_CHANGE: - case GRE_C_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, + if (current_element->type == GRE_CLEF) { + pitch = gregorio_determine_next_pitch( current_syllable, current_element, NULL); - newkey = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); + newkey = gregorio_calculate_new_key( + current_element->u.misc.clef); pitch_difference = (char) newkey - (char) current_key; pitch -= pitch_difference; current_key = newkey; - break; - case GRE_F_KEY_CHANGE: - case GRE_F_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, - current_element, NULL); - newkey = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); - pitch_difference = (char) newkey - (char) current_key; - pitch -= pitch_difference; - current_key = newkey; - break; - default: - break; } if (!custo_element->u.misc.pitched.force_pitch) { while (pitch < LOWEST_PITCH) { pitch += 7; } - while (pitch > HIGHEST_PITCH) { + while (pitch > score_to_check->highest_pitch) { pitch -= 7; } custo_element->u.misc.pitched.pitch = pitch; } assert(custo_element->u.misc.pitched.pitch >= LOWEST_PITCH && custo_element->u.misc.pitched.pitch - <= HIGHEST_PITCH); + <= score_to_check->highest_pitch); current_element = current_element->next; } } if (current_element) { - if (current_element->type == GRE_C_KEY_CHANGE - || current_element->type == GRE_C_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); - } - if (current_element->type == GRE_F_KEY_CHANGE - || current_element->type == GRE_F_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); + if (current_element->type == GRE_CLEF) { + current_key = gregorio_calculate_new_key( + current_element->u.misc.clef); } current_element = current_element->next; } @@ -243,9 +224,12 @@ static void initialize_variables(void) no_linebreak_area = NLBA_NORMAL; euouae = EUOUAE_NORMAL; center_is_determined = CENTER_NOT_DETERMINED; + current_key = gregorio_calculate_new_key(gregorio_default_clef); for (i = 0; i < 10; i++) { macros[i] = NULL; } + got_language = false; + got_staff_lines = false; started_first_word = false; } @@ -266,8 +250,7 @@ static void free_variables(void) /* see whether a voice_info is empty */ static int voice_info_is_not_empty(const gregorio_voice_info *voice_info) { - return (voice_info->initial_key != 5 || voice_info->style - || voice_info->virgula_position); + return (voice_info->initial_clef.line); } /* @@ -418,24 +401,23 @@ static void gregorio_set_translation_center_beginning( static void rebuild_characters(void) { - bool has_initial = score->initial_style != NO_INITIAL; - /* we rebuild the first syllable text if it is the first syllable, or if * it is the second when the first has no text. * it is a patch for cases like (c4) Al(ab)le(ab) */ - if ((!score->first_syllable && has_initial && current_character) + if ((!score->first_syllable && current_character) || (current_syllable && !current_syllable->previous_syllable && !current_syllable->text && current_character)) { - gregorio_rebuild_first_syllable(¤t_character, has_initial); + /* leave the first syllable text untouched at this time */ + gregorio_go_to_first_character_c(¤t_character); started_first_word = true; - } - - gregorio_rebuild_characters(¤t_character, center_is_determined, - has_initial); + } else { + gregorio_rebuild_characters(¤t_character, center_is_determined, + false); - if (started_first_word) { - gregorio_set_first_word(¤t_character); + if (started_first_word) { + gregorio_set_first_word(¤t_character); + } } } @@ -523,26 +505,6 @@ static void gregorio_gabc_add_text(char *mbcharacters) } /* - * the function called when centering_scheme is seen in gabc - */ -static void set_centering_scheme(char *sc) -{ - gregorio_message("\"centering-scheme\" header is deprecated. Please use " - "\\gresetlyriccentering in TeX instead.", "set_centering_scheme", - VERBOSITY_DEPRECATION, 0); - if (strncmp((const char *) sc, "latine", 6) == 0) { - score->centering = SCHEME_VOWEL; - return; - } - if (strncmp((const char *) sc, "english", 6) == 0) { - score->centering = SCHEME_SYLLABLE; - return; - } - gregorio_message("centering-scheme unknown value: must be \"latine\" " - "or \"english\"", "set_centering_scheme", VERBOSITY_WARNING, 0); -} - -/* * * The two functions called when lex returns a style, we simply add it. All the * complex things will be done by the function after... @@ -564,6 +526,96 @@ void gabc_digest(const void *const buf, const size_t size) sha1_process_bytes(buf, size, &digester); } +static void determine_oriscus_orientation(gregorio_score *score) { + gregorio_syllable *syllable; + gregorio_element *element; + gregorio_glyph *glyph; + gregorio_note *note; + gregorio_note *oriscus = NULL; + + for (syllable = score->first_syllable; syllable; + syllable = syllable->next_syllable) { + for (element = syllable->elements[0]; element; + element = element->next) { + if (element->type == GRE_ELEMENT) { + for (glyph = element->u.first_glyph; glyph; + glyph = glyph->next) { + if (glyph->type == GRE_GLYPH) { + for (note = glyph->u.notes.first_note; note; + note = note->next) { + if (note->type == GRE_NOTE) { + if (oriscus) { + if (note->u.note.pitch + < oriscus->u.note.pitch) { + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } else { /* ascending or the same */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_ASCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_ASCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } + oriscus = NULL; + } + + switch (note->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus = note; + break; + + default: + break; + } + } + } + } + } + } + } + } + + if (oriscus) { + /* oriscus at the end of the score */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } +} + /* * The "main" function. It is the function that is called when we have to read * a gabc file. It takes a file descriptor, that is to say a file that is @@ -588,8 +640,11 @@ gregorio_score *gabc_read_score(FILE *f_in) /* the flex/bison main call, it will build the score (that we have * initialized) */ gabc_score_determination_parse(); - gregorio_fix_initial_keys(score, DEFAULT_KEY); - gabc_fix_custos(score); + if (!score->legacy_oriscus_orientation) { + determine_oriscus_orientation(score); + } + gregorio_fix_initial_keys(score, gregorio_default_clef); + fix_custos(score); free_variables(); /* the we check the validity and integrity of the score we have built. */ if (!check_score_integrity(score)) { @@ -611,11 +666,11 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { if (nabc_state == 0) { if (!elements[voice]) { elements[voice] = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); current_element = elements[voice]; } else { new_elements = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); last_element = elements[voice]; while(last_element->next) { last_element = last_element->next; @@ -652,19 +707,28 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { @$.last_offset = 0; } -%token ATTRIBUTE COLON SEMICOLON OFFICE_PART ANNOTATION AUTHOR DATE -%token MANUSCRIPT MANUSCRIPT_REFERENCE MANUSCRIPT_STORAGE_PLACE TRANSCRIBER -%token TRANSCRIPTION_DATE BOOK STYLE VIRGULA_POSITION INITIAL_STYLE MODE -%token GREGORIOTEX_FONT GENERATED_BY NAME OPENING_BRACKET NOTES VOICE_CUT -%token CLOSING_BRACKET NUMBER_OF_VOICES VOICE_CHANGE END_OF_DEFINITIONS SPACE -%token CHARACTERS I_BEGINNING I_END TT_BEGINNING TT_END UL_BEGINNING UL_END -%token C_BEGINNING C_END B_BEGINNING B_END SC_BEGINNING SC_END SP_BEGINNING -%token SP_END VERB_BEGINNING VERB VERB_END CENTER_BEGINNING CENTER_END -%token CLOSING_BRACKET_WITH_SPACE TRANSLATION_BEGINNING TRANSLATION_END -%token GABC_COPYRIGHT SCORE_COPYRIGHT OCCASION METER COMMENTARY ARRANGER -%token GABC_VERSION USER_NOTES DEF_MACRO ALT_BEGIN ALT_END CENTERING_SCHEME -%token TRANSLATION_CENTER_END BNLBA ENLBA EUOUAE_B EUOUAE_E NABC_CUT NABC_LINES -%token LANGUAGE +%token NAME AUTHOR GABC_COPYRIGHT SCORE_COPYRIGHT +%token NUMBER_OF_VOICES LANGUAGE STAFF_LINES ORISCUS_ORIENTATION +%token DEF_MACRO OTHER_HEADER +%token ANNOTATION MODE MODE_MODIFIER MODE_DIFFERENTIA +%token INITIAL_STYLE /* DEPRECATED by 4.1 */ +%token VOICE_CUT VOICE_CHANGE END_OF_DEFINITIONS END_OF_FILE +%token COLON SEMICOLON SPACE CHARACTERS NOTES HYPHEN ATTRIBUTE +%token OPENING_BRACKET CLOSING_BRACKET CLOSING_BRACKET_WITH_SPACE +%token I_BEGINNING I_END +%token TT_BEGINNING TT_END +%token UL_BEGINNING UL_END +%token C_BEGINNING C_END +%token B_BEGINNING B_END +%token SC_BEGINNING SC_END +%token SP_BEGINNING SP_END +%token VERB_BEGINNING VERB VERB_END +%token CENTER_BEGINNING CENTER_END +%token TRANSLATION_BEGINNING TRANSLATION_END TRANSLATION_CENTER_END +%token ALT_BEGIN ALT_END +%token BNLBA ENLBA +%token EUOUAE_B EUOUAE_E +%token NABC_CUT NABC_LINES %% @@ -682,300 +746,119 @@ definitions: | definitions definition ; -number_of_voices_definition: +attribute: + COLON ATTRIBUTE SEMICOLON { + $$.text = $2.text; + } + | + COLON SEMICOLON { + $$.text = NULL; + } + ; + +definition: NUMBER_OF_VOICES attribute { + gregorio_add_score_header(score, $1.text, $2.text); number_of_voices=atoi($2.text); - free($2.text); if (number_of_voices > MAX_NUMBER_OF_VOICES) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("can't define %d voices, maximum is %d"), number_of_voices, MAX_NUMBER_OF_VOICES); } - gregorio_set_score_number_of_voices (score, number_of_voices); + score->number_of_voices = number_of_voices; } - ; - -macro_definition: - DEF_MACRO attribute { + | DEF_MACRO attribute { + /* these definitions are not passed through */ free(macros[$1.character - '0']); macros[$1.character - '0'] = $2.text; } - ; - -name_definition: - NAME attribute { - if ($2.text==NULL) { + | NAME attribute { + if ($2.text == NULL) { gregorio_message("name can't be empty","det_score", VERBOSITY_WARNING, 0); } check_multiple("name", score->name != NULL); - gregorio_set_score_name (score, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + score->name = $2.text; } - ; - -centering_scheme_definition: - CENTERING_SCHEME attribute { - set_centering_scheme($2.text); - free($2.text); - } - ; - -language_definition: - LANGUAGE attribute { + | LANGUAGE attribute { check_multiple("language", got_language); + gregorio_add_score_header(score, $1.text, $2.text); gregorio_set_centering_language($2.text); - free($2.text); got_language = true; } - ; - -gabc_copyright_definition: - GABC_COPYRIGHT attribute { + | GABC_COPYRIGHT attribute { check_multiple("gabc-copyright", score->gabc_copyright != NULL); - gregorio_set_score_gabc_copyright (score, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + score->gabc_copyright = $2.text; } - ; - -score_copyright_definition: - SCORE_COPYRIGHT attribute { + | SCORE_COPYRIGHT attribute { check_multiple("score_copyright", score->score_copyright != NULL); - gregorio_set_score_score_copyright (score, $2.text); - } - ; - -gregoriotex_font_definition: - GREGORIOTEX_FONT attribute { - gregorio_message("\"gregoriotex-font\" header is deprecated. " - "Please use \\gresetgregoriofont in TeX instead.", - "set_gregoriotex_font", VERBOSITY_DEPRECATION, 0); - check_multiple("GregorioTeX font", score->gregoriotex_font != NULL); - score->gregoriotex_font=$2.text; - } - ; - -office_part_definition: - OFFICE_PART attribute { - check_multiple("office part", score->office_part != NULL); - gregorio_set_score_office_part (score, $2.text); - } - ; - -occasion_definition: - OCCASION attribute { - check_multiple("occasion", score->occasion != NULL); - gregorio_set_score_occasion (score, $2.text); - } - ; - -meter_definition: - METER attribute { - check_multiple("meter", score->meter != NULL); - gregorio_set_score_meter (score, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + score->score_copyright = $2.text; } - ; - -commentary_definition: - COMMENTARY attribute { - check_multiple("commentary", score->commentary != NULL); - gregorio_set_score_commentary (score, $2.text); + | MODE attribute { + check_multiple("mode", score->mode != 0); + gregorio_add_score_header(score, $1.text, $2.text); + score->mode = $2.text; } - ; - -arranger_definition: - ARRANGER attribute { - check_multiple("arranger", score->arranger != NULL); - gregorio_set_score_arranger (score, $2.text); + | MODE_MODIFIER attribute { + check_multiple("mode-modifier", score->mode_modifier != NULL); + gregorio_add_score_header(score, $1.text, $2.text); + score->mode_modifier = $2.text; } - ; - -gabc_version_definition: - GABC_VERSION attribute { - /* Deprecated */ - gregorio_message("\"gabc-version\" header is deprecated and will be " - "ignored.", "gabc_score_determination_parse", - VERBOSITY_DEPRECATION, 0); - free($2.text); + | MODE_DIFFERENTIA attribute { + check_multiple("mode-differentia", score->mode_differentia != NULL); + gregorio_add_score_header(score, $1.text, $2.text); + score->mode_differentia = $2.text; } - ; - -mode_definition: - MODE attribute { - check_multiple("mode", score->mode != 0); + | STAFF_LINES attribute { + check_multiple("staff-lines", got_staff_lines); if ($2.text) { - score->mode=atoi($2.text); - free($2.text); + gregorio_add_score_header(score, $1.text, $2.text); + gregorio_set_score_staff_lines(score, atoi($2.text)); + got_staff_lines = true; } } - ; - -nabc_lines_definition: - NABC_LINES attribute { + | NABC_LINES attribute { check_multiple("nabc lines", score->nabc_lines != 0); if ($2.text) { + gregorio_add_score_header(score, $1.text, $2.text); nabc_lines=atoi($2.text); score->nabc_lines=nabc_lines; - free($2.text); } } - ; - -initial_style_definition: - INITIAL_STYLE attribute { + | INITIAL_STYLE attribute { if ($2.text) { - score->initial_style=atoi($2.text); + /* DEPRECATED by 4.1 */ + gregorio_message("\"initial-style\" header is deprecated. Please " + "use \\gresetinitiallines in TeX instead.", + "gabc_score_determination_parse", VERBOSITY_DEPRECATION, 0); + score->initial_style = atoi($2.text); free($2.text); } } - ; - -annotation_definition: - ANNOTATION attribute { + | ANNOTATION attribute { if (score->annotation [MAX_ANNOTATIONS - 1]) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("too many definitions of annotation found, only the " "first %d will be taken"), MAX_ANNOTATIONS); } - gregorio_set_score_annotation (score, $2.text); - } - ; - -author_definition: - AUTHOR attribute { - check_multiple("author", score->si.author != NULL); - gregorio_set_score_author (score, $2.text); - } - ; - -date_definition: - DATE attribute { - check_multiple("date", score->si.date != NULL); - gregorio_set_score_date (score, $2.text); - } - ; - -manuscript_definition: - MANUSCRIPT attribute { - check_multiple("manuscript", score->si.manuscript != NULL); - gregorio_set_score_manuscript (score, $2.text); - } - ; - -manuscript_reference_definition: - MANUSCRIPT_REFERENCE attribute { - check_multiple("manuscript-reference", - score->si.manuscript_reference != NULL); - gregorio_set_score_manuscript_reference (score, $2.text); - } - ; - -manuscript_storage_place_definition: - MANUSCRIPT_STORAGE_PLACE attribute { - check_multiple("manuscript-storage-place", - score->si.manuscript_storage_place != NULL); - gregorio_set_score_manuscript_storage_place (score, $2.text); - } - ; - -book_definition: - BOOK attribute { - check_multiple("book", score->si.book != NULL); - gregorio_set_score_book (score, $2.text); - } - ; - -transcriber_definition: - TRANSCRIBER attribute { - check_multiple("transcriber", score->si.transcriber != NULL); - gregorio_set_score_transcriber (score, $2.text); - } - ; - -transcription_date_definition: - TRANSCRIPTION_DATE attribute { - check_multiple("transcription date", - score->si.transcription_date != NULL); - gregorio_set_score_transcription_date (score, $2.text); - } - ; - -style_definition: - STYLE attribute { - if (current_voice_info->style) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of style found for voice %d, only " - "the last will be taken into consideration"), voice); - } - gregorio_set_voice_style (current_voice_info, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + gregorio_set_score_annotation(score, $2.text); } - ; - -virgula_position_definition: - VIRGULA_POSITION attribute { - if (current_voice_info->virgula_position) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of virgula position found for " - "voice %d, only the last will be taken into consideration"), - voice); - } - gregorio_set_voice_virgula_position (current_voice_info, $2.text); - } - ; - - -generated_by_definition: - GENERATED_BY attribute { - /* set_voice_generated_by (current_voice_info, $2.text); */ - free($2.text); + | AUTHOR attribute { + check_multiple("author", score->author != NULL); + gregorio_add_score_header(score, $1.text, $2.text); + score->author = $2.text; } - ; - -user_notes_definition: - USER_NOTES attribute { - gregorio_set_score_user_notes (score, $2.text); + | ORISCUS_ORIENTATION attribute { + gregorio_add_score_header(score, $1.text, $2.text); + score->legacy_oriscus_orientation = (strcmp($2.text, "legacy") == 0); } - ; - -attribute: - COLON ATTRIBUTE SEMICOLON { - $$.text = $2.text; - } - | - COLON SEMICOLON { - $$.text = NULL; + | OTHER_HEADER attribute { + gregorio_add_score_header(score, $1.text, $2.text); } - ; - -definition: - number_of_voices_definition - | name_definition - | macro_definition - | gabc_copyright_definition - | score_copyright_definition - | generated_by_definition - | virgula_position_definition - | style_definition - | transcription_date_definition - | transcriber_definition - | manuscript_storage_place_definition - | manuscript_reference_definition - | manuscript_definition - | book_definition - | nabc_lines_definition - | date_definition - | author_definition - | annotation_definition - | office_part_definition - | occasion_definition - | meter_definition - | commentary_definition - | arranger_definition - | gabc_version_definition - | initial_style_definition - | mode_definition - | gregoriotex_font_definition - | user_notes_definition - | centering_scheme_definition - | language_definition | VOICE_CHANGE { next_voice_info(); } @@ -1008,7 +891,7 @@ note: voice=0; nabc_state=0; } - | NOTES CLOSING_BRACKET_WITH_SPACE { + | NOTES closing_bracket_with_space { if (voice<number_of_voices) { gabc_y_add_notes($1.text, @1); free($1.text); @@ -1062,7 +945,7 @@ note: voice=0; nabc_state=0; } - | CLOSING_BRACKET_WITH_SPACE { + | closing_bracket_with_space { elements[voice]=NULL; voice=0; nabc_state=0; @@ -1070,6 +953,12 @@ note: } ; +closing_bracket_with_space: + CLOSING_BRACKET_WITH_SPACE + | CLOSING_BRACKET_WITH_SPACE END_OF_FILE + | CLOSING_BRACKET END_OF_FILE + ; + style_beginning: I_BEGINNING { gregorio_gabc_add_style(ST_ITALIC); @@ -1165,8 +1054,18 @@ character: | euouae ; +text_hyphen: + HYPHEN { + gregorio_gabc_add_text(gregorio_strdup("-")); + } + | text_hyphen HYPHEN { + gregorio_gabc_add_text(gregorio_strdup("-")); + } + ; + text: | text character + | text text_hyphen character ; translation_beginning: @@ -1196,9 +1095,23 @@ syllable_with_notes: first_text_character = current_character; close_syllable(&@1); } + | text HYPHEN OPENING_BRACKET notes { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + rebuild_characters(); + first_text_character = current_character; + close_syllable(&@1); + } | text translation OPENING_BRACKET notes { close_syllable(&@1); } + | text HYPHEN translation OPENING_BRACKET notes { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + close_syllable(&@1); + } ; notes_without_word: diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c index bd733a2af8d..24c21512e10 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c @@ -37,7 +37,18 @@ #include "gabc.h" static __inline char pitch_letter(const char height) { - return height + 'a' - LOWEST_PITCH; + char result = height + 'a' - LOWEST_PITCH; + if (result == 'o') { + return 'p'; + } + return result; +} + +static __inline void unsupported(const char *fn, const char *type, + const char *value) +{ + gregorio_messagef(fn, VERBOSITY_ERROR, 0, _("unsupported %s %s"), type, + value); } /* @@ -57,22 +68,6 @@ static void gabc_write_str_attribute(FILE *f, const char *name, * */ -static void gabc_write_voice_info(FILE *f, gregorio_voice_info *voice_info) -{ - if (!voice_info) { - gregorio_message(_("no voice info"), "gabc_write_voice_info", - VERBOSITY_WARNING, 0); - return; - } - if (voice_info->style) { - fprintf(f, "style: %s;\n", voice_info->style); - } - if (voice_info->virgula_position) { - fprintf(f, "virgula-position: %s;\n", voice_info->virgula_position); - } - /* The clef, voice_info->initial_key, is now output in the gabc proper. */ -} - /* * * Then we start the functions made to write the text of the syllable. See @@ -107,7 +102,16 @@ static void gabc_write_begin(FILE *f, grestyle_style style) case ST_UNDERLINED: fprintf(f, "<ul>"); break; + case ST_INITIAL: + case ST_CENTER: + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + case ST_FIRST_SYLLABLE_INITIAL: + /* nothing should be emitted for these */ + break; default: + unsupported("gabc_write_begin", "style", + grestyle_style_to_string(style)); break; } } @@ -142,7 +146,16 @@ static void gabc_write_end(FILE *f, grestyle_style style) case ST_UNDERLINED: fprintf(f, "</ul>"); break; + case ST_INITIAL: + case ST_CENTER: + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + case ST_FIRST_SYLLABLE_INITIAL: + /* nothing should be emitted for these */ + break; default: + unsupported("gabc_write_end", "style", + grestyle_style_to_string(style)); break; } } @@ -196,23 +209,16 @@ static void gabc_print_char(FILE *f, grewchar to_print) static void gabc_write_end_liquescentia(FILE *f, char liquescentia) { - if (liquescentia == L_NO_LIQUESCENTIA) { - return; - } - if (liquescentia == L_DEMINUTUS - || liquescentia == L_DEMINUTUS_INITIO_DEBILIS) { + switch (liquescentia & TAIL_LIQUESCENTIA_MASK) { + case L_DEMINUTUS: fprintf(f, "~"); - } - if (liquescentia == L_AUCTUS_ASCENDENS - || liquescentia == L_AUCTUS_ASCENDENS_INITIO_DEBILIS) { + break; + case L_AUCTUS_ASCENDENS: fprintf(f, "<"); - } - if (liquescentia == L_AUCTUS_DESCENDENS - || liquescentia == L_AUCTUS_DESCENDENS_INITIO_DEBILIS) { + break; + case L_AUCTUS_DESCENDENS: fprintf(f, ">"); - } - if (liquescentia == L_AUCTA || liquescentia == L_AUCTA_INITIO_DEBILIS) { - fprintf(f, "<"); + break; } } @@ -222,13 +228,13 @@ static void gabc_write_end_liquescentia(FILE *f, char liquescentia) * */ -static void gabc_write_key_change(FILE *f, char step, int line, - bool flatted_key) +static void gabc_write_clef(FILE *f, gregorio_clef_info clef) { - if (flatted_key) { - fprintf(f, "%cb%d", step, line); - } else { - fprintf(f, "%c%d", step, line); + fprintf(f, "%c%s%d", clef.clef == CLEF_C? 'c' : 'f', clef.flatted? "b" : "", + clef.line); + if (clef.secondary_line) { + fprintf(f, "@%c%s%d", clef.secondary_clef == CLEF_C? 'c' : 'f', + clef.secondary_flatted? "b" : "", clef.secondary_line); } } @@ -238,31 +244,42 @@ static void gabc_write_key_change(FILE *f, char step, int line, * */ -static void gabc_write_space(FILE *f, char type) +static void gabc_write_space(FILE *f, gregorio_space type, char *factor, + bool next_is_space) { switch (type) { + case SP_NEUMATIC_CUT: + if (next_is_space) { + /* if the following is not a space, we omit this because the + * code always puts a "/" between elements unless there is some + * other space there */ + fprintf (f, "/"); + } + break; case SP_LARGER_SPACE: fprintf(f, "//"); break; case SP_GLYPH_SPACE: fprintf(f, " "); break; + case SP_AD_HOC_SPACE: + fprintf(f, "/[%s]", factor); + break; + case SP_NEUMATIC_CUT_NB: + fprintf(f, "!/"); + break; case SP_LARGER_SPACE_NB: fprintf(f, "!//"); break; case SP_GLYPH_SPACE_NB: fprintf(f, "! "); break; - case SP_NEUMATIC_CUT_NB: - fprintf(f, "!/"); - break; - case SP_NEUMATIC_CUT: - /* do not uncomment it, the code is strangely done but it works */ - /* fprintf (f, "/"); */ + case SP_AD_HOC_SPACE_NB: + fprintf(f, "!/[%s]", factor); break; default: - gregorio_message(_("space type is unknown"), "gabc_write_space", - VERBOSITY_ERROR, 0); + unsupported("gabc_write_space", "space type", + gregorio_space_to_string(type)); break; } } @@ -273,7 +290,7 @@ static void gabc_write_space(FILE *f, char type) * */ -static void gabc_write_bar(FILE *f, char type) +static void gabc_write_bar(FILE *f, gregorio_bar type) { switch (type) { case B_VIRGULA: @@ -309,16 +326,22 @@ static void gabc_write_bar(FILE *f, char type) case B_DIVISIO_MINOR_D6: fprintf(f, ";6"); break; + case B_DIVISIO_MINOR_D7: + fprintf(f, ";7"); + break; + case B_DIVISIO_MINOR_D8: + fprintf(f, ";8"); + break; default: - gregorio_message(_("unknown bar type, nothing will be done"), - "gabc_bar_to_str", VERBOSITY_ERROR, 0); + unsupported("gabc_write_bar", "bar type", + gregorio_bar_to_string(type)); break; } } /* writing the signs of a bar */ -static void gabc_write_bar_signs(FILE *f, char type) +static void gabc_write_bar_signs(FILE *f, gregorio_sign type) { switch (type) { case _V_EPISEMA: @@ -330,7 +353,12 @@ static void gabc_write_bar_signs(FILE *f, char type) case _BAR_H_EPISEMA: fprintf(f, "_"); break; + case _NO_SIGN: + /* if there's no sign, don't emit anything */ + break; default: + unsupported("gabc_write_bar_signs", "bar signs", + gregorio_sign_to_string(type)); break; } } @@ -355,6 +383,10 @@ static void gabc_hepisema(FILE *f, const char *prefix, bool connect, case H_NORMAL: /* nothing to print */ break; + default: + unsupported("gabc_hepisema", "hepisema size", + grehepisema_size_to_string(size)); + break; } } @@ -379,10 +411,21 @@ static const char *mora_vposition(gregorio_note *note) case VPOS_BELOW: return "0"; default: + unsupported("mora_vposition", "vposition", + gregorio_vposition_to_string(note->mora_vposition)); return ""; } } +static void write_note_heuristics(FILE *f, gregorio_note *note) { + if (note->explicit_high_ledger_line) { + fprintf(f, "[hl:%c]", note->supposed_high_ledger_line? '1' : '0'); + } + if (note->explicit_low_ledger_line) { + fprintf(f, "[ll:%c]", note->supposed_low_ledger_line? '1' : '0'); + } +} + /* * * The function that writes one gregorio_note. @@ -437,6 +480,15 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: fprintf(f, "%cr<", toupper((unsigned char)pitch_letter(note->u.note.pitch))); break; + case S_FLAT: + fprintf(f, "%cx", pitch_letter(note->u.note.pitch)); + break; + case S_NATURAL: + fprintf(f, "%cy", pitch_letter(note->u.note.pitch)); + break; + case S_SHARP: + fprintf(f, "%c#", pitch_letter(note->u.note.pitch)); + break; case S_VIRGA: fprintf(f, "%cv", pitch_letter(note->u.note.pitch)); break; @@ -449,16 +501,17 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case S_TRIVIRGA: fprintf(f, "%cvvv", pitch_letter(note->u.note.pitch)); break; - case S_ORISCUS: - fprintf(f, "%co", pitch_letter(note->u.note.pitch)); - break; - case S_ORISCUS_AUCTUS: - fprintf(f, "%co", pitch_letter(note->u.note.pitch)); - /* we consider that the AUCTUS is also in the liquescentia */ - break; + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_DEMINUTUS: fprintf(f, "%co", pitch_letter(note->u.note.pitch)); - /* we consider that the AUCTUS is also in the liquescentia */ + /* Note: the ASCENDENS, DESCENDENS, or DEMINUTUS is also in the liquescentia */ + break; + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + fprintf(f, "%cor", pitch_letter(note->u.note.pitch)); + /* Note: the ASCENDENS, DESCENDENS, or DEMINUTUS is also in the liquescentia */ break; case S_QUILISMA: fprintf(f, "%cw", pitch_letter(note->u.note.pitch)); @@ -503,6 +556,8 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, fprintf(f, "%cq", pitch_letter(note->u.note.pitch)); break; default: + unsupported("gabc_write_gregorio_note", "shape", + gregorio_shape_to_string(shape)); fprintf(f, "%c", pitch_letter(note->u.note.pitch)); break; } @@ -522,7 +577,12 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case _V_EPISEMA_AUCTUM_DUPLEX: fprintf(f, "'%s..", vepisema_position(note)); break; + case _NO_SIGN: + /* if there's no sign, don't emit anything */ + break; default: + unsupported("gabc_write_gregorio_note", "shape signs", + gregorio_sign_to_string(note->signs)); break; } switch (note->special_sign) { @@ -541,7 +601,12 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case _SEMI_CIRCULUS_REVERSUS: fprintf(f, "r5"); break; + case _NO_SIGN: + /* if there's no sign, don't emit anything */ + break; default: + unsupported("gabc_write_gregorio_note", "special sign", + gregorio_sign_to_string(note->special_sign)); break; } if (note->h_episema_above == HEPISEMA_AUTO @@ -558,6 +623,7 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, note->h_episema_above_size); } } + write_note_heuristics(f, note); if (note->texverb) { fprintf(f, "[nv:%s]", note->texverb); } @@ -582,23 +648,25 @@ static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph) return; } switch (glyph->type) { - case GRE_FLAT: - fprintf(f, "%cx", pitch_letter(glyph->u.misc.pitched.pitch)); - break; case GRE_TEXVERB_GLYPH: if (glyph->texverb) { fprintf(f, "[gv:%s]", glyph->texverb); } break; - case GRE_NATURAL: - fprintf(f, "%cy", pitch_letter(glyph->u.misc.pitched.pitch)); - break; - case GRE_SHARP: - fprintf(f, "%c#", pitch_letter(glyph->u.misc.pitched.pitch)); - break; case GRE_SPACE: - if (glyph->u.misc.unpitched.info.space == SP_ZERO_WIDTH && glyph->next) { - fprintf(f, "!"); + if (glyph->next) { + switch (glyph->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + fprintf(f, "!"); + break; + case SP_HALF_SPACE: + fprintf(f, "/0"); + break; + default: + gregorio_message(_("bad space"), "gabc_write_gregorio_glyph", + VERBOSITY_ERROR, 0); + break; + } } else { gregorio_message(_("bad space"), "gabc_write_gregorio_glyph", VERBOSITY_ERROR, 0); @@ -610,6 +678,8 @@ static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph) case GRE_GLYPH: if (is_initio_debilis(glyph->u.notes.liquescentia)) { fprintf(f, "-"); + } else if (is_fused(glyph->u.notes.liquescentia)) { + fprintf(f, "@"); } current_note = glyph->u.notes.first_note; @@ -621,9 +691,8 @@ static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph) gabc_write_end_liquescentia(f, glyph->u.notes.liquescentia); break; default: - - gregorio_message(_("call with an argument which type is unknown"), - "gabc_write_gregorio_glyph", VERBOSITY_ERROR, 0); + unsupported("gabc_write_gregorio_glyph", "glyph type", + gregorio_type_to_string(glyph->type)); break; } } @@ -664,24 +733,27 @@ static void gabc_write_gregorio_element(FILE *f, gregorio_element *element) } break; case GRE_SPACE: - gabc_write_space(f, element->u.misc.unpitched.info.space); + gabc_write_space(f, element->u.misc.unpitched.info.space, + element->u.misc.unpitched.info.ad_hoc_space_factor, + element->next && element->next->type == GRE_SPACE); break; case GRE_BAR: gabc_write_bar(f, element->u.misc.unpitched.info.bar); gabc_write_bar_signs(f, element->u.misc.unpitched.special_sign); break; - case GRE_C_KEY_CHANGE: - gabc_write_key_change(f, C_KEY, - element->u.misc.pitched.pitch - '0', - element->u.misc.pitched.flatted_key); - break; - case GRE_F_KEY_CHANGE: - gabc_write_key_change(f, F_KEY, - element->u.misc.pitched.pitch - '0', - element->u.misc.pitched.flatted_key); + case GRE_CLEF: + gabc_write_clef(f, element->u.misc.clef); break; case GRE_END_OF_LINE: - fprintf(f, "z"); + if (element->u.misc.unpitched.info.eol_ragged) { + fprintf(f, "Z"); + } else { + fprintf(f, "z"); + } + if (element->u.misc.unpitched.info.eol_forces_custos) { + fprintf(f, element->u.misc.unpitched.info.eol_forces_custos_on? "+" + : "-"); + } break; case GRE_CUSTOS: if (element->u.misc.pitched.force_pitch) { @@ -691,8 +763,8 @@ static void gabc_write_gregorio_element(FILE *f, gregorio_element *element) } break; default: - gregorio_message(_("call with an argument which type is unknown"), - "gabc_write_gregorio_element", VERBOSITY_ERROR, 0); + unsupported("gabc_write_gregorio_element", "element type", + gregorio_type_to_string(element->type)); break; } } @@ -712,8 +784,7 @@ static void gabc_write_gregorio_elements(FILE *f, gregorio_element *element) /* we don't want a bar after an end of line */ if (element->type != GRE_END_OF_LINE && (element->type != GRE_SPACE - || (element->type == GRE_SPACE - && element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT)) + || element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT) && element->next && element->next->type == GRE_ELEMENT) { fprintf(f, "/"); } @@ -739,19 +810,15 @@ static void gabc_write_gregorio_syllable(FILE *f, gregorio_syllable *syllable, if (syllable->text) { /* we call the magic function (defined in struct_utils.c), that will * write our text. */ - gregorio_write_text(false, syllable->text, f, - (&gabc_write_verb), - (&gabc_print_char), - (&gabc_write_begin), - (&gabc_write_end), (&gabc_write_special_char)); + gregorio_write_text(WTP_NORMAL, syllable->text, f, &gabc_write_verb, + &gabc_print_char, &gabc_write_begin, &gabc_write_end, + &gabc_write_special_char); } if (syllable->translation) { fprintf(f, "["); - gregorio_write_text(false, syllable->translation, f, - (&gabc_write_verb), - (&gabc_print_char), - (&gabc_write_begin), - (&gabc_write_end), (&gabc_write_special_char)); + gregorio_write_text(WTP_NORMAL, syllable->translation, f, + &gabc_write_verb, &gabc_print_char, &gabc_write_begin, + &gabc_write_end, &gabc_write_special_char); fprintf(f, "]"); } fprintf(f, "("); @@ -784,10 +851,8 @@ static void gabc_write_gregorio_syllable(FILE *f, gregorio_syllable *syllable, void gabc_write_score(FILE *f, gregorio_score *score) { - char step; - int line; gregorio_syllable *syllable; - int annotation_num; + gregorio_header *header; if (!f) { gregorio_message(_("call with NULL file"), "gregoriotex_write_score", @@ -795,62 +860,21 @@ void gabc_write_score(FILE *f, gregorio_score *score) return; } - if (score->name) { - gabc_write_str_attribute(f, "name", score->name); - } else { - fprintf(f, "name: unknown;\n"); - gregorio_message(_("name is mandatory"), "gabc_write_score", - VERBOSITY_ERROR, 0); + for (header = score->headers; header; header = header->next) { + gabc_write_str_attribute(f, header->name, header->value); } - gabc_write_str_attribute(f, "gabc-copyright", score->gabc_copyright); - gabc_write_str_attribute(f, "score-copyright", score->score_copyright); - gabc_write_str_attribute(f, "office-part", score->office_part); - gabc_write_str_attribute(f, "occasion", score->occasion); - gabc_write_str_attribute(f, "meter", score->meter); - gabc_write_str_attribute(f, "commentary", score->commentary); - gabc_write_str_attribute(f, "arranger", score->arranger); - /* We always create gabc of the current version; this is not derived - * from the input. */ - fprintf(f, "gabc-version: %s;\n", GABC_CURRENT_VERSION); /* And since the gabc is generated by this program, note this. */ fprintf(f, "generated-by: %s %s;\n", "gregorio", GREGORIO_VERSION); - gabc_write_str_attribute(f, "author", score->si.author); - gabc_write_str_attribute(f, "date", score->si.date); - gabc_write_str_attribute(f, "manuscript", score->si.manuscript); - gabc_write_str_attribute(f, "manuscript-reference", - score->si.manuscript_reference); - gabc_write_str_attribute(f, "manuscript-storage-place", - score->si.manuscript_storage_place); - gabc_write_str_attribute(f, "book", score->si.book); - gabc_write_str_attribute(f, "transcriber", score->si.transcriber); - gabc_write_str_attribute(f, "transcription-date", - score->si.transcription_date); - gabc_write_str_attribute(f, "gregoriotex-font", score->gregoriotex_font); - if (score->mode) { - fprintf(f, "mode: %d;\n", score->mode); - } - for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { - if (score->annotation[annotation_num]) { - fprintf(f, "annotation: %s;\n", - score->annotation[annotation_num]); - } - } - if (score->initial_style != NORMAL_INITIAL) { - fprintf(f, "initial-style: %d;\n", score->initial_style); - } - gabc_write_str_attribute(f, "user-notes", score->user_notes); if (score->number_of_voices == 0) { gregorio_message(_("gregorio_score seems to be empty"), "gabc_write_score", VERBOSITY_ERROR, 0); return; } if (score->number_of_voices == 1) { - gabc_write_voice_info(f, score->first_voice_info); fprintf(f, "%%%%\n"); } else { gregorio_voice_info *voice_info = score->first_voice_info; while (voice_info) { - gabc_write_voice_info(f, voice_info); if (voice_info->next_voice_info) { fprintf(f, "--\n"); } else { @@ -859,12 +883,10 @@ void gabc_write_score(FILE *f, gregorio_score *score) } } /* at present we only allow for one clef at the start of the gabc */ - gregorio_det_step_and_line_from_key(score->first_voice_info->initial_key, - &step, &line); - if (score->first_voice_info->flatted_key) { - fprintf(f, "(%cb%d)", step, line); - } else { - fprintf(f, "(%c%d)", step, line); + if (score->first_voice_info) { + fprintf(f, "("); + gabc_write_clef(f, score->first_voice_info->initial_clef); + fprintf(f, ")"); } syllable = score->first_syllable; /* the we write every syllable */ diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h index 73c7f64f60a..ecb75be6b22 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h @@ -29,11 +29,12 @@ /* functions to read gabc */ gregorio_note *gabc_det_notes_from_string(char *str, char *macros[10], - gregorio_scanner_location *loc); + gregorio_scanner_location *loc, const gregorio_score *score); gregorio_element *gabc_det_elements_from_string(char *str, int *current_key, - char *macros[10], gregorio_scanner_location *loc); + char *macros[10], gregorio_scanner_location *loc, + const gregorio_score *const score); gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, - int *current_key); + int *current_key, const gregorio_score *score); void gabc_digest(const void *buf, size_t size); int gabc_score_determination_lex_destroy(void); int gabc_notes_determination_lex_destroy(void); diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c b/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c index d6c8c0a8953..d03e8046ef5 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c @@ -67,8 +67,16 @@ typedef enum gregorio_file_format { /* _MAX_PATH is being passed for the maxLength (third) argument of _fullpath, * but we are always passing NULL for the absPath (first) argument, so it will * be ignored per the MSDN documentation */ -#define realpath(path,resolved_path) _fullpath(resolved_path, path, _MAX_PATH) -#endif +#define gregorio_realpath(path,resolved_path) _fullpath(resolved_path,path,_MAX_PATH) +#else +#ifdef FUNC_REALPATH_WORKS +#define gregorio_realpath(path,resolved_path) realpath(path,resolved_path) +#else +/* When realpath doesn't work (on an older system), we are forced to use + * PATH_MAX to allocate a buffer */ +#define gregorio_realpath(path,resolved_path) realpath(path,gregorio_malloc(PATH_MAX)) +#endif /* FUNC_REALPATH_WORKS */ +#endif /* _WIN32 */ /* define_path attempts to canonicalize the pathname of a given string */ static char *define_path(char *current_directory, char *string) @@ -96,7 +104,7 @@ static char *define_path(char *current_directory, char *string) base_name++; /* try to resolve it */ - file_name = realpath(temp_name, NULL); + file_name = gregorio_realpath(temp_name, NULL); if (!file_name) { fprintf(stderr, "the directory %s for %s does not exist\n", temp_name, base_name); @@ -238,7 +246,7 @@ static char *encode_point_and_click_filename(char *input_file_name) static const char *const hex = "0123456789ABCDEF"; char *filename, *result = NULL, *r = NULL, *p; - filename = realpath(input_file_name, NULL); + filename = gregorio_realpath(input_file_name, NULL); if (!filename) { fprintf(stderr, "error: unable to resolve %s\n", input_file_name); exit(1); @@ -279,6 +287,7 @@ static char *encode_point_and_click_filename(char *input_file_name) *r = '\0'; + free(filename); return result; } @@ -319,7 +328,7 @@ int main(int argc, char **argv) gregorio_score *score = NULL; #ifdef USE_KPSE - kpse_set_program_name("gregorio", "gregorio"); + kpse_set_program_name(argv[0], "gregorio"); #endif if (argc == 1) { print_usage(argv[0]); @@ -560,7 +569,6 @@ int main(int argc, char **argv) if (point_and_click) { fprintf(stderr, "warning: disabling point-and-click since reading from stdin\n"); - point_and_click = false; } } else { input_file = fopen(input_file_name, "r"); @@ -614,7 +622,7 @@ int main(int argc, char **argv) exit(1); } - gregorio_fix_initial_keys(score, DEFAULT_KEY); + gregorio_fix_initial_keys(score, gregorio_default_clef); switch (output_format) { case GABC: diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c index 987cddd7372..29500d7e840 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c @@ -85,10 +85,17 @@ OFFSET_CASE(FinalConnectedVirga); OFFSET_CASE(InitialVirga); OFFSET_CASE(SalicusOriscusWide); OFFSET_CASE(SalicusOriscusOne); +OFFSET_CASE(LeadingPunctum); +OFFSET_CASE(LeadingQuilisma); +OFFSET_CASE(LeadingOriscus); +OFFSET_CASE(Flat); +OFFSET_CASE(Sharp); +OFFSET_CASE(Natural); static __inline const char *note_before_last_note_case_ignoring_deminutus( const gregorio_note *const current_note) { + assert(current_note->next); if ((current_note->u.note.pitch - current_note->next->u.note.pitch) == 1 || (current_note->u.note.pitch - current_note->next->u.note.pitch) == -1) { @@ -112,8 +119,7 @@ static __inline const char *note_before_last_note_case( const gregorio_glyph *const current_glyph, const gregorio_note *const current_note) { - if ((current_glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS - || current_glyph->u.notes.liquescentia == L_DEMINUTUS) + if ((current_glyph->u.notes.liquescentia & L_DEMINUTUS) && current_note->next) { return PenultBeforeDeminutus; } else { @@ -145,7 +151,7 @@ static __inline const char *last_note_case( } if (current_note->previous->u.note.pitch < current_note->u.note.pitch) { if (current_glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { return FinalConnectedAuctus; } else { return FinalConnectedVirga; @@ -169,28 +175,42 @@ static __inline const char *first_note_case( != 1) { ambitus_one = false; } - if (current_note->u.note.shape == S_ORISCUS) { + switch (current_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: return ambitus_one ? InitialOriscus : InitialConnectedOriscus; - } - if (current_note->u.note.shape == S_QUILISMA) { + + case S_QUILISMA: return ambitus_one ? InitialQuilisma : InitialConnectedQuilisma; - } - if (ambitus_one) { - return InitialPunctum; - } - if (current_note->u.note.shape > current_note->next->u.note.shape) { - return InitialConnectedVirga; - } else { - return InitialConnectedPunctum; + + default: + if (ambitus_one) { + return InitialPunctum; + } + if (current_note->u.note.pitch > current_note->next->u.note.pitch) { + return InitialConnectedVirga; + } else { + return InitialConnectedPunctum; + } } } } +static __inline const char *fused_single_note_case( + const gregorio_glyph *const glyph, const char *const unfused_case, + const char *const fused_case) { + int fuse_to_next_glyph = glyph->u.notes.fuse_to_next_glyph; + if (fuse_to_next_glyph < -1 || fuse_to_next_glyph > 1) { + return fused_case; + } + return unfused_case; +} + static __inline gregorio_vposition above_if_auctus( const gregorio_glyph *const glyph) { if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { return VPOS_ABOVE; } return VPOS_BELOW; @@ -200,7 +220,7 @@ static __inline gregorio_vposition below_if_auctus( const gregorio_glyph *const glyph) { if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { return VPOS_BELOW; } return VPOS_ABOVE; @@ -215,6 +235,17 @@ static __inline gregorio_vposition above_if_h_episema( return VPOS_BELOW; } +static __inline gregorio_vposition above_if_fused_next_h_episema( + const gregorio_glyph *glyph) +{ + const gregorio_glyph *next = gregorio_next_non_texverb_glyph(glyph); + if (next && next->type == GRE_GLYPH + && is_fused(next->u.notes.liquescentia)) { + return above_if_h_episema(next->u.notes.first_note); + } + return VPOS_BELOW; +} + static __inline gregorio_vposition above_if_either_h_episema( const gregorio_note *const note) { @@ -241,7 +272,7 @@ static __inline void low_high_set_lower(const gregorio_glyph *const glyph, { if ((glyph->u.notes.liquescentia & L_DEMINUTUS) || !(glyph->u.notes.liquescentia - & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA))) { + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { note->is_lower_note = true; } } @@ -251,7 +282,7 @@ static __inline void low_high_set_upper(const gregorio_glyph *const glyph, { if ((glyph->u.notes.liquescentia & L_DEMINUTUS) || !(glyph->u.notes.liquescentia - & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA))) { + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { note->is_upper_note = true; } } @@ -349,6 +380,7 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, { gregorio_vposition h_episema = VPOS_AUTO, v_episema = VPOS_AUTO; bool v_episema_below_is_lower = false, done; + const gregorio_glyph *previous; /* no need to clear is_lower_note/is_upper_note because we used calloc */ @@ -386,8 +418,11 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, } break; case T_PESQUADRATUM: + case T_PESQUADRATUM_LONGQUEUE: case T_PESQUASSUS: + case T_PESQUASSUS_LONGQUEUE: case T_PESQUILISMAQUADRATUM: + case T_PESQUILISMAQUADRATUM_LONGQUEUE: if (i == 1) { note->gtex_offset_case = first_note_case(note, glyph); h_episema = above_if_h_episema(note->next); @@ -455,7 +490,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondOneAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondOneAny; break; @@ -469,7 +505,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondWideAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondWideAny; break; @@ -543,7 +580,7 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, case HEPISEMA_FIRST_TWO: case 2: if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { /* auctus */ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) { note->gtex_offset_case = TorcResDebilisAuctusSecondAnyAny; @@ -555,7 +592,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondOneAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondOneAny; break; @@ -569,7 +607,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondWideAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondWideAny; break; @@ -593,7 +632,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondOneOne; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondOneOne; break; @@ -608,7 +648,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondWideOne; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondWideOne; break; @@ -632,7 +673,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondOneWide; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondOneWide; break; @@ -647,7 +689,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondWideWide; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondWideWide; break; @@ -673,16 +716,17 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, break; } /* else fallthrough to the next case! */ - case T_PORRECTUS: + case T_PORRECTUS: /* or porrectus-like flexus */ switch (i) { case HEPISEMA_FIRST_TWO: case 1: - if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + if (glyph->u.notes.fuse_to_next_glyph || + (glyph->u.notes.liquescentia + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { /* auctus */ note->gtex_offset_case = PorrAuctusInitialAny; - } else if (note->next->next->u.note.pitch - - note->next->u.note.pitch == 1) { + } else if (note->next->next->u.note.pitch + - note->next->u.note.pitch == 1) { /* non-auctus with a second ambitus of 1 */ note->gtex_offset_case = PorrNonAuctusInitialOne; } else { @@ -698,12 +742,16 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, if (glyph->u.notes.liquescentia & L_DEMINUTUS) { note->gtex_offset_case = PenultBeforeDeminutus; } else if (glyph->u.notes.liquescentia - & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA)) { + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { note->gtex_offset_case = PenultBeforePunctumWide; } else { note->gtex_offset_case = FinalPunctum; } h_episema = above_if_h_episema(note->previous); + if (h_episema == VPOS_BELOW && !note->next) { + /* handle porrectus-like flexus */ + h_episema = above_if_fused_next_h_episema(glyph); + } v_episema = VPOS_BELOW; break; default: /* case 3 */ @@ -741,6 +789,27 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, break; } break; + case T_SALICUS_FLEXUS: + done = true; + v_episema = VPOS_BELOW; + switch (i) { + case 3: + note->gtex_offset_case = note_before_last_note_case(glyph, note); + h_episema = VPOS_ABOVE; + break; + case 4: + note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note, + false); + h_episema = VPOS_BELOW; + break; + default: + done = false; + break; + } + if (done) { + break; + } + /* else fallthrough to the next case! */ case T_SALICUS: case T_SALICUS_LONGQUEUE: v_episema = VPOS_BELOW; @@ -841,7 +910,14 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, } break; default: /* case T_ONE_NOTE */ - h_episema = VPOS_ABOVE; + previous = gregorio_previous_non_texverb_glyph(glyph); + if ((!previous || previous->type != GRE_GLYPH + || previous->u.notes.fuse_to_next_glyph < 0) + && (glyph->u.notes.fuse_to_next_glyph > 0)) { + h_episema = above_if_fused_next_h_episema(glyph); + } else { + h_episema = VPOS_ABOVE; + } v_episema = VPOS_BELOW; switch (note->u.note.shape) { case S_PUNCTUM_INCLINATUM_DEMINUTUS: @@ -857,11 +933,18 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = FinalStropha; break; case S_QUILISMA: - note->gtex_offset_case = FinalQuilisma; + note->gtex_offset_case = fused_single_note_case(glyph, + FinalQuilisma, LeadingQuilisma); break; - case S_ORISCUS: - case S_ORISCUS_AUCTUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_DEMINUTUS: + note->gtex_offset_case = fused_single_note_case(glyph, FinalOriscus, + LeadingOriscus); + break; + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: note->gtex_offset_case = FinalOriscus; break; case S_VIRGA: @@ -881,9 +964,19 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, case S_LINEA: note->gtex_offset_case = FinalPunctum; break; + case S_FLAT: + note->gtex_offset_case = Flat; + break; + case S_SHARP: + note->gtex_offset_case = Sharp; + break; + case S_NATURAL: + note->gtex_offset_case = Natural; + break; default: - note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note, - true); + note->gtex_offset_case = last_note_case(glyph, + fused_single_note_case(glyph, FinalPunctum, LeadingPunctum), + note, true); break; } break; @@ -966,6 +1059,8 @@ typedef struct height_computation { const gregorio_element *start_element; const gregorio_glyph *start_glyph; gregorio_note *start_note; + const gregorio_element *last_connected_element; + const gregorio_glyph *last_connected_glyph; gregorio_note *last_connected_note; } height_computation; @@ -1023,6 +1118,23 @@ static bool is_h_episema_below_better_height(const signed char new_height, return new_height < old_height; } +static __inline bool has_high_ledger_line(const signed char height, + bool is_sign, const gregorio_score *const score) +{ + if (is_sign) { + return height > score->high_ledger_line_pitch; + } + return height >= score->high_ledger_line_pitch; +} + +static __inline bool has_low_ledger_line(const signed char height, bool is_sign) +{ + if (is_sign) { + return height < LOW_LEDGER_LINE_PITCH; + } + return height <= LOW_LEDGER_LINE_PITCH; +} + static __inline void start_h_episema(height_computation *const h, const gregorio_element *const element, const gregorio_glyph *const glyph, gregorio_note *const note) @@ -1034,8 +1146,115 @@ static __inline void start_h_episema(height_computation *const h, h->height = compute_h_episema_height(glyph, note, h->vpos); } +static __inline void position_h_episema(gregorio_note *const note, + const height_computation *const h, const bool connect, + const bool high_ledger_line, const bool low_ledger_line) +{ + h->position(note, h->height, connect); + if (!note->explicit_high_ledger_line && !note->supposed_high_ledger_line) { + note->supposed_high_ledger_line = high_ledger_line; + } + if (!note->explicit_low_ledger_line && !note->supposed_low_ledger_line) { + note->supposed_low_ledger_line = low_ledger_line; + } +} + +static __inline void next_has_ledger_line( + const height_computation *const h, bool *high_ledger_line, + bool *low_ledger_line, const gregorio_score *const score) +{ + const gregorio_element *element = h->last_connected_element; + const gregorio_glyph *glyph = h->last_connected_glyph; + gregorio_note *note = h->last_connected_note; + bool eat_upper_note = note->is_lower_note, keep_going = false; + + if (!*high_ledger_line || !*low_ledger_line) { + /* going forwards, we must iterate through any lower notes */ + do { + note = note->next; + if (!note) { + do { + glyph = glyph->next; + if (!glyph) { + do { + element = element->next; + if (!element) { + return; + } + } while (element->type != GRE_ELEMENT); + glyph = element->u.first_glyph; + } + } while (glyph->type != GRE_GLYPH); + note = glyph->u.notes.first_note; + } + + *high_ledger_line = *high_ledger_line + || has_high_ledger_line(note->u.note.pitch, false, score); + *low_ledger_line = *low_ledger_line + || has_low_ledger_line(note->u.note.pitch, false); + + if (keep_going) { + keep_going = false; + } + if (eat_upper_note && note->is_upper_note) { + eat_upper_note = false; + keep_going = true; + } + } while ((!*high_ledger_line || !*low_ledger_line) + && (note->is_lower_note || keep_going)); + } +} + +static __inline void previous_has_ledger_line( + const height_computation *const h, bool *high_ledger_line, + bool *low_ledger_line, const gregorio_score *const score) +{ + const gregorio_element *element = h->start_element; + const gregorio_glyph *glyph = h->start_glyph; + gregorio_note *note = h->start_note; + bool eat_lower_note = note->is_upper_note, keep_going = false; + + if (!*high_ledger_line || !*low_ledger_line) { + /* going backwards, we must iterate through any upper notes */ + do { + note = note->previous; + if (!note) { + do { + glyph = glyph->previous; + if (!glyph) { + do { + element = element->previous; + if (!element) { + return; + } + } while (element->type != GRE_ELEMENT); + for (glyph = element->u.first_glyph; glyph->next; + glyph = glyph->next) { + /* just iterate to find the last glyph */ + } + } + } while (glyph->type != GRE_GLYPH); + note = gregorio_glyph_last_note(glyph); + } + *high_ledger_line = *high_ledger_line + || has_high_ledger_line(note->u.note.pitch, false, score); + *low_ledger_line = *low_ledger_line + || has_low_ledger_line(note->u.note.pitch, false); + + if (keep_going) { + keep_going = false; + } + if (eat_lower_note && note->is_lower_note) { + eat_lower_note = false; + keep_going = true; + } + } while ((!*high_ledger_line || !*low_ledger_line) + && (note->is_upper_note || keep_going)); + } +} + static __inline void set_h_episema_height(const height_computation *const h, - gregorio_note *const end) + gregorio_note *const end, const gregorio_score *const score) { gregorio_note *last_note = NULL; @@ -1043,6 +1262,14 @@ static __inline void set_h_episema_height(const height_computation *const h, const gregorio_glyph *glyph = h->start_glyph; gregorio_note *note = h->start_note; + bool high_ledger_line = has_high_ledger_line(h->height, true, score) + || has_high_ledger_line(h->height - h->vpos, false, score); + bool low_ledger_line = has_low_ledger_line(h->height, true) + || has_low_ledger_line(h->height - h->vpos, false); + + next_has_ledger_line(h, &high_ledger_line, &low_ledger_line, score); + previous_has_ledger_line(h, &high_ledger_line, &low_ledger_line, score); + for ( ; element; element = element->next) { if (element->type == GRE_ELEMENT) { for (glyph = glyph? glyph : element->u.first_glyph; glyph; @@ -1052,12 +1279,14 @@ static __inline void set_h_episema_height(const height_computation *const h, note = note->next) { if (end && note == end) { if (last_note) { - h->position(last_note, h->height, false); + position_h_episema(last_note, h, false, + high_ledger_line, low_ledger_line); } return; } if (h->is_applicable(note)) { - h->position(note, h->height, true); + position_h_episema(note, h, true, high_ledger_line, + low_ledger_line); last_note = note; } } @@ -1069,7 +1298,8 @@ static __inline void set_h_episema_height(const height_computation *const h, } if (last_note) { - h->position(last_note, h->height, false); + position_h_episema(last_note, h, false, high_ledger_line, + low_ledger_line); } } @@ -1101,45 +1331,68 @@ static __inline bool has_space_to_left(const gregorio_note *const note) { } static __inline void end_h_episema(height_computation *const h, - gregorio_note *const end) + gregorio_note *const end, const gregorio_score *const score) { signed char proposed_height; if (h->active) { /* don't let the episema clash with the note before or after */ - if (is_connected_left(h->get_size(h->start_note)) - && h->start_note->previous - && h->start_note->previous->type == GRE_NOTE - && is_connected_right(h->get_size(h->start_note->previous)) - && !has_space_to_left(h->start_note)) { - proposed_height = h->start_note->previous->u.note.pitch + h->vpos; - if (h->is_better_height(proposed_height, h->height)) { - h->height = proposed_height; - } - } - if (end && end->type == GRE_NOTE) { - gregorio_note *note; - /* this loop checks that it's within the same glyph */ - for (note = end->previous; note; note = note->previous) { - if (note == h->start_note) { - if (is_connected_left(h->get_size(end)) - && h->last_connected_note - && h->last_connected_note->next - && h->last_connected_note->next->type == GRE_NOTE - && !has_space_to_left(h->last_connected_note->next) - && is_connected_right(h->get_size( - h->last_connected_note))) { - proposed_height = end->u.note.pitch + h->vpos; + if (is_connected_left(h->get_size(h->start_note))) { + if (h->start_note->previous) { + if (!has_space_to_left(h->start_note) + && h->start_note->previous->type == GRE_NOTE + && is_connected_right(h->get_size( + h->start_note->previous))) { + proposed_height = h->start_note->previous->u.note.pitch + h->vpos; + if (h->is_better_height(proposed_height, h->height)) { + h->height = proposed_height; + } + } + } else { + const gregorio_glyph *previous = + gregorio_previous_non_texverb_glyph(h->start_glyph); + if (previous && previous->type == GRE_GLYPH + && is_fused(h->start_glyph->u.notes.liquescentia)) { + gregorio_note *note = gregorio_glyph_last_note( + h->start_glyph->previous); + if (note->type == GRE_NOTE + && is_connected_right(h->get_size(note))) { + proposed_height = note->u.note.pitch + h->vpos; if (h->is_better_height(proposed_height, h->height)) { h->height = proposed_height; } } - break; + } + } + } + if (end && end->type == GRE_NOTE && is_connected_left(h->get_size(end)) + && h->last_connected_note + && is_connected_right(h->get_size(h->last_connected_note))) { + if (h->last_connected_note->next) { + if (h->last_connected_note->next->type == GRE_NOTE + && !has_space_to_left(h->last_connected_note->next)) { + gregorio_note *note; + /* this loop checks that it's within the same glyph */ + for (note = end->previous; note; note = note->previous) { + if (note == h->start_note) { + proposed_height = end->u.note.pitch + h->vpos; + if (h->is_better_height(proposed_height, + h->height)) { + h->height = proposed_height; + } + break; + } + } + } + } else if (is_fused(end->u.note.liquescentia) && !end->previous) { + proposed_height = end->u.note.pitch + h->vpos; + if (h->is_better_height(proposed_height, h->height)) { + h->height = proposed_height; } } } - set_h_episema_height(h, end); + set_h_episema_height(h, end, score); h->active = false; h->height = 0; @@ -1147,6 +1400,8 @@ static __inline void end_h_episema(height_computation *const h, h->start_element = NULL; h->start_glyph = NULL; h->start_note = NULL; + h->last_connected_element = NULL; + h->last_connected_glyph = NULL; h->last_connected_note = NULL; } } @@ -1154,7 +1409,7 @@ static __inline void end_h_episema(height_computation *const h, static __inline void compute_h_episema(height_computation *const h, const gregorio_element *const element, const gregorio_glyph *const glyph, gregorio_note *const note, - const int i, const gtex_type type) + const int i, const gtex_type type, const gregorio_score *const score) { signed char next_height; grehepisema_size size; @@ -1174,7 +1429,7 @@ static __inline void compute_h_episema(height_computation *const h, } } else { - end_h_episema(h, note); + end_h_episema(h, note, score); start_h_episema(h, element, glyph, note); } } else { @@ -1182,9 +1437,11 @@ static __inline void compute_h_episema(height_computation *const h, } h->connected = h->is_connected(note) && is_connected_right(size); + h->last_connected_element = element; + h->last_connected_glyph = glyph; h->last_connected_note = note; } else { - end_h_episema(h, note); + end_h_episema(h, note, score); } } else if (!h->is_shown(note)) { /* special handling for porrectus shapes because of their shape: @@ -1195,14 +1452,14 @@ static __inline void compute_h_episema(height_computation *const h, case T_PORRECTUS: case T_PORRECTUS_FLEXUS: if (i == 2) { - end_h_episema(h, note); + end_h_episema(h, note, score); } break; case T_TORCULUS_RESUPINUS: case T_TORCULUS_RESUPINUS_FLEXUS: if (i == 3) { - end_h_episema(h, note); + end_h_episema(h, note, score); } break; @@ -1216,7 +1473,7 @@ static __inline void compute_h_episema(height_computation *const h, static __inline void compute_note_positioning(height_computation *const above, height_computation *const below, const gregorio_element *const element, const gregorio_glyph *const glyph, gregorio_note *const note, - const int i, const gtex_type type) + const int i, const gtex_type type, const gregorio_score *const score) { gregorio_vposition default_vpos = advise_positioning(glyph, note, i, type); @@ -1230,11 +1487,165 @@ static __inline void compute_note_positioning(height_computation *const above, } } - compute_h_episema(above, element, glyph, note, i, type); - compute_h_episema(below, element, glyph, note, i, type); + compute_h_episema(above, element, glyph, note, i, type, score); + compute_h_episema(below, element, glyph, note, i, type, score); +} + +static __inline int compute_fused_shift(const gregorio_glyph *glyph) +{ + int shift; + gregorio_note *first_note, *prev_note; + const gregorio_glyph *next, *previous; + bool next_is_fused; + + if (!glyph || !is_fused(glyph->u.notes.liquescentia) + || glyph->type != GRE_GLYPH + || !(first_note = glyph->u.notes.first_note) + || first_note->type != GRE_NOTE + || !(previous = gregorio_previous_non_texverb_glyph(glyph)) + || previous->type != GRE_GLYPH + || previous->u.notes.liquescentia & TAIL_LIQUESCENTIA_MASK + || !previous->u.notes.first_note) { + /* base conditions prevent fusion */ + return 0; + } + + next = gregorio_next_non_texverb_glyph(glyph); + next_is_fused = next && next->type == GRE_GLYPH + && is_fused(next->u.notes.liquescentia); + + switch (glyph->u.notes.glyph_type) { + case G_PORRECTUS: + case G_PODATUS: + if (next_is_fused) { + return 0; + } + /* else it may be fused to the previous note */ + break; + + case G_PUNCTUM: + case G_FLEXA: + /* these may be fused to the previous note */ + break; + + default: + /* anything else may not be fused to the previous note */ + return 0; + } + + switch (first_note->u.note.shape) { + case S_QUILISMA: + case S_QUILISMA_QUADRATUM: + case S_PUNCTUM_CAVUM: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + case S_FLAT: + case S_SHARP: + case S_NATURAL: + /* if this glyph starts with one of these, it's not fusable */ + return 0; + + default: + /* anything else is potentially fusable */ + break; + } + + switch (previous->u.notes.glyph_type) { + case G_PUNCTUM: + case G_FLEXA: + case G_VIRGA_REVERSA: + /* these are potentially fusable to this note */ + break; + + default: + /* everything else is not fusable */ + return 0; + } + + prev_note = gregorio_glyph_last_note(previous); + + if (prev_note->type != GRE_NOTE) { + /* previous note wasn't a note */ + return 0; + } + + switch (prev_note->u.note.shape) { + case S_PUNCTUM_CAVUM: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + case S_FLAT: + case S_SHARP: + case S_NATURAL: + /* these don't fuse to anything */ + return 0; + + default: + /* anything else is potentially fusable */ + break; + } + + shift = first_note->u.note.pitch - prev_note->u.note.pitch; + if (shift < -5 || shift > 5) { + /* ambitus too large to fuse */ + return 0; + } + + if (shift > 0 && previous->u.notes.glyph_type == G_VIRGA_REVERSA) { + /* virga reversa cannot fuse upwards */ + return 0; + } + + /* the FLEXA check below checks for a porrectus-like flexus, which is not + * fusable from above */ + if (shift < 0 && ((next_is_fused && glyph->u.notes.glyph_type == G_FLEXA) + || glyph->u.notes.glyph_type == G_PORRECTUS + || (previous->u.notes.glyph_type == G_PUNCTUM + && is_initio_debilis(previous->u.notes.liquescentia)))) { + /* may not be fused from above */ + return 0; + } + + /* Special cases for oriscus */ + switch (first_note->u.note.shape) { + gregorio_note *next_note; + const gregorio_glyph *next_glyph; + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_SCAPUS: + next_note = first_note->next; + if (!next_note && (next_glyph = gregorio_next_non_texverb_glyph(glyph)) + && next_glyph->type == GRE_GLYPH + && is_fused(next_glyph->u.notes.liquescentia)) { + next_note = next_glyph->u.notes.first_note; + } + if (next_note) { + if (next_note->u.note.pitch < first_note->u.note.pitch) { + /* then this note should be an down-up-down oriscus */ + if (shift > 0) { + /* down-up-down oricus cannot be fused from below */ + return 0; + } + } else { + /* then this note should be an up-down-up oriscus */ + if (shift < 0) { + /* up-down-up oricus cannot be fused from above */ + return 0; + } + } + } + break; + + default: + break; + } + + return shift; } -void gregoriotex_compute_positioning(const gregorio_element *element) +void gregoriotex_compute_positioning(const gregorio_element *element, + const gregorio_score *const score) { height_computation above = { /*.vpos =*/ VPOS_ABOVE, @@ -1251,6 +1662,8 @@ void gregoriotex_compute_positioning(const gregorio_element *element) /*.start_element =*/ NULL, /*.start_glyph =*/ NULL, /*.start_note =*/ NULL, + /*.last_connected_element =*/ NULL, + /*.last_connected_glyph =*/ NULL, /*.last_connected_note =*/ NULL, }; height_computation below = { @@ -1268,6 +1681,8 @@ void gregoriotex_compute_positioning(const gregorio_element *element) /*.start_element =*/ NULL, /*.start_glyph =*/ NULL, /*.start_note =*/ NULL, + /*.last_connected_element =*/ NULL, + /*.last_connected_glyph =*/ NULL, /*.last_connected_note =*/ NULL, }; int i; @@ -1276,11 +1691,13 @@ void gregoriotex_compute_positioning(const gregorio_element *element) for (; element; element = element->next) { if (element->type == GRE_ELEMENT) { - const gregorio_glyph *glyph; + gregorio_glyph *glyph; for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { if (glyph->type == GRE_GLYPH) { gregorio_note *note; + glyph->u.notes.fuse_to_next_glyph = compute_fused_shift( + gregorio_next_non_texverb_glyph(glyph)); i = 0; gregoriotex_determine_glyph_name(glyph, element, &ignored, &type); @@ -1288,17 +1705,17 @@ void gregoriotex_compute_positioning(const gregorio_element *element) note = note->next) { if (note->type == GRE_NOTE) { compute_note_positioning(&above, &below, element, - glyph, note, ++i, type); + glyph, note, ++i, type, score); } } } } } else if (!is_bridgeable_space(element)) { - end_h_episema(&above, NULL); - end_h_episema(&below, NULL); + end_h_episema(&above, NULL, score); + end_h_episema(&below, NULL, score); } } - end_h_episema(&above, NULL); - end_h_episema(&below, NULL); + end_h_episema(&above, NULL, score); + end_h_episema(&below, NULL, score); } diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c index 8105faaecb7..524c61b286d 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c @@ -66,13 +66,100 @@ typedef struct gregoriotex_status { #define MAX_AMBITUS 5 static const char *tex_ambitus[] = { - NULL, "One", "Two", "Three", "Four", "Five" + "", "One", "Two", "Three", "Four", "Five" }; +#define SHAPE(NAME) static const char *const SHAPE_##NAME = #NAME +SHAPE(Ancus); +SHAPE(AncusLongqueue); +SHAPE(Flat); +SHAPE(Flexus); +SHAPE(FlexusLongqueue); +SHAPE(FlexusNobar); +SHAPE(FlexusOriscus); +SHAPE(FlexusOriscusScapus); +SHAPE(FlexusOriscusScapusLongqueue); +SHAPE(Linea); +SHAPE(LineaPunctum); +SHAPE(LineaPunctumCavum); +SHAPE(Natural); +SHAPE(Oriscus); +SHAPE(OriscusCavum); +SHAPE(OriscusCavumAuctus); +SHAPE(OriscusCavumDeminutus); +SHAPE(OriscusDeminutus); +SHAPE(OriscusLineBL); +SHAPE(OriscusReversus); +SHAPE(OriscusReversusLineTL); +SHAPE(OriscusScapus); +SHAPE(OriscusScapusLongqueue); +SHAPE(Pes); +SHAPE(PesQuadratum); +SHAPE(PesQuadratumLongqueue); +SHAPE(PesQuassus); +SHAPE(PesQuassusLongqueue); +SHAPE(PesQuilisma); +SHAPE(PesQuilismaQuadratum); +SHAPE(PesQuilismaQuadratumLongqueue); +SHAPE(Porrectus); +SHAPE(PorrectusFlexus); +SHAPE(PorrectusFlexusNobar); +SHAPE(PorrectusNobar); +SHAPE(Punctum); +SHAPE(PunctumAscendens); +SHAPE(PunctumCavum); +SHAPE(PunctumCavumInclinatum); +SHAPE(PunctumCavumInclinatumAuctus); +SHAPE(PunctumDeminutus); +SHAPE(PunctumDescendens); +SHAPE(PunctumInclinatum); +SHAPE(PunctumInclinatumAuctus); +SHAPE(PunctumInclinatumDeminutus); +SHAPE(PunctumLineBL); +SHAPE(PunctumLineTL); +SHAPE(Quilisma); +SHAPE(Salicus); +SHAPE(SalicusFlexus); +SHAPE(SalicusLongqueue); +SHAPE(Scandicus); +SHAPE(Sharp); +SHAPE(Stropha); +SHAPE(StrophaAucta); +SHAPE(StrophaAuctaLongtail); +SHAPE(Torculus); +SHAPE(TorculusLiquescens); +SHAPE(TorculusLiquescensQuilisma); +SHAPE(TorculusQuilisma); +SHAPE(TorculusResupinus); +SHAPE(TorculusResupinusQuilisma); +SHAPE(Virga); +SHAPE(VirgaLongqueue); +SHAPE(VirgaReversa); +SHAPE(VirgaReversaAscendens); +SHAPE(VirgaReversaDescendens); +SHAPE(VirgaReversaLongqueue); +SHAPE(VirgaReversaLongqueueAscendens); +SHAPE(VirgaReversaLongqueueDescendens); +SHAPE(VirgaStrata); + +#define LIQ(NAME) static const char *const LIQ_##NAME = #NAME +LIQ(Deminutus); +LIQ(Ascendens); +LIQ(Descendens); +LIQ(InitioDebilis); +LIQ(InitioDebilisDeminutus); +LIQ(InitioDebilisAscendens); +LIQ(InitioDebilisDescendens); +LIQ(Nothing); + +#define FUSE(NAME) static const char *const FUSE_##NAME = #NAME +FUSE(Lower); +FUSE(Upper); +FUSE(Down); +FUSE(Up); + /* the value indicating to GregorioTeX that there is no flat */ #define NO_KEY_FLAT LOWEST_PITCH -#define PITCH_BELOW_STAFF (LOWEST_PITCH + 2) -#define PITCH_ABOVE_STAFF (LOWEST_PITCH + 10) /* a helper macro for the following function */ #define WHILEGLYPH(prevornext) \ @@ -80,7 +167,7 @@ static const char *tex_ambitus[] = { if (glyph->type == GRE_GLYPH) {\ note = glyph->u.notes.first_note;\ while (note) {\ - if (note->u.note.pitch < PITCH_BELOW_STAFF) {\ + if (note->u.note.pitch <= LOW_LEDGER_LINE_PITCH) {\ return true;\ }\ note = note->next;\ @@ -115,18 +202,18 @@ static bool is_longqueue(const signed char pitch, case 7: case 9: case 11: + case 13: return true; case 3: /* we first look forward to see if there is a note underneath c */ WHILEGLYPH(next); if (element && element->type == GRE_SPACE && (element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE - || element->u.misc.unpitched.info.space == - SP_NEUMATIC_CUT_NB - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE_NB)) { + || element->u.misc.unpitched.info.space == SP_LARGER_SPACE + || element->u.misc.unpitched.info.space + == SP_NEUMATIC_CUT_NB + || element->u.misc.unpitched.info.space + == SP_LARGER_SPACE_NB)) { element = element->next; } if (element && element->type == GRE_ELEMENT) { @@ -139,12 +226,11 @@ static bool is_longqueue(const signed char pitch, WHILEGLYPH(previous); if (element && element->type == GRE_SPACE && (element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE - || element->u.misc.unpitched.info.space == - SP_NEUMATIC_CUT_NB - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE_NB)) { + || element->u.misc.unpitched.info.space == SP_LARGER_SPACE + || element->u.misc.unpitched.info.space + == SP_NEUMATIC_CUT_NB + || element->u.misc.unpitched.info.space + == SP_LARGER_SPACE_NB)) { element = element->previous; } if (element && element->type == GRE_ELEMENT) { @@ -172,113 +258,6 @@ static __inline bool is_shortqueue(const signed char pitch, static grestyle_style gregoriotex_ignore_style = ST_NO_STYLE; static grestyle_style gregoriotex_next_ignore_style = ST_NO_STYLE; -static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note, - gregorio_glyph *glyph, gregorio_element *element, gtex_alignment *type) -{ - static char buf[128]; - const char *name; - - if (!note) { - gregorio_message(_("called with NULL pointer"), - "gregoriotex_determine_note_glyph_name", VERBOSITY_ERROR, 0); - return ""; - } - - *type = AT_ONE_NOTE; - switch (note->u.note.shape) { - case S_PUNCTUM_INCLINATUM: - *type = AT_PUNCTUM_INCLINATUM; - return "PunctumInclinatum"; - case S_PUNCTUM_INCLINATUM_DEMINUTUS: - return "PunctumInclinatumDeminutus"; - case S_PUNCTUM_INCLINATUM_AUCTUS: - return "PunctumInclinatumAuctus"; - case S_PUNCTUM: - return "Punctum"; - case S_PUNCTUM_AUCTUS_ASCENDENS: - return "PunctumAscendens"; - case S_PUNCTUM_AUCTUS_DESCENDENS: - return "PunctumDescendens"; - case S_PUNCTUM_DEMINUTUS: - return "PunctumDeminutus"; - case S_PUNCTUM_CAVUM: - return "PunctumCavum"; - case S_LINEA: - return "Linea"; - case S_LINEA_PUNCTUM: - return "LineaPunctum"; - case S_LINEA_PUNCTUM_CAVUM: - return "LineaPunctumCavum"; - case S_VIRGA: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "Virga"; - } - return "VirgaLongqueue"; - case S_VIRGA_REVERSA: - switch (note->u.note.liquescentia) { - case L_AUCTUS_ASCENDENS: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - name = "VirgaReversaAscendens"; - } else { - name = "VirgaReversaLongqueueAscendens"; - } - if (note->u.note.pitch - LOWEST_PITCH == 3) { - /* if we're on the 'd' line, the queue could be long or short */ - gregorio_snprintf(buf, sizeof buf, - "VirgaReversaAscendensOnDLine{\\GreCP%s}", name); - return buf; - } - return name; - case L_AUCTUS_DESCENDENS: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "VirgaReversaDescendens"; - } - return "VirgaReversaLongqueueDescendens"; - default: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "VirgaReversa"; - } - return "VirgaReversaLongqueue"; - } - case S_ORISCUS: - *type = AT_ORISCUS; - return "Oriscus"; - case S_ORISCUS_AUCTUS: - *type = AT_ORISCUS; - return "OriscusReversus"; - case S_ORISCUS_DEMINUTUS: - *type = AT_ORISCUS; - return "OriscusDeminutus"; - case S_QUILISMA: - *type = AT_QUILISMA; - return "Quilisma"; - case S_ORISCUS_SCAPUS: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "OriscusScapus"; - } - return "OriscusScapusLongqueue"; - case S_STROPHA: - *type = AT_STROPHA; - if (note->u.note.liquescentia == L_AUCTA) { - return "StrophaAucta"; - } - return "Stropha"; - case S_STROPHA_AUCTA: - *type = AT_STROPHA; - return "StrophaAucta"; - case S_PUNCTUM_CAVUM_INCLINATUM: - *type = AT_PUNCTUM_INCLINATUM; - return "PunctumCavumInclinatum"; - case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: - return "PunctumCavumInclinatumAuctus"; - default: - gregorio_messagef("gregoriotex_determine_note_glyph_name", - VERBOSITY_ERROR, 0, _("called with unknown shape: %d"), - note->u.note.shape); - return ""; - } -} - /* * The different liquescentiae are: * 'Nothing' @@ -290,55 +269,30 @@ static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note, * 'InitioDebilisAscendens' * 'InitioDebilisDescendens' * - * If it is an auctus, which may be ascendens or descendens, by default we - * consider it as an ascendens - * * They also are and must be the same as in squarize.py. */ -static const char *gregoriotex_determine_liquescentia(gtex_glyph_liquescentia type, - gregorio_liquescentia liquescentia) +static const char *gregoriotex_determine_liquescentia( + gtex_glyph_liquescentia type, const gregorio_glyph *const glyph) { - switch (liquescentia) { - case L_AUCTA: - liquescentia = L_AUCTUS_ASCENDENS; - break; - case L_AUCTA_INITIO_DEBILIS: - liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS; - break; - default: - /* do nothing */ - break; - } + gregorio_liquescentia liquescentia = glyph->u.notes.liquescentia; switch (type) { case LG_ALL: break; case LG_NO_INITIO: - if (liquescentia >= L_INITIO_DEBILIS) { - liquescentia = liquescentia - L_INITIO_DEBILIS; - } + liquescentia &= ~L_INITIO_DEBILIS; break; case LG_ONLY_DEMINUTUS: - if (liquescentia != L_DEMINUTUS - && liquescentia != L_DEMINUTUS_INITIO_DEBILIS) { - liquescentia = L_NO_LIQUESCENTIA; - } + liquescentia &= L_INITIO_DEBILIS | L_DEMINUTUS; break; - case LG_ONLY_AUCTUS: - if (liquescentia != L_AUCTUS_ASCENDENS - && liquescentia != L_AUCTUS_DESCENDENS) { - liquescentia = L_NO_LIQUESCENTIA; - } - case LG_UNDET_AUCTUS: - if (liquescentia == L_AUCTUS_DESCENDENS) { - liquescentia = L_AUCTUS_ASCENDENS; - } - if (liquescentia == L_AUCTUS_DESCENDENS_INITIO_DEBILIS) { - liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS; + case LG_FUSIBLE_INITIO: + if (glyph->u.notes.fuse_to_next_glyph) { + liquescentia &= L_INITIO_DEBILIS; + break; } - break; - default: + /* else fall through to next case */ + case LG_NONE: liquescentia = L_NO_LIQUESCENTIA; break; } @@ -346,29 +300,27 @@ static const char *gregoriotex_determine_liquescentia(gtex_glyph_liquescentia ty /* now we convert liquescentia into the good GregorioTeX liquescentia * numbers */ - switch (liquescentia) { + switch (liquescentia & ~L_FUSED) { case L_DEMINUTUS: - return "Deminutus"; + return LIQ_Deminutus; case L_AUCTUS_ASCENDENS: - return "Ascendens"; - case L_AUCTA: + return LIQ_Ascendens; case L_AUCTUS_DESCENDENS: - return "Descendens"; + return LIQ_Descendens; case L_INITIO_DEBILIS: - return "InitioDebilis"; + return LIQ_InitioDebilis; case L_DEMINUTUS_INITIO_DEBILIS: - return "InitioDebilisDeminutus"; + return LIQ_InitioDebilisDeminutus; case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - return "InitioDebilisAscendens"; - case L_AUCTA_INITIO_DEBILIS: + return LIQ_InitioDebilisAscendens; case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - return "InitioDebilisDescendens"; + return LIQ_InitioDebilisDescendens; case L_NO_LIQUESCENTIA: /* break out and return "Nothing" */ break; } - return "Nothing"; + return LIQ_Nothing; } static __inline int compute_ambitus(const gregorio_note *const current_note) @@ -390,15 +342,21 @@ static __inline int compute_ambitus(const gregorio_note *const current_note) } static const char *compute_glyph_name(const gregorio_glyph *const glyph, - const char *shape, const gtex_glyph_liquescentia ltype) + const char *shape, const gtex_glyph_liquescentia ltype, + bool is_single_note) { static char buf[BUFSIZE]; - const char *liquescentia = gregoriotex_determine_liquescentia(ltype, - glyph->u.notes.liquescentia); + const char *liquescentia = gregoriotex_determine_liquescentia(ltype, glyph); gregorio_note *current_note; + int ambitus1, ambitus2, ambitus3, fuse_ambitus = 0; + const char *fuse_head = "", *fuse_tail = ""; + const gregorio_glyph *previous = gregorio_previous_non_texverb_glyph(glyph); + int fuse_to_next_note, fuse_from_previous_note = + (previous && previous->type == GRE_GLYPH) + ? previous->u.notes.fuse_to_next_glyph : 0; + /* then we start making our formula */ - int ambitus1, ambitus2, ambitus3; if (!glyph) { gregorio_message(_("called with NULL pointer"), "compute_glyph_name", VERBOSITY_ERROR, 0); @@ -409,25 +367,145 @@ static const char *compute_glyph_name(const gregorio_glyph *const glyph, "compute_glyph_name", VERBOSITY_ERROR, 0); return ""; } + + fuse_to_next_note = glyph->u.notes.fuse_to_next_glyph; + + switch (glyph->u.notes.glyph_type) { + case G_PODATUS: + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) + && fuse_from_previous_note < 0) { + /* a normal pes cannot be fused from above */ + break; + } + /* else fall through */ + case G_PUNCTUM: + case G_FLEXA: + /* directionally head-fusable */ + if (fuse_from_previous_note < -1 + && glyph->u.notes.first_note->u.note.shape != S_QUILISMA + && glyph->u.notes.first_note->u.note.shape + != S_QUILISMA_QUADRATUM) { + fuse_head = FUSE_Lower; + } else if (fuse_from_previous_note < 0) { + gregorio_note *previous_note = gregorio_glyph_last_note( + gregorio_previous_non_texverb_glyph(glyph)); + switch (previous_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_SCAPUS: + fuse_head = FUSE_Lower; + break; + default: + break; + } + } else if (fuse_from_previous_note > 1) { + fuse_head = FUSE_Upper; + } + break; + + default: + /* not directionally head-fusable */ + break; + } + + switch (glyph->u.notes.glyph_type) { + case G_FLEXA: + if (fuse_to_next_note <= 0) { + /* a flexa is only fusable up */ + break; + } + /* else fall through */ + case G_VIRGA_REVERSA: + case G_PUNCTUM: + /* tail-fusable */ + if (fuse_to_next_note < 0) { + fuse_tail = FUSE_Down; + fuse_ambitus = -fuse_to_next_note; + } else if (fuse_to_next_note > 0) { + fuse_tail = FUSE_Up; + fuse_ambitus = fuse_to_next_note; + } + + if (*fuse_tail && liquescentia == LIQ_Nothing) { + liquescentia = ""; + } + break; + + default: + /* not tail-fusable */ + break; + } + + if ((*fuse_tail && shape == SHAPE_OriscusReversus) + || ((shape == SHAPE_OriscusReversus || shape == SHAPE_OriscusScapus + || shape == SHAPE_OriscusScapusLongqueue) + && is_fused(glyph->u.notes.liquescentia))) { + shape = SHAPE_Oriscus; + } + current_note = glyph->u.notes.first_note; + if (is_single_note) { + if (liquescentia == LIQ_Nothing) { + liquescentia = ""; + } + if (!(*fuse_tail)) { + /* single note fused shapes have weird names */ + if (fuse_head == FUSE_Upper) { + if (shape == SHAPE_Punctum) { + shape = SHAPE_PunctumLineBL; + } else if (shape == SHAPE_Oriscus) { + shape = SHAPE_OriscusLineBL; + } + } else if (fuse_head == FUSE_Lower) { + if (shape == SHAPE_Punctum) { + shape = SHAPE_PunctumLineTL; + } else if (shape == SHAPE_Oriscus) { + shape = SHAPE_OriscusReversusLineTL; + } + } + fuse_head = ""; + } + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s", fuse_head, shape, + tex_ambitus[fuse_ambitus], liquescentia, fuse_tail); + return buf; + } if (!current_note->next) { - gregorio_message(_("called with a multi-note glyph that has only " - "one note"), "compute_glyph_name", VERBOSITY_ERROR, 0); - return ""; + gregorio_message(_("called with a multi-note glyph that has only " + "one note"), "compute_glyph_name", VERBOSITY_ERROR, 0); + return ""; } if (!(ambitus1 = compute_ambitus(current_note))) { return ""; } - /* the salicus queue is at the end of the glyph, and it doesn't exist for - * the liquescent forms */ - if (strcmp(shape, "SalicusLongqueue") == 0 - && strcmp(liquescentia, "Nothing") != 0) { - shape = "Salicus"; + if (is_fused(glyph->u.notes.liquescentia)) { + if (shape == SHAPE_Flexus || shape == SHAPE_FlexusLongqueue) { + if (fuse_to_next_note) { + fuse_head = ""; + } + if (*fuse_head) { + shape = SHAPE_Flexus; + } else { + shape = SHAPE_FlexusNobar; + } + } else if (shape == SHAPE_Porrectus) { + shape = SHAPE_PorrectusNobar; + } + } else { + if (fuse_to_next_note && shape == SHAPE_FlexusLongqueue) { + /* a porrectus-like flexus has no longqueue variant */ + shape = SHAPE_Flexus; + } + } + if (shape == SHAPE_SalicusLongqueue && liquescentia != LIQ_Nothing) { + /* the salicus queue is at the end of the glyph, and it doesn't exist + * for the liquescent forms */ + shape = SHAPE_Salicus; } current_note = current_note->next; if (!current_note->next) { - gregorio_snprintf(buf, BUFSIZE, "%s%s%s", shape, tex_ambitus[ambitus1], - liquescentia); + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s%s", fuse_head, shape, + tex_ambitus[ambitus1], tex_ambitus[fuse_ambitus], + liquescentia, fuse_tail); return buf; } if (!(ambitus2 = compute_ambitus(current_note))) { @@ -435,24 +513,157 @@ static const char *compute_glyph_name(const gregorio_glyph *const glyph, } current_note = current_note->next; if (!current_note->next) { - gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s", shape, - tex_ambitus[ambitus1], tex_ambitus[ambitus2], liquescentia); + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s%s%s", fuse_head, shape, + tex_ambitus[ambitus1], tex_ambitus[ambitus2], + tex_ambitus[fuse_ambitus], liquescentia, fuse_tail); return buf; } if (!(ambitus3 = compute_ambitus(current_note))) { return ""; } - gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s", shape, tex_ambitus[ambitus1], - tex_ambitus[ambitus2], tex_ambitus[ambitus3], liquescentia); + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s%s%s%s", fuse_head, shape, + tex_ambitus[ambitus1], tex_ambitus[ambitus2], tex_ambitus[ambitus3], + tex_ambitus[fuse_ambitus], liquescentia, fuse_tail); return buf; } +static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note, + gregorio_glyph *glyph, gregorio_element *element, gtex_alignment *type) +{ + static char buf[128]; + const char *name; + + if (!note) { + gregorio_message(_("called with NULL pointer"), + "gregoriotex_determine_note_glyph_name", VERBOSITY_ERROR, 0); + return ""; + } + + *type = AT_ONE_NOTE; + switch (note->u.note.shape) { + case S_PUNCTUM_INCLINATUM: + *type = AT_PUNCTUM_INCLINATUM; + return SHAPE_PunctumInclinatum; + case S_PUNCTUM_INCLINATUM_DEMINUTUS: + return SHAPE_PunctumInclinatumDeminutus; + case S_PUNCTUM_INCLINATUM_AUCTUS: + return SHAPE_PunctumInclinatumAuctus; + case S_PUNCTUM: + return compute_glyph_name(glyph, SHAPE_Punctum, LG_FUSIBLE_INITIO, true); + case S_PUNCTUM_AUCTUS_ASCENDENS: + return SHAPE_PunctumAscendens; + case S_PUNCTUM_AUCTUS_DESCENDENS: + return SHAPE_PunctumDescendens; + case S_PUNCTUM_DEMINUTUS: + return SHAPE_PunctumDeminutus; + case S_PUNCTUM_CAVUM: + return SHAPE_PunctumCavum; + case S_LINEA: + return SHAPE_Linea; + case S_LINEA_PUNCTUM: + return SHAPE_LineaPunctum; + case S_LINEA_PUNCTUM_CAVUM: + return SHAPE_LineaPunctumCavum; + case S_VIRGA: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return SHAPE_Virga; + } + return SHAPE_VirgaLongqueue; + case S_VIRGA_REVERSA: + switch (note->u.note.liquescentia) { + case L_AUCTUS_ASCENDENS: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + name = SHAPE_VirgaReversaAscendens; + } else { + name = SHAPE_VirgaReversaLongqueueAscendens; + } + if (note->u.note.pitch - LOWEST_PITCH == 3) { + /* if we're on the 'd' line, the queue could be long or short */ + gregorio_snprintf(buf, sizeof buf, + "VirgaReversaAscendensOnDLine{\\GreCP%s}", name); + return buf; + } + return name; + case L_AUCTUS_DESCENDENS: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return SHAPE_VirgaReversaDescendens; + } + return SHAPE_VirgaReversaLongqueueDescendens; + default: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return compute_glyph_name(glyph, SHAPE_VirgaReversa, LG_NONE, + true); + } + return compute_glyph_name(glyph, SHAPE_VirgaReversaLongqueue, + LG_NONE, true); + } + case S_ORISCUS_ASCENDENS: + *type = AT_ORISCUS; + return compute_glyph_name(glyph, SHAPE_Oriscus, LG_NONE, true); + case S_ORISCUS_DESCENDENS: + *type = AT_ORISCUS; + return compute_glyph_name(glyph, SHAPE_OriscusReversus, LG_NONE, true); + case S_ORISCUS_DEMINUTUS: + *type = AT_ORISCUS; + return SHAPE_OriscusDeminutus; + case S_QUILISMA: + *type = AT_QUILISMA; + return compute_glyph_name(glyph, SHAPE_Quilisma, LG_NONE, true); + case S_ORISCUS_SCAPUS: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return compute_glyph_name(glyph, SHAPE_OriscusScapus, LG_NONE, + true); + } + return compute_glyph_name(glyph, SHAPE_OriscusScapusLongqueue, LG_NONE, + true); + case S_STROPHA: + *type = AT_STROPHA; + if (!(note->u.note.liquescentia & + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { + return SHAPE_Stropha; + } + /* else fall through to next case */ + case S_STROPHA_AUCTA: + *type = AT_STROPHA; + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return SHAPE_StrophaAucta; + } + return SHAPE_StrophaAuctaLongtail; + case S_PUNCTUM_CAVUM_INCLINATUM: + *type = AT_PUNCTUM_INCLINATUM; + return SHAPE_PunctumCavumInclinatum; + case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: + *type = AT_PUNCTUM_INCLINATUM; + return SHAPE_PunctumCavumInclinatumAuctus; + case S_ORISCUS_CAVUM_ASCENDENS: + *type = AT_ORISCUS; + return SHAPE_OriscusCavum; + case S_ORISCUS_CAVUM_DESCENDENS: + *type = AT_ORISCUS; + return SHAPE_OriscusCavumAuctus; + case S_ORISCUS_CAVUM_DEMINUTUS: + *type = AT_ORISCUS; + return SHAPE_OriscusCavumDeminutus; + case S_FLAT: + return SHAPE_Flat; + case S_SHARP: + return SHAPE_Sharp; + case S_NATURAL: + return SHAPE_Natural; + default: + gregorio_messagef("gregoriotex_determine_note_glyph_name", + VERBOSITY_ERROR, 0, _("called with unknown shape: %s"), + gregorio_shape_to_string(note->u.note.shape)); + return ""; + } +} + /* the function that calculates the number of the glyph. It also * calculates the type, used for determining the position of signs. Type is * very basic, it is only the global dimensions : torculus, one_note, etc. */ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, - const gregorio_element *const element, gtex_alignment *const type, + const gregorio_element *const element, gtex_alignment *const type, gtex_type *const gtype) { const char *shape = NULL; @@ -477,47 +688,40 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, *type = AT_QUILISMA; /* the next if is because we made the choice that AUCTUS shapes * look like pes quadratum. */ - if (glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS - || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS - || glyph->u.notes.liquescentia == - L_AUCTUS_DESCENDENS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == - L_AUCTUS_ASCENDENS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { *gtype = T_PESQUILISMAQUADRATUM; - shape = "PesQuilismaQuadratum"; + shape = SHAPE_PesQuilismaQuadratum; } else { *gtype = T_PESQUILISMA; - shape = "PesQuilisma"; + shape = SHAPE_PesQuilisma; } ltype = LG_NO_INITIO; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_SCAPUS: *type = AT_ORISCUS; /* TODO: we could factorize this code */ - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUASSUS_LONGQUEUE; - shape = "PesQuassusLongqueue"; + shape = SHAPE_PesQuassusLongqueue; } else { *gtype = T_PESQUASSUS; - shape = "PesQuassus"; + shape = SHAPE_PesQuassus; } ltype = LG_NO_INITIO; break; default: *type = AT_ONE_NOTE; - if (glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS - || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS - || glyph->u.notes.liquescentia == - L_AUCTUS_DESCENDENS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == - L_AUCTUS_ASCENDENS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { *gtype = T_PESQUADRATUM; - shape = "PesQuadratum"; + shape = SHAPE_PesQuadratum; } else { *gtype = T_PES; - shape = "Pes"; + shape = SHAPE_Pes; } ltype = LG_ALL; break; @@ -528,37 +732,38 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, switch (glyph->u.notes.first_note->u.note.shape) { case S_QUILISMA: *type = AT_QUILISMA; - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUILISMAQUADRATUM_LONGQUEUE; - shape = "PesQuilismaQuadratumLongqueue"; + shape = SHAPE_PesQuilismaQuadratumLongqueue; } else { *gtype = T_PESQUILISMAQUADRATUM; - shape = "PesQuilismaQuadratum"; + shape = SHAPE_PesQuilismaQuadratum; } ltype = LG_NO_INITIO; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: *type = AT_ORISCUS; - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUASSUS_LONGQUEUE; - shape = "PesQuadratumLongqueue"; + shape = SHAPE_PesQuadratumLongqueue; } else { *gtype = T_PESQUASSUS; - shape = "PesQuassus"; + shape = SHAPE_PesQuassus; } ltype = LG_NO_INITIO; break; default: *type = AT_ONE_NOTE; - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUADRATUM_LONGQUEUE; - shape = "PesQuadratumLongqueue"; + shape = SHAPE_PesQuadratumLongqueue; } else { *gtype = T_PESQUADRATUM; - shape = "PesQuadratum"; + shape = SHAPE_PesQuadratum; } ltype = LG_ALL; break; @@ -568,12 +773,12 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, pitch = glyph->u.notes.first_note->next->u.note.pitch; *type = AT_ONE_NOTE; *gtype = T_VIRGA_STRATA; - shape = "VirgaStrata"; + shape = SHAPE_VirgaStrata; ltype = LG_ALL; break; case G_FLEXA: pitch = glyph->u.notes.first_note->u.note.pitch; - if (glyph->u.notes.liquescentia == L_DEMINUTUS) { + if (glyph->u.notes.liquescentia & L_DEMINUTUS) { *type = AT_FLEXUS_DEMINUTUS; } else { if (pitch - glyph->u.notes.first_note->next->u.note.pitch == 1) { @@ -582,39 +787,48 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, *type = AT_FLEXUS; } } - if (glyph->u.notes.first_note->u.note.shape == S_ORISCUS) { + switch (glyph->u.notes.first_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: *gtype = T_FLEXUS_ORISCUS; - shape = "FlexusOriscus"; + shape = SHAPE_FlexusOriscus; ltype = LG_NO_INITIO; - } else if (glyph->u.notes.first_note->u.note.shape == S_ORISCUS_SCAPUS) { + break; + + case S_ORISCUS_SCAPUS: if (is_shortqueue(pitch, glyph, element)) { *gtype = T_FLEXUS_ORISCUS_SCAPUS; - shape = "FlexusOriscusScapus"; + shape = SHAPE_FlexusOriscusScapus; } else { *gtype = T_FLEXUS_ORISCUS_SCAPUS_LONGQUEUE; - shape = "FlexusOriscusScapusLongqueue"; + shape = SHAPE_FlexusOriscusScapusLongqueue; } ltype = LG_NO_INITIO; - } else { + break; + + default: if (is_shortqueue(pitch, glyph, element)) { - *gtype = T_FLEXUS; - shape = "Flexus"; + *gtype = glyph->u.notes.fuse_to_next_glyph? T_PORRECTUS + : T_FLEXUS; + shape = SHAPE_Flexus; } else { - *gtype = T_FLEXUS_LONGQUEUE; - shape = "FlexusLongqueue"; + *gtype = glyph->u.notes.fuse_to_next_glyph ? T_PORRECTUS + : T_FLEXUS_LONGQUEUE; + shape = SHAPE_FlexusLongqueue; } ltype = LG_NO_INITIO; + break; } break; case G_TORCULUS: *gtype = T_TORCULUS; if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) { *type = AT_QUILISMA; - shape = "TorculusQuilisma"; + shape = SHAPE_TorculusQuilisma; ltype = LG_NO_INITIO; } else { *type = AT_ONE_NOTE; - shape = "Torculus"; + shape = SHAPE_Torculus; ltype = LG_ALL; } break; @@ -622,10 +836,10 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, *gtype = T_TORCULUS_LIQUESCENS; if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) { *type = AT_QUILISMA; - shape = "TorculusLiquescensQuilisma"; + shape = SHAPE_TorculusLiquescensQuilisma; } else { *type = AT_ONE_NOTE; - shape = "TorculusLiquescens"; + shape = SHAPE_TorculusLiquescens; } ltype = LG_ONLY_DEMINUTUS; break; @@ -636,41 +850,40 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, case G_PORRECTUS: *type = AT_PORRECTUS; *gtype = T_PORRECTUS; - shape = "Porrectus"; + shape = SHAPE_Porrectus; ltype = LG_NO_INITIO; break; case G_TORCULUS_RESUPINUS: *gtype = T_TORCULUS_RESUPINUS; if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) { *type = AT_QUILISMA; - shape = "TorculusResupinusQuilisma"; + shape = SHAPE_TorculusResupinusQuilisma; } else { *type = AT_ONE_NOTE; - shape = "TorculusResupinus"; + shape = SHAPE_TorculusResupinus; } ltype = LG_ALL; break; case G_PORRECTUS_FLEXUS: *type = AT_PORRECTUS; *gtype = T_PORRECTUS_FLEXUS; - shape = "PorrectusFlexus"; + shape = SHAPE_PorrectusFlexus; ltype = LG_NO_INITIO; break; case G_PORRECTUS_NO_BAR: *type = AT_PORRECTUS; *gtype = T_TORCULUS_RESUPINUS; - shape = "PorrectusNobar"; + shape = SHAPE_PorrectusNobar; ltype = LG_NO_INITIO; break; case G_PORRECTUS_FLEXUS_NO_BAR: *type = AT_PORRECTUS; *gtype = T_TORCULUS_RESUPINUS_FLEXUS; - shape = "PorrectusFlexusNobar"; + shape = SHAPE_PorrectusFlexusNobar; ltype = LG_NO_INITIO; break; case G_ANCUS: - if (glyph->u.notes.liquescentia == L_DEMINUTUS - || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia & L_DEMINUTUS) { if (pitch - glyph->u.notes.first_note->next->u.note.pitch == 1) { *type = AT_FLEXUS_1; } else { @@ -678,10 +891,10 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, } if (is_shortqueue(pitch, glyph, element)) { *gtype = T_ANCUS; - shape = "Ancus"; + shape = SHAPE_Ancus; } else { *gtype = T_ANCUS_LONGQUEUE; - shape = "AncusLongqueue"; + shape = SHAPE_AncusLongqueue; } ltype = LG_ONLY_DEMINUTUS; } else { @@ -692,7 +905,7 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, case G_SCANDICUS: *type = AT_ONE_NOTE; *gtype = T_SCANDICUS; - shape = "Scandicus"; + shape = SHAPE_Scandicus; ltype = LG_NO_INITIO; break; case G_SALICUS: @@ -700,13 +913,19 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, pitch = glyph->u.notes.first_note->next->next->u.note.pitch; if (is_longqueue(pitch, glyph, element)) { *gtype = T_SALICUS_LONGQUEUE; - shape = "SalicusLongqueue"; + shape = SHAPE_SalicusLongqueue; } else { *gtype = T_SALICUS; - shape = "Salicus"; + shape = SHAPE_Salicus; } ltype = LG_NO_INITIO; break; + case G_SALICUS_FLEXUS: + *type = AT_ONE_NOTE; + *gtype = T_SALICUS_FLEXUS; + shape = SHAPE_SalicusFlexus; + ltype = LG_NO_INITIO; + break; case G_ONE_NOTE: case G_PUNCTUM_INCLINATUM: case G_TRIGONUS: @@ -730,16 +949,17 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, case G_TRISTROPHA_AUCTA: case G_BIVIRGA: case G_TRIVIRGA: + case G_ALTERATION: *type = AT_ONE_NOTE; break; default: gregorio_messagef("gregoriotex_determine_glyph_name", VERBOSITY_ERROR, - 0, _("called with unknown glyph: %d"), - glyph->u.notes.glyph_type); + 0, _("called with unknown glyph: %s"), + gregorio_glyph_type_to_string(glyph->u.notes.glyph_type)); break; } if (shape) { - shape = compute_glyph_name(glyph, shape, ltype); + shape = compute_glyph_name(glyph, shape, ltype, false); } /* we fix *type with initio_debilis */ if (*type == AT_ONE_NOTE) { @@ -752,8 +972,7 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, } /** - * This now does nothing useful, since the manuscript_reference is - * now part of the score info. But we keep it here in case it may + * This now does nothing useful, but we keep it here in case it may * be needed in future. */ static void gregoriotex_write_voice_info(FILE *f, gregorio_voice_info *voice_info) @@ -776,17 +995,19 @@ static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable) /* the next syllable start by an end of line */ return true; } - current_element = (syllable->elements)[0]; - while (current_element) { - if (current_element->type == GRE_END_OF_LINE) { - /* we return true only if the end of line is the last element */ - if (!(current_element->next)) { - return true; + if (syllable->elements) { + current_element = (syllable->elements)[0]; + while (current_element) { + if (current_element->type == GRE_END_OF_LINE) { + /* we return true only if the end of line is the last element */ + if (!(current_element->next)) { + return true; + } else { + return false; + } } else { - return false; + current_element = current_element->next; } - } else { - current_element = current_element->next; } } return false; @@ -798,8 +1019,7 @@ static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable) static __inline bool is_clef(gregorio_type x) { - return x == GRE_C_KEY_CHANGE || x == GRE_F_KEY_CHANGE || - x == GRE_C_KEY_CHANGE_FLATED || x == GRE_F_KEY_CHANGE_FLATED; + return x == GRE_CLEF; } /* @@ -1129,7 +1349,7 @@ static grestyle_style gregoriotex_fix_style(gregorio_character *first_character) current_char = current_char->next_character; } /* if we reached here, this means that we there is only one style applied - * to all the syllables */ + * to all the characters */ return possible_fixed_style; } @@ -1146,20 +1366,24 @@ static void gregoriotex_write_translation(FILE *f, if (translation == NULL) { return; } - gregorio_write_text(false, translation, f, - (>ex_write_verb), - (>ex_print_char), - (>ex_write_begin), (>ex_write_end), (>ex_write_special_char)); + gregorio_write_text(WTP_NORMAL, translation, f, >ex_write_verb, + >ex_print_char, >ex_write_begin, >ex_write_end, + >ex_write_special_char); } /* a function to compute the height of the flat of a key * the flat is always on the line of the */ -static char gregoriotex_clef_flat_height(char step, int line) +static char clef_flat_height(gregorio_clef clef, signed char line, bool flatted) { char offset = 6; - switch (step) { - case C_KEY: + + if (!flatted) { + return NO_KEY_FLAT; + } + + switch (clef) { + case CLEF_C: switch (line) { case 1: offset = 2; @@ -1173,13 +1397,16 @@ static char gregoriotex_clef_flat_height(char step, int line) case 4: offset = 8; break; + case 5: + offset = 10; + break; default: - gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, + gregorio_messagef("clef_flat_height", VERBOSITY_ERROR, 0, _("unknown line number: %d"), line); break; } break; - case F_KEY: + case CLEF_F: switch (line) { case 1: offset = 6; @@ -1193,15 +1420,18 @@ static char gregoriotex_clef_flat_height(char step, int line) case 4: offset = 5; break; + case 5: + offset = 7; + break; default: - gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, + gregorio_messagef("clef_flat_height", VERBOSITY_ERROR, 0, _("unknown line number: %d"), line); break; } break; default: - gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, 0, - _("unknown clef type: %d"), step); + gregorio_messagef("clef_flat_height", VERBOSITY_ERROR, 0, + _("unknown clef type: %d"), clef); break; } @@ -1212,8 +1442,8 @@ OFFSET_CASE(BarStandard); OFFSET_CASE(BarVirgula); OFFSET_CASE(BarDivisioFinalis); -static void gregoriotex_write_bar(FILE *f, gregorio_bar type, - gregorio_sign signs, bool is_inside_bar) +static void write_bar(FILE *f, gregorio_bar type, + gregorio_sign signs, bool is_inside_bar, bool has_text) { /* the type number of function vepisemaorrare */ const char *offset_case = BarStandard; @@ -1258,11 +1488,18 @@ static void gregoriotex_write_bar(FILE *f, gregorio_bar type, case B_DIVISIO_MINOR_D6: fprintf(f, "Dominica{6}"); break; + case B_DIVISIO_MINOR_D7: + fprintf(f, "Dominica{7}"); + break; + case B_DIVISIO_MINOR_D8: + fprintf(f, "Dominica{8}"); + break; default: - gregorio_messagef("gregoriotex_write_bar", VERBOSITY_ERROR, 0, + gregorio_messagef("write_bar", VERBOSITY_ERROR, 0, _("unknown bar type: %d"), type); break; } + fprintf(f, "{%c}", has_text? '1' : '0'); switch (signs) { case _V_EPISEMA: fprintf(f, "{\\GreBarVEpisema{\\GreOCase%s}}%%\n", offset_case); @@ -1281,6 +1518,16 @@ static void gregoriotex_write_bar(FILE *f, gregorio_bar type, } } +static __inline char *suppose_high_ledger_line(const gregorio_note *const note) +{ + return note->supposed_high_ledger_line? "\\GreSupposeHighLedgerLine" : ""; +} + +static __inline char *suppose_low_ledger_line(const gregorio_note *const note) +{ + return note->supposed_low_ledger_line? "\\GreSupposeLowLedgerLine" : ""; +} + /* * ! @brief Writes augmentum duplexes (double dots) We suppose we are on the * last note. \n The algorithm is the following: if there is a previous note, @@ -1338,7 +1585,7 @@ static void gregoriotex_write_auctum_duplex(FILE *f, * more straightforward than it actually is... */ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, - gregorio_note *current_note) + gregorio_note *current_note, int fuse_to_next_note) { /* in this if we consider that the puncta are only on the last two notes * (maybe it would be useful to consider it more entirely, but it would be @@ -1364,9 +1611,7 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, case G_TORCULUS: case G_TORCULUS_RESUPINUS_FLEXUS: case G_PORRECTUS_FLEXUS: - if (glyph->u.notes.liquescentia != L_DEMINUTUS - && glyph->u.notes.liquescentia != - L_DEMINUTUS_INITIO_DEBILIS) { + if (!(glyph->u.notes.liquescentia & L_DEMINUTUS)) { shift_before = true; } if (is_between_lines(pitch) @@ -1376,13 +1621,9 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, break; case G_PODATUS: if ((current_note->u.note.shape != S_PUNCTUM - && current_note->u.note.shape != S_QUILISMA) - || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS - || glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS - || glyph->u.notes.liquescentia == - L_AUCTUS_ASCENDENS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == - L_AUCTUS_DESCENDENS_INITIO_DEBILIS) { + && current_note->u.note.shape != S_QUILISMA) + || (glyph->u.notes.liquescentia + & (L_AUCTUS_DESCENDENS | L_AUCTUS_ASCENDENS))) { shift_before = true; /* fine tuning */ if (current_note->next->u.note.pitch - @@ -1487,6 +1728,7 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, * removes the space introduced by the punctummora. */ if (glyph->u.notes.glyph_type == G_PODATUS && glyph->next && glyph->next->type == GRE_SPACE + && glyph->next->u.misc.unpitched.info.space == SP_ZERO_WIDTH && current_note->next && glyph->next->next && glyph->next->next->type == GRE_GLYPH && glyph->next->next->u.notes.first_note @@ -1509,6 +1751,13 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, } tmpnote = tmpnote->next; } + /* use a special no-space punctum mora for ascending fusion */ + if (fuse_to_next_note) { + no_space = 1; + if (fuse_to_next_note > 0) { + special_punctum = 1; + } + } /* the normal operation */ fprintf(f, "\\GrePunctumMora{%d}{%d}{%d}{%d}%%\n", pitch_value(pitch), @@ -1527,24 +1776,24 @@ static __inline int get_punctum_inclinatum_space_case( /* means that it is the first note of the puncta inclinata * sequence */ temp = note->previous->u.note.pitch - note->u.note.pitch; - /* if (temp < -1 || temp > 1) */ + /* negative values = ascending ambitus */ + /* not sure we ever need to consider a larger ambitus here */ switch (temp) { - /* we switch on the range of the inclinata this will look - * somewhat strange if temp is negative... to be aligned - * then, */ - case -2: + case 1: + default: + return 3; case 2: return 10; - case -3: case 3: - return 11; - case -4: case 4: - /* not sure we ever need to consider a larger ambitus here */ return 11; - default: - return 3; - break; + case -1: + return 12; + case -2: + return 14; + case -3: + case -4: + return 15; } } break; @@ -1553,22 +1802,34 @@ static __inline int get_punctum_inclinatum_space_case( /* means that it is the first note of the puncta inclinata * sequence */ temp = note->previous->u.note.pitch - note->u.note.pitch; - if (temp < -2 || temp > 2) { + if (temp < -2) { + return 15; + } else if (temp > 2) { return 11; } else { if (note->previous && note->previous->u.note.shape == S_PUNCTUM_INCLINATUM_DEMINUTUS) { - if (temp < -1 || temp > 1) { + if (temp < -1) { + /* really if the ambitus = 3rd at this point */ + return 14; + } else if (temp > 1) { /* really if the ambitus = 3rd at this point */ return 10; } else { + /* temp == 0, so there is no ascending case */ return 8; } } else { - /* puncta inclinatum followed by puncta inclinatum - * debilis */ - return 7; + if (temp < 0) { + /* puncta inclinatum followed by puncta inclinatum + * debilis */ + return 13; + } else if (temp > 0) { + /* puncta inclinatum followed by puncta inclinatum + * debilis */ + return 7; + } } } } @@ -1576,12 +1837,15 @@ static __inline int get_punctum_inclinatum_space_case( case S_PUNCTUM_INCLINATUM_AUCTUS: case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: if (note->previous) { - /* means that it is the first note of the puncta inclinata + /* means that it is not the first note of the puncta inclinata * sequence */ temp = note->previous->u.note.pitch - note->u.note.pitch; if (temp < -1 || temp > 1) { + /* this is the normal interglyph space, so we'll use it for + * either direction */ return 1; } else { + /* temp == 0, so there is no ascending case */ /* we approximate that it is the same space */ return 3; } @@ -1594,6 +1858,42 @@ static __inline int get_punctum_inclinatum_space_case( return -1; } +static __inline int get_punctum_inclinatum_to_nobar_space_case( + const gregorio_glyph *const glyph) +{ + if (glyph->u.notes.glyph_type <= G_PUNCTA_INCLINATA) { + const gregorio_glyph *next = gregorio_next_non_texverb_glyph(glyph); + if (next && next->type == GRE_GLYPH + && (next->u.notes.glyph_type == G_PUNCTUM + || (next->u.notes.glyph_type == G_FLEXA + && !next->u.notes.fuse_to_next_glyph))) { + int descent; + gregorio_note *note = gregorio_glyph_last_note(glyph); + descent = note->u.note.pitch - + glyph->next->u.notes.first_note->u.note.pitch; + /* a negative descent is an ascent */ + switch(descent) { + case -1: + return 19; + case 1: + return 16; + case -2: + return 20; + case 2: + return 17; + case -3: + case -4: + return 21; + case 3: + case 4: + return 18; + } + } + } + + return -1; +} + static __inline void write_single_hepisema(FILE *const f, int hepisema_case, const gregorio_note *const note, bool connect, char height, const grehepisema_size size, const int i, @@ -1630,13 +1930,19 @@ static __inline void write_single_hepisema(FILE *const f, int hepisema_case, if (i - 1 != porrectus_long_episema_index || !note->previous || !is_episema_shown(note->previous)) { if (connect) { - if (!note->next && (!glyph->next - || glyph->next->type != GRE_SPACE - || glyph->next->u.misc.unpitched.info.space + const gregorio_glyph *next; + if (!note->next + && (!(next = gregorio_next_non_texverb_glyph(glyph)) + || next->type != GRE_SPACE + || next->u.misc.unpitched.info.space != SP_ZERO_WIDTH)) { /* not followed by a zero-width space */ - fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{-1}%%\n", - pitch_value(height), hepisema_case); + /* try to fuse from punctum inclinatum to nobar glyph */ + fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{%d}{%s%s}%%\n", + pitch_value(height), hepisema_case, + get_punctum_inclinatum_to_nobar_space_case(glyph), + suppose_high_ledger_line(note), + suppose_low_ledger_line(note)); } else if (note->next && (note->next->u.note.shape == S_PUNCTUM_INCLINATUM || note->next->u.note.shape @@ -1644,14 +1950,18 @@ static __inline void write_single_hepisema(FILE *const f, int hepisema_case, || note->next->u.note.shape == S_PUNCTUM_INCLINATUM_AUCTUS)) { /* is a punctum inclinatum of some sort */ - fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{%d}%%\n", + fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{%d}{%s%s}%%\n", pitch_value(height), hepisema_case, - get_punctum_inclinatum_space_case(note->next)); + get_punctum_inclinatum_space_case(note->next), + suppose_high_ledger_line(note), + suppose_low_ledger_line(note)); } } - fprintf(f, "\\GreHEpisema{%d}{\\GreOCase%s}{%d}{%d}{%c}{%d}%%\n", - pitch_value(height), note->gtex_offset_case, ambitus, - hepisema_case, size_arg, pitch_value(height)); + fprintf(f, "\\GreHEpisema{%d}{\\GreOCase%s}{%d}{%d}{%c}{%d}" + "{%s%s}%%\n", pitch_value(height), note->gtex_offset_case, + ambitus, hepisema_case, size_arg, pitch_value(height), + suppose_high_ledger_line(note), + suppose_low_ledger_line(note)); } } } @@ -1694,14 +2004,13 @@ static void gregoriotex_write_hepisema(FILE *const f, /* a macro to write an additional line */ -static void gregoriotex_write_additional_line(FILE *f, - int i, gtex_type type, bool bottom, - gregorio_note *current_note) +static void write_additional_line(FILE *f, int i, gtex_type type, bool bottom, + gregorio_note *current_note, const gregorio_score *const score) { char ambitus = 0; if (!current_note) { - gregorio_message(_("called with no note"), - "gregoriotex_write_additional_line", VERBOSITY_ERROR, 0); + gregorio_message(_("called with no note"), "write_additional_line", + VERBOSITY_ERROR, 0); return; } /* patch to get a line under the full glyph in the case of dbc (for @@ -1713,9 +2022,9 @@ static void gregoriotex_write_additional_line(FILE *f, i = HEPISEMA_FIRST_TWO; } if (i == 2) { - if (current_note->previous->u.note.pitch >= PITCH_BELOW_STAFF + if (current_note->previous->u.note.pitch > LOW_LEDGER_LINE_PITCH && current_note->previous->u.note.pitch - <= PITCH_ABOVE_STAFF) { + < score->high_ledger_line_pitch) { i = HEPISEMA_FIRST_TWO; /* HEPISEMA_FIRST_TWO works only for first note */ current_note = current_note->previous; @@ -1725,7 +2034,7 @@ static void gregoriotex_write_additional_line(FILE *f, } if (i == 3) { if (bottom || current_note->previous->u.note.pitch - > PITCH_ABOVE_STAFF) { + >= score->high_ledger_line_pitch) { /* we don't need to add twice the same line */ return; } @@ -1737,9 +2046,9 @@ static void gregoriotex_write_additional_line(FILE *f, i = HEPISEMA_FIRST_TWO; } if (i == 3) { - if (current_note->previous->u.note.pitch >= PITCH_BELOW_STAFF + if (current_note->previous->u.note.pitch > LOW_LEDGER_LINE_PITCH && current_note->previous->u.note.pitch - <= PITCH_ABOVE_STAFF) { + < score->high_ledger_line_pitch) { i = HEPISEMA_FIRST_TWO; /* HEPISEMA_FIRST_TWO works only for first note */ current_note = current_note->previous; @@ -1749,7 +2058,7 @@ static void gregoriotex_write_additional_line(FILE *f, } if (i == 4) { if (bottom || current_note->previous->u.note.pitch - > PITCH_ABOVE_STAFF) { + >= score->high_ledger_line_pitch) { /* we don't need to add twice the same line */ return; } @@ -1847,18 +2156,20 @@ static void gregoriotex_write_note(FILE *f, gregorio_note *note, "gregoriotex_write_note", VERBOSITY_ERROR, 0); return; } - if (note->u.note.shape == S_PUNCTUM - && note->u.note.liquescentia != L_NO_LIQUESCENTIA) { + if (note->u.note.shape == S_PUNCTUM) { switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: note->u.note.shape = S_PUNCTUM_AUCTUS_ASCENDENS; break; case L_AUCTUS_DESCENDENS: - case L_AUCTA: note->u.note.shape = S_PUNCTUM_AUCTUS_DESCENDENS; break; - case L_DEMINUTUS: case L_INITIO_DEBILIS: + if (glyph->u.notes.fuse_to_next_glyph > 0) { + break; + } + /* else fall through to next case */ + case L_DEMINUTUS: note->u.note.shape = S_PUNCTUM_DEMINUTUS; default: break; @@ -1888,6 +2199,21 @@ static void gregoriotex_write_note(FILE *f, gregorio_note *note, pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), type); break; + case S_ORISCUS_CAVUM_ASCENDENS: + fprintf(f, "\\GreOriscusCavum{%d}{%d}{%d}", + pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), + type); + break; + case S_ORISCUS_CAVUM_DESCENDENS: + fprintf(f, "\\GreOriscusCavumAuctus{%d}{%d}{%d}", + pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), + type); + break; + case S_ORISCUS_CAVUM_DEMINUTUS: + fprintf(f, "\\GreOriscusCavumDeminutus{%d}{%d}{%d}", + pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), + type); + break; case S_LINEA_PUNCTUM_CAVUM: fprintf(f, "\\GreLineaPunctumCavum{%d}{%d}{%d}", pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), @@ -1897,6 +2223,15 @@ static void gregoriotex_write_note(FILE *f, gregorio_note *note, fprintf(f, "\\GreLinea{%d}{%d}{%d}", pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), type); break; + case S_FLAT: + fprintf(f, "\\GreFlat{%d}{0}", pitch_value(note->u.note.pitch)); + break; + case S_NATURAL: + fprintf(f, "\\GreNatural{%d}{0}", pitch_value(note->u.note.pitch)); + break; + case S_SHARP: + fprintf(f, "\\GreSharp{%d}{0}", pitch_value(note->u.note.pitch)); + break; default: fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape, pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), @@ -1915,9 +2250,10 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) int alteration = 0; gregorio_glyph *glyph; gregorio_element *element; - if (!syllable) { + if (!syllable || !syllable->elements) { gregorio_message(_("called with a NULL argument"), "gregoriotex_syllable_first_type", VERBOSITY_ERROR, 0); + return 0; } element = syllable->elements[0]; while (element) { @@ -1936,6 +2272,8 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) case B_DIVISIO_MINOR_D4: case B_DIVISIO_MINOR_D5: case B_DIVISIO_MINOR_D6: + case B_DIVISIO_MINOR_D7: + case B_DIVISIO_MINOR_D8: result = 11; break; case B_DIVISIO_FINALIS: @@ -1948,26 +2286,27 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) return result; } if (element->type == GRE_ELEMENT && element->u.first_glyph) { - glyph = element->u.first_glyph; - while (glyph) { - if (alteration == 0) { - switch (glyph->type) { - case GRE_FLAT: - alteration = 20; - break; - case GRE_NATURAL: - alteration = 40; - break; - case GRE_SHARP: - alteration = 60; - break; - default: - /* do nothing */ - break; - } - } + for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { switch (glyph->u.notes.glyph_type) { + case G_ALTERATION: + if (alteration == 0) { + switch (glyph->u.notes.first_note->u.note.shape) { + case S_FLAT: + alteration = 20; + break; + case S_NATURAL: + alteration = 40; + break; + case S_SHARP: + alteration = 60; + break; + default: + /* do nothing */ + break; + } + } + continue; case G_TRIGONUS: case G_PUNCTA_INCLINATA: case G_2_PUNCTA_INCLINATA_DESCENDENS: @@ -2144,7 +2483,8 @@ static __inline void fixup_height_extrema(signed char *const top_height, static void gregoriotex_write_signs(FILE *f, gtex_type type, gregorio_glyph *glyph, gregorio_note *note, - gregoriotex_status *const status) + int fuse_to_next_note, gregoriotex_status *const status, + const gregorio_score *const score) { /* i is the number of the note for which we are typesetting the sign. */ int i; @@ -2161,12 +2501,12 @@ static void gregoriotex_write_signs(FILE *f, gtex_type type, for (current_note = note, i = 1; current_note; current_note = current_note->next, ++i) { /* we start by the additional lines */ - if (current_note->u.note.pitch < PITCH_BELOW_STAFF) { - gregoriotex_write_additional_line(f, i, type, true, current_note); + if (current_note->u.note.pitch <= LOW_LEDGER_LINE_PITCH) { + write_additional_line(f, i, type, true, current_note, score); status->bottom_line = 1; } - if (current_note->u.note.pitch > PITCH_ABOVE_STAFF) { - gregoriotex_write_additional_line(f, i, type, false, current_note); + if (current_note->u.note.pitch >= score->high_ledger_line_pitch) { + write_additional_line(f, i, type, false, current_note, score); } if (current_note->texverb) { fprintf(f, "%% verbatim text at note level:\n%s%%\n" @@ -2234,7 +2574,8 @@ static void gregoriotex_write_signs(FILE *f, gtex_type type, switch (current_note->signs) { case _PUNCTUM_MORA: case _V_EPISEMA_PUNCTUM_MORA: - gregoriotex_write_punctum_mora(f, glyph, current_note); + gregoriotex_write_punctum_mora(f, glyph, current_note, + fuse_to_next_note); break; case _AUCTUM_DUPLEX: case _V_EPISEMA_AUCTUM_DUPLEX: @@ -2269,8 +2610,8 @@ static char *determine_leading_shape(gregorio_glyph *glyph) case S_QUILISMA: head = "Quilisma"; break; - case S_ORISCUS: - case S_ORISCUS_SCAPUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: head = "Oriscus"; break; default: @@ -2278,17 +2619,10 @@ static char *determine_leading_shape(gregorio_glyph *glyph) break; } - switch (glyph->u.notes.liquescentia) { - case L_INITIO_DEBILIS: - case L_DEMINUTUS_INITIO_DEBILIS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - case L_AUCTA_INITIO_DEBILIS: + if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) { head_liquescence = "InitioDebilis"; - break; - default: + } else { head_liquescence = ""; - break; } gregorio_snprintf(buf, BUFSIZE, "Leading%s%s%s", head, tex_ambitus[ambitus], @@ -2296,9 +2630,9 @@ static char *determine_leading_shape(gregorio_glyph *glyph) return buf; } -static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, +static void write_glyph(FILE *f, gregorio_syllable *syllable, gregorio_element *element, gregorio_glyph *glyph, - gregoriotex_status *const status) + gregoriotex_status *const status, const gregorio_score *const score) { /* glyph number is the number of the glyph in the fonte, it is discussed in * later comments @@ -2311,16 +2645,25 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, char next_note_pitch = 0; gregorio_note *current_note; const char *leading_shape, *shape; + const gregorio_glyph *prev_glyph = + gregorio_previous_non_texverb_glyph(glyph); + int fuse_to_next_note, fuse_from_previous_note = + (prev_glyph && prev_glyph->type == GRE_GLYPH) + ? prev_glyph->u.notes.fuse_to_next_glyph : 0; if (!glyph) { - gregorio_message(_("called with NULL pointer"), - "gregoriotex_write_glyph", VERBOSITY_ERROR, 0); + gregorio_message(_("called with NULL pointer"), "write_glyph", + VERBOSITY_ERROR, 0); return; } if (glyph->type != GRE_GLYPH || !glyph->u.notes.first_note) { - gregorio_message(_("called with glyph without note"), - "gregoriotex_write_glyph", VERBOSITY_ERROR, 0); + gregorio_message(_("called with glyph without note"), "write_glyph", + VERBOSITY_ERROR, 0); return; } + fuse_to_next_note = glyph->u.notes.fuse_to_next_glyph; + if (fuse_from_previous_note) { + fprintf(f, "\\GreFuse"); + } next_note_pitch = gregorio_determine_next_pitch(syllable, element, glyph); current_note = glyph->u.notes.first_note; /* first we check if it is really a unique glyph in gregoriotex... the @@ -2341,52 +2684,57 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + current_note->next ? 0 : fuse_to_next_note, status, score); current_note = current_note->next; } + /* TODO: handle fusion to next note */ break; case G_SCANDICUS: - if (glyph->u.notes.liquescentia == L_DEMINUTUS - || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA) { + if ((glyph->u.notes.liquescentia & L_DEMINUTUS) + || glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + || glyph->u.notes.liquescentia == L_FUSED) { shape = gregoriotex_determine_glyph_name(glyph, element, &type, >ype); fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape, pitch_value(glyph->u.notes.first_note->u.note.pitch), pitch_value(next_note_pitch), type); gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); } else { while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, - status); + current_note->next ? 0 : fuse_to_next_note, status, + score); current_note = current_note->next; } } break; case G_ANCUS: - if (glyph->u.notes.liquescentia == L_DEMINUTUS - || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia & L_DEMINUTUS) { shape = gregoriotex_determine_glyph_name(glyph, element, &type, >ype); fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape, pitch_value(glyph->u.notes.first_note->u.note.pitch), pitch_value(next_note_pitch), type); gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); } else { while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, - status); + current_note->next ? 0 : fuse_to_next_note, status, + score); current_note = current_note->next; } } break; case G_TORCULUS_RESUPINUS_FLEXUS: + /* we retain this "old-style" fusion as it does look marginally better + * on screen */ leading_shape = determine_leading_shape(glyph); /* trick to have the good position for these glyphs */ glyph->u.notes.glyph_type = G_PORRECTUS_FLEXUS_NO_BAR; @@ -2399,14 +2747,15 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, glyph->u.notes.first_note = current_note; glyph->u.notes.glyph_type = G_TORCULUS_RESUPINUS_FLEXUS; gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); break; case G_BIVIRGA: case G_TRIVIRGA: while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + current_note->next ? 0 : fuse_to_next_note, status, score); current_note = current_note->next; if (current_note) { fprintf(f, "\\GreEndOfGlyph{4}%%\n"); @@ -2420,48 +2769,65 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + current_note->next ? 0 : fuse_to_next_note, status, score); current_note = current_note->next; if (current_note) { fprintf(f, "\\GreEndOfGlyph{5}%%\n"); } } break; + case G_PUNCTUM: - if (glyph->u.notes.first_note->u.note.shape != S_ORISCUS - && glyph->u.notes.first_note->u.note.shape != S_ORISCUS_AUCTUS - && glyph->u.notes.first_note->u.note.shape != - S_ORISCUS_DEMINUTUS - && glyph->u.notes.first_note->u.note.shape != - S_ORISCUS_SCAPUS) { + switch (glyph->u.notes.first_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_DEMINUTUS: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + case S_ORISCUS_SCAPUS: + /* don't change the oriscus */ + break; + + default: switch (glyph->u.notes.liquescentia) { case L_AUCTUS_ASCENDENS: glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_AUCTUS_ASCENDENS; break; case L_AUCTUS_DESCENDENS: - case L_AUCTA: glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_AUCTUS_DESCENDENS; break; - case L_DEMINUTUS: case L_INITIO_DEBILIS: + if (glyph->u.notes.fuse_to_next_glyph > 0) { + break; + } + /* else fall through to next case */ + case L_DEMINUTUS: glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_DEMINUTUS; default: break; } + break; } - /* else fall into the next case */ + + /* fall into the next case */ case G_PUNCTUM_INCLINATUM: case G_VIRGA: case G_VIRGA_REVERSA: case G_STROPHA: case G_STROPHA_AUCTA: + case G_ALTERATION: gregoriotex_write_note(f, glyph->u.notes.first_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + fuse_to_next_note, status, score); break; default: + /* we retain this "old-style" fusion as it does look marginally better + * on screen */ /* special case of the torculus resupinus which first note is not a * punctum */ if (glyph->u.notes.glyph_type == G_TORCULUS_RESUPINUS @@ -2480,7 +2846,7 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, glyph->u.notes.first_note = current_note; glyph->u.notes.glyph_type = G_TORCULUS_RESUPINUS; gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); break; } else { shape = gregoriotex_determine_glyph_name(glyph, element, &type, @@ -2489,7 +2855,7 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, pitch_value(glyph->u.notes.first_note->u.note.pitch), pitch_value(next_note_pitch), type); gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); break; } } @@ -2498,17 +2864,28 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, /* here we absolutely need to pass the syllable as an argument, because we * will need the next note, that may be contained in the next syllable */ -static void gregoriotex_write_element(FILE *f, gregorio_syllable *syllable, - gregorio_element *element, gregoriotex_status *status) +static void write_element(FILE *f, gregorio_syllable *syllable, + gregorio_element *element, gregoriotex_status *status, + const gregorio_score *const score) { if (element->type == GRE_ELEMENT) { gregorio_glyph *glyph; for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { switch (glyph->type) { case GRE_SPACE: - /* we assume here that it is a SP_ZERO_WIDTH, the only one a - * glyph can be */ - fprintf(f, "\\GreEndOfGlyph{1}%%\n"); + switch (glyph->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + fprintf(f, "\\GreEndOfGlyph{1}%%\n"); + break; + case SP_HALF_SPACE: + fprintf(f, "\\GreEndOfGlyph{22}%%\n"); + break; + default: + gregorio_message( + _("encountered an unexpected glyph-level space"), + "write_element", VERBOSITY_ERROR, 0); + break; + } break; case GRE_TEXVERB_GLYPH: @@ -2518,31 +2895,28 @@ static void gregoriotex_write_element(FILE *f, gregorio_syllable *syllable, } break; - case GRE_FLAT: - fprintf(f, "\\GreFlat{%d}{0}%%\n", - pitch_value(glyph->u.misc.pitched.pitch)); - break; - - case GRE_NATURAL: - fprintf(f, "\\GreNatural{%d}{0}%%\n", - pitch_value(glyph->u.misc.pitched.pitch)); - break; - - case GRE_SHARP: - fprintf(f, "\\GreSharp{%d}{0}%%\n", - pitch_value(glyph->u.misc.pitched.pitch)); - break; - default: /* at this point glyph->type is GRE_GLYPH */ assert(glyph->type == GRE_GLYPH); - gregoriotex_write_glyph(f, syllable, element, glyph, status); - if (glyph->next && glyph->next->type == GRE_GLYPH) { - if (is_puncta_inclinata(glyph->next->u.notes.glyph_type) + write_glyph(f, syllable, element, glyph, status, score); + if (glyph->next && glyph->next->type == GRE_GLYPH && + glyph->next->u.notes.glyph_type != G_ALTERATION) { + if (is_fused(glyph->next->u.notes.liquescentia)) { + int space_case = + get_punctum_inclinatum_to_nobar_space_case(glyph); + if (space_case >= 0) { + /* fuse from punctum inclinatum to nobar glyph */ + fprintf(f, "\\GreEndOfGlyph{%d}%%\n", space_case); + } else { + fprintf(f, "\\GreEndOfGlyph{1}%%\n"); + } + } else if (is_puncta_inclinata( + glyph->next->u.notes.glyph_type) || glyph->next->u.notes.glyph_type == G_PUNCTA_INCLINATA) { fprintf(f, "\\GreEndOfGlyph{9}%%\n"); - } else { + } else if (glyph->u.notes.glyph_type != G_ALTERATION + || !glyph->next) { fprintf(f, "\\GreEndOfGlyph{0}%%\n"); } } @@ -2574,54 +2948,23 @@ static void write_fixed_text_styles(FILE *f, gregorio_character *syllable_text, } } -static void gregoriotex_write_text(FILE *f, gregorio_character *text, - bool *first_syllable) +static void write_text(FILE *const f, const gregorio_character *const text) { - bool skip_initial = first_syllable && *first_syllable; if (text == NULL) { fprintf(f, "{}{}{}{}{}"); - if (skip_initial) { - fprintf(f, "\\GreForceHyphen{}"); - } return; } fprintf(f, "{"); - gregorio_write_text(skip_initial, text, f, - (>ex_write_verb), (>ex_print_char), (>ex_write_begin), - (>ex_write_end), (>ex_write_special_char)); + gregorio_write_text(WTP_NORMAL, text, f, >ex_write_verb, + >ex_print_char, >ex_write_begin, >ex_write_end, + >ex_write_special_char); fprintf(f, "}{"); - gregorio_write_first_letter_alignment_text(skip_initial, text, f, - (>ex_write_verb), (>ex_print_char), (>ex_write_begin), - (>ex_write_end), (>ex_write_special_char)); - if (first_syllable) { - *first_syllable = false; - } + gregorio_write_first_letter_alignment_text(WTP_NORMAL, text, + f, >ex_write_verb, >ex_print_char, >ex_write_begin, + >ex_write_end, >ex_write_special_char); gregoriotex_ignore_style = gregoriotex_next_ignore_style; gregoriotex_next_ignore_style = ST_NO_STYLE; fprintf(f, "}"); - if (skip_initial) { - /* Check to see if we need to force a hyphen (empty first syllable) */ - for (; text; text = text->next_character) { - if (text->is_character) { - break; - } else if (text->cos.s.type == ST_T_BEGIN) { - if (text->cos.s.style == ST_VERBATIM || - text->cos.s.style == ST_SPECIAL_CHAR) { - break; - } else if (text->cos.s.style == ST_INITIAL) { - for (; text; text = text->next_character) { - if (!text->is_character && text->cos.s.type == ST_T_END - && text->cos.s.style == ST_INITIAL) { - break; - } - } - } - } - } - if (!text) { - fprintf(f, "\\GreForceHyphen{}"); - } - } } /* @@ -2633,59 +2976,22 @@ static void gregoriotex_write_text(FILE *f, gregorio_character *text, static void gregoriotex_print_change_line_clef(FILE *f, gregorio_element *current_element) { - if (current_element->type == GRE_C_KEY_CHANGE) { - if (current_element->u.misc.pitched.flatted_key) { - fprintf(f, "\\GreSetLinesClef{c}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('c', - current_element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreSetLinesClef{c}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', NO_KEY_FLAT); - } - } - if (current_element->type == GRE_F_KEY_CHANGE) { - if (current_element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need for a - * space before the clef */ - fprintf(f, "\\GreSetLinesClef{f}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('f', - current_element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreSetLinesClef{f}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', NO_KEY_FLAT); - } - } -} - -static void handle_final_bar(FILE *f, const char *type, gregorio_syllable *syllable) -{ - gregorio_element *element; - fprintf(f, "\\GreFinal%s{%%\n", type); - /* first element will be the bar, which we just handled, so skip it */ - for (element = (*syllable->elements)->next; element; - element = element->next) { - switch (element->type) { - case GRE_TEXVERB_ELEMENT: - if (element->texverb) { - fprintf(f, "%% verbatim text at element level:\n%s%%\n" - "%% end of verbatim text\n", element->texverb); - } - break; - - case GRE_CUSTOS: - assert(element->u.misc.pitched.force_pitch); - fprintf(f, "\\GreFinalCustos{%d}%%\n", - pitch_value(element->u.misc.pitched.pitch)); - break; - - default: - /* do nothing */ - break; - } + if (current_element->type == GRE_CLEF) { + /* the third argument is 0 or 1 according to the need for a space + * before the clef */ + fprintf(f, "\\GreSetLinesClef{%c}{%d}{1}{%d}{%c}{%d}{%d}%%\n", + gregorio_clef_to_char(current_element->u.misc.clef.clef), + current_element->u.misc.clef.line, + clef_flat_height(current_element->u.misc.clef.clef, + current_element->u.misc.clef.line, + current_element->u.misc.clef.flatted), + gregorio_clef_to_char( + current_element->u.misc.clef.secondary_clef), + current_element->u.misc.clef.secondary_line, + clef_flat_height(current_element->u.misc.clef.secondary_clef, + current_element->u.misc.clef.secondary_line, + current_element->u.misc.clef.secondary_flatted)); } - fprintf(f, "}%%\n"); } static __inline bool is_manual_custos(const gregorio_element *element) @@ -2739,6 +3045,48 @@ static __inline bool next_is_bar(const gregorio_syllable *syllable, return false; /* avoid gcc 5.1 warning */ } +static void finish_syllable(FILE *f, gregorio_syllable *syllable) { + /* Very last, if the syllable is the end of a no-linebreak area: */ + if (syllable->no_linebreak_area == NLBA_END) { + fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", + next_is_bar(syllable, NULL)? 3 : 1); + } + if (syllable->euouae == EUOUAE_END) { + fprintf(f, "\\GreEndEUOUAE{%d}%%\n", + next_is_bar(syllable, NULL)? 3 : 1); + } +} + +static void handle_final_bar(FILE *f, const char *type, gregorio_syllable *syllable) +{ + gregorio_element *element; + fprintf(f, "\\GreFinal%s{%%\n", type); + /* first element will be the bar, which we just handled, so skip it */ + for (element = (*syllable->elements)->next; element; + element = element->next) { + switch (element->type) { + case GRE_TEXVERB_ELEMENT: + if (element->texverb) { + fprintf(f, "%% verbatim text at element level:\n%s%%\n" + "%% end of verbatim text\n", element->texverb); + } + break; + + case GRE_CUSTOS: + assert(element->u.misc.pitched.force_pitch); + fprintf(f, "\\GreFinalCustos{%d}%%\n", + pitch_value(element->u.misc.pitched.pitch)); + break; + + default: + /* do nothing */ + break; + } + } + fprintf(f, "}%%\n"); + finish_syllable(f, syllable); +} + static __inline void write_syllable_point_and_click(FILE *const f, const gregorio_syllable *const syllable, const gregoriotex_status *const status) @@ -2749,6 +3097,140 @@ static __inline void write_syllable_point_and_click(FILE *const f, } } +static void write_syllable_text(FILE *f, const char *const syllable_type, + const gregorio_character *text, bool ignored __attribute__((unused))) +{ + if (syllable_type != NULL) { + fprintf(f, "%s{\\GreSetThisSyllable", syllable_type); + write_text(f, text); + fprintf(f, "}"); + } +} + +static void write_first_syllable_text(FILE *f, const char *const syllable_type, + const gregorio_character *const text, bool end_of_word) +{ + if (syllable_type == NULL || text == NULL) { + fprintf(f, "}{}{\\GreSetNoFirstSyllableText}"); + } else { + gregorio_character *text_with_initial = gregorio_clone_characters(text), + *text_without_initial = gregorio_clone_characters(text); + const gregorio_character *t; + + /* find out if there is a forced center -> has_forced_center */ + gregorio_center_determination center = CENTER_NOT_DETERMINED; + for (t = text; t; t = t->next_character) { + if (!t->is_character && t->cos.s.style == ST_FORCED_CENTER) { + center = CENTER_FULLY_DETERMINED; + break; + } + } + + gregorio_rebuild_first_syllable(&text_with_initial, false); + gregorio_rebuild_characters(&text_with_initial, center, false); + gregorio_set_first_word(&text_with_initial); + + gregorio_rebuild_first_syllable(&text_without_initial, true); + gregorio_rebuild_characters(&text_without_initial, center, true); + gregorio_set_first_word(&text_without_initial); + + fprintf(f, "}{%s}{\\GreSetFirstSyllableText", syllable_type); + + fprintf(f, "{"); + gregorio_write_first_letter_alignment_text(WTP_FIRST_SYLLABLE, + text_with_initial, f, >ex_write_verb, >ex_print_char, + >ex_write_begin, >ex_write_end, >ex_write_special_char); + fprintf(f, "}{{"); + gregorio_write_text(WTP_FIRST_SYLLABLE, text_without_initial, f, + >ex_write_verb, >ex_print_char, >ex_write_begin, + >ex_write_end, >ex_write_special_char); + fprintf(f, "}}{{"); + gregorio_write_text(WTP_NORMAL, text_with_initial, f, >ex_write_verb, + >ex_print_char, >ex_write_begin, >ex_write_end, + >ex_write_special_char); + gregoriotex_ignore_style = gregoriotex_next_ignore_style; + gregoriotex_next_ignore_style = ST_NO_STYLE; + fprintf(f, "}}"); + + /* Check to see if we need to force a hyphen (empty first syllable) */ + for (t = text_without_initial; t; t = t->next_character) { + if (t->is_character) { + break; + } else if (t->cos.s.type == ST_T_BEGIN) { + if (t->cos.s.style == ST_VERBATIM || + t->cos.s.style == ST_SPECIAL_CHAR) { + break; + } else if (t->cos.s.style == ST_INITIAL) { + for (; t; t = t->next_character) { + if (!t->is_character && t->cos.s.type == ST_T_END + && t->cos.s.style == ST_INITIAL) { + break; + } + } + if (!t) break; + } + } + } + if (t || end_of_word) { + fprintf(f, "{}"); + } else { + fprintf(f, "{\\GreEmptyFirstSyllableHyphen}"); + } + + fprintf(f, "}"); + + gregorio_free_characters(text_with_initial); + gregorio_free_characters(text_without_initial); + } +} + +static __inline void scan_syllable_for_eol( + const gregorio_syllable *const syllable, + bool *eol_forces_custos, bool *eol_forces_custos_on) { + const gregorio_element *element; + if (syllable->elements) { + for (element = *(syllable->elements); element; element = element->next) { + if (element->type == GRE_END_OF_LINE) { + if (element->u.misc.unpitched.info.eol_forces_custos) { + *eol_forces_custos = true; + *eol_forces_custos_on = + element->u.misc.unpitched.info.eol_forces_custos_on; + } + } + } + } +} + +static __inline void anticipate_event(FILE *f, gregorio_syllable *syllable) { + static unsigned short euouae_id = 0; + bool eol_forces_custos = false; + bool eol_forces_custos_on = false; + + if (syllable->next_syllable) { + for (syllable = syllable->next_syllable; + syllable && syllable->elements && *(syllable->elements) + && (*(syllable->elements))->type == GRE_END_OF_LINE; + syllable = syllable->next_syllable) { + /* we are at an end-of-line, so check if custos is forced */ + scan_syllable_for_eol(syllable, &eol_forces_custos, + &eol_forces_custos_on); + } + if (syllable) { + scan_syllable_for_eol(syllable, &eol_forces_custos, + &eol_forces_custos_on); + + if (syllable->euouae == EUOUAE_BEGINNING) { + syllable->euouae_id = ++euouae_id; + fprintf(f, "%%\n\\GreNextSyllableBeginsEUOUAE{%hu}%%\n", euouae_id); + } + } + if (eol_forces_custos) { + fprintf(f, "%%\n\\GreUpcomingNewLineForcesCustos{%c}%%\n", + eol_forces_custos_on? '1' : '0'); + } + } +} + /* * Arguments are relatively obvious. The most obscure is certainly first_of_disc * which is 0 all the time, except in the case of a "clef change syllable". In @@ -2762,12 +3244,21 @@ static __inline void write_syllable_point_and_click(FILE *const f, * 1 in case of the first argument of a \GreDiscretionary * 2 if we are in the second argument (necessary in order to avoid infinite loops) */ -static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, - bool * first_syllable, unsigned char *line_number, - unsigned char first_of_disc, gregoriotex_status *const status) +static void write_syllable(FILE *f, gregorio_syllable *syllable, + unsigned char first_of_disc, gregoriotex_status *const status, + const gregorio_score *const score, + void (*const write_this_syllable_text) + (FILE *, const char *, const gregorio_character *, bool)) { gregorio_element *clef_change_element = NULL, *element; + const char *syllable_type = NULL; + bool event_anticipated = false; + bool end_of_word = syllable->position == WORD_END + || syllable->position == WORD_ONE_SYLLABLE || !syllable->text + || !syllable->next_syllable + || syllable->next_syllable->type == GRE_END_OF_LINE; if (!syllable) { + write_this_syllable_text(f, NULL, NULL, end_of_word); return; } /* Very first: before anything, if the syllable is the beginning of a @@ -2776,7 +3267,7 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, fprintf(f, "\\GreBeginNLBArea{1}{0}%%\n"); } if (syllable->euouae == EUOUAE_BEGINNING) { - fprintf(f, "\\GreBeginEUOUAE{}%%\n"); + fprintf(f, "\\GreBeginEUOUAE{%hu}%%\n", syllable->euouae_id); } /* * first we check if the syllable is only a end of line. If it is the case, @@ -2786,16 +3277,12 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, */ if (syllable->elements && *(syllable->elements)) { if ((syllable->elements)[0]->type == GRE_END_OF_LINE) { - if ((syllable->elements)[0]->u.misc.unpitched.info.sub_type != - GRE_END_OF_PAR) { - fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); - } else { + if ((syllable->elements)[0]->u.misc.unpitched.info.eol_ragged) { fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n"); + } else { + fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); } - if (*line_number == 1) { - fprintf(f, "\\GreAdjustThirdLine %%\n"); - *line_number = 0; - } + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } /* @@ -2812,12 +3299,13 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, */ gregoriotex_print_change_line_clef(f, clef_change_element); fprintf(f, "\\GreDiscretionary{0}{%%\n"); - gregoriotex_write_syllable(f, syllable, first_syllable, - line_number, 1, status); + write_syllable(f, syllable, 1, status, score, + write_syllable_text); fprintf(f, "}{%%\n"); - gregoriotex_write_syllable(f, syllable, first_syllable, - line_number, 2, status); + write_syllable(f, syllable, 2, status, score, + write_syllable_text); fprintf(f, "}%%\n"); + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } } @@ -2828,39 +3316,36 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, && (syllable->elements)[0]->u.misc.unpitched.info.bar == B_DIVISIO_FINALIS) { handle_final_bar(f, "DivisioFinalis", syllable); + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } if (!syllable->next_syllable && !syllable->text && (syllable->elements)[0]->u.misc.unpitched.info.bar == B_DIVISIO_MAIOR) { handle_final_bar(f, "DivisioMaior", syllable); + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } else { - fprintf(f, "\\GreBarSyllable"); + syllable_type = "\\GreBarSyllable"; } } else { - fprintf(f, "\\GreSyllable"); + syllable_type = "\\GreSyllable"; } } else { write_fixed_text_styles(f, syllable->text, syllable->next_syllable? syllable->next_syllable->text : NULL); - fprintf(f, "\\GreSyllable"); + syllable_type = "\\GreSyllable"; } - fprintf(f, "{\\GreSetThisSyllable"); - gregoriotex_write_text(f, syllable->text, first_syllable); - fprintf(f, "}{}{\\Gre%s}", syllable->first_word ? "FirstWord" : "Unstyled"); - if (syllable->position == WORD_END - || syllable->position == WORD_ONE_SYLLABLE || !syllable->text - || !syllable->next_syllable - || syllable->next_syllable->type == GRE_END_OF_LINE - || syllable->next_syllable->type == GRE_END_OF_PAR) { + write_this_syllable_text(f, syllable_type, syllable->text, end_of_word); + fprintf(f, "{}{\\Gre%s}", syllable->first_word ? "FirstWord" : "Unstyled"); + if (end_of_word) { fprintf(f, "{1}"); } else { fprintf(f, "{0}"); } if (syllable->next_syllable) { fprintf(f, "{\\GreSetNextSyllable"); - gregoriotex_write_text(f, syllable->next_syllable->text, NULL); + write_text(f, syllable->next_syllable->text); fprintf(f, "}{"); write_syllable_point_and_click(f, syllable, status); fprintf(f, "}{%d}{", @@ -2895,198 +3380,161 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, } fprintf(f, "}{%%\n"); - for (element = *syllable->elements; element; - element = element->next) { - if (element->nabc_lines && element->nabc) { - size_t i; - for (i = 0; i < element->nabc_lines; i++) { - if (element->nabc[i]) { - fprintf(f, "\\GreNABCNeumes{%d}{%s}%%\n", (int)(i+1), - element->nabc[i]); + if (syllable->elements) { + for (element = *syllable->elements; element; + element = element->next) { + if (element->nabc_lines && element->nabc) { + size_t i; + for (i = 0; i < element->nabc_lines; i++) { + if (element->nabc[i]) { + fprintf(f, "\\GreNABCNeumes{%d}{%s}%%\n", (int)(i+1), + element->nabc[i]); + } } } - } - switch (element->type) { - case GRE_SPACE: - switch (element->u.misc.unpitched.info.space) { - case SP_ZERO_WIDTH: - fprintf(f, "\\GreEndOfElement{3}{1}%%\n"); - break; - case SP_LARGER_SPACE: - fprintf(f, "\\GreEndOfElement{1}{0}%%\n"); - break; - case SP_GLYPH_SPACE: - fprintf(f, "\\GreEndOfElement{2}{0}%%\n"); - break; - case SP_GLYPH_SPACE_NB: - fprintf(f, "\\GreEndOfElement{2}{1}%%\n"); + switch (element->type) { + case GRE_SPACE: + switch (element->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + fprintf(f, "\\GreEndOfElement{3}{1}%%\n"); + break; + case SP_LARGER_SPACE: + fprintf(f, "\\GreEndOfElement{1}{0}%%\n"); + break; + case SP_GLYPH_SPACE: + fprintf(f, "\\GreEndOfElement{2}{0}%%\n"); + break; + case SP_NEUMATIC_CUT: + fprintf(f, "\\GreEndOfElement{0}{0}%%\n"); + break; + case SP_AD_HOC_SPACE: + fprintf(f, "\\GreAdHocSpaceEndOfElement{%s}{0}%%\n", + element->u.misc.unpitched.info.ad_hoc_space_factor); + break; + case SP_GLYPH_SPACE_NB: + fprintf(f, "\\GreEndOfElement{2}{1}%%\n"); + break; + case SP_LARGER_SPACE_NB: + fprintf(f, "\\GreEndOfElement{1}{1}%%\n"); + break; + case SP_NEUMATIC_CUT_NB: + fprintf(f, "\\GreEndOfElement{0}{1}%%\n"); + break; + case SP_AD_HOC_SPACE_NB: + fprintf(f, "\\GreAdHocSpaceEndOfElement{%s}{1}%%\n", + element->u.misc.unpitched.info.ad_hoc_space_factor); + break; + default: + gregorio_message( + _("encountered an unexpected element-level space"), + "write_syllable", VERBOSITY_ERROR, 0); + break; + } break; - case SP_LARGER_SPACE_NB: - fprintf(f, "\\GreEndOfElement{1}{1}%%\n"); + + case GRE_TEXVERB_ELEMENT: + if (element->texverb) { + fprintf(f, "%% verbatim text at element level:\n%s%%\n" + "%% end of verbatim text\n", element->texverb); + } break; - case SP_NEUMATIC_CUT_NB: - fprintf(f, "\\GreEndOfElement{0}{1}%%\n"); + + case GRE_NLBA: + if (element->u.misc.unpitched.info.nlba == NLBA_BEGINNING) { + fprintf(f, "\\GreBeginNLBArea{0}{0}%%\n"); + } else { + fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", + next_is_bar(syllable, element)? 3 : 0); + } break; - default: + + case GRE_ALT: + if (element->texverb) { + fprintf(f, "\\GreSetTextAboveLines{%s}%%\n", element->texverb); + } break; - } - break; - case GRE_TEXVERB_ELEMENT: - if (element->texverb) { - fprintf(f, "%% verbatim text at element level:\n%s%%\n" - "%% end of verbatim text\n", element->texverb); - } - break; + case GRE_CLEF: + /* We don't print clef changes at the end of a line */ + if (first_of_disc != 1) { + /* the third argument is 0 or 1 according to the need + * for a space before the clef */ + fprintf(f, "\\GreChangeClef{%c}{%d}{%c}{%d}{%c}{%d}{%d}%%\n", + gregorio_clef_to_char(element->u.misc.clef.clef), + element->u.misc.clef.line, + (element->previous && element->previous->type + == GRE_BAR)? '0' : '1', + clef_flat_height(element->u.misc.clef.clef, + element->u.misc.clef.line, + element->u.misc.clef.flatted), + gregorio_clef_to_char( + element->u.misc.clef.secondary_clef), + element->u.misc.clef.secondary_line, + clef_flat_height(element->u.misc.clef.secondary_clef, + element->u.misc.clef.secondary_line, + element->u.misc.clef.secondary_flatted)); + } + break; - case GRE_NLBA: - if (element->u.misc.unpitched.info.nlba == NLBA_BEGINNING) { - fprintf(f, "\\GreBeginNLBArea{0}{0}%%\n"); - } else { - fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", - next_is_bar(syllable, element)? 3 : 0); - } - break; + case GRE_CUSTOS: + if (first_of_disc != 1) { + /* + * We don't print custos before a bar at the end of a line + */ + /* we also print an unbreakable larger space before the custo */ + fprintf(f, "\\GreEndOfElement{1}{1}%%\n\\GreCustos{%d}" + "\\GreNextCustos{%d}%%\n", + pitch_value(element->u.misc.pitched.pitch), + pitch_value(gregorio_determine_next_pitch(syllable, + element, NULL))); + } + break; - case GRE_ALT: - if (element->texverb) { - fprintf(f, "\\GreSetTextAboveLines{%s}%%\n", element->texverb); - } - break; + case GRE_BAR: + write_bar(f, element->u.misc.unpitched.info.bar, + element->u.misc.unpitched.special_sign, + element->next && !is_manual_custos(element->next), + !element->previous && syllable->text); + break; - case GRE_C_KEY_CHANGE: - if (first_of_disc != 1) { - /* - * We don't print clef changes at the end of a line - */ - if (element->previous && element->previous->type == GRE_BAR) { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{c}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('c', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{c}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } - } else { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{c}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('c', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{c}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } + case GRE_END_OF_LINE: + if (!element->next) { + anticipate_event(f, syllable); + event_anticipated = true; } - } - break; - - case GRE_F_KEY_CHANGE: - if (first_of_disc != 1) { - /* - * We don't print clef changes at the end of a line - */ - if (element->previous && element->previous->type == GRE_BAR) { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{f}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('f', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{f}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } + /* here we suppose we don't have two linebreaks in the same + * syllable */ + if (element->u.misc.unpitched.info.eol_ragged) { + fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n"); } else { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{f}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('f', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{f}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } + fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); } - } - break; - - case GRE_CUSTOS: - if (first_of_disc != 1) { - /* - * We don't print custos before a bar at the end of a line - */ - /* we also print an unbreakable larger space before the custo */ - fprintf(f, "\\GreEndOfElement{1}{1}%%\n\\GreCustos{%d}" - "\\GreNextCustos{%d}%%\n", - pitch_value(element->u.misc.pitched.pitch), - pitch_value(gregorio_determine_next_pitch(syllable, - element, NULL))); - } - break; - - case GRE_BAR: - gregoriotex_write_bar(f, - element->u.misc.unpitched.info.bar, - element->u.misc.unpitched.special_sign, - element->next && !is_manual_custos(element->next)); - break; - - case GRE_END_OF_LINE: - /* here we suppose we don't have two linebreaks in the same - * syllable */ - if (element->u.misc.unpitched.info.sub_type != GRE_END_OF_PAR) { - fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); - } else { - fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n"); - } - if (*line_number == 1) { - fprintf(f, "\\GreAdjustThirdLine %%\n"); - *line_number = 0; - } - break; + break; - default: - /* there current_element->type is GRE_ELEMENT */ - assert(element->type == GRE_ELEMENT); - gregoriotex_write_element(f, syllable, element, status); - if (element->next && (element->next->type == GRE_ELEMENT - || (element->next->next - && element->next->type == GRE_ALT - && element->next->next->type == - GRE_ELEMENT))) { - fprintf(f, "\\GreEndOfElement{0}{0}%%\n"); + default: + /* there current_element->type is GRE_ELEMENT */ + assert(element->type == GRE_ELEMENT); + write_element(f, syllable, element, status, score); + if (element->next && (element->next->type == GRE_ELEMENT + || (element->next->next + && element->next->type == GRE_ALT + && element->next->next->type == + GRE_ELEMENT))) { + fprintf(f, "\\GreEndOfElement{0}{0}%%\n"); + } + break; } - break; } } + if (!event_anticipated) { + anticipate_event(f, syllable); + } fprintf(f, "}%%\n"); if (syllable->position == WORD_END || syllable->position == WORD_ONE_SYLLABLE || !syllable->text) { fprintf(f, "%%\n"); } - /* Very last, if the syllable is the end of a no-linebreak area: */ - if (syllable->no_linebreak_area == NLBA_END) { - fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", - next_is_bar(syllable, NULL)? 3 : 1); - } - if (syllable->euouae == EUOUAE_END) { - fprintf(f, "\\GreEndEUOUAE{%d}%%\n", - next_is_bar(syllable, NULL)? 3 : 1); - } + finish_syllable(f, syllable); } static char *digest_to_hex(const unsigned char digest[SHA1_DIGEST_SIZE]) @@ -3134,7 +3582,7 @@ static void initialize_score(gregoriotex_status *const status, for (voice = 0; voice < score->number_of_voices; ++voice) { gregorio_element *element; - gregoriotex_compute_positioning(syllable->elements[voice]); + gregoriotex_compute_positioning(syllable->elements[voice], score); for (element = syllable->elements[voice]; element; element = element->next) { gregorio_glyph *glyph; @@ -3169,20 +3617,84 @@ static void initialize_score(gregoriotex_status *const status, status->point_and_click = point_and_click; } +static __inline void write_escapable_header_text(FILE *const f, + const char *text) +{ + /* We escape these characters into \string\ddd (where ddd is the decimal + * ASCII value of the character) for most escapes, and into \string\n for + * newlines. We do it this way to get the "raw" string values through TeX + * and into Lua, where the sequences become \ddd and \n respectively and + * are translated into their byte values. Lua can then decide whether the + * full strings should be evaluated by TeX as TeX or as strings */ + for (; *text; ++text) { + switch (*text) { + case '\\': + case '{': + case '}': + case '~': + case '%': /* currently, we'll never get %, but handle it anyway */ + case '#': + case '"': + /* these characters have special meaning to TeX */ + fprintf(f, "\\string\\%03d", *text); + break; + case '\n': + /* currently, we'll never get \n, but handle it anyway */ + fprintf(f, "\\string\\n"); + break; + case '\r': + /* ignore */ + break; + default: + /* UTF-8 multibyte sequences will fall into here, which is fine */ + fputc(*text, f); + break; + } + } +} + +static void write_header(FILE *const f, const char *const name, + const char *const value) +{ + if (value) { + fprintf(f, "\\GreHeader{"); + write_escapable_header_text(f, name); + fprintf(f, "}{"); + write_escapable_header_text(f, value); + fprintf(f, "}%%\n"); + } +} + +static void write_headers(FILE *const f, gregorio_score *const score) +{ + gregorio_header *header; + + fprintf(f, "\\GreBeginHeaders %%\n"); + for (header = score->headers; header; header = header->next) { + write_header(f, header->name, header->value); + } + fprintf(f, "\\GreEndHeaders %%\n"); +} + +static void suppress_expansion(FILE *const f, const char *text) +{ + if (!text) { + return; + } + + for (; *text; ++text) { + if (*text == '\\') { + fprintf(f, "\\noexpand"); + } + fputc(*text, f); + } +} + void gregoriotex_write_score(FILE *const f, gregorio_score *const score, const char *const point_and_click_filename) { - gregorio_character *first_text; - /* true if it is the first syllable and false if not. - * It is for the initial. */ - bool first_syllable = false; - char clef_letter; - int clef_line; - char clef_flat = NO_KEY_FLAT; + gregorio_clef_info clef = gregorio_default_clef; gregorio_syllable *current_syllable; - /* the current line (as far as we know), it is always 0, it can be 1 in the - * case of the first line of a score with a two lines initial */ - unsigned char line = 0; int annotation_num; gregoriotex_status status; @@ -3205,8 +3717,8 @@ void gregoriotex_write_score(FILE *const f, gregorio_score *const score, if (score->name) { fprintf(f, "%% Name: %s\n", score->name); } - if (score->si.author) { - fprintf(f, "%% Author: %s\n", score->si.author); + if (score->author) { + fprintf(f, "%% Author: %s\n", score->author); } if (score->gabc_copyright) { fprintf(f, "%% The copyright of this gabc is: %s\n", @@ -3217,38 +3729,17 @@ void gregoriotex_write_score(FILE *const f, gregorio_score *const score, score->score_copyright); } - fprintf(f, "\\GreBeginScore{%s}{%d}{%d}{%d}{%d}{%s}%%\n", + write_headers(f, score); + + fprintf(f, "\\GreBeginScore{%s}{%d}{%d}{%d}{%d}{%s}{%u}%%\n", digest_to_hex(score->digest), status.top_height, status.bottom_height, bool_to_int(status.translation), bool_to_int(status.abovelinestext), - point_and_click_filename? point_and_click_filename : ""); - switch (score->centering) { - case SCHEME_SYLLABLE: - fprintf(f, "\\englishcentering%%\n"); - break; - case SCHEME_VOWEL: - fprintf(f, "\\defaultcentering%%\n"); - break; - default: - /* don't set any centering */ - break; - } + point_and_click_filename? point_and_click_filename : "", + score->staff_lines); if (score->nabc_lines) { fprintf(f, "\\GreScoreNABCLines{%d}", (int)score->nabc_lines); } - /* we select the good font -- Deprecated (remove in next release) */ - if (score->gregoriotex_font) { - if (!strcmp(score->gregoriotex_font, "gregorio")) { - fprintf(f, "\\gresetgregoriofont{gregorio}%%\n"); - } - if (!strcmp(score->gregoriotex_font, "parmesan")) { - fprintf(f, "\\gresetgregoriofont{parmesan}%%\n"); - } - if (!strcmp(score->gregoriotex_font, "greciliae")) { - fprintf(f, "\\gresetgregoriofont{greciliae}%%\n"); - } - } - /* end Deprecated section */ if (score->annotation[0]) { fprintf(f, "\\GreAnnotationLines"); for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; @@ -3263,56 +3754,48 @@ void gregoriotex_write_score(FILE *const f, gregorio_score *const score, } fprintf(f, "%%\n"); } - if (score->mode != 0) { - fprintf(f, "\\GreMode{%d}%%\n", score->mode); + if (score->mode) { + fprintf(f, "\\GreMode{"); + if (*(score->mode) >= '1' && *(score->mode) <= '8') { + fprintf(f, "\\GreModeNumber{%c}%s", *(score->mode), score->mode + 1); + } else { + fprintf(f, "%s", score->mode); + } + fprintf(f, "}{"); + suppress_expansion(f, score->mode_modifier); + fprintf(f, "}{"); + suppress_expansion(f, score->mode_differentia); + fprintf(f, "}%%\n"); } - /* first we draw the initial (first letter) and the initial key */ - if (score->initial_style == NO_INITIAL) { - fprintf(f, "\\GreNoInitial %%\n"); - } else { - if (score->initial_style == BIG_INITIAL) { - fprintf(f, "\\GreSetBigInitial %%\n"); - line = 1; - } - first_text = gregorio_first_text(score); - if (first_text) { - fprintf(f, "\\GreSetInitial{"); - gregorio_write_initial(first_text, f, - (>ex_write_verb), - (>ex_print_char), - (>ex_write_begin), - (>ex_write_end), (>ex_write_special_char)); - fprintf(f, "}%%\n"); - first_syllable = true; - } - } - if (score->si.manuscript_reference) { - fprintf(f, "\\GreScoreReference{%s}%%\n", - score->si.manuscript_reference); + + if (score->initial_style != INITIAL_NOT_SPECIFIED) { /* DEPRECATED by 4.1 */ + fprintf(f, "\\GreSetInitialStyle{%d}%%\n", score->initial_style); /* DEPRECATED by 4.1 */ } + + fprintf(f, "\\GreScoreOpening{%%\n"); /* GreScoreOpening#1 */ if (score->first_voice_info) { gregoriotex_write_voice_info(f, score->first_voice_info); } - fprintf(f, "\\GreBeginNotes %%\n"); + fprintf(f, "}{%%\n"); /* GreScoreOpening#2 */ if (score->first_voice_info) { - gregorio_det_step_and_line_from_key(score-> - first_voice_info->initial_key, &clef_letter, &clef_line); - if (score->first_voice_info->flatted_key) { - clef_flat = gregoriotex_clef_flat_height(clef_letter, clef_line); - } else { - clef_flat = NO_KEY_FLAT; - } - } else { - clef_letter = 'c'; - clef_line = 3; - clef_flat = NO_KEY_FLAT; - } - fprintf(f, "\\GreSetInitialClef{%c}{%d}{%d}%%\n", clef_letter, clef_line, - clef_flat); + clef = score->first_voice_info->initial_clef; + } + fprintf(f, "\\GreSetInitialClef{%c}{%d}{%d}{%c}{%d}{%d}%%\n", + gregorio_clef_to_char(clef.clef), clef.line, + clef_flat_height(clef.clef, clef.line, clef.flatted), + gregorio_clef_to_char(clef.secondary_clef), clef.secondary_line, + clef_flat_height(clef.secondary_clef, clef.secondary_line, + clef.secondary_flatted)); + fprintf(f, "}{%%\n"); /* GreScoreOpening#3 */ current_syllable = score->first_syllable; + if (current_syllable) { + write_syllable(f, current_syllable, 0, &status, score, + write_first_syllable_text); + current_syllable = current_syllable->next_syllable; + } while (current_syllable) { - gregoriotex_write_syllable(f, current_syllable, &first_syllable, &line, - 0, &status); + write_syllable(f, current_syllable, 0, &status, score, + write_syllable_text); current_syllable = current_syllable->next_syllable; } fprintf(f, "\\GreEndScore %%\n\\endinput %%\n"); diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h index 16cf41e8610..03907b5f130 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h @@ -58,6 +58,7 @@ typedef enum gtex_type { T_SALICUS, T_SALICUS_LONGQUEUE, /* four note neumes */ + T_SALICUS_FLEXUS, T_PORRECTUS_FLEXUS, T_TORCULUS_RESUPINUS, T_TORCULUS_LIQUESCENS, @@ -85,18 +86,11 @@ typedef enum gtex_alignment { * different types: */ typedef enum gtex_glyph_liquescentia { - /* for glyphs that accept all liquecentiae */ - LG_ALL = 0, - /* for glyphs that don't accept initio debilis */ - LG_NO_INITIO, - /* for glyphs for which we don't know if the auctus is ascendens or - * descendens */ - LG_UNDET_AUCTUS, - /* for glyphs that don't accept liquescentia */ - LG_NONE, + LG_ALL = 0, /* for glyphs that accept all liquecentiae */ + LG_NO_INITIO, /* for glyphs that don't accept initio debilis */ + LG_NONE, /* for glyphs that don't accept liquescentia */ LG_ONLY_DEMINUTUS, - LG_NO_DEMINUTUS, - LG_ONLY_AUCTUS + LG_FUSIBLE_INITIO } gtex_glyph_liquescentia; typedef enum gtex_sign_type { @@ -160,6 +154,7 @@ bool gtex_is_h_episema_below_shown(const gregorio_note *const note); const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, const gregorio_element *const element, gtex_alignment *const type, gtex_type *const gtype); -void gregoriotex_compute_positioning(const gregorio_element *element); +void gregoriotex_compute_positioning(const gregorio_element *element, + const gregorio_score *score); #endif diff --git a/Build/source/texk/gregorio/gregorio-src/src/plugins.h b/Build/source/texk/gregorio/gregorio-src/src/plugins.h index e206269cc75..3363d491b22 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/plugins.h +++ b/Build/source/texk/gregorio/gregorio-src/src/plugins.h @@ -25,6 +25,9 @@ void dump_write_score(FILE *f, gregorio_score *score); +void dump_write_characters(FILE *const f, + const gregorio_character *current_character); + gregorio_score *gabc_read_score(FILE *f_in); void gabc_write_score(FILE *f, gregorio_score *score); diff --git a/Build/source/texk/gregorio/gregorio-src/src/sha1.c b/Build/source/texk/gregorio/gregorio-src/src/sha1.c index 64ab6bad55f..54800c85b74 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/sha1.c +++ b/Build/source/texk/gregorio/gregorio-src/src/sha1.c @@ -278,8 +278,10 @@ void sha1_process_block(const void *buffer, size_t len, struct sha1_ctx *ctx) while (words < endp) { uint32_t tm; int t; + uint32_t v; for (t = 0; t < 16; t++) { - x[t] = SWAP(*words); + memcpy(&v, words, sizeof(uint32_t)); + x[t] = SWAP(v); words++; } diff --git a/Build/source/texk/gregorio/gregorio-src/src/struct.c b/Build/source/texk/gregorio/gregorio-src/src/struct.c index 708ee38f41b..d11366949c1 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/struct.c +++ b/Build/source/texk/gregorio/gregorio-src/src/struct.c @@ -5,7 +5,7 @@ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md) * * This file is part of Gregorio. - * + * * Gregorio is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -23,7 +23,7 @@ /** * @file * @brief This file contains a set of function to manipulate the gregorio - * structure. + * structure. * * It starts by simple add/delete functions for almost all * structs, and ends with more complex functions for manipulating @@ -50,6 +50,16 @@ #include "messages.h" #include "support.h" #include "characters.h" +#include "support.h" + +gregorio_clef_info gregorio_default_clef = { + /*.line =*/ 3, + /*.secondary_line =*/ 0, + /*.clef =*/ CLEF_C, + /*.flatted =*/ false, + /*.secondary_clef =*/ CLEF_C, /* not used since secondary_line is 0 */ + /*.secondary_flatted =*/ false, +}; static gregorio_note *create_and_link_note(gregorio_note **current_note, const gregorio_scanner_location *const loc) @@ -104,24 +114,22 @@ void gregorio_add_note(gregorio_note **current_note, signed char pitch, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_NOTE; - element->u.note.pitch = pitch; - element->u.note.shape = shape; - element->signs = signs; - element->special_sign = _NO_SIGN; - element->u.note.liquescentia = liquescentia; - if (prototype) { - set_h_episema_above(element, prototype->h_episema_above, - prototype->h_episema_above_size, - prototype->h_episema_above_connect); - set_h_episema_below(element, prototype->h_episema_below, - prototype->h_episema_below_size, - prototype->h_episema_below_connect); - } - element->texverb = NULL; - element->choral_sign = NULL; - } + element->type = GRE_NOTE; + element->u.note.pitch = pitch; + element->u.note.shape = shape; + element->signs = signs; + element->special_sign = _NO_SIGN; + element->u.note.liquescentia = liquescentia; + if (prototype) { + set_h_episema_above(element, prototype->h_episema_above, + prototype->h_episema_above_size, + prototype->h_episema_above_connect); + set_h_episema_below(element, prototype->h_episema_below, + prototype->h_episema_below_size, + prototype->h_episema_below_connect); + } + element->texverb = NULL; + element->choral_sign = NULL; } static void add_pitched_item_as_note(gregorio_note **current_note, @@ -129,29 +137,26 @@ static void add_pitched_item_as_note(gregorio_note **current_note, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = type; - element->u.note.pitch = pitch; - } + element->type = type; + element->u.note.pitch = pitch; } void gregorio_add_end_of_line_as_note(gregorio_note **current_note, - gregorio_type sub_type, const gregorio_scanner_location *const loc) + bool eol_ragged, bool eol_forces_custos, bool eol_forces_custos_on, + const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_END_OF_LINE; - element->u.other.sub_type = sub_type; - } + element->type = GRE_END_OF_LINE; + element->u.other.eol_ragged = eol_ragged; + element->u.other.eol_forces_custos = eol_forces_custos; + element->u.other.eol_forces_custos_on = eol_forces_custos_on; } void gregorio_add_custo_as_note(gregorio_note **current_note, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_CUSTOS; - } + element->type = GRE_CUSTOS; } void gregorio_add_manual_custos_as_note(gregorio_note **current_note, @@ -160,42 +165,54 @@ void gregorio_add_manual_custos_as_note(gregorio_note **current_note, add_pitched_item_as_note(current_note, GRE_MANUAL_CUSTOS, pitch, loc); } -void gregorio_add_clef_change_as_note(gregorio_note **current_note, - gregorio_type type, signed char clef_line, +void gregorio_add_clef_as_note(gregorio_note **current_note, + gregorio_clef clef, signed char clef_line, bool flatted, const gregorio_scanner_location *const loc) { - assert(type == GRE_C_KEY_CHANGE || type == GRE_F_KEY_CHANGE - || type == GRE_C_KEY_CHANGE_FLATED - || type == GRE_F_KEY_CHANGE_FLATED); - add_pitched_item_as_note(current_note, type, clef_line, loc); + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_CLEF; + element->u.clef.clef = clef; + element->u.clef.line = clef_line; + element->u.clef.flatted = flatted; } -void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar, - const gregorio_scanner_location *const loc) +void gregorio_add_secondary_clef_to_note(gregorio_note *current_note, + gregorio_clef clef, signed char clef_line, bool flatted) { - gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_BAR; - element->u.other.bar = bar; + if (!current_note || current_note->type != GRE_CLEF) { + gregorio_message(_("trying to add a secondary clef to something that " + "is not a clef"), "gregorio_add_secondary_clef_to_note", + VERBOSITY_ERROR, 0); + return; + } + + if (current_note->u.clef.secondary_line) { + gregorio_message(_("secondary clef already exists"), + "gregorio_add_secondary_clef_to_note", VERBOSITY_ERROR, 0); + return; } + + current_note->u.clef.secondary_clef = clef; + current_note->u.clef.secondary_line = clef_line; + current_note->u.clef.secondary_flatted = flatted; } -void gregorio_add_alteration_as_note(gregorio_note **current_note, - gregorio_type type, signed char pitch, +void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar, const gregorio_scanner_location *const loc) { - assert(type == GRE_FLAT || type == GRE_SHARP || type == GRE_NATURAL); - add_pitched_item_as_note(current_note, type, pitch, loc); + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_BAR; + element->u.other.bar = bar; } void gregorio_add_space_as_note(gregorio_note **current_note, - gregorio_space space, const gregorio_scanner_location *const loc) + const gregorio_space space, char *factor, + const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_SPACE; - element->u.other.space = space; - } + element->type = GRE_SPACE; + element->u.other.space = space; + element->u.other.ad_hoc_space_factor = factor; } void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str, @@ -208,40 +225,50 @@ void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str, element = create_and_link_note(current_note, loc); assert(type == GRE_TEXVERB_GLYPH || type == GRE_TEXVERB_ELEMENT || type == GRE_ALT); - if (element) { - element->type = type; - element->texverb = str; - } + element->type = type; + element->texverb = str; } void gregorio_add_nlba_as_note(gregorio_note **current_note, gregorio_nlba type, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_NLBA; - element->u.other.nlba = type; - } + element->type = GRE_NLBA; + element->u.other.nlba = type; +} + +void gregorio_start_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *const loc) +{ + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_AUTOFUSE_START; +} + +void gregorio_end_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *const loc) +{ + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_AUTOFUSE_END; } -void gregorio_add_texverb_to_note(gregorio_note **current_note, char *str) +void gregorio_add_texverb_to_note(gregorio_note *current_note, char *str) { size_t len; char *res; if (str == NULL) { return; } - if (*current_note) { - if ((*current_note)->texverb) { - len = strlen((*current_note)->texverb) + strlen(str) + 1; + if (current_note) { + if (current_note->texverb) { + len = strlen(current_note->texverb) + strlen(str) + 1; res = gregorio_malloc(len); - strcpy(res, (*current_note)->texverb); + strcpy(res, current_note->texverb); strcat(res, str); - free((*current_note)->texverb); + free(current_note->texverb); free(str); - (*current_note)->texverb = res; + current_note->texverb = res; } else { - (*current_note)->texverb = str; + current_note->texverb = str; } } } @@ -266,13 +293,11 @@ void gregorio_add_special_sign(gregorio_note *note, gregorio_sign sign) static void fix_punctum_cavum_inclinatum_liquescentia(gregorio_note *const note) { + note->u.note.liquescentia &= TAIL_LIQUESCENTIA_MASK; switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: case L_AUCTUS_DESCENDENS: - case L_AUCTA: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.liquescentia = L_AUCTA; + note->u.note.liquescentia = L_AUCTUS_ASCENDENS; break; default: note->u.note.liquescentia = L_NO_LIQUESCENTIA; @@ -280,133 +305,217 @@ static void fix_punctum_cavum_inclinatum_liquescentia(gregorio_note *const note) } } -void gregorio_change_shape(gregorio_note *note, gregorio_shape shape) +static void fix_oriscus_liquescentia(gregorio_note *const note, + const bool legacy_oriscus_orientation) { - if (!note || note->type != GRE_NOTE) { - gregorio_message(_("trying to change the shape of something that is " - "not a note"), "change_shape", VERBOSITY_ERROR, 0); - return; - } - switch (note->u.note.shape) { - case S_PUNCTUM_INCLINATUM: - if (shape == S_PUNCTUM_CAVUM) { - note->u.note.shape = S_PUNCTUM_CAVUM_INCLINATUM; - fix_punctum_cavum_inclinatum_liquescentia(note); - break; - } - /* else fall through */ - - default: - note->u.note.shape = shape; - switch (shape) { - case S_STROPHA: - case S_DISTROPHA: - case S_TRISTROPHA: - switch (note->u.note.liquescentia) { - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS: - note->u.note.liquescentia = L_AUCTA; - break; - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS; - break; - default: - break; - } + if (legacy_oriscus_orientation) { + switch (note->u.note.liquescentia) { + case L_AUCTUS_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + /* fall through */ + case L_AUCTUS_DESCENDENS: + note->u.note.shape = S_ORISCUS_DESCENDENS; break; - - case S_ORISCUS: - switch (note->u.note.liquescentia) { - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_AUCTUS; - break; - case L_DEMINUTUS: - case L_DEMINUTUS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_DEMINUTUS; - break; - default: - break; - } + case L_DEMINUTUS: + note->u.note.shape = S_ORISCUS_DEMINUTUS; break; - default: + note->u.note.shape = S_ORISCUS_ASCENDENS; break; } - break; - } -} - -void gregorio_add_liquescentia(gregorio_note *note, gregorio_liquescentia liq) -{ - if (!note || note->type != GRE_NOTE) { - gregorio_message(_("trying to make a liquescence on something that " - "is not a note"), "add_liquescentia", VERBOSITY_ERROR, 0); - return; - } - if (is_initio_debilis(liq)) { - switch (liq) { - case L_DEMINUTUS: - note->u.note.liquescentia = L_DEMINUTUS_INITIO_DEBILIS; - break; + } else { + switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: - note->u.note.liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS; + note->u.note.shape = S_ORISCUS_ASCENDENS; break; case L_AUCTUS_DESCENDENS: - note->u.note.liquescentia = L_AUCTUS_DESCENDENS_INITIO_DEBILIS; + note->u.note.shape = S_ORISCUS_DESCENDENS; break; - case L_AUCTA: - note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS; + case L_DEMINUTUS: + note->u.note.shape = S_ORISCUS_DEMINUTUS; break; default: - /* do nothing */ + note->u.note.shape = S_ORISCUS_UNDETERMINED; break; } - } else { - note->u.note.liquescentia = liq; } - switch (note->u.note.shape) { - case S_STROPHA: - case S_DISTROPHA: - case S_TRISTROPHA: +} + +static void fix_oriscus_cavum_liquescentia(gregorio_note *const note, + const bool legacy_oriscus_orientation) +{ + if (legacy_oriscus_orientation) { switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + /* fall through */ case L_AUCTUS_DESCENDENS: - note->u.note.liquescentia = L_AUCTA; + note->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; break; - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS; + case L_DEMINUTUS: + note->u.note.shape = S_ORISCUS_CAVUM_DEMINUTUS; break; default: + note->u.note.shape = S_ORISCUS_CAVUM_ASCENDENS; break; } - break; - - case S_ORISCUS: + } else { switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: + note->u.note.shape = S_ORISCUS_CAVUM_ASCENDENS; + break; case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_AUCTUS; + note->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; break; case L_DEMINUTUS: - case L_DEMINUTUS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_DEMINUTUS; + note->u.note.shape = S_ORISCUS_CAVUM_DEMINUTUS; break; default: + note->u.note.shape = S_ORISCUS_CAVUM_UNDETERMINED; + break; + } + } +} + +void gregorio_change_shape(gregorio_note *note, gregorio_shape shape, + const bool legacy_oriscus_orientation) +{ + if (!note || note->type != GRE_NOTE) { + gregorio_message(_("trying to change the shape of something that is " + "not a note"), "change_shape", VERBOSITY_ERROR, 0); + return; + } + + if (shape == S_PUNCTUM_CAVUM) { + /* S_PUNCTUM_CAVUM morphs other shapes */ + switch (note->u.note.shape) { + case S_PUNCTUM_INCLINATUM: + note->u.note.shape = S_PUNCTUM_CAVUM_INCLINATUM; + fix_punctum_cavum_inclinatum_liquescentia(note); + return; + + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_DEMINUTUS: + note->u.note.shape = S_ORISCUS_CAVUM_UNDETERMINED; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + return; + + default: break; } + } + + note->u.note.shape = shape; + switch (shape) { + case S_STROPHA: + case S_DISTROPHA: + case S_TRISTROPHA: + note->u.note.liquescentia &= L_AUCTUS_ASCENDENS | L_INITIO_DEBILIS; + break; + + case S_ORISCUS_UNDETERMINED: + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_ASCENDENS; + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_DESCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_DEMINUTUS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_DEMINUTUS; + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_UNDETERMINED: + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_ASCENDENS; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_DESCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_DEMINUTUS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_DEMINUTUS; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + default: + break; + } +} + +void gregorio_add_tail_liquescentia(gregorio_note *note, + gregorio_liquescentia liq, const bool legacy_oriscus_orientation) +{ + if (!note || note->type != GRE_NOTE) { + gregorio_message(_("trying to make a liquescence on something that " + "is not a note"), "add_liquescentia", VERBOSITY_ERROR, 0); + return; + } + + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | (liq & TAIL_LIQUESCENTIA_MASK); + + switch (note->u.note.shape) { + case S_STROPHA: + case S_DISTROPHA: + case S_TRISTROPHA: + if (note->u.note.liquescentia & L_AUCTUS_DESCENDENS) { + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_ASCENDENS; + } + break; + + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_DEMINUTUS: + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); break; case S_PUNCTUM_CAVUM_INCLINATUM: fix_punctum_cavum_inclinatum_liquescentia(note); break; + case S_ORISCUS_CAVUM_UNDETERMINED: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + default: break; } @@ -590,6 +699,9 @@ void gregorio_go_to_first_note(gregorio_note **note) static __inline void free_one_note(gregorio_note *note) { + if (note->type == GRE_SPACE) { + free(note->u.other.ad_hoc_space_factor); + } free(note->texverb); free(note->choral_sign); free(note); @@ -602,11 +714,11 @@ void gregorio_free_one_note(gregorio_note **note) return; } if ((*note)->next) { - (*note)->next->previous = NULL; + (*note)->next->previous = (*note)->previous; next = (*note)->next; } if ((*note)->previous) { - (*note)->previous->next = NULL; + (*note)->previous->next = (*note)->next; } free_one_note(*note); *note = next; @@ -640,48 +752,47 @@ void gregorio_add_glyph(gregorio_glyph **current_glyph, gregorio_liquescentia liquescentia) { gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); - if (next_glyph) { - next_glyph->type = GRE_GLYPH; - next_glyph->u.notes.glyph_type = type; - next_glyph->u.notes.liquescentia = liquescentia; - next_glyph->u.notes.first_note = first_note; - } + next_glyph->type = GRE_GLYPH; + next_glyph->u.notes.glyph_type = type; + next_glyph->u.notes.liquescentia = liquescentia; + next_glyph->u.notes.first_note = first_note; +} + +void gregorio_add_clef_as_glyph(gregorio_glyph **current_glyph, + gregorio_clef_info clef, char *texverb) +{ + gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); + next_glyph->type = GRE_CLEF; + next_glyph->u.misc.clef = clef; + next_glyph->texverb = texverb; } void gregorio_add_pitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, signed char pitch, bool flatted_key, - bool force_pitch, char *texverb) + gregorio_type type, signed char pitch, bool force_pitch, char *texverb) { gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); - assert(type == GRE_C_KEY_CHANGE || type == GRE_F_KEY_CHANGE - || type == GRE_C_KEY_CHANGE_FLATED || type == GRE_F_KEY_CHANGE_FLATED - || type == GRE_CUSTOS || type == GRE_FLAT || type == GRE_NATURAL - || type == GRE_SHARP); - if (next_glyph) { - next_glyph->type = type; - next_glyph->u.misc.pitched.pitch = pitch; - next_glyph->u.misc.pitched.flatted_key = flatted_key; - next_glyph->u.misc.pitched.force_pitch = force_pitch; - next_glyph->texverb = texverb; - } + assert(type == GRE_CUSTOS); + next_glyph->type = type; + next_glyph->u.misc.pitched.pitch = pitch; + next_glyph->u.misc.pitched.force_pitch = force_pitch; + next_glyph->texverb = texverb; } void gregorio_add_unpitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, gregorio_extra_info info, gregorio_sign sign, + gregorio_type type, gregorio_extra_info *info, gregorio_sign sign, char *texverb) { gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); assert(type != GRE_NOTE && type != GRE_GLYPH && type != GRE_ELEMENT - && type != GRE_C_KEY_CHANGE && type != GRE_F_KEY_CHANGE - && type != GRE_C_KEY_CHANGE_FLATED && type != GRE_F_KEY_CHANGE_FLATED - && type != GRE_CUSTOS && type != GRE_FLAT && type != GRE_NATURAL - && type != GRE_SHARP); - if (next_glyph) { - next_glyph->type = type; - next_glyph->u.misc.unpitched.info = info; - next_glyph->u.misc.unpitched.special_sign = sign; - next_glyph->texverb = texverb; - } + && type != GRE_CLEF && type != GRE_CUSTOS); + next_glyph->type = type; + next_glyph->u.misc.unpitched.info = *info; + next_glyph->u.misc.unpitched.special_sign = sign; + next_glyph->texverb = texverb; + + /* this was copied into the glyph, so we need to clear it to avoid a + * double-free */ + info->ad_hoc_space_factor = NULL; } void gregorio_go_to_first_glyph(gregorio_glyph **glyph) @@ -700,8 +811,16 @@ void gregorio_go_to_first_glyph(gregorio_glyph **glyph) static __inline void free_one_glyph(gregorio_glyph *glyph) { free(glyph->texverb); - if (glyph->type == GRE_GLYPH) { + switch (glyph->type) { + case GRE_GLYPH: gregorio_free_notes(&glyph->u.notes.first_note); + break; + case GRE_SPACE: + free(glyph->u.misc.unpitched.info.ad_hoc_space_factor); + break; + default: + /* nothing to do */ + break; } free(glyph); } @@ -754,20 +873,22 @@ void gregorio_add_element(gregorio_element **current_element, gregorio_glyph *first_glyph) { gregorio_element *next = create_and_link_element(current_element); - if (next) { - next->type = GRE_ELEMENT; - next->u.first_glyph = first_glyph; - } + next->type = GRE_ELEMENT; + next->u.first_glyph = first_glyph; } void gregorio_add_misc_element(gregorio_element **current_element, - gregorio_type type, gregorio_misc_element_info info, char *texverb) + gregorio_type type, gregorio_misc_element_info *info, char *texverb) { gregorio_element *special = create_and_link_element(current_element); - if (special) { - special->type = type; - special->u.misc = info; - special->texverb = texverb; + special->type = type; + special->u.misc = *info; + special->texverb = texverb; + + if (type == GRE_SPACE) { + /* this was copied into the glyph, so we need to clear it to avoid a + * double-free */ + info->unpitched.info.ad_hoc_space_factor = NULL; } } @@ -778,8 +899,17 @@ static __inline void free_one_element(gregorio_element *element) for (i = 0; i < element->nabc_lines; i++) { free(element->nabc[i]); } - if (element->type == GRE_ELEMENT) { + free(element->nabc); + switch (element->type) { + case GRE_ELEMENT: gregorio_free_glyphs(&element->u.first_glyph); + break; + case GRE_SPACE: + free(element->u.misc.unpitched.info.ad_hoc_space_factor); + break; + default: + /* nothing to do */ + break; } free(element); } @@ -834,7 +964,7 @@ static void gregorio_free_one_character(gregorio_character *current_character) free(current_character); } -static void gregorio_free_characters(gregorio_character *current_character) +void gregorio_free_characters(gregorio_character *current_character) { gregorio_character *next_character; if (!current_character) { @@ -847,9 +977,9 @@ static void gregorio_free_characters(gregorio_character *current_character) } } -void gregorio_go_to_first_character(gregorio_character **character) +void gregorio_go_to_first_character(const gregorio_character **character) { - gregorio_character *tmp; + const gregorio_character *tmp; if (!character || !*character) { return; } @@ -892,6 +1022,29 @@ void gregorio_end_style(gregorio_character **current_character, *current_character = element; } +gregorio_character *gregorio_clone_characters( + const gregorio_character *source) +{ + gregorio_character *target = NULL, *current = NULL; + + for (; source; source = source->next_character) { + gregorio_character *character = (gregorio_character *) + gregorio_calloc(1, sizeof(gregorio_character)); + *character = *source; + character->next_character = NULL; + + if (current) { + character->previous_character = current; + current = current->next_character = character; + } else { + character->previous_character = NULL; + target = current = character; + } + } + + return target; +} + void gregorio_add_syllable(gregorio_syllable **current_syllable, int number_of_voices, gregorio_element *elements[], gregorio_character *first_character, @@ -985,83 +1138,40 @@ static void gregorio_free_syllables(gregorio_syllable **syllable, } } -static void gregorio_source_info_init(source_info *si) -{ - si->author = NULL; - si->date = NULL; - si->manuscript = NULL; - si->manuscript_reference = NULL; - si->manuscript_storage_place = NULL; - si->transcriber = NULL; - si->transcription_date = NULL; - si->book = NULL; -} - gregorio_score *gregorio_new_score(void) { - int annotation_num; gregorio_score *new_score = gregorio_calloc(1, sizeof(gregorio_score)); - new_score->first_syllable = NULL; new_score->number_of_voices = 1; - new_score->name = NULL; - new_score->gabc_copyright = NULL; - new_score->score_copyright = NULL; - new_score->initial_style = NORMAL_INITIAL; - new_score->office_part = NULL; - new_score->occasion = NULL; - new_score->meter = NULL; - new_score->commentary = NULL; - new_score->arranger = NULL; - gregorio_source_info_init(&new_score->si); - new_score->first_voice_info = NULL; - new_score->mode = 0; - new_score->gregoriotex_font = NULL; - new_score->user_notes = NULL; - for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { - new_score->annotation[annotation_num] = NULL; - } + new_score->initial_style = INITIAL_NOT_SPECIFIED; + gregorio_set_score_staff_lines(new_score, 4); return new_score; } -static void gregorio_free_source_info(source_info *si) -{ - free(si->date); - free(si->author); - free(si->manuscript); - free(si->manuscript_reference); - free(si->manuscript_storage_place); - free(si->transcriber); - free(si->transcription_date); - free(si->book); -} - static void gregorio_free_score_infos(gregorio_score *score) { - int annotation_num; if (!score) { gregorio_message(_("function called with NULL argument"), "gregorio_free_score_infos", VERBOSITY_WARNING, 0); return; } - free(score->name); - free(score->gabc_copyright); - free(score->score_copyright); - free(score->office_part); - free(score->occasion); - free(score->meter); - free(score->commentary); - free(score->arranger); - free(score->user_notes); - free(score->gregoriotex_font); - for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { - free(score->annotation[annotation_num]); - } - gregorio_free_source_info(&score->si); + /* don't free the strings coming from headers; they will be freed when the + * headers themselves are freed */ if (score->first_voice_info) { gregorio_free_voice_infos(score->first_voice_info); } } +static void free_headers(gregorio_score *score) { + gregorio_header *header = score->headers; + while (header) { + gregorio_header *next = header->next; + free(header->name); + free(header->value); + free(header); + header = next; + } +} + void gregorio_free_score(gregorio_score *score) { if (!score) { @@ -1071,129 +1181,13 @@ void gregorio_free_score(gregorio_score *score) } gregorio_free_syllables(&(score->first_syllable), score->number_of_voices); gregorio_free_score_infos(score); + free_headers(score); free(score); } -void gregorio_set_score_name(gregorio_score *score, char *name) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_name", VERBOSITY_WARNING, 0); - return; - } - free(score->name); - score->name = name; -} - -void gregorio_set_score_gabc_copyright(gregorio_score *score, - char *gabc_copyright) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_gabc_copyright", VERBOSITY_WARNING, 0); - return; - } - free(score->gabc_copyright); - score->gabc_copyright = gabc_copyright; -} - -void gregorio_set_score_score_copyright(gregorio_score *score, - char *score_copyright) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_score_copyright", VERBOSITY_WARNING, 0); - return; - } - free(score->score_copyright); - score->score_copyright = score_copyright; -} - -void gregorio_set_score_office_part(gregorio_score *score, char *office_part) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_office_part", VERBOSITY_WARNING, 0); - return; - } - free(score->office_part); - score->office_part = office_part; -} - -void gregorio_set_score_occasion(gregorio_score *score, char *occasion) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_occasion", VERBOSITY_WARNING, 0); - return; - } - free(score->occasion); - score->occasion = occasion; -} - -void gregorio_set_score_meter(gregorio_score *score, char *meter) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_meter", VERBOSITY_WARNING, 0); - return; - } - free(score->meter); - score->meter = meter; -} - -void gregorio_set_score_commentary(gregorio_score *score, char *commentary) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_commentary", VERBOSITY_WARNING, 0); - return; - } - free(score->commentary); - score->commentary = commentary; -} - -void gregorio_set_score_arranger(gregorio_score *score, char *arranger) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_arranger", VERBOSITY_WARNING, 0); - return; - } - free(score->arranger); - score->arranger = arranger; -} - -void gregorio_set_score_number_of_voices(gregorio_score *score, - int number_of_voices) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_number_of_voices", VERBOSITY_WARNING, 0); - return; - } - score->number_of_voices = number_of_voices; -} - -void gregorio_set_score_user_notes(gregorio_score *score, char *user_notes) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_user_notes", VERBOSITY_WARNING, 0); - return; - } - free(score->user_notes); - score->user_notes = user_notes; -} - void gregorio_add_voice_info(gregorio_voice_info **current_voice_info) { gregorio_voice_info *next = gregorio_calloc(1, sizeof(gregorio_voice_info)); - next->initial_key = NO_KEY; - next->flatted_key = false; - next->style = NULL; - next->virgula_position = NULL; - next->next_voice_info = NULL; if (*current_voice_info) { (*current_voice_info)->next_voice_info = next; } @@ -1209,18 +1203,12 @@ void gregorio_free_voice_infos(gregorio_voice_info *voice_info) return; } while (voice_info) { - free(voice_info->style); - free(voice_info->virgula_position); next = voice_info->next_voice_info; free(voice_info); voice_info = next; } } -/* - * a set of quite useless function - */ - void gregorio_set_score_annotation(gregorio_score *score, char *annotation) { int annotation_num; @@ -1237,125 +1225,47 @@ void gregorio_set_score_annotation(gregorio_score *score, char *annotation) } } if (annotation_num >= MAX_ANNOTATIONS) { - free(annotation); gregorio_message(_("too many annotations"), "gregorio_set_annotation", VERBOSITY_WARNING, 0); } } -void gregorio_set_score_author(gregorio_score *score, char *author) +void gregorio_set_score_staff_lines(gregorio_score *const score, + const char staff_lines) { if (!score) { gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_author", VERBOSITY_WARNING, 0); + "gregorio_set_score_staff_lines", VERBOSITY_WARNING, 0); return; } - free(score->si.author); - score->si.author = author; -} - -void gregorio_set_score_date(gregorio_score *score, char *date) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_date", VERBOSITY_WARNING, 0); + if (staff_lines < 2 || staff_lines > 5) { + gregorio_message(_("invalid number of staff lines"), + "gregorio_set_score_staff_lines", VERBOSITY_ERROR, 0); return; } - free(score->si.date); - score->si.date = date; + score->staff_lines = staff_lines; + score->highest_pitch = LOWEST_PITCH + 4 + (2 * staff_lines); + score->high_ledger_line_pitch = score->highest_pitch - 1; } -void gregorio_set_score_manuscript(gregorio_score *score, char *manuscript) +void gregorio_add_score_header(gregorio_score *score, char *name, char *value) { + gregorio_header *header; if (!score) { gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_manuscript", VERBOSITY_WARNING, 0); + "gregorio_add_score_header", VERBOSITY_WARNING, 0); return; } - free(score->si.manuscript); - score->si.manuscript = manuscript; -} - -void gregorio_set_score_manuscript_reference(gregorio_score *score, - char *manuscript_reference) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_reference", VERBOSITY_WARNING, 0); - return; - } - free(score->si.manuscript_reference); - score->si.manuscript_reference = manuscript_reference; -} - -void gregorio_set_score_manuscript_storage_place(gregorio_score *score, - char *manuscript_storage_place) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_manuscript_storage_place", - VERBOSITY_WARNING, 0); - return; - } - free(score->si.manuscript_storage_place); - score->si.manuscript_storage_place = manuscript_storage_place; -} - -void gregorio_set_score_book(gregorio_score *score, char *book) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_book", VERBOSITY_WARNING, 0); - return; - } - free(score->si.book); - score->si.book = book; -} - -void gregorio_set_score_transcriber(gregorio_score *score, char *transcriber) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_transcriber", VERBOSITY_WARNING, 0); - return; - } - free(score->si.transcriber); - score->si.transcriber = transcriber; -} - -void gregorio_set_score_transcription_date(gregorio_score *score, - char *transcription_date) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_transcription_date", VERBOSITY_WARNING, 0); - return; - } - free(score->si.transcription_date); - score->si.transcription_date = transcription_date; -} - -void gregorio_set_voice_style(gregorio_voice_info *voice_info, char *style) -{ - if (!voice_info) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_voice_style", VERBOSITY_WARNING, 0); - return; - } - free(voice_info->style); - voice_info->style = style; -} - -void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info, - char *virgula_position) -{ - if (!voice_info) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_voice_virgula_position", VERBOSITY_WARNING, 0); - return; + header = (gregorio_header *)gregorio_malloc(sizeof(gregorio_header)); + header->name = name; + header->value = value; + header->next = NULL; + if (score->last_header) { + score->last_header->next = header; + } else { + score->headers = header; } - free(voice_info->virgula_position); - voice_info->virgula_position = virgula_position; + score->last_header = header; } /********************************** @@ -1369,22 +1279,24 @@ void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info, * * 3 for a C key on the second line * * 5 for a C key on the third line (default key) * * 7 for a C key on the fourth line + * * 9 for a C key on the fifth line * * * -2 for a F key on the first line * * 0 for a F key on the second line * * 2 for a F key on the third line * * 4 for a F key on the fourth line + * * 6 for a F key on the fifth line * *********************************/ -int gregorio_calculate_new_key(char step, int line) +int gregorio_calculate_new_key(gregorio_clef_info clef) { - switch (step) { - case C_KEY: - return (2 * line) - 1; + switch (clef.clef) { + case CLEF_C: + return (2 * clef.line) - 1; break; - case F_KEY: - return (2 * line) - 4; + case CLEF_F: + return (2 * clef.line) - 4; break; default: gregorio_message(_("can't calculate key"), @@ -1393,57 +1305,6 @@ int gregorio_calculate_new_key(char step, int line) } } -/********************************** - * - * The reverse function of the preceeding : give step (c or f) and - * line (1-4) from an integer representing the key. - * - *********************************/ - -void gregorio_det_step_and_line_from_key(int key, char *step, int *line) -{ - switch (key) { - case -2: - *step = 'f'; - *line = 1; - break; - case 0: - *step = 'f'; - *line = 2; - break; - case 2: - *step = 'f'; - *line = 3; - break; - case 4: - *step = 'f'; - *line = 4; - break; - case 1: - *step = 'c'; - *line = 1; - break; - case 3: - *step = 'c'; - *line = 2; - break; - case 5: - *step = 'c'; - *line = 3; - break; - case 7: - *step = 'c'; - *line = 4; - break; - default: - *step = '?'; - *line = 0; - gregorio_message(_("can't determine step and line of the key"), - "gregorio_det_step_and_line_from_key", VERBOSITY_ERROR, 0); - return; - } -} - static signed char gregorio_syllable_first_note(gregorio_syllable *syllable) { gregorio_element *element; @@ -1460,7 +1321,9 @@ static signed char gregorio_syllable_first_note(gregorio_syllable *syllable) if (element->type == GRE_ELEMENT && element->u.first_glyph) { glyph = element->u.first_glyph; while (glyph) { - if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { + if (glyph->type == GRE_GLYPH + && glyph->u.notes.glyph_type != G_ALTERATION + && glyph->u.notes.first_note) { assert(glyph->u.notes.first_note->type == GRE_NOTE); return glyph->u.notes.first_note->u.note.pitch; } @@ -1485,7 +1348,9 @@ signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, if (glyph) { glyph = glyph->next; while (glyph) { - if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { + if (glyph->type == GRE_GLYPH + && glyph->u.notes.glyph_type != G_ALTERATION + && glyph->u.notes.first_note) { assert(glyph->u.notes.first_note->type == GRE_NOTE); return glyph->u.notes.first_note->u.note.pitch; } @@ -1501,7 +1366,9 @@ signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, if (element->type == GRE_ELEMENT && element->u.first_glyph) { glyph = element->u.first_glyph; while (glyph) { - if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { + if (glyph->type == GRE_GLYPH + && glyph->u.notes.glyph_type != G_ALTERATION + && glyph->u.notes.first_note) { assert(glyph->u.notes.first_note->type == GRE_NOTE); return glyph->u.notes.first_note->u.note.pitch; } @@ -1529,44 +1396,6 @@ signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, /********************************** * - * A function that may be useful (used in xml-write) : we have a - * tabular of alterations (we must remember all alterations on all - * notes all the time, they are reinitialized when a bar is found), - * and we assign all of them to NO_ALTERATION. - * - *This function works in fact with a tabular of tabular, one per - *voice, for polyphony. - * - *********************************/ - -void gregorio_reinitialize_alterations(char alterations[][13], - int number_of_voices) -{ - int i; - int j; - for (j = 0; j < number_of_voices; j++) { - for (i = 0; i < 13; i++) { - alterations[j][i] = NO_ALTERATION; - } - } -} - -/********************************** - * - * The corresponding function for monophony. - * - *********************************/ - -void gregorio_reinitialize_one_voice_alterations(char alterations[13]) -{ - int i; - for (i = 0; i < 13; i++) { - alterations[i] = NO_ALTERATION; - } -} - -/********************************** - * * A function called after the entire score is determined : we check * if the first element is a key change, if it is the case we delete * it and we update the score->voice-info->initial_key. Works in @@ -1574,9 +1403,9 @@ void gregorio_reinitialize_one_voice_alterations(char alterations[13]) * *********************************/ -void gregorio_fix_initial_keys(gregorio_score *score, int default_key) +void gregorio_fix_initial_keys(gregorio_score *score, + gregorio_clef_info default_clef) { - int clef = 0; gregorio_element *element; gregorio_voice_info *voice_info; int i; @@ -1593,22 +1422,8 @@ void gregorio_fix_initial_keys(gregorio_score *score, int default_key) if (!element) { continue; } - if (element->type == GRE_C_KEY_CHANGE) { - clef = - gregorio_calculate_new_key(C_KEY, - element->u.misc.pitched.pitch - '0'); - voice_info->initial_key = clef; - voice_info->flatted_key = element->u.misc.pitched.flatted_key; - gregorio_free_one_element(&(score->first_syllable->elements[i])); - gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0, - _("in voice %d the first element is a key definition, " - "considered as initial key"), i + 1); - } else if (element->type == GRE_F_KEY_CHANGE) { - clef = - gregorio_calculate_new_key(F_KEY, - element->u.misc.pitched.pitch - '0'); - voice_info->initial_key = clef; - voice_info->flatted_key = element->u.misc.pitched.flatted_key; + if (element->type == GRE_CLEF) { + voice_info->initial_clef = element->u.misc.clef; gregorio_free_one_element(&(score->first_syllable->elements[i])); gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0, _("in voice %d the first element is a key definition, " @@ -1637,8 +1452,8 @@ void gregorio_fix_initial_keys(gregorio_score *score, int default_key) voice_info = score->first_voice_info; for (i = 0; i < score->number_of_voices; i++) { - if (voice_info->initial_key == NO_KEY) { - voice_info->initial_key = default_key; + if (!voice_info->initial_clef.line) { + voice_info->initial_clef = default_clef; gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0, _("no initial key definition in voice %d, default key " "definition applied"), i + 1); @@ -1668,3 +1483,25 @@ bool gregorio_is_only_special(gregorio_element *element) } return 1; } + +const char *gregorio_unknown(int value) { + static char buf[20]; + gregorio_snprintf(buf, sizeof buf, "?%d", value); + return buf; +} + +ENUM_TO_STRING(gregorio_type, GREGORIO_TYPE) +ENUM_TO_STRING(gregorio_shape, GREGORIO_SHAPE) +ENUM_TO_STRING(gregorio_bar, GREGORIO_BAR) +ENUM_TO_STRING(gregorio_sign, GREGORIO_SIGN) +ENUM_TO_STRING(gregorio_space, GREGORIO_SPACE) +ENUM_TO_STRING(gregorio_liquescentia, GREGORIO_LIQUESCENTIA) +ENUM_TO_STRING(grehepisema_size, GREHEPISEMA_SIZE) +ENUM_TO_STRING(gregorio_vposition, GREGORIO_VPOSITION) +ENUM_TO_STRING(gregorio_glyph_type, GREGORIO_GLYPH_TYPE) +ENUM_TO_STRING(grestyle_style, GRESTYLE_STYLE) +ENUM_TO_STRING(grestyle_type, GRESTYLE_TYPE) +ENUM_TO_STRING(gregorio_tr_centering, GREGORIO_TR_CENTERING) +ENUM_TO_STRING(gregorio_nlba, GREGORIO_NLBA) +ENUM_TO_STRING(gregorio_euouae, GREGORIO_EUOUAE) +ENUM_TO_STRING(gregorio_word_position, GREGORIO_WORD_POSITION) diff --git a/Build/source/texk/gregorio/gregorio-src/src/struct.h b/Build/source/texk/gregorio/gregorio-src/src/struct.h index cf9ddbe998d..0f588cafd5f 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/struct.h +++ b/Build/source/texk/gregorio/gregorio-src/src/struct.h @@ -32,6 +32,7 @@ #ifndef STRUCT_H #define STRUCT_H +#include "enum_generator.h" #include "bool.h" #include "sha1.h" @@ -62,314 +63,335 @@ typedef struct gregorio_scanner_location { /* all the different types of things a gregorio_* can be */ -typedef enum gregorio_type { - GRE_NOTE = 1, - GRE_GLYPH, - GRE_ELEMENT, - GRE_FLAT, - GRE_SHARP, - GRE_NATURAL, - GRE_C_KEY_CHANGE, - GRE_C_KEY_CHANGE_FLATED, - GRE_SYLLABLE, - GRE_F_KEY_CHANGE, - GRE_F_KEY_CHANGE_FLATED, - GRE_END_OF_LINE, - GRE_SPACE, - GRE_BAR, - GRE_END_OF_PAR, - GRE_CUSTOS, +#define GREGORIO_TYPE(A,E,X,L) \ + A(GRE_NOTE, 1) \ + E(GRE_GLYPH) \ + E(GRE_ELEMENT) \ + E(GRE_CLEF) \ + E(GRE_SYLLABLE) \ + E(GRE_END_OF_LINE) \ + E(GRE_SPACE) \ + E(GRE_BAR) \ + E(GRE_CUSTOS) \ + E(GRE_MANUAL_CUSTOS) \ /* I don't really know how I could use the a TEXVERB_NOTE in gregoriotex, - * as we don't write note by note... */ - /* GRE_TEXVERB_NOTE, */ - GRE_TEXVERB_GLYPH, - GRE_TEXVERB_ELEMENT, + * as we don't write note by note... */ \ + /* GRE_TEXVERB_NOTE, */ \ + E(GRE_TEXVERB_GLYPH) \ + E(GRE_TEXVERB_ELEMENT) \ /* above lines text, quite the same as GRE_TEXVERB_ELEMENT, but counted - * differently for the spaces above the lines */ - GRE_ALT, - GRE_NLBA, - GRE_MANUAL_CUSTOS -} gregorio_type; + * differently for the spaces above the lines */ \ + E(GRE_ALT) \ + E(GRE_NLBA) \ + E(GRE_AUTOFUSE_START) \ + L(GRE_AUTOFUSE_END) +ENUM(gregorio_type, GREGORIO_TYPE); + +#define GREGORIO_CLEF(A,E,X,L) \ + A(CLEF_C, 0) \ + X(CLEF_F, 1) +ENUM(gregorio_clef, GREGORIO_CLEF); /* the different shapes, only for notes */ -typedef enum gregorio_shape { - S_UNDETERMINED = 0, - S_PUNCTUM, - S_PUNCTUM_END_OF_GLYPH, - S_PUNCTUM_INCLINATUM, - S_PUNCTUM_INCLINATUM_DEMINUTUS, - S_PUNCTUM_INCLINATUM_AUCTUS, - S_VIRGA, - S_VIRGA_REVERSA, - S_BIVIRGA, - S_TRIVIRGA, - S_ORISCUS, - S_ORISCUS_AUCTUS, - S_ORISCUS_DEMINUTUS, - S_ORISCUS_SCAPUS, - S_QUILISMA, - S_STROPHA, - S_STROPHA_AUCTA, - S_DISTROPHA, - S_DISTROPHA_AUCTA, - S_TRISTROPHA, - S_TRISTROPHA_AUCTA, - S_PUNCTUM_CAVUM, - S_LINEA_PUNCTUM, - S_LINEA_PUNCTUM_CAVUM, - S_PUNCTUM_CAVUM_INCLINATUM, - S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS, +#define GREGORIO_SHAPE(A,E,X,L) \ + A(S_UNDETERMINED, 0) \ + E(S_PUNCTUM) \ + E(S_PUNCTUM_END_OF_GLYPH) \ + E(S_PUNCTUM_INCLINATUM) \ + E(S_PUNCTUM_INCLINATUM_DEMINUTUS) \ + E(S_PUNCTUM_INCLINATUM_AUCTUS) \ + E(S_VIRGA) \ + E(S_VIRGA_REVERSA) \ + E(S_BIVIRGA) \ + E(S_TRIVIRGA) \ + E(S_ORISCUS_ASCENDENS) \ + E(S_ORISCUS_DESCENDENS) \ + E(S_ORISCUS_DEMINUTUS) \ + E(S_ORISCUS_SCAPUS) \ + E(S_QUILISMA) \ + E(S_STROPHA) \ + E(S_STROPHA_AUCTA) \ + E(S_DISTROPHA) \ + E(S_DISTROPHA_AUCTA) \ + E(S_TRISTROPHA) \ + E(S_TRISTROPHA_AUCTA) \ + E(S_PUNCTUM_CAVUM) \ + E(S_LINEA_PUNCTUM) \ + E(S_LINEA_PUNCTUM_CAVUM) \ + E(S_PUNCTUM_CAVUM_INCLINATUM) \ + E(S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS) \ + E(S_ORISCUS_CAVUM_ASCENDENS) \ + E(S_ORISCUS_CAVUM_DESCENDENS) \ + E(S_ORISCUS_CAVUM_DEMINUTUS) \ + E(S_FLAT) \ + E(S_SHARP) \ + E(S_NATURAL) \ /* special shapes that must not appear in the final form of the score : * quadratum is the shape of the first note of a punctum quadratum * and quilisma quadratum is the shape of the first note of a pes - * quislisma quadratum */ - S_QUADRATUM, - /* those shapes are for now used only in gregoriotex */ - S_QUILISMA_QUADRATUM, - S_PUNCTUM_AUCTUS_ASCENDENS, - S_PUNCTUM_AUCTUS_DESCENDENS, - S_PUNCTUM_DEMINUTUS, - S_LINEA -} gregorio_shape; + * quislisma quadratum */ \ + E(S_ORISCUS_UNDETERMINED) \ + E(S_ORISCUS_CAVUM_UNDETERMINED) \ + E(S_QUADRATUM) \ + /* those shapes are for now used only in gregoriotex */ \ + E(S_QUILISMA_QUADRATUM) \ + E(S_PUNCTUM_AUCTUS_ASCENDENS) \ + E(S_PUNCTUM_AUCTUS_DESCENDENS) \ + E(S_PUNCTUM_DEMINUTUS) \ + L(S_LINEA) +ENUM(gregorio_shape, GREGORIO_SHAPE); /* the different kind of bars */ -typedef enum gregorio_bar { - B_NO_BAR = 0, - B_VIRGULA, - B_DIVISIO_MINIMA, - B_DIVISIO_MINOR, - B_DIVISIO_MAIOR, - B_DIVISIO_FINALIS, - B_DIVISIO_MINOR_D1, - B_DIVISIO_MINOR_D2, - B_DIVISIO_MINOR_D3, - B_DIVISIO_MINOR_D4, - B_DIVISIO_MINOR_D5, - B_DIVISIO_MINOR_D6 -} gregorio_bar; +#define GREGORIO_BAR(A,E,X,L) \ + A(B_NO_BAR, 0) \ + E(B_VIRGULA) \ + E(B_DIVISIO_MINIMA) \ + E(B_DIVISIO_MINOR) \ + E(B_DIVISIO_MAIOR) \ + E(B_DIVISIO_FINALIS) \ + E(B_DIVISIO_MINOR_D1) \ + E(B_DIVISIO_MINOR_D2) \ + E(B_DIVISIO_MINOR_D3) \ + E(B_DIVISIO_MINOR_D4) \ + E(B_DIVISIO_MINOR_D5) \ + E(B_DIVISIO_MINOR_D6) \ + E(B_DIVISIO_MINOR_D7) \ + L(B_DIVISIO_MINOR_D8) +ENUM(gregorio_bar, GREGORIO_BAR); /* definition of the signs. You can notice that the values are made so * that if you wan to add a vertical episema to a note, you juste * make note->signs+=_V_EPISEMA, so please don't change the value as * this trick is used. */ -typedef enum gregorio_sign { - _NO_SIGN = 0x00, - _PUNCTUM_MORA = 0x01, - _AUCTUM_DUPLEX = 0x02, - _V_EPISEMA = 0x10, - _V_EPISEMA_PUNCTUM_MORA = 0x11, - _V_EPISEMA_AUCTUM_DUPLEX = 0x12, - /* more rare signs, for now they can't be used with the others */ - _ACCENTUS = 0x03, - _ACCENTUS_REVERSUS = 0x04, - _CIRCULUS = 0x05, - _SEMI_CIRCULUS = 0x06, - _SEMI_CIRCULUS_REVERSUS = 0x07, - /* signs of a bar */ - _BAR_H_EPISEMA = 0x08, - _V_EPISEMA_BAR_H_EPISEMA = 0x18 -} gregorio_sign; +#define GREGORIO_SIGN(A,E,X,L) \ + A(_NO_SIGN, 0x00) \ + A(_PUNCTUM_MORA, 0x01) \ + A(_AUCTUM_DUPLEX, 0x02) \ + A(_V_EPISEMA, 0x10) \ + A(_V_EPISEMA_PUNCTUM_MORA, 0x11) \ + A(_V_EPISEMA_AUCTUM_DUPLEX, 0x12) \ + /* more rare signs, for now they can't be used with the others */ \ + A(_ACCENTUS, 0x03) \ + A(_ACCENTUS_REVERSUS, 0x04) \ + A(_CIRCULUS, 0x05) \ + A(_SEMI_CIRCULUS, 0x06) \ + A(_SEMI_CIRCULUS_REVERSUS, 0x07) \ + /* signs of a bar */ \ + A(_BAR_H_EPISEMA, 0x08) \ + X(_V_EPISEMA_BAR_H_EPISEMA, 0x18) +ENUM(gregorio_sign, GREGORIO_SIGN); /* the different spaces */ -typedef enum gregorio_space { - SP_DEFAULT = 1, - SP_NO_SPACE, - SP_ZERO_WIDTH, - SP_NEUMATIC_CUT, - SP_LARGER_SPACE, - SP_GLYPH_SPACE, - SP_NEUMATIC_CUT_NB, - SP_LARGER_SPACE_NB, - SP_GLYPH_SPACE_NB -} gregorio_space; +#define GREGORIO_SPACE(A,E,X,L) \ + A(SP_DEFAULT, 1) \ + E(SP_NO_SPACE) \ + E(SP_ZERO_WIDTH) \ + E(SP_HALF_SPACE) \ + E(SP_NEUMATIC_CUT) \ + E(SP_LARGER_SPACE) \ + E(SP_GLYPH_SPACE) \ + E(SP_AD_HOC_SPACE) \ + E(SP_NEUMATIC_CUT_NB) \ + E(SP_LARGER_SPACE_NB) \ + E(SP_GLYPH_SPACE_NB) \ + L(SP_AD_HOC_SPACE_NB) +ENUM(gregorio_space, GREGORIO_SPACE); /* the different liquescences, like for the signs, have special * values: to say that something is initio_debilis, just do * glyph->liquescentia+=L_INITIO_DEBILIS. So don't change the value, * the trick is much used */ -typedef enum gregorio_liquescentia { - L_NO_LIQUESCENTIA = 0, - L_DEMINUTUS = 0x01, - L_AUCTUS_ASCENDENS = 0x02, - L_AUCTUS_DESCENDENS = 0x04, - L_AUCTA = 0x08, - L_INITIO_DEBILIS = 0x10, - L_DEMINUTUS_INITIO_DEBILIS = 0x11, - L_AUCTUS_ASCENDENS_INITIO_DEBILIS = 0x12, - L_AUCTUS_DESCENDENS_INITIO_DEBILIS = 0x14, - L_AUCTA_INITIO_DEBILIS = 0x18 -} gregorio_liquescentia; - -typedef enum grehepisema_size { - H_NORMAL = 0, - H_SMALL_LEFT, - H_SMALL_CENTRE, - H_SMALL_RIGHT -} grehepisema_size; +#define TAIL_LIQUESCENTIA_MASK 0x07 + +#define GREGORIO_LIQUESCENTIA(A,E,X,L) \ + A(L_NO_LIQUESCENTIA, 0x00) \ + A(L_DEMINUTUS, 0x01) \ + A(L_AUCTUS_ASCENDENS, 0x02) \ + A(L_AUCTUS_DESCENDENS, 0x04) \ + A(L_INITIO_DEBILIS, 0x10) \ + A(L_DEMINUTUS_INITIO_DEBILIS, 0x11) \ + A(L_AUCTUS_ASCENDENS_INITIO_DEBILIS, 0x12) \ + A(L_AUCTUS_DESCENDENS_INITIO_DEBILIS, 0x14) \ + A(L_FUSED, 0x20) \ + A(L_FUSED_DEMINUTUS, 0x21) \ + A(L_FUSED_AUCTUS_ASCENDENS, 0x22) \ + X(L_FUSED_AUCTUS_DESCENDENS, 0x24) +ENUM(gregorio_liquescentia, GREGORIO_LIQUESCENTIA); + +#define GREHEPISEMA_SIZE(A,E,X,L) \ + A(H_NORMAL, 0) \ + E(H_SMALL_LEFT) \ + E(H_SMALL_CENTRE) \ + L(H_SMALL_RIGHT) +ENUM(grehepisema_size, GREHEPISEMA_SIZE); /* values are chosen so BELOW/ABOVE can be added to a pitch */ -typedef enum gregorio_vposition { - VPOS_AUTO = 0, - VPOS_BELOW = -1, - VPOS_ABOVE = 1 -} gregorio_vposition; +#define GREGORIO_VPOSITION(A,E,X,L) \ + A(VPOS_AUTO, 0) \ + A(VPOS_BELOW, -1) \ + X(VPOS_ABOVE, 1) +ENUM(gregorio_vposition, GREGORIO_VPOSITION); /* The different types of glyph */ -typedef enum gregorio_glyph_type { - G_PUNCTUM_INCLINATUM = 1, - G_2_PUNCTA_INCLINATA_DESCENDENS, - G_3_PUNCTA_INCLINATA_DESCENDENS, - G_4_PUNCTA_INCLINATA_DESCENDENS, - G_5_PUNCTA_INCLINATA_DESCENDENS, - G_2_PUNCTA_INCLINATA_ASCENDENS, - G_3_PUNCTA_INCLINATA_ASCENDENS, - G_4_PUNCTA_INCLINATA_ASCENDENS, - G_5_PUNCTA_INCLINATA_ASCENDENS, - G_TRIGONUS, - G_PUNCTA_INCLINATA, - /* !!! DO NOT CHANGE THE ENUM ORDERING BEFORE THIS LINE !!! */ - G_UNDETERMINED, - G_VIRGA, - G_STROPHA, - G_STROPHA_AUCTA, - G_PUNCTUM, - G_PODATUS, - G_PES_QUADRATUM, - G_FLEXA, - G_TORCULUS, - G_TORCULUS_RESUPINUS, - G_TORCULUS_RESUPINUS_FLEXUS, - G_PORRECTUS, - G_PORRECTUS_FLEXUS, - G_BIVIRGA, - G_TRIVIRGA, - G_DISTROPHA, - G_DISTROPHA_AUCTA, - G_TRISTROPHA, - G_TRISTROPHA_AUCTA, - G_PES_QUADRATUM_FIRST_PART, - G_SCANDICUS, - G_PES_QUILISMA_QUADRATUM_FIRST_PART, - G_ANCUS, - G_ONE_NOTE, - G_PUNCTA_ASCENDENS, - G_PUNCTA_DESCENDENS, - G_VIRGA_REVERSA, - G_SALICUS, - G_VIRGA_STRATA, - G_TORCULUS_LIQUESCENS, - /* additional glyph types, necessary for determination */ - G_PORRECTUS_NO_BAR, - G_PORRECTUS_FLEXUS_NO_BAR, - G_PES_QUILISMA -} gregorio_glyph_type; +#define GREGORIO_GLYPH_TYPE(A,E,X,L) \ + A(G_PUNCTUM_INCLINATUM, 1) \ + E(G_2_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_3_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_4_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_5_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_2_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_3_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_4_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_5_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_TRIGONUS) \ + E(G_PUNCTA_INCLINATA) \ + /* !!! DO NOT CHANGE THE ENUM ORDERING BEFORE THIS LINE !!! */ \ + E(G_UNDETERMINED) \ + E(G_VIRGA) \ + E(G_STROPHA) \ + E(G_STROPHA_AUCTA) \ + E(G_PUNCTUM) \ + E(G_ALTERATION) \ + E(G_PODATUS) \ + E(G_PES_QUADRATUM) \ + E(G_FLEXA) \ + E(G_TORCULUS) \ + E(G_TORCULUS_RESUPINUS) \ + E(G_TORCULUS_RESUPINUS_FLEXUS) \ + E(G_PORRECTUS) \ + E(G_PORRECTUS_FLEXUS) \ + E(G_BIVIRGA) \ + E(G_TRIVIRGA) \ + E(G_DISTROPHA) \ + E(G_DISTROPHA_AUCTA) \ + E(G_TRISTROPHA) \ + E(G_TRISTROPHA_AUCTA) \ + E(G_PES_QUADRATUM_FIRST_PART) \ + E(G_SCANDICUS) \ + E(G_PES_QUILISMA_QUADRATUM_FIRST_PART) \ + E(G_ANCUS) \ + E(G_ONE_NOTE) \ + E(G_PUNCTA_ASCENDENS) \ + E(G_PUNCTA_DESCENDENS) \ + E(G_VIRGA_REVERSA) \ + E(G_SALICUS) \ + E(G_SALICUS_FLEXUS) \ + E(G_VIRGA_STRATA) \ + E(G_TORCULUS_LIQUESCENS) \ + E(G_PES_QUILISMA) \ + /* additional glyph types, necessary for determination */ \ + E(G_PORRECTUS_NO_BAR) \ + E(G_PORRECTUS_FLEXUS_NO_BAR) \ + L(G_FUSED) +ENUM(gregorio_glyph_type, GREGORIO_GLYPH_TYPE); /* - * + * * The we define the characters. First we define the different styles. You * can notice that center is just a style like the others - * + * */ -typedef enum grestyle_style { - ST_NO_STYLE = 0, - ST_ITALIC, - ST_CENTER, +#define GRESTYLE_STYLE(A,E,X,L) \ + A(ST_NO_STYLE, 0) \ + E(ST_ITALIC) \ + E(ST_CENTER) \ /* when the user types a {}, basically the same behaviour, except for - * the initial */ - ST_FORCED_CENTER, - ST_BOLD, - ST_TT, - ST_SMALL_CAPS, - ST_SPECIAL_CHAR, - ST_VERBATIM, - ST_INITIAL, /* a style used to determine the initial */ - ST_UNDERLINED, - ST_COLORED, - ST_FIRST_WORD, - ST_FIRST_SYLLABLE, - ST_FIRST_SYLLABLE_INITIAL, - ST_SYLLABLE_INITIAL -} grestyle_style; + * the initial */ \ + E(ST_FORCED_CENTER) \ + E(ST_BOLD) \ + E(ST_TT) \ + E(ST_SMALL_CAPS) \ + E(ST_SPECIAL_CHAR) \ + E(ST_VERBATIM) \ + E(ST_INITIAL) /* a style used to determine the initial */ \ + E(ST_UNDERLINED) \ + E(ST_COLORED) \ + E(ST_FIRST_WORD) \ + E(ST_FIRST_SYLLABLE) \ + E(ST_FIRST_SYLLABLE_INITIAL) \ + L(ST_SYLLABLE_INITIAL) +ENUM(grestyle_style, GRESTYLE_STYLE); /* * Then the different types of styles. See the next comments for further - * readings. + * readings. */ -typedef enum grestyle_type { - ST_T_NOTHING = 0, - ST_T_BEGIN, - ST_T_END -} grestyle_type; +#define GRESTYLE_TYPE(A,E,X,L) \ + A(ST_T_NOTHING, 0) \ + E(ST_T_BEGIN) \ + L(ST_T_END) +ENUM(grestyle_type, GRESTYLE_TYPE); /* - * The different types of translation centerings + * The different types of translation centerings */ -typedef enum gregorio_tr_centering { - TR_NORMAL = 0, - TR_WITH_CENTER_BEGINNING, - TR_WITH_CENTER_END -} gregorio_tr_centering; +#define GREGORIO_TR_CENTERING(A,E,X,L) \ + A(TR_NORMAL, 0) \ + E(TR_WITH_CENTER_BEGINNING) \ + L(TR_WITH_CENTER_END) +ENUM(gregorio_tr_centering, GREGORIO_TR_CENTERING); /* - * Nothing, beginning or end of area without linebreak + * Nothing, beginning or end of area without linebreak */ -typedef enum gregorio_nlba { - NLBA_NORMAL = 0, - NLBA_BEGINNING, - NLBA_END -} gregorio_nlba; - -typedef enum gregorio_euouae { - EUOUAE_NORMAL = 0, - EUOUAE_BEGINNING, - EUOUAE_END -} gregorio_euouae; - -typedef enum gregorio_word_position { - WORD_BEGINNING = 1, - WORD_MIDDLE, - WORD_END, - WORD_ONE_SYLLABLE -} gregorio_word_position; - -/* the centering schemes for gabc: */ -typedef enum gregorio_lyric_centering { - SCHEME_DEFAULT = 0, - SCHEME_VOWEL, - SCHEME_SYLLABLE -} gregorio_lyric_centering; +#define GREGORIO_NLBA(A,E,X,L) \ + A(NLBA_NORMAL, 0) \ + E(NLBA_BEGINNING) \ + L(NLBA_END) +ENUM(gregorio_nlba, GREGORIO_NLBA); + +#define GREGORIO_EUOUAE(A,E,X,L) \ + A(EUOUAE_NORMAL, 0) \ + E(EUOUAE_BEGINNING) \ + L(EUOUAE_END) +ENUM(gregorio_euouae, GREGORIO_EUOUAE); + +#define GREGORIO_WORD_POSITION(A,E,X,L) \ + A(WORD_BEGINNING, 1) \ + E(WORD_MIDDLE) \ + E(WORD_END) \ + L(WORD_ONE_SYLLABLE) +ENUM(gregorio_word_position, GREGORIO_WORD_POSITION); typedef struct gregorio_extra_info { - /* the sub-type of GRE_END_OF_LINE */ - ENUM_BITFIELD(gregorio_type) sub_type:8; - ENUM_BITFIELD(gregorio_bar) bar:8; - ENUM_BITFIELD(gregorio_space) space:8; - ENUM_BITFIELD(gregorio_nlba) nlba:8; + char *ad_hoc_space_factor; + ENUM_BITFIELD(gregorio_bar) bar:4; + ENUM_BITFIELD(gregorio_space) space:4; + ENUM_BITFIELD(gregorio_nlba) nlba:2; + bool eol_ragged:1; + bool eol_forces_custos:1; + bool eol_forces_custos_on:1; } gregorio_extra_info; +typedef struct gregorio_clef_info { + unsigned char line; + unsigned char secondary_line; + ENUM_BITFIELD(gregorio_clef) clef:1; + bool flatted:1; + ENUM_BITFIELD(gregorio_clef) secondary_clef:1; + bool secondary_flatted:1; +} gregorio_clef_info; + typedef union gregorio_misc_element_info { - /* pitched is used for GRE_CUSTOS, GRE_FLAT, GRE_SHARP, GRE_NATURAL, - * GRE_C_KEY_CHANGE, GRE_F_KEY_CHANGE, GRE_C_KEY_CHANGE_FLATED, and - * GRE_F_KEY_CHANGE_FLATED */ + /* pitched is used for GRE_CUSTOS */ struct { - /* The pitch of the glyph for GRE_FLAT, GRE_NATURAL, GRE_SHARP. - * If a clef change, pitch will be a number indicating the line of - * the clef. */ + /* The pitch of the glyph. */ signed char pitch; /* boolean indicating a clef with a B-flat */ - bool flatted_key:1; bool force_pitch:1; } pitched; + /* clef is used for GRE_CLEF */ + struct gregorio_clef_info clef; /* unpitched is used for everything else */ struct { struct gregorio_extra_info info; @@ -381,7 +403,7 @@ typedef union gregorio_misc_element_info { /* * ! We start with the most precise structure, the note structure. The * note is always a real note (we'll see that glyphs and elements can be - * other things). + * other things). */ typedef struct gregorio_note { /* then two pointer to other notes, to make a chained list. */ @@ -394,9 +416,7 @@ typedef struct gregorio_note { * structure generation. */ char *texverb; union { - /* note is used for GRE_NOTE, GRE_FLAT, GRE_SHARP, GRE_NATURAL, - * GRE_C_KEY_CHANGE, GRE_F_KEY_CHANGE, GRE_C_KEY_CHANGE_FLATED, and - * GRE_F_KEY_CHANGE_FLATED */ + /* note is used for GRE_NOTE */ struct { /* the pitch is the height of the note on the score, that is to * say the letter it is represented by in gabc. If a clef @@ -411,6 +431,8 @@ typedef struct gregorio_note { * determination of glyphs. */ ENUM_BITFIELD(gregorio_liquescentia) liquescentia:8; } note; + /* clef is used for GRE_CLEF */ + struct gregorio_clef_info clef; /* other is used for everything else */ struct gregorio_extra_info other; } u; @@ -445,6 +467,12 @@ typedef struct gregorio_note { ENUM_BITFIELD(grehepisema_size) h_episema_below_size:2; bool h_episema_above_connect:1; bool h_episema_below_connect:1; + bool supposed_high_ledger_line:1; + bool supposed_low_ledger_line:1; + /* the "explicit" flags indicate that the "supposed" flags contain values + * that were explicitly specified in the gabc file */ + bool explicit_high_ledger_line:1; + bool explicit_low_ledger_line:1; bool is_lower_note:1; bool is_upper_note:1; ENUM_BITFIELD(gregorio_vposition) mora_vposition:2; @@ -452,9 +480,8 @@ typedef struct gregorio_note { } gregorio_note; /* - * ! @brief The gregorio glyph structure Unlike gregorio_note, - * gregorio_glyph can be other things besides \c GRE_GLYPH: it can also be - * \c GRE_FLAT, \c GRE_NATURAL or \c GRE_SPACE + * ! @brief The gregorio glyph structure Unlike gregorio_note, gregorio_glyph + * can be other things besides GRE_GLYPH: it can also be GRE_SPACE */ typedef struct gregorio_glyph { /* two pointer to make a chained list */ @@ -469,6 +496,7 @@ typedef struct gregorio_glyph { /* a pointer to a (chained list of) gregorio_notes, the first of * the glyph. */ struct gregorio_note *first_note; + signed char fuse_to_next_glyph; /* The glyph type for a GRE_GLYPH (porrectus, pes, etc.). They * are all listed above. */ ENUM_BITFIELD(gregorio_glyph_type) glyph_type:8; @@ -515,7 +543,7 @@ typedef struct gregorio_element { } gregorio_element; /* - * + * * gregorio_characters are a bit specials. As there can be styles in the * text, I had to find a structure mode adapted that just grewchar *. So * basically a gregorio_character is a double-chained list of things that @@ -524,7 +552,7 @@ typedef struct gregorio_element { * P->style(type: beginning, style italic) -> o -> style(type:end, style: * italic). But for this list to be coherent, it is mandatory that it is * xml-compliant, that is to say that a<b>c<i>d</b>e</i> will be - * interpreted as a<b>c<i>d</i></b><i>e</i>. This MUST be done when reading + * interpreted as a<b>c<i>d</i></b><i>e</i>. This MUST be done when reading * a file, so that the structure in memory is coherent. It makes input * modules more comple, but output modules muche more simpler. The last * particularity is that center must also be determined in the input @@ -532,13 +560,13 @@ typedef struct gregorio_element { * complex, because for TeX-like output modules, we need to close all * styles before the center style: if the user types <i>pot</i> it must be * represented as <i>p</i>{<i>o</i>}<i>t</i>. - * + * * Here is the declaration of the gregorio_style struct. It is simply two * chars, one telling the type of style character it is (beginning for a * character that marks the beginning of a style, and end for a character * marking the end of a style). The other char simply is the style * represented by the character (italic, etc.) - * + * */ typedef struct gregorio_style { @@ -547,10 +575,10 @@ typedef struct gregorio_style { } gregorio_style; /* - * - * This union is quite ugly... but necessary for a gregorio_character to be + * + * This union is quite ugly... but necessary for a gregorio_character to be * able to be a grewchar or gregorio_style. - * + * */ typedef union character_or_style { grewchar character; @@ -558,7 +586,7 @@ typedef union character_or_style { } character_or_style; /* - * + * * Finally the gregorio_character structure in itself, It is first a char * determining the type (character or gregorio_style). This char is 0 when * it is a style and something else when it is a character. Then the two @@ -567,7 +595,7 @@ typedef union character_or_style { * know it is a character of style), you must access to * mygregoriochar.cos.s.style, and for the character * mygregoriochar.cos.character . - * + * */ typedef struct gregorio_character { @@ -594,10 +622,11 @@ typedef struct gregorio_syllable { * case of polyphonic score. In most scores (monophonic), the array * has only one element. */ struct gregorio_element **elements; + unsigned short euouae_id; unsigned short src_line, src_column, src_offset; /* a syllable can be a GRE_SYLLABLE, a GRE_*_KEY_CHANGE or a * GRE_BAR. It is useful when there is only that in a syllable. */ - char type; + ENUM_BITFIELD(gregorio_type) type:8; /* again, an additional field to put some signs or other things... */ ENUM_BITFIELD(gregorio_sign) special_sign:8; /* type of translation (with center beginning or only center end) */ @@ -613,30 +642,18 @@ typedef struct gregorio_syllable { bool first_word:1; } gregorio_syllable; -/* The items in source_info used to be -- well, most of them -- in - * gregorio_voice_info. This is because the different `voices' may - * in future be used for different variants of a melody: - * e.g. notated in square notation, notated in some early neumatic - * form from manuscript A, and another in manuscript B. In that - * case the different voices would naturally have different source - * info. However, this enhancement to gregorio is not yet planned, - * and so this structure is made part of gregorio_score. */ -typedef struct source_info { - char *author; - char *date; - char *manuscript; - char *manuscript_reference; /* was reference */ - char *manuscript_storage_place; /* was storage_place */ - char *book; - char *transcriber; - char *transcription_date; -} source_info; +/* Stores a header in a singly-linked list */ +typedef struct gregorio_header { + char *name; + char *value; + struct gregorio_header *next; +} gregorio_header; /* - * + * * Score is the top structure, the structure in which we will convert * everything, and from which we will construct XML - * + * */ #define MAX_ANNOTATIONS 2 @@ -654,22 +671,15 @@ typedef struct gregorio_score { char *name; char *gabc_copyright; char *score_copyright; - char *office_part; - char *occasion; - /* the meter, numbers of syllables per line, as e.g. 8.8.8.8 */ - char *meter; - char *commentary; - char *arranger; - struct source_info si; - /* the mode of a song is between 1 and 8 */ - char mode; + char *mode; + char *mode_modifier; + char *mode_differentia; + char *author; /* There is one annotation for each line above the initial letter */ char *annotation[MAX_ANNOTATIONS]; - /* field giving informations on the initial (no initial, normal initial + /* field giving informations on the initial (no initial, normal initial * or two lines initial) */ - char initial_style; - /* the font to use in gregoriotex */ - char *gregoriotex_font; + signed char initial_style; /* DEPRECATED */ size_t nabc_lines; char *user_notes; /* the determination method (maximal ambitus, etc.) */ @@ -677,29 +687,27 @@ typedef struct gregorio_score { /* then, as there are some metadata that are voice-specific, we add a * pointer to the first voice_info. (see comments below) */ struct gregorio_voice_info *first_voice_info; - gregorio_lyric_centering centering; + struct gregorio_header *headers; + struct gregorio_header *last_header; + unsigned char staff_lines; + signed char highest_pitch; + signed char high_ledger_line_pitch; + bool legacy_oriscus_orientation; } gregorio_score; /* - * + * * gregorio_voice info contains everything that is voice_specific, for * example the key, etc. that can be different from one voice to another. * The order of the voice_info (it is a chained list) is the same as the * order of the voices (from top to bottom in their representation on the * score). - * + * */ typedef struct gregorio_voice_info { - /* the only thing that is worth a comment here is the key. We have a - * special representation for the key. See comments on - * src/struct-utils.c for further reading. */ - int initial_key; - /* See source_info above for comments about the move of author etc. */ - char *style; - char *virgula_position; + gregorio_clef_info initial_clef; struct gregorio_voice_info *next_voice_info; - bool flatted_key; } gregorio_voice_info; /* the maximum number of voices, more than this is total nonsense in @@ -711,19 +719,13 @@ typedef struct gregorio_voice_info { #define C_KEY 'c' #define F_KEY 'f' #define NO_KEY -5 -#define DEFAULT_KEY 5 - -#define MONOPHONY 0 -/* the different initial styles */ +extern gregorio_clef_info gregorio_default_clef; -#define NO_INITIAL 0 -#define NORMAL_INITIAL 1 -#define BIG_INITIAL 2 +#define MONOPHONY 0 -#define NO_ALTERATION USELESS_VALUE -#define FLAT GRE_FLAT -#define NATURAL GRE_NATURAL +/* the different initial styles - DEPRECATED by 4.1 */ +#define INITIAL_NOT_SPECIFIED -1 #define USELESS_VALUE 0 @@ -735,15 +737,19 @@ static __inline bool is_puncta_inclinata(char glyph) #define IS_INITIO_DEBILIS 5 #define NO_INITIO_DEBILIS 0 -static __inline bool is_liquescentia(char liquescentia) +static __inline bool is_tail_liquescentia(char liquescentia) { - return liquescentia == L_DEMINUTUS || liquescentia == L_AUCTUS_ASCENDENS - || liquescentia == L_AUCTUS_DESCENDENS || liquescentia == L_AUCTA; + return liquescentia & TAIL_LIQUESCENTIA_MASK; } static __inline bool is_initio_debilis(char liquescentia) { - return liquescentia >= L_INITIO_DEBILIS; + return liquescentia & L_INITIO_DEBILIS; +} + +static __inline bool is_fused(char liquescentia) +{ + return liquescentia & L_FUSED; } #define HEPISEMA_NONE 0 @@ -752,8 +758,8 @@ static __inline bool is_initio_debilis(char liquescentia) /* The first pitch MUST be an odd number */ #define LOWEST_PITCH 3 -#define HIGHEST_PITCH (LOWEST_PITCH + 12) #define DUMMY_PITCH (LOWEST_PITCH + 6) +#define LOW_LEDGER_LINE_PITCH (LOWEST_PITCH + 1) gregorio_score *gregorio_new_score(void); void gregorio_add_note(gregorio_note **current_note, signed char pitch, @@ -774,7 +780,8 @@ void gregorio_add_syllable(gregorio_syllable **current_syllable, gregorio_euouae euouae, const gregorio_scanner_location *loc, bool first_word); void gregorio_add_special_sign(gregorio_note *current_note, gregorio_sign sign); -void gregorio_change_shape(gregorio_note *note, gregorio_shape shape); +void gregorio_change_shape(gregorio_note *note, gregorio_shape shape, + bool legacy_oriscus_orientation); void gregorio_position_h_episema_above(gregorio_note *note, signed char height, bool connect); void gregorio_position_h_episema_below(gregorio_note *note, signed char height, @@ -784,90 +791,120 @@ void gregorio_add_h_episema(gregorio_note *note, grehepisema_size size, unsigned int *nbof_isolated_episema); void gregorio_add_sign(gregorio_note *note, gregorio_sign sign, gregorio_vposition vposition); -void gregorio_add_liquescentia(gregorio_note *note, - gregorio_liquescentia liquescentia); +void gregorio_add_tail_liquescentia(gregorio_note *note, + gregorio_liquescentia liquescentia, bool legacy_oriscus_orientation); void gregorio_add_voice_info(gregorio_voice_info **current_voice_info); void gregorio_free_voice_infos(gregorio_voice_info *voice_info); void gregorio_free_one_note(gregorio_note **note); void gregorio_free_one_glyph(gregorio_glyph **glyph); void gregorio_free_score(gregorio_score *score); -void gregorio_go_to_first_character(gregorio_character **character); +void gregorio_free_characters(gregorio_character *current_character); +void gregorio_go_to_first_character(const gregorio_character **character); +void gregorio_add_clef_as_glyph(gregorio_glyph **current_glyph, + gregorio_clef_info clef, char *texverb); void gregorio_add_pitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, signed char pitch, bool flatted_key, - bool force_pitch, char *texverb); + gregorio_type type, signed char pitch, bool force_pitch, char *texverb); void gregorio_add_unpitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, gregorio_extra_info info, gregorio_sign sign, + gregorio_type type, gregorio_extra_info *info, gregorio_sign sign, char *texverb); void gregorio_add_end_of_line_as_note(gregorio_note **current_note, - gregorio_type sub_type, const gregorio_scanner_location *loc); + bool eol_ragged, bool eol_forces_custos, bool eol_forces_custos_on, + const gregorio_scanner_location *loc); void gregorio_add_custo_as_note(gregorio_note **current_note, const gregorio_scanner_location *loc); void gregorio_add_manual_custos_as_note(gregorio_note **current_note, signed char pitch, const gregorio_scanner_location *loc); -void gregorio_add_clef_change_as_note(gregorio_note **current_note, - gregorio_type type, signed char clef_line, +void gregorio_add_clef_as_note(gregorio_note **current_note, + gregorio_clef clef, signed char clef_line, bool flatted, const gregorio_scanner_location *loc); +void gregorio_add_secondary_clef_to_note(gregorio_note *current_note, + gregorio_clef clef, signed char clef_line, bool flatted); void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar, const gregorio_scanner_location *loc); -void gregorio_add_alteration_as_note(gregorio_note **current_note, - gregorio_type type, signed char pitch, - const gregorio_scanner_location *loc); void gregorio_add_space_as_note(gregorio_note **current_note, - gregorio_space space, + gregorio_space space, char *factor, const gregorio_scanner_location *loc); void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str, gregorio_type type, const gregorio_scanner_location *loc); void gregorio_add_nlba_as_note(gregorio_note **current_note, gregorio_nlba type, const gregorio_scanner_location *loc); -void gregorio_add_texverb_to_note(gregorio_note **current_note, char *str); +void gregorio_start_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *loc); +void gregorio_end_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *loc); +void gregorio_add_texverb_to_note(gregorio_note *current_note, char *str); void gregorio_add_cs_to_note(gregorio_note *const*current_note, char *str, bool nabc); void gregorio_add_misc_element(gregorio_element **current_element, - gregorio_type type, gregorio_misc_element_info info, char *texverb); -void gregorio_reinitialize_alterations(char alterations[][13], - int number_of_voices); -void gregorio_reinitialize_one_voice_alterations(char alterations[13]); -void gregorio_set_score_name(gregorio_score *score, char *name); -void gregorio_set_score_gabc_copyright(gregorio_score *score, char *gabc_copyright); -void gregorio_set_score_score_copyright(gregorio_score *score, - char *score_copyright); -void gregorio_set_score_office_part(gregorio_score *score, char *office_part); -void gregorio_set_score_occasion(gregorio_score *score, char *occasion); -void gregorio_set_score_meter(gregorio_score *score, char *meter); -void gregorio_set_score_commentary(gregorio_score *score, char *commentary); -void gregorio_set_score_arranger(gregorio_score *score, char *arranger); -void gregorio_set_score_gabc_version(gregorio_score *score, char *gabc_version); -void gregorio_set_score_number_of_voices(gregorio_score *score, - int number_of_voices); + gregorio_type type, gregorio_misc_element_info *info, char *texverb); void gregorio_set_score_annotation(gregorio_score *score, char *annotation); -void gregorio_set_score_author(gregorio_score *score, char *author); -void gregorio_set_score_date(gregorio_score *score, char *date); -void gregorio_set_score_manuscript(gregorio_score *score, char *manuscript); -void gregorio_set_score_book(gregorio_score *score, char *book); -void gregorio_set_score_manuscript_reference(gregorio_score *score, - char *reference); -void gregorio_set_score_manuscript_storage_place(gregorio_score *score, - char *storage_place); -void gregorio_set_score_transcriber(gregorio_score *score, char *transcriber); -void gregorio_set_score_transcription_date(gregorio_score *score, - char *transcription_date); -void gregorio_set_score_user_notes(gregorio_score *score, char *user_notes); -void gregorio_set_voice_style(gregorio_voice_info *voice_info, char *style); -void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info, - char *virgula_position); -void gregorio_fix_initial_keys(gregorio_score *score, int default_key); +void gregorio_set_score_staff_lines(gregorio_score *score, char staff_lines); +void gregorio_add_score_header(gregorio_score *score, char *name, + char *value); +void gregorio_fix_initial_keys(gregorio_score *score, + gregorio_clef_info default_clef); void gregorio_go_to_first_note(gregorio_note **note); void gregorio_go_to_first_glyph(gregorio_glyph **glyph); -void gregorio_det_step_and_line_from_key(int key, char *step, int *line); bool gregorio_is_only_special(gregorio_element *element); -int gregorio_calculate_new_key(char step, int line); +int gregorio_calculate_new_key(gregorio_clef_info clef); void gregorio_add_character(gregorio_character **current_character, grewchar wcharacter); void gregorio_begin_style(gregorio_character **current_character, grestyle_style style); void gregorio_end_style(gregorio_character **current_character, grestyle_style style); +gregorio_character *gregorio_clone_characters(const gregorio_character *source); signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, gregorio_element *element, gregorio_glyph *glyph); +const char *gregorio_unknown(int value); + +static __inline void gregorio_go_to_first_character_c(gregorio_character **character) +{ + gregorio_go_to_first_character((const gregorio_character **)character); +} + +static __inline gregorio_note *gregorio_glyph_last_note( + const gregorio_glyph *const glyph) +{ + gregorio_note *note; + if (!glyph || glyph->type != GRE_GLYPH) { + return NULL; + } + for (note = glyph->u.notes.first_note; note->next; note = note->next) { + /* iterate to find the last note */ + } + return note; +} + +static __inline const gregorio_glyph *gregorio_next_non_texverb_glyph( + const gregorio_glyph *glyph) +{ + if (glyph) { + for (glyph = glyph->next; glyph; glyph = glyph->next) { + if (glyph->type != GRE_TEXVERB_GLYPH) { + return glyph; + } + } + } + return NULL; +} + +static __inline const gregorio_glyph *gregorio_previous_non_texverb_glyph( + const gregorio_glyph *glyph) +{ + if (glyph) { + for (glyph = glyph->previous; glyph; glyph = glyph->previous) { + if (glyph->type != GRE_TEXVERB_GLYPH) { + return glyph; + } + } + } + return NULL; +} + +static __inline char gregorio_clef_to_char(gregorio_clef clef) +{ + return (clef == CLEF_C)? 'c' : 'f'; +} #endif diff --git a/Build/source/texk/gregorio/gregorio-src/src/unicode.c b/Build/source/texk/gregorio/gregorio-src/src/unicode.c index 9b15a6d92e4..afb7ab71a63 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/unicode.c +++ b/Build/source/texk/gregorio/gregorio-src/src/unicode.c @@ -135,7 +135,7 @@ gregorio_character *gregorio_build_char_list_from_buf(const char *const buf) i++; } free(gwstring); - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); return current_character; } |